database - 如何在 ERD 中表示多对多关系
问题描述
我正在尝试建立餐厅系统。
首先,我正在为需求构建 ER 图。
我有两张表,客户,它只有一个属性是 table_number,另一个表是 Item,这是客户将选择的菜肴,它有几个属性是(id,name,category,price)。
我遇到问题的一部分要求是:当客户下订单并提交时,应该发生两件事,首先将订单详细信息发送到厨房,然后将相同的订单保存在 history_order 中。我的问题是:我如何表示这些表之间的两个多对多关系我知道如何表示将由厨师读取的当前订单,但我不知道如何表示一种多对多关系在不违反原则或最佳实践的情况下以最佳方式。我下载了图片中的作品,以向您展示我在说什么。我希望它是清晰易懂的。如果有任何不清楚的地方,请在评论中告诉我。
ERD 图
解决方案
顺序就是顺序。它被送到厨房,并被存档在历史中。像其他一切一样,您想记录一次。您可能会从多个表中引用它。
假设您有一个具有关键属性order_id和item_id的表order_items。现在您可以查找订单的所有项目。您可以有另一个表来跟踪每个订单的进度。将其称为带有属性order_id和status的订单,它们可能具有诸如(sent to kitchen)、(to be serving)、、 maybe和 (hopefully)之类的值。您还可以有一个属性status_time来记录上次更新状态的时间。您的“厨房”订单列表是那些状态为的订单;历史是有地位的。ordered
ready
served
cancelled
paid
ordered
paid
您可能不需要order_id。根据您的描述,table_number和order_time 似乎可以唯一标识每个订单。您可以使用该对而不是不透明的 ID。
推荐阅读
- c# - GetPrintQueue 导致表单加载执行不完整
- python - Convert (transpose) dataframe lists to columns
- javascript - data-* 的值是错误的
- apache - XWiki 是否禁用 SSH?
- jquery - Boostrap 防止 jQuery 改变复选框的状态
- r - 需要:剪辑/选择/剪切/子集(或仅显示)美国栅格的值,包括美国本土、阿拉斯加和夏威夷
- laravel - 如何使用 Laravel 上传图片?
- visual-studio-2017 - 如何调试 vs 2017 intellisense 的问题,但仅在某些文件上运行速度很慢
- android - 旋转设备时将 NestedScrollView 滚动到顶部
- google-apps-script - 具有编辑权限的用户使我拥有的文件无法被我查看