PDA

Ver la versión completa : Entidades débiles E-R



luis9rs
14-06-2010, 13:37
Hola tengo una duda sobre como modelar una parte de mi diagrama E-R. Tengo una base de datos que tiene que guardar tablas para articulos, pedidos y proveedores. Los articulos no pueden existir si no existen pedidos, pero los pedidos tampoco pueden exitir si no existen proveedores. Por lo tanto tendría dos entidades débiles, pedidos y articulos. Sin embargo. No puedo asociar la entidad debil articulos a otra entidad debil(pedidos). ż Como lo podría modelarlo??
Muchas gracias por anticipado. Saludos!

hystd
23-06-2010, 23:25
Existen dos tipos de entidades débiles... Débil en existencia y Débil en identificación.

Todas las entidades débiles por defecto son débiles en existencia (se representan mediante doble rectángulo). Una entidad puede ser además, débil en identificación si no se puede identificar por si sola con sus atributos. En este caso se representa mediante un rombo de doble lazo (más el rectángulo doble, pues todas las entidades débiles en identificación, lo son también en existencia).

Nota que toda entidad débil en identificación puede resolverse fácilmente ańadiendo un atributo más que sea único (por ejemplo un autonumérico), dicho atributo debe cumplir los requisitos de PK (Primary Key).

Partiendo de un modelo entidad-relación (ER) o de un modelo Entidad-relación Extendido (EER), la forma de mapear las entidadesn débiles al modelo relacional RM/B (de Codd) se basan en los siguientes pasos (heurística de Elmasri/Navathé):

Mapeo de una entidad débil en existencia:

Dada una entidad W, débil en existencia de la entidad A (Anteriormente mapeada, y con clave primaria Ia), con identificador Iw, y con las propiedades (w1, w2, ..., wn), se genera la relación:

Rw (Iw, w1, w2, ..., wn, Ia), PK (Iw), FK (Ia)/Ra.

Es decir se genera una tabla (Relación Rw), que tiene los atributos w1...wn de esa entidad débil, y además tendrá el atributo Iw que es primary key, y por tanto la identifica, y además contendrá el atributo Ia, de la entidad A con la que se relaciona (Ia es una Foreign Key que referencia a una fila de la tabla Ra).

Mapeo de una entidad débil en identificación:

Dada una entidad W, débil en identificación de la entidad A (anteriormente mapeada y con PK=Ia), y con atributos (w1,...wn), se genera una relación:

Rw (Iw, w1, w2, ..., wn, Ia), PK(Ia, Iw), FK(Ia)/Ra.

Es decir, la relación generada es igual que la anterior, salvo que ahora la PK está formada por los atributos Ia e Iw. (FK(Ia)/Ra se lee: Ia es una clave foránea que referencia a una fila de la tabla Ra).

En tu caso, si consideramos los siguientes atributos para las 3 relaciones (a modo de ejemplo):

Proveedores (cod_proveedor, nombre, telefono)
Atriculos (cod_articulo, nombre, precio, descripcion)
Pedidos (cod_pedido, direccion, importe)

El modelo relacional ya mapeado sería algo así:

Proveedores (cod_proveedor, nombre, telefono), PK(cod_proveedor).
Articulos (cod_articulo, nombre, precio, descripcion, cod_proveedor), PK (cod_articulo), FK (cod_proveedor)/Proveedores.
Pedidos (cod_pedido, direccion, importe, cod_articulo), PK (cod_pedido), FK (cod_articulo)/Articulos.

Un saludo.