我有四个桌子:
订单[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/