martes, 20 de septiembre de 2011

Conceptos avanzados de modelo de datos


1. Diferencias entre el modelo ER y el modelo ER extendido (EER)

El Modelo Entidad-Relación Extendido incluye todos los conceptos del Entidad-Relación e incorpora los conceptos de Subclase y Superclase con los conceptos asociados de Especialización y Generalización. Otro nuevo concepto incluido por el ERE es el de Categoría. Asociado a estos conceptos está el importante mecanismo de Herencia de atributos.
  • SUBCLASE: Grupo de elementos con algo en común, que pertenecen a una ENTIDAD. 
  • SUPERCLASE: Entidad de la que procede una SUBCLASE. 
  • RELACIÓN Clase/Subclase (o Superclase/Subclase): Es una relación 1:1 en la que ambos elementos son el mismo. Se suele representar por ES_UN. 

Características del Modelo EER:
  • Una Entidad no puede ser sólo miembro de una SUBCLASE. Debe ser también miembro de la SUPERCLASE. 
  • Una Entidad puede ser miembro de varias SUBCLASES. 
  • Una Entidad se define por sus atributos y sus relaciones, los cuales son HEREDADOS por sus SUBCLASES. 
  • Atributos y Relaciones LOCALES o ESPECÍFICAS: Son aquellas que son propias de una SUBCLASE (no de la SUPERCLASE a la que pertenece).


2. Modelado de las Subclases y Superclases

En el modelo entidad-relación extendido, una entidad agrupa un conjunto de ocurrencias de entidad del mismo tipo, en muchos casos esas ocurrencias tienen un significado propio para la base de datos y se deberán de representar de otra manera.

Las subclases deberán de pertenecer a una superclase y podremos tener las relaciones clase/subclase. Debido a que una subclase es a su vez parte de una superclase, la superclase tendrá sus atributos específicos así como los atributos correspondientes a la superclase a la cual pertenece. Si esto existe en un diagrama se dice entonces que existe una herencia. De la misma manera en que se heredan los atributos, las subclases heredarán las relaciones que contenga la superclase.

Especialización

El proceso por el que se definen las diferentes subclases de una superclase se conoce como especialización. El conjunto de subclases se define basándonos en características diferenciadoras de las ocurrencias de entidad de la superclase.





Espec./Generalización en RETÍCULA (malla o red)
Una subclase puede serlo de varias superclases. En ese caso, la subclase HEREDA los atributos de TODAS sus superclases (por todos los caminos).

3. Generalización

Se da cuando se tienen varias entidades con características comunes y pueden crearse una entidad superior que tenga la información general de la aplicación. En otras palabras la generalización es el proceso inverso de la especialización.

Agregación

Es una abstracción a través de la cual las relaciones se tratan como entidades de un nivel más alto. Se utiliza para expresar relaciones entre relaciones o entre entidades y relaciones. Se representa englobando la relación abstraída y las entidades que participan en ella en un rectángulo.



Asociación/Relaciones

Dos (o más) tipos de relación son exclusivos, respecto de un tipo de entidad que participa en ambos, si cada instancia del tipo de entidad sólo puede participar en uno de los tipos de relación.


4. Modelos de Datos con Especialización y Generalización

Las subclases y superclases se corresponden con entidades y por tanto se representarán con rectángulos en el diagrama ERE. Ahora veremos con más detalle las propiedades de especialización y generalización.

4.1. Restricciones de especialización y generalización

En general podremos tener varias especializaciones o generalizaciones definidas sobre la misma entidad o superclase. En tal caso las ocurrencias de entidad pueden pertenecer a cada una de las especializaciones. Sin embargo, una especialización o generalización puede consistir en solo una subclase.

En algunas especializaciones y generalizaciones podremos determinar exactamente que ocurrencias de entidad se convertirán en ocurrencias de cada subclase, mediante la utilización de una condición en algún atributo de la superclase. Tales subclases se llaman subclases definidas por predicado (o definidas por condición). 

Si todas las subclases en una especialización o generalización tienen la condición de pertenencia en el mismo atributo de la superclase, la especialización será unaespecialización definida por atributo y el atributo será llamado atributo de definición de la especialización. Definiremos una especialización definida por atributo en el diagrama colocando el atributo de definición cerca del arco que va desde el círculo a la superclase.

Cuando no exista tal condición para determinar la pertenencia a una superclase, la subclase se llamará subclase definida por el usuario. En tales subclases, la pertenencia vendrá determinada por los usuarios de la Base de Datos cuando realicen una operación de inserción de una ocurrencia en la subclase; por tanto, el usuario especifica la pertenencia de cada ocurrencia individualmente y no mediante una condición que pueda ser evaluada automáticamente.



