我的数据库描述公司网站。公司网站有几个属性:URL,加载时间等。每个网站都针对一个或多个国家/地区。我在表达网站与国家之间的关系时遇到了问题。
我的设置编号1如下所示:
我的设置编号2如下所示:
我对这两种方法都有疑问:
答案 0 :(得分:2)
@Jodrell已经给了你正确答案 - "设置号2"用化合物PK是最好的解决方案。我只是详细解释一下。
有公司,国家和网站。对于他们每个人,我们创建一个单独的表。
现在是参考的时候了:
如果公司可能只有一个网站,那么它就是一对一的关系。如果它可能有很多网站,那么它就是一对多的关系。在这两种情况下,您在网站表中都有一个外键CompanyId - 它只在UNIQUE约束中有所不同。
你写的是#34;每个网站都针对一个或几个国家。"此外,对于每个国家/地区,可能有一个或多个网站(针对不同的公司)。这意味着它是一种经典的多对多关系。在这种情况下,您必须添加联结表 - WebsiteCountries。在这里,您将拥有一个由两列组成的复合主键:(WebsiteId,CountryId)。这样可以避免重复。
希望这有帮助。