Beruflich Dokumente
Kultur Dokumente
http://cnx.org/content/m18171/latest/
Connexions
You are here: Home Content Traduccin de relaciones de especializacin a tablas relacionales
1 de 8
http://cnx.org/content/m18171/latest/
6ormalmente# se hace una di1erencia entre dos tipos de gen-spec: Definidas por atributos. Si ha$ un atributo's( en la coleccin padre cu$os %alores determinan a cu*l de las colecciones hi+a pertenece cada entidad. A ese atributo o atributos se les denomina discriminadores. Definidas por el usuario. 6o ha$ una condicin sobre los datos )ue de1ina la pertenencia a los subcon+untos. Ha$ di1erentes notaciones gr*1icas para e"presar restricciones $ discriminadores en diagramas ntidad!elacin# no obstante# a)u5 simplemente representaremos las relaciones gen-spec $ las restricciones las mencionaremos en el te"to.
caso en el )ue cada entidad Evento tiene )ue pertenecer a una de las sub-colecciones# $a )ue
Evento es simplemente una abstraccin de los elementos comunes de los di1erentes tipos de
e%ento. Sin embargo# en una aplicacin de gestin de aerol5neas# la coleccin Cliente podr5a tener una sub-coleccin ClienteFrecuente para a)uellos clientes con tar+etas de %ia+eros 1recuentes con ser%icios adicionales $ cuentas de puntos $ ClienteEmpresa para %ia+eros asociados a un con%enio con una empresa. n este caso# habr* entidades )ue no pertenezcan a ninguna de las sub-colecciones: los clientes regulares.
2 de 8
http://cnx.org/content/m18171/latest/
"isten %arias 1ormas de traducir relaciones gen-spec a tablas relacionales# con di1erentes propiedades. &a decisin de hacer la traduccin de un modo u otro depende mucho de consideraciones sobre la redundancia de in1ormacin )ue se espera en la pr*ctica. n general# consideraremos el caso de una coleccin de entidades P )ue tiene un con+unto de entidades especializadas {H1, H2,..., Hn}. Consideraremos )ue la cla%e de P es el atributo k 'lo )ue sigue se aplicar5a de igual modo a cla%es multi-atributo(# $ P tiene adem*s un con+unto de atributos {A1, ...,
An}# )ue podr5a ser %ac5o.Cada una de las colecciones de entidades )ue son especializaciones tiene su
Figura 1
s importante entender )ue en esta representacin la in1ormacin de cada entidad est* 1ragmentada en la tabla P $ una de las tablas Hi. n el caso de relaciones con solapamiento# la operacin de +oin debe e"tenderse a m*s de una de las tablas hi+as si )ueremos obtener toda la in1ormacin 'aun)ue en muchas aplicaciones solo se )uiere
3 de 8
http://cnx.org/content/m18171/latest/
obtener la in1ormacin de una de las especializaciones concretas(. n esta representacin# si la relacin de especializacin es total# para obtener in1ormacin completa de una entidad habr* )ue hacer un join obligatoriamente# mientras )ue si la relacin no es total# una seleccin sobre la tabla P de%uel%e in1ormacin completa de algunas de las entidades. 3or e+emplo# una relacin entre CLIENTES $ CLIENTES_FRECUENTES )ue sea no total# se traducir5a en dos tablas relacionales como las siguientes. 6tese )ue ha$ una cla%e a+ena en CLIENTES_FRECUENTES ')ue es el propio id# tambi0n cla%e primaria(# )ue re1erencia a tuplas en la tabla CLIENTES.
Figura 2
n el caso de una relacin de especializacin total# se puede tambi0n utilizar el es)uema de di%isin con tabla padre $ tablas hi+as relacionadas con cla%e a+ena. 3or e+emplo# si tenemos una especializacin de AERONAVE en dos tipos de aerona%es# tendr5amos la siguiente di%isin.
Figura
6tese )ue en este caso# cada tupla de AERONAVE tiene )ue estar re1erenciada
4 de 8
http://cnx.org/content/m18171/latest/
1orzosamente por una tupla o bien en AVION_VIAJEROS o bien en AVION_CARGA 'pero no en ambas# dado )ue no ha$ solapamiento(. n el caso de relaciones con solapamiento# habr5a )ue hacer un +oin de la tabla padre con todas sus hi+as# dado )ue cada una de las tablas hi+a puede tener un 1ragmento de la in1ormacin. 3or e+emplo# si en una ,ni%ersidad tenemos una coleccin de entidades 3 !S:6A $ dos subcolecciones no dis+untas ALUMNO $ PROFESOR# tendr5amos el mismo es)uema en la traduccin.
Figura !
n este caso# si )ueremos recuperar completa la in1ormacin de entidades )ue sabemos tiene los dos roles# tendremos )ue hacer la siguiente consulta.
SELECT PERSONA.id, nombre, apellidos, email, id_departamento, es_doctor, tiene_beca FROM PERSONA, PROFESOR, ALUMNO WHERE PERSONA.id = PROFESOR.id and PROFESOR.id = ALUMNO.id and <<condicin>>
6tese )ue en el e+emplo no tenemos ning2n campo discriminador )ue nos indi)ue )ui0nes pertenecen a cada especializacin. n la traduccin con una sola tabla se %er* un caso donde esto sucede. Si no tenemos esto $ eliminamos la <<condicin>> la relacin resultante tendr* %alores null en los atributos de la especializacin a la )ue no pertenezca la entidad.
5 de 8
http://cnx.org/content/m18171/latest/
&a cla%e k es cla%e primaria de todas las tablas. 3ara recuperar las entidades de una de las subclases no hace 1alta ninguna e)uireunin# basta con una seleccin normal:
SELECT * FROM Hi
sta opcin es adecuada cuando se la especializacin es dis+unta $ total# por lo siguiente: Si la especializacin no es total# no tenemos tabla para las entidades de la relacin 3# por lo )ue se perder5a esa in1ormacin. Si la especializacin no es dis+unta# una entidad )ue pertenezca a m*s de una especializacin tendr* almacenados los %alores de sus atributos .heredados/ de P:
A1, ..., An de 1orma redundante en m*s de una de las tablas Hi.
Si )ueremos recuperar todas las entidades )ue pertenecen a P con esta opcin# habr* )ue hacer una operacin de unin.
SELECT FROM Hi, ..., Hm WHERE H1.k = H2.k and H2.k = H3.k ...
Siguiendo el e+emplo de las aerona%es anterior# )ue era total sin solapamiento# tendr5amos la siguiente con1iguracin.
Figura "
;emos )ue el atributo com2n longitud est* en las dos tablas# pero no se produce redundancia alguna en la e"tensin de las tablas# dado )ue cada aparato est* representado en una u otra tabla# pero nunca en ambas. Si )ueremos obtener la in1ormacin com2n de todos los aparatos utilizaremos la siguiente sentencia:
SELECT id,longitud FROM AVION_VIAJEROS UNION SELECT id, longitud FROM AVION_CARGA
Si los identi1icadores no se duplican en las dos tablas# esto de%uel%e una relacin con la in1ormacin com2n.
6 de 8
http://cnx.org/content/m18171/latest/
&a des%enta+a de esta apro"imacin es )ue se producen en ocasiones muchos %alores nulos en la tabla 2nica. 6o obstante# cuando una de las especializaciones se sabe %a a tener mu$ pocas entidades# $ el n2mero $ tama7o de sus atributos espec51icos es ba+o# puede ser la me+or opcin. Siguiendo el e+emplo de las aerona%es# tendr5amos la siguiente traduccin: A !:6A; 'id# longitud# pasa+eros<business# pasa+eros<turista# capacidad# tipo( -onde la cla%e ser* id# los campos pasajeros_business# pasajeros_turista#
capacidad han de permitir nulos necesariamente# $ el discriminador tipo no debe
7 de 8
http://cnx.org/content/m18171/latest/
donde id_departamento# es_doctor# tiene_beca deben permitir nulos. 6tese )ue en el caso de id_departamento# si 0sta 1uese una cla%e a+ena en una relacin obligatoria# tendr5a el e1ecto indeseado de no poder especi1icar NOT NULL en esa columna para los pro1esores.
More about this module: Metadata = -o>nloads = ;ersion Histor$ Ho> to reuse and attribute this content Ho> to cite and attribute this content This >or? is licensed b$ Miguel-Angel Sicilia under a Creati%e Commons Attribution &icense 'CC-@Y A.B(# and is an :pen ducational !esource. Last edited by Ross J. Reedstrom on Nov 6, 2008 4:58 pm -0600.
8 de 8