Se pueden aplicar dos restricciones más a la especialización. La primera es la restricción de desunión, la cual especifica que las subclases de la especialización deben estar separadas. Esto significa que una ocurrencia de la entidad puede ser miembro de como máximo una de las subclases de la especialización. Una especialización definida por atributo implica la restricción dedesunión, si el atributo para definir el predicado de pertenencia es simple. También usaremos la notación d para especificar que una especialización definida por el usuario debe tener la restricción de desunión asociada.



Si las subclases no son desunidas, sus conjuntos de ocurrencias pueden solaparse, esto es, la misma ocurrencia de entidad puede ser miembro de más de una subclase de la especialización. Este caso, que es el caso por defecto, se representa mediante una O en el circulo.

La segunda restricción a la especialización se llama la restricción de totalidad, la cual puede ser parcial o total. Una restricción de especialización total especifica que cada ocurrencia de entidad de la superclase debe ser miembro de alguna subclase de la especialización. Una línea sencilla se utiliza para representar una especialización parcial, la cual permite que una ocurrencia de entidad no pertenezca a ninguna de las subclases. 

Hay que tener en cuenta que las restricciones de desunión y totalidad son independientes, por tanto habrá cuatro tipos de especialización:
  • Desunión, total
  • Desunión, parcial
  • Solapamiento, total
  • Solapamiento, parcial
Como es lógico, las restricciones correctas vienen dadas por la naturaleza del problema real aplicado a cada especialización, sin embargo, la generalización en una superclase suele ser total, ya que la superclase se deriva de las subclases y, por tanto, contiene sólo ocurrencias de entidad que están en las subclases.

4.2. Reglas de inserción y borrado para Especialización y Generalización

Como consecuencia de las restricciones definidas anteriormente, aparecen reglas para la inserción y borrado de Especialización (y Generalización). Algunas de esas reglas son las siguientes:
  • Borrar una tupla de una superclase implica el borrado automático en todas las subclases a las que pertenezca.
  • Insertar una tupla en una superclase implica que tiene que ser obligatoriamente insertada en todas las subclases definidas por predicado en las que satisfaga el predicado de definición.
  • Insertar una tupla en una superclase de una especialización total implica una inserción obligatoria en al menos una de las subclases de la especialización.

4.3. Jerarquías de Especialización, Red de Especialización y Herencia Múltiple.


Una subclase puede, a su vez, tener más subclases especificadas a partir de ella, formando una jerarquía o red de especializaciones. Una jerarquía de especialización tiene la restricción cada subclase participa (como subclase) en una relación clase/subclase. Como contraste, para una red de especialización una subclase puede ser subclase en mas de una relación clase/subclase. 




En tal red o jerarquía de especialización, una subclase hereda no solamente los atributos de su superclase directa, sino también todos los de sus predecesores hasta la raíz. 

Una subclase con más de una superclase se llama subclase compartida. Hay que tener en cuenta que una subclase compartida implica una red; si no existen subclases compartidas estaremos en presencia de una jerarquía en vez de una red.

Aunque se ha utilizado la especialización para definir estos conceptos, la generalización es igualmente aplicable a estos. Por tanto podremos hablar de la misma forma de jerarquía de generalización y red de generalización.

4.4. Diseño Top-down frente a Bottom-up

En el proceso de especialización, solemos empezar con una entidad y a continuación definimos las subclases de la entidad mediante especializaciones sucesivas; esto es, definimos repetitivamente más agrupamientos específicos a partir de la entidad. Esta especialización sucesiva corresponde a un proceso de refinamiento conceptual top-down durante el diseño del esquema conceptual.

Es posible llegar a la misma jerarquía o red desde otra dirección. En tal caso el proceso conlleva generalización en vez de especialización y corresponde a una síntesis conceptual bottom-up. En términos estructurales, las jerarquías o redes resultantes de ambos procesos puede se idénticas; la única diferencia radica en la manera o el orden en que se especifican las clases y subclases del esquema.

En la práctica, es frecuente que no se utilice solamente especialización o solamente generalización, sino una combinación de ambos procesos. En este caso, se incorporan continuamente nuevas clases a la jerarquía o la red según se van haciendo visibles para usuarios y diseñadores.

5. Categorías y Categorización

Una categoría es una subclase de la unión de dos o más superclases que pueden tener diferentes claves ya que pueden representar diferentes entidades. En este caso es necesario sintetizar una clave subrogada, que identifique cada una de las ocurrencias de la categoría y que será heredada como clave foránea por cada una de las superclases. Por cuestiones de eficiencia a la hora de realizar los joins entre la categoría y sus correspondientes clases, se añadirá un atributo a la tabla de la categoría que exprese a que subclase pertenece cada túpla en particular.



No hay comentarios:

Publicar un comentario en la entrada