Esta es básicamente una pregunta sobre qué son las entidades débiles. ¿Cuándo debemos usarlos? ¿Cómo deben ser modelados?
¿Cuál es la principal diferencia entre entidades normales y entidades débiles? ¿Las entidades débiles corresponden a objetos de valor cuando se hace un diseño dirigido por dominio?
Para ayudar a mantener la pregunta sobre el tema, aquí hay un ejemplo tomado de Wikipedia que las personas pueden usar para responder a esta pregunta:
En este ejemplo OrderItem
se modeló como una entidad débil, pero no puedo entender por qué no se puede modelar como una entidad normal.
Otra pregunta es, ¿qué pasa si quiero hacer un seguimiento del historial de pedidos (es decir, los cambios en su estado), ¿sería una entidad normal o débil?
OrderItem
depende,Order
ya que noorderItems
puede existir sin pertenecer a unorder
, pero no puedo ver por qué no puedo usarItemLineNumber
para identificar únicamente un artículo. En realidad, ¿podría hacerItemLineNumber
un autogeneradoint
para asegurar la unicidad y usar una clave foráneaorderID
para vincular las dos entidades?Un
OrderItem
no puede existir sin un pedido o un producto. Por lo tanto, es débil ya que sus dependencias lo controlan.Si, por ejemplo, elimina el pedido, no tiene forma de saber dónde debe enviarse el artículo. O si retira el producto, no sabe qué enviar.
fuente
Según tengo entendido en el diagrama anterior, han incluido las dos entidades / tablas en lugar de una, es decir, pedidos y elemento de pedido, de modo que acceder a la información se vuelve fácil cuando se diseñan dos entidades. Y el artículo de pedido depende de la entidad de pedidos, por lo que se considera una entidad débil. porque la característica de la entidad débil es que depende de otra entidad. Suponga que si no incluye la entidad del artículo del pedido, ¿cómo podrá saber el precio del artículo del pedido, el descuento? y como dijo jgauffin Si, por ejemplo, elimina el pedido, no tiene forma de saber dónde debe enviarse el artículo. O si retira el producto, no sabe qué enviar.
El diagrama ER debe diseñarse de acuerdo con los requisitos comerciales.
fuente
Vea, un pedido tiene muchos artículos de pedido (atributo multivalor). Por lo tanto, de acuerdo con la regla, creamos una tabla separada.
Ahora, digamos que 2 clientes tienen el mismo pedido, por ejemplo, ambos compran iPhone al mismo precio, descuento, misma fecha, etc. Por lo tanto, idealmente debería haber dos tuplas exactas por orden de iPhone en relación con el artículo. Pero de acuerdo con la restricción de una relación, todas las tuplas deben ser únicas. Así que relacionemos dos órdenes con el mismo item_line_number.no hay problema hasta ahora. Ahora considere uno de los clientes cancela. Es el pedido del iPhone. También se eliminará la tupla item_line_number. Ahora, otros clientes que compraron iPhone también se eliminan debido a la correspondencia M: 1. Finalmente, la base de datos es inconsistente. Es por eso que usamos una clave descriptiva que será ordenada. De esta forma, eliminar un iPhone ordenado no causa daños en la base de datos.
fuente