我试图在关系数据库中建立一个“零售商店”模型。一家商店
我的桌子
Products
productId*
productPrice
fooAndBars
Store
outletId*
ownerId
fooAndBars
productStoreJoin
productId \__Primary key
ownerId /我的问题是:
可能有一些产品可以在一个销售点,但可能不是在另一个。要获得一个出口的所有产品,我将查询连接表。但我会得到所有的产品,即使它不能在那个插座,因为我将查询与ownerId。
我能想出的解决办法是:
productId ownerId outletIds 56 2 [1001, 1005, 1008, 1009]
57 2 [1001, 1005, 1008] ..。
解决这个问题的正确方法应该是什么?
发布于 2016-01-02 06:38:01
如果您需要知道哪些产品可以在哪个分店中使用,您应该有一个连接表,该表可以将产品映射到出口。这个表应该有很多行,一个存储区有10^5行就可以了。对于使用整数值的联接查询,MySQL非常快速。按照您的命名约定,我将join表重命名为productOutletJoin。
对于像“哪些产品在1008分店?”这样简单的查询来说,您的第二种方法将是一场噩梦。想象一下尝试使用该架构插入、更新或删除数据。存储以逗号分隔的ids列表绝不是一个好主意。
https://stackoverflow.com/questions/34563158
复制相似问题