我有四张桌子:
订单[orderId,* itemId,totalPrice]
项目[itemId,* orderId,quantity]
海报[posterId,* orderId,尺寸,材质]
卡[cardId,* orderId,尺寸,文字]
项本质上是一个抽象表,用于保存与每个项目相关的数据。所有物品(海报和卡片)都有一些独特的属性。
两个问题:
答案 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=""></button>
</p>
</form>
和itemId
表中删除orderId
和Order
。将它们视为Item
。如您所说,Master
可以有多个Order
,请创建第三个表格,例如items
并创建两列order_item
&amp; orderId
并将其引荐到相应的itemId
master_tables
通过这种方式,您可以为单个orderId|itemId|
-------+------+--
1 | 1 |
1 | 2 |
1 | 3 |
设置多个Items
,并且可以对其他表执行相同的操作