Base de Datos II Modelo Relacional

21
Base de Datos II Modelo Relacional

description

Base de Datos II Modelo Relacional. Pasaje MER - Relacional. Proceso de transformación de un concepto a una implementación Se convierten en tablas: Entidades fuertes y Atributos Relaciones Agregaciones Entidades Débiles No existe un pasaje totalmente automatizado. - PowerPoint PPT Presentation

Transcript of Base de Datos II Modelo Relacional

Page 1: Base de Datos II Modelo Relacional

Base de Datos

IIModelo Relacional

Page 2: Base de Datos II Modelo 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

Page 3: Base de Datos II Modelo Relacional

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)

Page 4: Base de Datos II Modelo Relacional

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)

Page 5: Base de Datos II Modelo Relacional

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

Page 6: Base de Datos II Modelo Relacional

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

Page 7: Base de Datos II Modelo Relacional

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

Page 8: Base de Datos II Modelo Relacional

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

Page 9: Base de Datos II Modelo Relacional

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

Page 10: Base de Datos II Modelo Relacional

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

Page 11: Base de Datos II Modelo Relacional

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.

Page 12: Base de Datos II Modelo Relacional

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)

Page 13: Base de Datos II Modelo Relacional

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

Page 14: Base de Datos II Modelo Relacional

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

Page 15: Base de Datos II Modelo Relacional

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)

Page 16: Base de Datos II Modelo Relacional

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

Page 17: Base de Datos II Modelo Relacional

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

Page 18: Base de Datos II Modelo Relacional

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)

Page 19: Base de Datos II Modelo Relacional

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

Page 20: Base de Datos II Modelo Relacional

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

Page 21: Base de Datos II Modelo Relacional

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