Hasta ahora
Conocemoselmodelorelacionalporlo que podemos
comenzara diseñarunabase de datos, pero...
¿Sabemossilo estamoshaciendobien?
Por ejemplo: olvidarañadirunacolumna
Personas(id, RUN, nombre)
Clientes(id, RUN, nombre)
Copie* desdePersonas a Clientes
Si a personas agregamosPersonas(ID, RUT, nombre, edad)
Copie* desdePersonas a Clientes
Un error enla modelaciónpuedeser muycostoso!
Diseñode base de datos
Análisisde 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
Relational Database
Management System (RDBMS)
Una base de datosrelacional(RDB) es unaforma de
estructurarinformaciónentablas, filasy columnas.
Una RDB tienela capacidadde establecervínculosentre
informaciónmediantela uniónde tablas
Un Sistema de administraciónde bases de datos
relacionales(RDBMS) es un programaque se usapara
crear, actualizary administrarbases de datosrelacionales.
Construir una aplicación con un
RDBMS
En la prácticaes imposiblesaber de antemanotodoslos
requisitosque deberácumplirun software.
De la mano con eso, elesquemade la base de datosva
cambiandoa medidaque progresaeldesarrollode un
proyecto.
Un esquemabien diseñadono solo nospermiteconsultar
con facilidady guardarlosdatosde forma óptima, sino
que tambiénpermitemodificarloy aumentarlocon menos
doloresde cabeza.
Los erroreseneldiseñoson muycostososa la larga!
Definicionesimportantes
Entidad: es un conjunto de objetos
similares.
Atributo: cualidadeso propiedades
de unaentidad. Es lo que nos
permiteagruparlosobjetos. Los
atributospertenecena dominios,
loscualesindican losposibles
valoresdel atributo.
Relación: Es unaasociaciónentre
dos o másentidades
Producto
nombre
compra
Diseño conceptual de la BD
Ventajasdediseñarydiagramarlabasededatos:
•Definirentidades.
•Entendercómoseasocianesasentidades.
•Visualizarlasrestriccionesdeldominio.
•Lograrundiseñoapropiadoalproblema.
•Mantener unesquema biendocumentado.
Diagramas E/R
Diagramas E/R
Obligatorio: cadaentidaddebetenerun atributollave
Llave: un conjunto de atributoscuyosvaloresidentificande manera
unívocaa cadaentidaddel conjunto. Enelfuturodenotaremosla llave,
subrayandoelatributo
Entidad con sus atributos
Producto
nombre
precio categoría
M. E/R →M. Relacional
Producto(nombre: string, precio: int, categoría: string)
Compañía(nombre: string, valor-acción: int)
Fabrica(Producto_nombre: string, Compañia_nombre)
Compañía
nombre
valor-acción
nombre
precio
categoría
fabricaProducto
Las llavesde las entidades
involucradasformanuna
llavepara la relación
Esquema
Relaciones Binarias
Las relaciones también pueden tener atributos descriptivos
que dan información de la relación.
Producto fabrica Compañía
nombre
precio
categoría nombre
valor-acción
desde
Las relacionesbinariasson asociacionesentre
2 entidades
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ñíana n
Producto fabrica Compañíana 0 o 1
Producto fabrica Compañía0 o 1 an
Producto fabrica Compañía0 o 1a 0 o 1
0 o más
Un productose fabricaa lo másporuna
compañía
Una compañíafabricaa lo másun
producto
Una compañía puede fabricar
varios productos
Un producto puede ser
fabricado por muchas compañías
Un producto se fabrica a lo más por
una compañía
Una compañíafabricaa lo másun
producto
Relaciones Binarias
Producto fabrica Compañía
Sóloutilizaremosestaconvención:
Ramakrishnan
“Esa es mi compañía”
nombre
precio
categoría nombre
valor-acción
desde
Con la flecha: llavede la fabricaes (llavede) Producto
Multiplicidadde atributoses siemprea 1
DiagramasE/R
Relaciones Múltiples
Relaciones Múltiples
PROBLEMA: Unaempresa tiene empleadosy áreasen las que
trabajan. Además, cada área tiene diferentes locaciones en las
que se trabaja.
Modelemos las locacionesy áreasenla que trabajaun empleado
Una relaciónmultiplees unaasociaciónentre más
de dos entidades.
Relaciones Múltiples
¿Cómose puedemodelarlas locaciones
y áreasenla que trabajaun empleado?
Área
trabajaEn
Locación
Empleado
Relaciones Múltiples
¿Por qué no un atributo?
trabajaEn
Locación
Persona
Área
Quizásno es un “valor
simple”: Que pasasi
queremosguardaraño,
presupuesto, etc?
Relaciones Múltiples
¿Y ahora?
trabajaEn
Locación
Empleado
presupuesto
No se puedenrelacionar
atributosde diferentes
entidades.
Área
nombre id
a_id
Relaciones Múltiples
¿Quésignificaesto?
Área
trabajaEn
Locación
Empleado
Un empleadopuede
trabajara lo más1 en
unasola áreay enuna
sola locación
“Dime elempleadoy te
dirédondetrabajas”
(flecha= llave)
RelacionesMúltiples
¿Y quépasasidecimos que un
empleadopuedetrabajarenvarias
áreasperoenunasola locación?
Área
trabajaEn
Locación
Empleado
Relaciones Múltiples
Siusamossolo relacionesbinarias
Área
en
Locación
EmpleadoEmpleo
delArea
persona
Relaciones Múltiples
¿Y qué pasa si decimos que un empleado
puede trabajar en varias áreaspero en una
sola locación?
Área
en
Locación
EmpleadoEmpleo
delArea
persona
Relaciones Múltiples
¿Cuál es mejor?
Área
en
Locación
EmpleadoEmpleo
delArea
persona
Área
trabajaEn
Locación
Empleado
Más flexible Más conciso
Relaciones Múltiples
Una entidadpuedeparticiparmás
de unavezenunarelación
Departamento
trabajaEn
Locación
Empleado
Backend developer Frontend developer
Diagramas E/R
Jerarquía de clases
Jerarquíade clases
Bebida
Vino
nombre
origen tipo
Ensamblaje
isA isA
año
Los atributosde bebidase heredanpor
vino y ensamblajeSuperclase
SubclasesSubclases
PROBLEMA: Modelemosuna
distribuidoade licoreso “Spirits”
Jerarquía de clases
Bebida
Vino Ensamblaje
isA isA
El solapamientoes unarestricciónque indica sidos
subentidadespuedentenerun mismoobjeto
VinosEnsamblaje
Los ensamblajesson un tipode
vino porlo que acásihay
solapamiento
Jerarquía de clases
Bebida
Vino Cerveza
isA isA
Vinos Cervezas
El solapamientoes unarestricciónque indica sidos
subentidadespuedentenerun mismoobjeto
Acáno hay solapamiento
No hay vinos acervezados
Jerarquía de clases
Bebida
Vino Cerveza
isA isA
Vinos Cervezas
La coberturaes la restricciónde que todaslas
sub-entidadesesténenla super-entidad.
Si tenemosun local que vende
solo cerveza y vino, entoncesse
consideraríaque estácubierto.
Jerarquía de clases
Bebida
Vino ensamblaje
isA isA
Vinos
Bebidas
Whisky
Chocoron
Pisco
Si tenemosun local que además
vendePisco, Whisky y chocoronno
se consideraríacubierto.
La coberturaes la restricciónde que todaslas
sub-entidadesesténenla super-entidad.
ensamblaje
Diagramas E/R
Entidades Débiles
Una entidaddébiles unaentidadque cuyallavedepende
de otraentidad.
La entidaddébiles identificadaporsus atributosy porun
atributollavede otraentidad, la cuales llamadaidentifying
owner.
La llavede la entidaddébiles conocidadcomollave
parcial.
EntidadesDébiles
Evaluación de Curso
fecha
código
nombre
nombre
Llave parcial
Participacióntotal (n a 1)
La llavede Evaluaciónes elpar
(código, nombre)
Primero, veremos cuales son las evaluaciones del curso
Como dijo Jack, ”vamos por partes”
PROBLEMA: Modelemos un sistema de registro de notas
Entidades Débiles
Evaluación
de Curso
fecha
código nombre
nombre
Nota eval
valor
run_alumno
La llavede Nota es la tupla
(código, nombre, run_alumno)
Falta elnombredel
estudiante
Ahora añadiremos las notas
Entidades Débiles
Evaluación
de Curso
fecha
código nombre
nombre
Nota eval
valor RUN_estudiante
nombre_estudiante
Problema, se repiteelnombredel
estudiantepara cadanota! (y es
redundantecon RUN)
Entidades Débiles
Evaluación
de Curso
fecha
código nombre
nombre
Se crea la entidad Estudiante
Nota eval
valor
Estudiante
RUN
nombre
obtiene
No hay llave
parcial!
Entidades Débiles
Evaluación
de Curso
fecha
código nombre
nombre
Nota pasa a ser relación
nota
valor
Estudiante
RUN nombre
Incorporemosla nota por
pregunta
Entidades Débiles
Evaluación
de Curso
fecha
código nombre
nombre
Se incorporanla notasporpregunta
nota
valor
Estudiante
RUN nombre
pregunta
Un estudiantepuedetenervariasnotasen
la mismaevaluación!
Entidades Débiles
Evaluación
de Curso
fecha
código nombre
nombre
Nota por pregunta
Nota eval
Estudiante
RUN
nombre
obtiene
preguntavalor
AHORA SI!!!!
DiagramasE/R
Agregación
Volvamos al problema de modelar la empresa y
sus empleados.
Al diagrama se le quiere añadir una relación que
indique si un área tiene sede en una locación y
cuantas oficinas tiene en la sede.
Área
trabajaEn
Locación
Empleado
Íbamos aquí
Agregación
Queremos registrar las locaciones que posee un
área y su cantidad de oficinas.
Área
trabajaEn
Locación
Empleado
Jefe
dirección
nombre
nombre
desde
RUN nombre
Agregación
Queremos registrar las locaciones que posee un
área y su cantidad de oficinas.
Área
trabajaEn
Locación
Empleado
Jefe
dirección
nombre
nombre
desde
rut nombre
tiene
cantidad_oficinas
Se puedetrabajar
locales que no tenganel
áreaindicada.
Queremosrelacionarla
entidad“Empleado” con la
relación“tiene”.
!Pero las relacionesson
entre entidades!
Agregación
Queremos registrar las locaciones que posee un
área y su cantidad de oficinas.
Área
trabajaEn
Locación
Empleado
Jefe
dirección
nombre
nombre
desde
rut nombre
tiene
cantidad_oficinas
Encapsulamosla relacióny
sus correspondientes
entidadesenunaentidad
virtual
Modelando vinos y cervezas
ProblemaNo hay llaves
Vendemosvinosy
cervezas. Cadavino
tieneaño, tipo, grados
y ciudad-origen. Cada
cerveza tieneciudad-
origen, tipo, grados.
Vinos y cervezas tienen
un preciounitarioy una
cantidad“enstock”
cadadía.
Modelando vinos y cervezas
Agregando llaves
Problema: Se repiten
atributos
Vendemosvinosy
cervezas. Cadavino
tieneaño, tipo, grados
y ciudad-origen. Cada
cerveza tieneciudad-
origen, tipo, grados.
Vinos y cervezas tienen
un preciounitarioy una
cantidad“enstock”
cadadía.
Modelando vinos y cervezas
Usando jerarquía de clases
Problema: llavede
stock
Modelando vinos y cervezas
Usando jerarquía de clases
Problema:
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 un problema
!No hay llave parcial!