Sie sind auf Seite 1von 8

Traduccin de relaciones de especializacin a tablas relacionales

http://cnx.org/content/m18171/latest/

Connexions
You are here: Home Content Traduccin de relaciones de especializacin a tablas relacionales

Traduccin de relaciones de especializacin a tablas relacionales


Module by: Miguel-Angel Sicilia. Summary: Se describe la relacin conceptual de generalizacin-especializacin perteneciente al modelo ntidad!elacin e"tendido# $ se e"plican las posibles alternati%as de traduccin de esas relaciones conceptuales a un modelo de bases de datos relacional.

Traduccin de la generalizacin-especializacin del Modelo Entidad-Relacin extendido a esquemas relacionales


Las relaciones de generalizacin-especializacin en el modelo E-R
&a relacin de generalizacin-especializacin ' gen-spec( es un tipo de relacin )ue se considera parte del modelo ntidad-!elacin extendido, $ es an*loga al concepto de igual nombre en el paradigma de la orientacin a ob+etos. ,na relacin de gen-spec es una relacin de conjunto-subconjunto. -icho de otro modo# una de las colecciones de entidades contendr* a la otra. -enominaremos .padre/ a la coleccin de entidades m*s amplia e .hi+a/ al subcon+unto de a)u0lla. &as siguientes son consecuencias de ese tipo de relacin: Todos los atributos de la coleccin de entidades padre se consideran tambi0n como propios en las colecciones de entidades hi+as. Todas las relaciones de la coleccin de entidades padre se consideran tambi0n de1inidas en las colecciones de entidades hi+as. &a clave de la coleccin de entidades padre es cla%e en la coleccin de entidades hi+a. &o anterior tiene una aplicacin transiti%a# es decir# puede haber especializaciones 'subcon+untos( en %arios ni%eles. n general# se considera )ue para de1inir un subcon+unto de una coleccin de entidades# debe e"istir alg2n'os( atributo's(# %alor'es( de atributo's( o relacin'es( )ue di1erencian a la coleccin de entidades padre de la hi+a. 3or e+emplo# en el sector de las aplicaciones 4eb de %enta de autom%iles se suele di1erenciar entre tipos de %eh5culos por .segmento/# distinguiendo por e+emplo a partir de una coleccin Automovil las siguientes especializaciones: Berlina# Todoterreno# Familiar# Monovolumen# etc. 6o obstante# los datos )ue se recogen e todas esas categor5as son e"actamente los mismos# por lo )ue no ser5a necesario hacer una especializacin en el modelo conceptual# bastar5a con representar el segmento como un atributo de Automovil.

1 de 8

31/03/2014 09:23 p.m.

Traduccin de relaciones de especializacin a tablas relacionales

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.

Restricciones en las relaciones gen-spec


Ha$ %arios tipos de relaciones gen-spec# $ los siguientes son importantes a la hora de dise7ar bases de datos# la obligatoriedad $ el solapamiento.

Obligatoriedad en las relaciones gen-spec


Se dice )ue una relacin gen-spec es total 'u obligatoria( si cual)uier entidad de la coleccin .padre/ tiene )ue ser una entidad en alguna de las colecciones de entidades .hi+as/. sto sucede mu$ a menudo cuando se ha hecho un proceso de generalizacin de .aba+o hacia arriba/# es decir# cuando se han identi1icado atributos $8o relaciones comunes de dos o m*s colecciones de entidades. n ese caso# las entidades padre suelen ser abstractas# de modo )ue una entidad pertenece a las colecciones de entidades m*s concretas )ue ten5amos originariamente. 3or e+emplo# en una organizacin )ue plani1ica acti%idades puede identi1icarse la coleccin de entidades Evento 'con atributos como fecha# nombre $ descripcin( $ como sub-colecciones
Conferencia# Simposio o Taller# cada una con sus atributos $8o relaciones propias. ste es un

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.

Solapamiento en las relaciones gen-spec


Se dice )ue las colecciones hi+a de una coleccin de entidades son dis+untas si una entidad determinada puede ser miembro como mucho de una de las colecciones hi+a. n caso contrario# hablamos de especializacin con solapamiento. 3or e+emplo# si tenemos una coleccin de entidades Profesor $ otra Alumno en el sistema de gestin de una entidad# $ utilizamos una coleccin padre Persona para representar sus atributos $ relaciones comunes# nos encontraremos con )ue una misma persona puede ser a la %ez Profesor $ Alumno.

Traduccin de gen-spec a tablas relacionales

2 de 8

31/03/2014 09:23 p.m.

Traduccin de relaciones de especializacin a tablas relacionales

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

propio con+unto de atributos 'posiblemente %ac5o(.

Figura 1

ste es el es)uema gen0rico )ue utilizaremos.

Traduccin mediante varias tablas Traduccin con tabla padre com n


