首页 > 解决方案 > 如何在 ERD 中表示多对多关系

问题描述

我正在尝试建立餐厅系统。
首先,我正在为需求构建 ER 图。
我有两张表,客户,它只有一个属性是 table_number,另一个表是 Item,这是客户将选择的菜肴,它有几个属性是(id,name,category,price)。
我遇到问题的一部分要求是:当客户下订单并提交时,应该发生两件事,首先将订单详细信息发送到厨房,然后将相同的订单保存在 history_order 中。我的问题是:我如何表示这些表之间的两个多对多关系我知道如何表示将由厨师读取的当前订单,但我不知道如何表示一种多对多关系在不违反原则或最佳实践的情况下以最佳方式。我下载了图片中的作品,以向您展示我在说什么。我希望它是清晰易懂的。如果有任何不清楚的地方,请在评论中告诉我。
ERD 图

标签: databaserelational-databaseentity-relationshipentity-relationship-model

解决方案


顺序就是顺序。它被送到厨房,并被存档在历史中。像其他一切一样,您想记录一次。您可能会从多个表中引用它。

假设您有一个具有关键属性order_iditem_id的表order_items。现在您可以查找订单的所有项目。您可以有另一个表来跟踪每个订单的进度。将其称为带有属性order_id和status的订单,它们可能具有诸如(sent to kitchen)、(to be serving)、 maybe和 (hopefully)之类的值。您还可以有一个属性status_time来记录上次更新状态的时间。您的“厨房”订单列表是那些状态为的订单;历史是有地位的。orderedreadyservedcancelledpaidorderedpaid

您可能不需要order_id。根据您的描述,table_numberorder_time 似乎可以唯一标识每个订单。您可以使用该对而不是不透明的 ID。


推荐阅读