Relaciones de entidades - ¿Puede una entidad débil participar en un 'uno a muchos' relación como el 'uno'

StackOverflow https://stackoverflow.com/questions/2464094

Pregunta

Con la siguiente estructura de entidad-relación Estoy luchando para averiguar si la relación entre las entidades de préstamo y ITEM es válida?

La entidad débil de préstamo utiliza una clave parcial de las claves primarias de cliente y artículo 'loan_dateLeant' y formar préstamos clave primaria. Sin embargo préstamo tiene un 'uno a muchos' relación con el tema como un préstamo puede consistir en más de un artículo. Pero sin duda esto significa que si se presta más de un elemento, entonces el registro préstamo tendrá dos valores para item_id parte de su clave primaria?

text alt

¿Fue útil?

Solución

Tienes razón, eso no es válido - no se puede utilizar una relación de muchos como una parte definitoria de una clave principal. Lo que se podría considerar hacer lugar es la adición de un loan_id única que haga parte de la clave principal, en lugar de los elementos del préstamo contiene; entonces un solo préstamo se define por su cliente y el ID de préstamo (o cliente, la fecha, y el ID de préstamo).

Si eso no funciona, hacer date_leant un campo de fecha y hora, y aumentar la precisión en ella hasta que no se puede, posiblemente, (dentro de las limitaciones de su sistema) tienen dos préstamos ocurrir al mismo tiempo - ¿qué probabilidades hay de que un solo cliente realiza transacciones dos préstamos separados dentro de milisegundos de uno al otro?

Tenga en cuenta que esto no impedirá que la entidad de préstamo de tomar parte en la relación como el "uno"; sólo significa que no se puede definir la entidad débil usando los "muchos".

Otros consejos

En realidad, usted puede hacer esto.

Recuerde, la clave principal del préstamo sólo dependerá de la fecha + identificador del cliente. Mientras hay una cardinalidad máxima de "1" en la relación "puede hacer" (es decir, un préstamo se relaciona con sólo el 1-cliente), estás bien en la clave principal con el préstamo.

La tabla de elementos, en su lugar tomar el identificador (único) del préstamo (ID del cliente + fecha) como una clave externa en la partida. La clave principal del préstamo no se verá afectada por este modelado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top