【发布时间】:2019-12-02 19:45:38
【问题描述】:
我是 mysql 新手,正在尝试链接两个表,但不确定如何链接,我有一个产品表,其中包含餐厅的产品列表,该表中的列是
- ID(主键)
- 姓名
- 价格
另一张桌子叫做 extras,这张桌子包含额外的东西,您可以添加到您的订单中,但是是可选的,因为在购买鸡肉时,您可以选择辣和不辣, 有些产品有不止一个附加功能,例如一个产品可以选择三个附加功能。
目前的临时表只有
- ID(主键)
- 姓名
不确定如何将两者联系起来或将外部约束放在哪里。
更新
同样的额外也可能属于许多产品
【问题讨论】:
-
您只需将 product_id 添加到您的额外表中
-
通常人们会期望“extras”表中的某个外键字段指向“products”表。 F.e.类似:
extras.product_id-->products.id -
看起来这两个表无法链接,因为附加项的数量似乎会根据您希望拥有一张 product_extras 表的产品而有所不同。该表只需要两列,一列用于产品 ID,另一列用于附加 ID。
-
在上面提到的@JoshGivens 之上,您可能需要在产品表中的一个字段来指示额外的限制(例如:“最多选择 3 个额外的”)。 ...并且您可能需要区分“额外”和“选项”(例如:比萨饼通常带有“选择 x 配料”优惠,但不要将酱汁选择算作“配料”)
-
如果某个额外的(如“辣”)可能适用于不止一种产品(“鸡肉”、“牛肉”、“猪肉”……),那么您就有了多对多关系,并且需要一个单独的表来连接两者:
extra_product,带有两个外键product_id和extra_id。