小编典典

具有其他表的多个ID的SQL字段

sql

有人可以告诉我如何创建此数据库结构的想法。这是一个例子:

Table "countries":
id, countryname
1, "US"
2, "DE"
3, "FR"
4, "IT"

现在,我有另一个表“产品”,并且我想在其中存储可以使用该产品的所有国家/地区:

Table "products":
id,productname,countries
1,"product1",(1,2,4) // available in countries US, DE, IT.
2,"product2",(2,3,4) // available in countries DE, FR, IT.

我的问题:如何设计“产品”中的表结构以能够存储多个国家?

我最好的主意是在其中放置一个逗号分隔的字符串(即“ 1,2,4”),然后拆分该字符串以查找每个条目。但是我怀疑这是做到这一点的最佳方法吗?

编辑:谢谢大家的帮助,太神奇了!选择正确的答案很困难,我最终选择了Gregs,因为他为我指出了JOIN的解释,并给出了如何使用它的示例。


阅读 286

收藏
2021-03-17

共1个答案

小编典典

对于该多对多关系,您需要一个相交表。

Table Country
CountryID, CountryName

Table CountryProduct
CountryID, ProductID

Table Product
ProductID, ProductName

然后,您就可以Inner Join all
3表以获取国家和产品列表。

Select * From Country 
Inner Join CountryProduct On Country.CountryID = CountryProduct.CountryID 
Inner Join Product On CountryProduct.ProductID = Product.ProductID
2021-03-17