n esta traduccin# se crea una tabla relacional para la coleccin gen0rica P# con todos sus atributos propios $ cla%e k. Tambi0n se crea una tabla por cada una de las colecciones de entidades especializadas Hi# conteniendo sus atributos propios# $ la cla%e k como cla%e a+ena en la tabla deri%ada de P. &a cla%e k es cla%e primaria de todas las tablas. ,na operacin de reunin ' join( de la tabla P con cual)uiera de las tablas )ue contienen las especializaciones produce una relacin con los datos completos de esa entidad especializada. n S9& el es)uema ser5a el siguiente:
SELECT k, A1, ..., An, Ai1, ..., Ail FROM P, Hi WHERE P.k = Hi.k

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

31/03/2014 09:23 p.m.

Traduccin de relaciones de especializacin a tablas relacionales

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 este caso obtendr5amos la in1ormacin de los clientes 1recuentes de la siguiente 1orma:


SELECT CLIENTES.id, nombre, apellidos, puntos FROM CLIENTES, CLIENTES_FRECUENTES WHERE CLIENTES.id = CLIENTES_FRECUENTES.id

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

31/03/2014 09:23 p.m.

Traduccin de relaciones de especializacin a tablas relacionales

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.

Traduccin con tablas solo para las subclases


n este caso no se crea una tabla relacional )ue represente a la coleccin de entidades gen0rica P. n su lugar# se crea una tabla relacional por cada coleccin de entidades especializada# con sus atributos propios $ todos los atributos de P# inclu$endo la cla%e k.

5 de 8

31/03/2014 09:23 p.m.

Traduccin de relaciones de especializacin a tablas relacionales

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.

Traduccin mediante una sola tabla

6 de 8

31/03/2014 09:23 p.m.

Traduccin de relaciones de especializacin a tablas relacionales

http://cnx.org/content/m18171/latest/

!na sola relacin " sin solapamiento # con discriminador


n este caso# se crea una sola relacin P con todos los atributos de la coleccin de entidades padre $ todos los atributos de todas las sub-colecciones# adem*s de incluir el atributo 'o los atributos( discriminador tambi0n. l %alor del atributo discriminador d permite determinar el tipo. As5# para obtener solo las entidades de una de las subcolecciones utilizaremos la siguiente sinta"is:
SELECT k, A1, ..., An, Ai1, ... Ail FROM P WHERE d = <<valor que discrimina Hi>>

&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

permitir nulos 'dado )ue la especializacin es obligatoria# en otro caso no lo necesitar5a(.


SELECT id, longitud, pasajeros_business, pasajeros_turista FROM AERONAVE WHERE tipo='pasajeros'

&as entidades de la segunda especializacin:


SELECT id, longitud, capacidad FROM AERONAVE WHERE tipo='carga'

!na sola relacin " con solapamiento


n este caso se crea una sola relacin P con todos los atributos de la coleccin de entidades padre $ todos los atributos de todas las sub-colecciones# adem*s de incluir tantos atributos booleanos como especializaciones {e1, ... em}# de modo )ue para una tupla de P# la entidad pertenecer* a tantas de las especializaciones como %alores true tenga en atributos ei. sta representacin tambi0n sir%e para una relacin dis+unta. Siguiendo el e+emplo anterior tendr5amos:
PERSONA(id, nombre, apellidos, email, id_departamento, es_doctor,

7 de 8

31/03/2014 09:23 p.m.

Traduccin de relaciones de especializacin a tablas relacionales

http://cnx.org/content/m18171/latest/

tiene_beca, es_profesor, es_alumno)

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.

Criterios para seleccionar la representacin


&a traduccin con tabla padre com2n sirve para representar todos los tipos de especiali#aci$n: total o parcial# dis+unta o solapada. s importante entender )ue los datos est*n partidos entre la tabla padre $ las tablas con las especializaciones. n el caso de solapamiento de las especializaciones# la operacin de e)uireunin para recuperar toda la in1ormacin deber5a incluir a todas las tablas )ue se solapan. &a traduccin mediante %arias tablas sin tabla padre es la m%s eficiente en el caso de especiali#aciones totales no solapadas# $a )ue no producen redundancia en la in1ormacin $ no re)uieren operacin de +oin para la recuperacin separada de las sub-coleccions. &as opciones de una sola tabla pueden considerarse cuando el n2mero de atributos espec51icos de las subclases sea mu$ ba+o $ el desapro%echamiento de espacio sea bene1icioso en relacin al bene1icio de rendimiento de e%itar las operaciones de +oin )ue se producen cuando ha$ tabla padre $ tablas hi+as. Cuando tenemos una +erar)u5a gen-spec# en general no es necesario utilizar la misma opcin de representacin para todos los ni%eles.

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

31/03/2014 09:23 p.m.

Das könnte Ihnen auch gefallen