Base de Datos II Modelo Relacional. Pasaje MER - Relacional Proceso de transformación de un...
-
Upload
basilio-la-torre -
Category
Documents
-
view
34 -
download
3
Transcript of Base de Datos II Modelo Relacional. Pasaje MER - Relacional Proceso de transformación de un...
Base de Datos
IIModelo Relacional
Pasaje MER - Relacional
Proceso de transformación de un concepto a una implementaciónSe convierten en tablas:
Entidades fuertes y Atributos
Relaciones
Agregaciones
Entidades Débiles
No existe un pasaje totalmente automatizado
Pasaje – Entidades Fuertes (1)Cada atributo común se coloca como un atributo de la tablaAtributos compuestos se colocan como un atributo separado por cada hojaAtributos claves se colocan como subrayados (puede ser clave compuesta)
EMPLEADOS
Nombre
Dirección
Sexo {M,F}
Departamento
CiudadCalle
Nro_puerta
CI
EMPLEADOS( CI, Nombre, Sexo, Departamento, Ciudad, Calle, Nro_puerta)
Pasaje – Entidades Fuertes (2)
Atributos multivaluados generan una nueva tablaContiene un atributo por cada componente (similar a caso anterior)Debe contener además la clave de la Entidad.
EMPLEADOS
Nombre
Dirección
Sexo {M,F}
Departamento CalleNro_puerta
CI
Teléfonos *
EMPLEADOS +
EMP_TELEFONOS( CI, nro_telefono)
Pasaje – Relaciones (1)Por regla general se debe crear una nueva tabla conteniendo las claves de las entidades que relaciona.
Si contienen atributos propios se deben incluir.
La clave dependerá de restricciones de la realidad. Por lo general será la pareja de claves de ambas entidades.
R (Clave_a, Clave_b, ...... atributos de R…. )
A BR
Clave_b
Clave_a
atributos
Pasaje – Relaciones (1)
ALUMNOS( NroAlumno, NombreAlumno)
MATERIAS( CodMateria, NombreMat)
INSCRIPTO (NroAlumno, CodMateria, Fecha)
Ejemplo 1 (relación N:M, un alumno se puede inscribir a una materia varias veces)
ALUMNOS MATERIASInscripto
CodMateria
NombreAlumno
NroAlumno
NombreMat
Fecha
Pasaje – Relaciones (2)
ALUMNOS MATERIASInscripto
ALUMNOS( NroAlumno, NombreAlumno)
MATERIAS( CodMateria, NombreMat)
INSCRIPTO (NroAlumno, CodMateria, Fecha)
CodMateria
NombreAlumno
Ejemplo 2 : Un alumno se puede inscribir a una materia pero una sola vez para cada fecha.
NroAlumno
NombreMat
Fecha
Pasaje – Relaciones (3)
B (Clave_b, … atributos de B, Clave_a)
Si la relación es 1:N puede NO CREARSE nueva tablaSe “incrustan” la clave en la entidad con cardinalidad N
Si contiene atributos propios es mejor crearla.
Si la relación es PARCIAL sobre B, cuando un elemento de B no esté relacionado con alguno de A Clave_a contendrá NULLSi la relación es TOTAL sobre B, se debe definir una restricción de integridad (referencial) de B hacia A.
A BR
Clave_b
Clave_a 1:N0:1
Pasaje – Relaciones (4)
EMPLEADOS( CI, NomEmp, CodSec)
SECCIONES( CodSec, NomSec)
Ejemplo 1 : Un empleado trabaja en una única sección.
EMPLEADOS
SECCIONESTrabaja
CodSec
NomEmp
CI
NomSec
1:N0:1
Genera una nueva tabla :
EMPLEADOS( CI , NomEmp)
SECCIONES( CodSec, NomSec)
TRABAJA (CI, CodSec, FecDesde, FecHasta)
Periodo
FecDesdeFecHast
a
Trabaja
Ejemplo 2 : Un empleado trabaja en una única sección en un determinado período
Pasaje – Relaciones (4)
EMPLEADOS
SECCIONESTrabaja
CodSec
NomEmp
CI
NomSec
1:N0:1
Pasaje – Relaciones (5)
Mínimos y máximos definidosCuando existen mínimos > 1 o cotas
superiores no se pueden definir mediante restricciones estáticas.
Deben ser definidas por código. Ej : triggers o mediante el programa que utilice la base de datos, por ejemplo Visual Basic.
Pasaje – Agregaciones
Se tratan como una relación.
Independientemente de las cardinalidades se debe implementar como una tabla aparte (pues van a ser nuevamente relacionadas con alguna otra Entidad)
Pasaje – Entidades Débiles (1)Son casos particulares de relación 1:N
No se crea tabla adicional para la relación.
Se agrega en la tabla correspondiente a la Entidad Débil la clave de la Entidad Fuerte.
La nueva clave está formada entonces por este nuevo conjunto.
Debe haber una clave foránea desde la Entidad Débil a la Fuerte.
HOSPITAL( NomHosp, Direccion)
SALA(NroSala, NomHosp, camas)
HOSPITAL SALAPertenece
NroSala
Direccion
NomHosp
camas
1:N1:N
Pasaje – Entidades Débiles (2)
CLAVE FORÁNEASe dice que B posee clave foránea hacia A si todo elemento de tabla B debe tener su atributo clave dentro de un atributo clave de alguna tupla de tabla A.
Decimos que Fk(B) referencia Pk(A)
En nuestro ejemplo :Toda tupla de SALAS debe tener una pareja <NomHosp, NroSala> en alguna tupla de HOSPITALES con el mismo NomHosp.
Además :NomHosp debe ser CLAVE en HOSPITALES
NomHosp,NroSala es CLAVE en SALAS
Pasaje – Categorizaciones (1)
Atributos_C
Clave
SmS1
C
S2 . . . . . . .
Existen diferentes implementaciones, dependiendo de la cantidad de atributos, solapamiento y completitud.
C( Clave_C, …Atributos_C….)
S1(Clave_C, … Atributos_propios_S1)
Pasaje – Categorizaciones (2)
Caso 1 : Relación No-total y C posee atributos propios1. Crear una tabla para C2. Crear una tabla para cada sub-categoría Si conteniendo sus atributos propios + Clave(C)
3. Crear restricciones de integridad desde cada clave de Si a C
C( Clave_C)
Si Si (Clave_C, … Atributos_propios_Si)
y crear Integridad Referencial de Si a C
PERSONAS( CI, Nombre)
ESTUDIANTES( CI, Nro_est)
DOCENTES( CI , Grado)
ESTUDIANTES.CI referencia PERSONAS.CI
DOCENTES.CI referencia PERSONAS.CI
Ejemplo
Nombre
CI
ESTUDIANTE
PERSONAS
DOCENTE
GradoNro_es
t
Pasaje – Categorizaciones (3)Caso 2 : Relación No-total y C no posee atributos propios (solo clave)
1. Crear una tabla para cada sub-categoría Si conteniendo sus atributos propios + Clave(C)
2. No es necesario crear C pues es una abstracción.C se puede implementar como una vista : C = П(S1) U П(S2) … U П(Sn)
Clave_C Clave_C Clave_C
PERSONAS( CI, Nombre)
ESTUDIANTES( CI, Nro_est)
DOCENTES( CI , Grado)
ESTUDIANTES.CI referencia PERSONAS.CI
DOCENTES.CI referencia PERSONAS.CI
Ejemplo
Nombre
aaa
ESTUDIANTE
AAAA
DOCENTE
GradoNro_es
t
Pasaje – Categorizaciones (4)Caso 3 : Relación Total y sub-categorias SIN atributos propios.
Crear una tabla para C2 variantes :
a) Agregar a C un atributo para discriminante que indica la categoria a que pertenece cada tupla.
b) Agregar a C tantos atributos booleanos como sub-categorias de C existan.
Ej.
Nombre
CI
ESTUDIANTE
PERSONAS
DOCENTEADMINISTRATI
VO
Versión 1
PERSONAS( CI, Nombre, TipoPersona)
Versión 2
PERSONAS( CI, Nombre, EsEstudiante, EsDocente, EsAdministrativo)
Pasaje – Categorizaciones (6)Caso 4 : Si todas las categorías poseen atributos propiosOpción 1 :
Implementar una única tabla conteniendo la unión de todos los atributos de C + Si utilizando 1 de las 2 técnicas de caso anterior (tener en cuenta si hay o no solapamiento)
Rápido de implementar Genera gran cantidad de datos NULL Exige correspondiencia entre atributos : implementar código Ej: Si Tipo=“ADMINISTRATIVO” atributos que no correspondan a ADMINISTRATIVO deben valer NULL o ser ignorados Implementación obscura, lejana de modelo conceptualEj: (sin solapamiento)
CI
Nombre
Direccion Tipo NroEst
Puesto Grado
1 Juan Mercedes 1467
ESTUDIANTE 557 NULL NULL
2 Maria San jose 321 DOCENTE NULL NULL 2
3 Pedro 18 de Julio 1234
ADMINISTRATIVO
NULL Recepcionista
NULL
4 Ana Sarandi 320 DOCENTE 558 NULL 1
Nombre
CI
ESTUDIANTE
PERSONAS
DOCENTE
PERSONAS
Direccion
PuestoGrado
ADMINISTRATIVO
NroEst
Pasaje – Categorizaciones (7)Caso 4 : Si todas las categorías poseen atributos propiosOpción 2 :
a)No implementar Cb) Implementar cada subcategoria Si como una tabla independiente conteniendo
sus atributos + atributos de C Cubre solapamiento y totalidad.
Fácil de implementar
Más prolijo que versión anterior
Puede generar redundancia !!!!!!!!!
Ej: Si Ana es Docente y también Administrativo
CI
Nombre
Direccion Grado
4 Ana Sarandi 320
1
… … … ...
Nombre
CI
ESTUDIANTE
PERSONAS
DOCENTEADMINISTRATIV
O
DOCENTE
Direccion
CI
Nombre
Direccion Puesto
4 Ana Mercedes 1451
Telefonista
… … … …
ADMINISTRATIVO
PuestoGrado
Pasaje – Categorizaciones (8)
Caso 4 : Si todas las categorías poseen atributos propiosOpción 3 :
a)Implementar C como una tabla independienteb) Implementar cada subcategoria Si como una tabla independiente + Clave( C
)c) Incluir restricciones de integridad desde Si hacia C
Cubre solapamiento y totalidad.
Luego se pueden definir vistas de cada Si para presentar una visión más cercana a la conceptual.
Evita redundancia
Prolijidad : más cercano al diseño conceptual
Exige más “inteligencia” para agregar registros
Costo de implementar/mantener las vistas
C.Clave = Si.clave
Vi = C Si