如何在订单表中存储项目列表(MySQL)

时间:2016-08-02 11:00:49

标签: mysql database list inheritance many-to-many

我有四张桌子:

订单[orderId,* itemId,totalPrice]

项目[itemId,* orderId,quantity]

海报[posterId,* orderId,尺寸,材质]

卡[cardId,* orderId,尺寸,文字]

项本质上是一个抽象表,用于保存与每个项目相关的数据。所有物品(海报和卡片)都有一些独特的属性。

两个问题:

  1. 有没有办法在Items表和海报/卡之间建立继承关系?这样Order表只接受Item的孩子的itemId吗?
  2. 订单可以包含多个商品,因此它应该包含外部商品键列表,而不仅仅是一个。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您可以为Items创建一个表,并将Poster / Card表中的外键约束设置为Items表。

  

有没有办法在Items表和poster / card之间建立继承关系?这样Order表只接受Item的孩子的itemId吗?

将Order表上的外键约束设置为Item表。

  

订单可以包含多个商品,因此它应该包含外部商品密钥列表,而不仅仅是一个。我该如何解决这个问题?

在多对一关系中,映射应存储在一侧,即您的情况下的项目侧而不是订单侧。如果Item表是一种静态的,你应该创建一个映射表来管理Item和Order之间的关系,而不是保存在Order表中。

答案 1 :(得分:0)

最好分别从<form id="searchBox"> <p> <input type="text" name="search" id="search" onkeyup="searching(this.value)" placeholder="Search here"> <button class="find" data-icon="&#xe986;"></button> </p> </form> itemId表中删除orderIdOrder。将它们视为Item。如您所说,Master可以有多个Order,请创建第三个表格,例如items并创建两列order_item&amp; orderId并将其引荐到相应的itemId

master_tables

通过这种方式,您可以为单个orderId|itemId| -------+------+-- 1 | 1 | 1 | 2 | 1 | 3 | 设置多个Items,并且可以对其他表执行相同的操作

相关问题