Sei sulla pagina 1di 23

Pasaje Conceptual - Relacional

Universidad Tecnolgica Nacional Facultad Regional Concepcin del Uruguay

Introduccin

En esta presentacin veremos algunas reglas bsicas para poder hacer pasaje del modelo conceptual a relacional Tambin veremos la sintxis bsica de definicin de una variable relacional Excede el alcance de este curso la definicin de reglas de integridad complejas

Sintxis bsica
VARBASERELATIONnombre(atributo1dominio1,atributo2 dominio2,...,atributoNdominioN,PRIMARY KEY(...,...))

Donde nombre es el nombre de la variable relacional, VAR BASE RELATION indica que es una variable relacional del tipo base, tambin podra ser una variable relacional derivada o vista. Dentro de los parntesis se indican el conjunto de atributos y el dominio para cada atributo, normalmente los atributos van a ser de un tipo conocido como integer, char(X), etc. PRIMARY KEY indica el subconjunto de atributos que forman parte de la clave primaria de la variable relacional.

Ejemplo 1: simple

VARBASERELATIONempleado( dniint,legajoint,nombreVARCHAR(50), apellidoVARCHAR(50), PRIMARYKEY(dni),UNIQUE(legajo) )

Ejemplo 2: reflexividad

VARBASERELATIONempleado( dniint,legajoint,nombreVARCHAR(50), apellidoVARCHAR(50),dependedeintNULL, PRIMARYKEY(dni),UNIQUE(legajo),FOREIGN KEY(dependede)REFERENCESempleado )

Ejemplo 3: asociacin

VARBASERELATIONempleado( dniint,legajoint,nombreVARCHAR(50), apellidoVARCHAR(50),dependedeintNULL,cp CHAR(6),PRIMARYKEY(dni),UNIQUE(legajo), FOREIGNKEY(dependede)REFERENCESempleado, FOREIGNKEY(cp)REFERENCESlocalidad )

Ejemplo 3: composicin

VARBASERELATIONfecha( nombreVARCHAR(50),fechaint, PRIMARYKEY(nombre,fecha), FOREIGNKEY(nombre)REFERENCEScampeonato )

Generalizacin

La generalizacin es un poco mas compleja de hacer el pasaje y existen varias estrategias. Estas estrategias dependen casi exclusivamente a criterios de programacin e implementacin y no a buenos criterios de diseo. Vamos a presentar 3 estrategias de pasaje a relacional. En esta materia preferimos la estrategia 1 que produce el diseo mas limpio. Pueden existir otras combinaciones de ellas. estrategias y distintas

Caso de Ejemplo de Generalizacin

Ejemplo 4: generalizacin estrategia 1 particionamiento vertical


VARBASERELATIONpersona(dniint,nombre VARCHAR(50),apellidoVARCHAR(50),PRIMARY KEY(dni)) VARBASERELATIONempleado(dniint,legajoint, PRIMARYKEY(dni),UNIQUE(legajo),FOREIGN KEY(dni)REFERENCESpersona) VARBASERELATIONcontratado(dniint,legajo int,PRIMARYKEY(dni),UNIQUE(legajo),FOREIGN KEY(dni)REFERENCESpersona)

Ventajas / Desventajas Estrategia 1

Ventajas Diseo mas limpio y claro Poca redundancia de datos Desventajas


Gran nmero de tablas dificulta el diseo de los programas Dificil de controlar la exclusin mutua, por ejemplo una persona no puede ser empleado y contratado al mismo tiempo

Ejemplo 5: generalizacin estrategia 2 o plano


VARBASERELATIONpersona( dniint, legajoempleadointNULL, legajocontratadointNULL, nombreVARCHAR(50), apellidoVARCHAR(50), PRIMARYKEY(dni), UNIQUE(legajoempleado), UNIQUE(legajocontratado) )

Ventajas / Desventajas Estrategia 2

Ventajas Fcil diseo de los programas Relativamente fcil el manejo de la exclusin mtua Desventajas

Diseo poco claro Redundancia de datos Campos que aceptan nulos

Ejemplo 6: generalizacin estrategia 3 o particionamiento horizontal


VARBASERELATIONpersona(dniint,nombre VARCHAR(50),apellidoVARCHAR(50),PRIMARY KEY(dni)) VARBASERELATIONempleado(dniint,nombre VARCHAR(50),apellidoVARCHAR(50),legajoint, PRIMARYKEY(dni),UNIQUE(legajo)) VARBASERELATIONcontratado(dniint,nombre VARCHAR(50),apellidoVARCHAR(50),legajoint, PRIMARYKEY(dni),UNIQUE(legajo))

Ventajas / Desventajas Estrategia 3

Ventajas Fcil manejo de la exclusin mtua Diseo muy claro Desventajas


Mucha redundancia de datos Mayor complejidad en el diseo de los programas, pero facilidad en la recuperacin de los datos

Otras Asociaciones

Asociaciones binarias de muchos a muchos, se deben pasar las clases normalmente y se debe crear una relacin extra que representa la asociacin muchos a muchos. Asociaciones n-arias (siendo n >2), se deben pasar las clases normalmente y se debe crear una relacin extra que representa la asociacin n-aria (rombo). Clases de asociacin: si la asociacin muchos a muchos o la n-aria (siendo n > 2) tiene asociada una clase de asociacin, los atributos de la clase de asociacin se pasan a la relacin que representa la asociacin.

Ejemplo 7: asociacin muchos a muchos

VARBASERELATIONdicta( legajoint,codigoint, PRIMARYKEY(legajo,codigo), FOREIGNKEY(legajo)REFERENCESdocente, FOREIGNKEY(codigo)REFERENCESmateria )

Ejemplo 8: asociacin muchos a muchos con clase asociacin

VARBASERELATIONdicta( legajoint,codigoint,horasint, PRIMARYKEY(legajo,codigo), FOREIGNKEY(legajo)REFERENCESdocente, FOREIGNKEY(codigo)REFERENCESmateria )

Ejemplo 9: modelo asociacin ternaria

Ejemplo 9: pasaje a relacional asociacin ternaria


VARBASERELATIONparticipa( campeonatoVARCHAR(50), equipoVARCHAR(50), jugadorint, PRIMARYKEY(campeonato,jugador), FOREIGNKEY(campeonato)REFERENCEScampeonato, FOREIGNKEY(equipo)REFERENCESequipo, FOREIGNKEY(jugador)REFERENCESjugador, )
Prestar especial atencin a la clave primaria

Ejemplo 10: modelo asociacin compleja

Ejemplo 10: pasaje a relacional asociacin compleja


VARBASERELATIONinterpreta( peliculaVARCHAR(50), personajeVARCHAR(50), actorint, rolVARCHAR(50), PRIMARYKEY(pelicula,personaje), FOREIGNKEY(pelicula)REFERENCESpelicula, FOREIGNKEY(personaje)REFERENCESpersonaje, FOREIGNKEY(actor)REFERENCESactor, FOREIGNKEY(rol)REFERENCESrol, )

Consideraciones

Agregacin: el pasaje a relacional de la agregacin se hace de la misma manera que la asociacin simple Dependencia: el pasaje a relacional de la dependencia se hace de la misma manera que la asociacin simple Multiplicidades distintas a > 1 deben pasarse a *, posteriormente cuando se definan las reglas de integridad mas complejas deberan definirse reglas que lo controlen. Por lo tanto las multiplicidades que deberan quedar en el diagrama son 1, 0..1, *.

Potrebbero piacerti anche