如何代表在关系数据库中的许多一对多的关系?(How to represent a many-to-m

2019-11-03 06:32发布

我有两个表国家及地区。 区域是一组一个或几个国家。 一些国家在任何地区。

我应该如何表现这在关系数据库? 我认为这两个以下几种可能:

  • 国家有一个版本列包含null或者其所属的版本。 我的问题是:我从小受到的教育是空数据库中的邪恶。
  • 版有一个国家列,它是国家的数组。 我的问题是:我已经教阵列在数据库中的邪恶。

什么是最好的做法是什么?

Answer 1:

一种方法是创建一个第三个表具有两列,一个包含CountryID其他RegionID其中,这些分别是国家及地区的唯一标识符。

此表中的一行意味着一个国家和一个地区之间的关系。 正如你可以在表中有多个行,你可以存储许多一对多的关系。 如果没有关系(有些国家是在任何区域),没有在表中没有行。

下面是一个例子

表1 - 国家
ID名称
1西班牙
2法国
3德国
4挪威
5 Belguim

表2 - 地区
ID名称
1欧洲
2比荷卢
3欧盟贸易地区
4 ASIA

表3 - COUNTRYREGION
国家地区
1 1
2 1
3 1
4 1
5 1
1 3
2 3
3 3
5 2

其中已表达了如下 -
西班牙是欧洲(国家1,区域1)
法国是欧洲
德国是欧洲
挪威是欧洲
比利时是欧洲
西班牙是欧盟
法国是欧盟
德国是欧盟
Belguim是比荷卢经济联盟

没有一个国家在亚洲

THS可能不完整的地理,或正确的,但我希望它显示的原则。



文章来源: How to represent a many-to-many relationship in a relational database?