【问题标题】:trying to figure out a good database design试图找出一个好的数据库设计
【发布时间】:2015-11-11 16:19:42
【问题描述】:

好的,这是我的问题,我正在尝试为班级项目设计数据库。我很难弄清楚如何将一张桌子与另一张桌子联系起来。在这种情况下,我试图拥有一个可以代表几个不同项目的主键。就像一个单一的 PizzaOrderID 代表肉食爱好者、素食爱好者和奶酪比萨。都有不同数量的比萨饼。有人可以帮助我如何设置这个设计吗?

编辑:

第三范式

客户

客户 ID → 主键

名字姓氏街道地址公寓城市州邮政编码家庭电话手机其他电话

甜甜圈

Doughnut ID → 主键

名称说明

甜甜圈订单

甜甜圈订单 ID → 主键

Doughnut ID → 外键

数量单价

订单销售

顺序→主键

甜甜圈订单 ID → 外键

好的,这是我的第三个正常形式,你可以看到我正在处理的确切项目是甜甜圈,我猜我需要调整这个形式

【问题讨论】:

  • 您需要一个 ORDER 表和一个 MENU 表。然后用 ORDER_MENU 表连接两者
  • 是的。 ORDER_MENU 表也将有两列,分别称为 ORDER_ID 和 MENU_ID,它们都是外键。它们合在一起就是 ORDER_MENU 的主键。
  • 好的,我有一个以 Pizzaid 作为我的主的披萨表,我有一个以 orderid 作为我的主的订单表现在我也有一个带有我的 Pizzaid 外键的 Pizzaorder 表,所以我应该设置一个主表作为 Pizzaorderid 的键,即使当它链接披萨 ID 时,它也不会接受相同的 Pizzaorderid 编号
  • 第三范式客户客户ID→主键名字姓氏街道地址公寓城市州邮政编码家庭电话手机其他电话甜甜圈ID→主键名称描述甜甜圈订单甜甜圈订单ID→主键甜甜圈 ID → 外键 数量 单价 订单销售订单 → 主键 甜甜圈订单 ID → 外键 好的,这是我的第三个正常形式,你可以看到我正在处理的确切项目是甜甜圈,我猜我需要调整这个表格
  • 请把它放在edit 中,不要在这里提问

标签: mysql sql database-design


【解决方案1】:

让我们从头开始。您有一个代表餐点的表,您显然将其称为 pizza,并且该表有一个主键 pizza_id。 (我使用 _ 来提高可读性)。可以在餐厅的餐桌上订购此类餐点,方法是将 order 存储在具有主键 order_id 的另一个表中。

到目前为止一切顺利。现在订单可以是一个、两个或更多的披萨。此外,订单可以包含更多同类型的比萨饼!显然您的设计需要涵盖这一点,解决方案是 N:M(多对多)关系。

这是在名为 orderitem 的第三个表中完成的,该表具有 复合主键(由两列组成)pizza_idorder_id 。这两个同时是引用它们各自表的外键。作为附加栏可以放同种餐食的数量。

【讨论】:

    猜你喜欢
    • 2016-01-24
    • 1970-01-01
    • 2013-10-07
    • 2018-06-11
    • 2010-09-24
    • 2021-10-15
    • 2017-02-16
    • 2011-09-24
    相关资源
    最近更新 更多