Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Aikanáro Anário en 18 Febrero 2012, 05:54 am



Título: Mapear esquema Entidad-Relación con entidades débiles
Publicado por: Aikanáro Anário en 18 Febrero 2012, 05:54 am
Tengo este esquema ER (http://i333.photobucket.com/albums/m399/Link02/sistemadivisa.png)

Nota: las llaves primarias no aparecen subrayadas, pero las puse en la esquina superior izquierda de la imagen. Para las entidades débiles (que no tienen llave primaria) se asume que la PK en ese caso es el discriminador.

Hice un pseudomapeo de ese diagrama:
Código:
EMPLEADOS(Comisiones, Nombre, Documento, Id_Empleado, Apellidos, Cargo)
PK(Id_empleado)


TARNSACCIONES(Taza, Tipo, Monto, Efecto_de_pago, Hora, Comisiones, Fecha, Divisa, Id_empleado, No_cliente)
PK(Tipo, Fecha)
FK(Id_empleado)


CLIENTES(No_cliente, Telefono, Documento, Direccion, Nombres, Apellidos, Id_empleado)
PK(No_cliente)


DoCUMENTACION(Estado, Tipo, No_cliente, Id_empleado)
PK(Tipo, No_cliente)
FK(No_cliente)


MERCADO(Divisa, Taza, Id_empleado)
PK(Divisa, Id_empleado)

Pero tengo algunas dudas... Me parece que las reglas de mapeo se contradicen entre sí...
La regla para mapear relaciones de N a 1 dice que escogemos la relación del lado N y le agregamos los atributos que forman la llave primaria de la entidad del lado 1 como llaves foráneas y si la relación tiene atributos, también se lo agregamos a la relación del lado N.

En este caso tengo una relación de N a 1 entre Mercado y Empleados. Mercado es una entidad débil, así que no tiene llave primaria, lo que tiene es un discriminador, que es Divisa, entonces ¿qué debería hacer? ¿debería de agregar el discriminador Divisas como llave foránea a Empleados o no agregar nada?

Pero además hay una regla específica para mapear entidades débiles que dice: se toman los atributos de la entidad débil y la llave primaria de la entidad dueña. La llave primaria será la combinación del discriminador de la entidad débil con la llave primaria de la entidad dueña.

¿Entonces debo ignorar la cardinalidad y aplicar la regla de para mapear entidades débiles?
¿Y qué se hace cuando es la entidad débil la que está del lado N?

Estoy muy confundido con eso, ojalá puedan ayudarme.