Logo Studenta

05 - Diseño de Bases de Datos - Base de datos - Juan Ignacio Larrain

¡Este material tiene más páginas!

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?

Continuar navegando

Materiales relacionados