我有四个桌子:

订单[orderId,* itemId,totalPrice]

项目[itemId,* orderId,数量]

海报[posterId,* orderId,大小,材料]

卡[cardId,* orderId,大小,文本]

项目本质上是一个抽象表,其中包含与每个项目相关的数据。所有项目(海报和卡片)都有一些独特的属性。

两个问题:


有没有办法在Items表和海报/卡片之间建立继承关系?这样,Order表将仅接受某项子项的itemId?
一个订单可以有多个项目,因此它应该包含一列外来项目密钥,而不只是一个。我该如何解决?

最佳答案

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


  有没有办法在Items表和海报/卡片之间建立继承关系?这样,Order表将仅接受某项子项的itemId?


将“订单”表上的外键约束设置为“项目”表。


  一个订单可以有多个项目,因此它应该包含一列外来项目密钥,而不只是一个。我该如何解决?


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

关于mysql - 如何在订单表中存储项目列表(MySQL),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38718602/

10-17 02:04