Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Bases de Datos Clase 5: Diseño de Bases de Datos Hasta ahora Conocemos el modelo relacional y SQL por lo que podemos comenzar a diseñar una base de datos, pero... ¿Sabemos si lo estamos haciendo bien? Un error en la modelación puede ser muy costoso! Por ejemplo: olvidar añadir una columna Diseño de base de datos Análisis de requisitos Diseño conceptual de bases de datos Diseño lógico de bases de datos Usuarios Requisitos Requisitos Modelo entidad-relación Modelo entidad-relación Modelo relacional Construir una aplicación con un RDBMS En la práctica es imposible saber de antemano todos los requisitos que debe cumplir un software. De la mano con eso, el esquema de la base de datos va cambiando a medida que progresa el desarrollo de un proyecto. Un esquema bien diseñado no solo nos permite consultar con facilidad y guardar los datos de forma óptima, si no que también permite modificarlo y aumentarlo con menos dolores de cabeza. Los errores en el diseño son muy costosos a la larga! Diseño conceptual de la BD Por qué diseñar y diagramar la base de datos: • Identificar las entidades. • Entender cómo se asocian esas entidades. • Visualizar las restricciones del dominio. • Para lograr un buen diseño! • Para mantener el esquema bien documentado. Diagramas E/R Diagramas E/R Entidad Atributo Relación Producto nombre compra Diagramas E/R Obligatorio: cada entidad debe tener una llave, i.e. un conjunto de atributos mínimo cuyos valores identifican de manera unívoca a cada entidad del conjunto Entidad con sus atributos Producto nombre precio categoría Relaciones Binarias Producto fabrica Compañía Dos entidades relacionadas Relaciones Binarias Producto fabrica Compañía nombre precio categoría nombre valor-acción Entidad con sus atributos desde No puede ser parte de una llave!! Relaciones Binarias Multiplicidades Producto fabrica Compañían a n Producto fabrica Compañían a 0 o 1 Producto fabrica Compañía0 o 1 a n Producto fabrica Compañía0 o 1 a 0 o 1 0 o más Un producto se fabrica por como máximo una compañía Una compañía fabrica como máximo un producto :S Una compañía puede fabricar varios productos Un producto puede ser fabricado por muchas compañías Un producto se fabrica por como máximo una compañía Una compañía fabrica como máximo un producto :S Relaciones Binarias Multiplicidades Muchas convenciones distintas Relaciones Binarias Producto fabrica Compañía Sólo utilizaremos esta convención: “Esa es mi compañía” nombre precio categoría nombre valor-accióndesde Multiplicidad de atributos es siempre a 1 Diagramas E/R Relaciones Múltiples Relaciones Múltiples ¿Cómo se puede modelar un alquiler que involucra Personas, Películas y Locales de Videos? Relaciones Múltiples ¿Cómo se puede modelar un alquiler que involucra Personas, Películas y Locales de Videos? Película alquila Local de Videos Persona Relaciones Múltiples ¿Por qué no un atributo? alquila Local de Videos Persona Película Quizás no es un “valor simple”: que pasa si queremos guardar año, director, etc? Relaciones Múltiples ¿Y ahora? alquila Local de Videos Persona año No se pueden relacionar atributos de diferentes entidades. Película nombre id p_id Relaciones Múltiples ¿Qué significa esto? Película alquila Local de Videos Persona Una persona puede alquilar a lo más 1 sola película en un solo local de videos “Dime la persona y te diré que arriendas” Relaciones Múltiples ¿Y qué pasa si decimos que una persona puede alquilar varias películas pero de un solo local de video? Película alquila Local de Videos Persona Ups… Relaciones Múltiples ¿Qué pasa si usamos solo relaciones binarias? Película vendedor Local de Videos PersonaAlquiler alquila cliente Relaciones Múltiples Película vendedor Local de Videos PersonaAlquiler alquila cliente ¿Y qué pasa si decimos que una persona puede alquilar varias películas pero de un solo local de video? Relaciones Múltiples ¿Cuál es mejor? Película vendedor Local de Videos PersonaAlquiler alquila cliente Película alquila Local de Videos Persona Más flexible Más conciso Relaciones Múltiples Una entidad puede participar más de una vez en una relación Película alquila Local de Videos Persona cliente cajero Diagramas E/R Restricciones Avanzadas Restricciones Avanzadas Producto fabrica Compañía ¿Que es más natural? Producto fabrica Compañía Restricciones Avanzadas Producto fabrica Compañía Participación y participación total n a 0 o 1 Un producto se fabrica por como máximo una compañía Un producto se fabrica por como mínimo en una compañía Producto fabrica Compañían a 1 a n Un producto se fabrica en exactamente 1 (sola) compañía Producto fabrica Compañían a 1 Equivalencia de multiplicidades Producto compra Persona Producto compra Persona (0,n) (0,n) Producto compra Persona Producto compra Persona (0,1) (0,n) Producto compra Persona Producto compra Persona (1,n) (0,n) compra Persona Producto compra Persona (1,1) (0,n) Producto Ramakrishnan min-max Diagramas E/R Jerarquía de clases Jerarquía de clases Bebida Vino nombreorigen tipo Cerveza isA isA año Los atributos de bebida se heredan por vino y cervezaSuperclase SubclasesSubclases Las subclases no pueden tener llaves Jerarquía de clases Bebida Vino Cerveza isA isA Solapamiento Vinos Cervezas Jerarquía de clases Bebida Vino Cerveza isA isA No Solapamiento Vinos Cervezas Jerarquía de clases Bebida Vino Cerveza isA isA Cobertura Vinos Cervezas Bebidas Jerarquía de clases Bebida Vino Cerveza isA isA Sin Cobertura Vinos Cervezas Bebidas Whisky Chocoron Pisco Diagramas E/R Entidades Débiles Entidades Débiles Evaluación de Curso fecha nombre código nombre ¿Y la llave? Entidades Débiles Evaluación de Curso fecha código nombre nombre Llave parcial Participación total (n a 1) …entidades cuya llave dependa de la llave de otra entidad La llave de Evaluación es el par (código, nombre) ¿Y las notas?… Entidades Débiles Evaluación de Curso fecha código nombrenombre Podemos encadenar entidades débiles Nota eval valor rut_alumno La llave de Nota es la tupla (código, nombre, rut_alumno) ¿Y el alumno?… Entidades Débiles Evaluación de Curso fecha código nombrenombre Agregando nombre del alumno Nota eval valor rut_alumno nombre_alumno Repeticiones del nombre del alumno para cada nota! (Redundante con RUT) ¿Hay algún problema? Entidades Débiles Evaluación de Curso fecha código nombrenombre Agregando nombre del alumno Nota eval valor Alumno rut nombre autor No hay llave parcial! ¿Hay algún problema? Entidades Débiles Evaluación de Curso fecha código nombrenombre Agregando nombre del alumno nota valor Alumno rut nombre ¿Y notas por pregunta?… Entidades Débiles Evaluación de Curso fecha código nombrenombre Nota por pregunta nota valor Alumno rut nombre pregunta Un alumno puede tener varias notas por varias preguntas en la misma evaluación! ¿Hay algún problema? Entidades Débiles Evaluación de Curso fecha código nombrenombre Nota por pregunta Nota eval Alumno rut nombre autor preguntavalor ¿Hay algún problema? No :) Diagramas E/R Agregación Agregación Queremos registrar las películas que posee un local de video y su precio por noche. Película alquila Local de Videos Persona código código nombre nombre hasta rut nombre Agregación Película alquila Local de Videos Persona tiene ¿Hay algún problema? código código nombre nombre precio_por_noche hasta rut nombre Se puede alquilar películas de locales que no tengan la película. Queremos relacionar la entidad “Persona” con la relación “tiene”. !Pero las relaciones son entre entidades! Queremos registrar las películas que posee un local de video y su precio por noche. Agregación Encapsulando relaciones Películaalquila Local de Videos Persona tiene código código nombre nombre precio_por_noche hasta rut nombre Encapsulamos la relación y sus correspondientes entidades en una entidad virtual Ejemplo: Modelando vinos y cervezas Vendemos vinos y cervezas. Cada vino tiene año, tipo, grados y ciudad-origen. Cada cerveza tiene ciudad-origen, tipo, grados. Vinos y cervezas tienen un precio unitario y una cantidad “en stock” cada día. ¿Hay algún problema? Modelando vinos y cervezas No hay llaves Vendemos vinos y cervezas. Cada vino tiene año, tipo, grados y ciudad-origen. Cada cerveza tiene ciudad- origen, tipo, grados. Vinos y cervezas tienen un precio unitario y una cantidad “en stock” cada día. ¿Hay algún problema? Modelando vinos y cervezas Agregando llaves Repetición de atributos ¿Hay algún problema? Modelando vinos y cervezas Usando jerarquía de clases La llave de stock ¿Hay algún problema? Modelando vinos y cervezas Usando jerarquía de clases Multiplicidades Modelando vinos y cervezas con multiplicidades ¿Que pasa si cada bebida tiene que tener un valor de stock? Modelando vinos y cervezas con multiplicidades ¿Que pasa si solo se guarda el stock actual? Modelando vinos y cervezas con solo stock actual ¿Hay algún problema? !No hay llave parcial! Modelando vinos y cervezas con solo stock actual ¿Preguntas?
Compartir