我有需要转成表格的数据。此数据包含主要与荷兰王国有关的数据,以及其他一些国家/地区。这有一些陷阱:
荷兰王国由四个国家(如果是荷兰,则是一个国家)和三个特殊城市组成,这些国家属于荷兰,但不在荷兰本身内。
荷兰有省,那些省有市,市有住所。
这三个特别市不属于任何省,它们直接属于荷兰。
在我们得到的数据中,荷兰王国内部的三个国家就是那个国家。数据显示“国家/地区”下的国家/地区和“居住地”下的国家/地区
然后是其他国家的荷兰人的问题。对于那些国家/地区,我们不在乎它们是否具有省/市/自治区等。我们只是从国家角度来看。
为了给出更好的主意,我们得到的数据如下所示:
博内尔岛实际上应该是国家/地区:荷兰,市/自治区:博内尔岛(也许是居住地:博内尔岛,不确定是否对查询有帮助)
我最初的想法是如何将其放在表中,如下所示:
Residences表中也会有一个CountryId的原因是因为像墨西哥这样的国家/地区,我们不想知道/显示市政当局,但是我们确实知道并且想要显示居住地。
但是,这种方法的问题是,在“住所”表中的“市政”列中,对于像墨西哥这样的国家,则必须包含空值。
还有另一个问题是,在荷兰王国中的一个国家(荷兰除外)中,该国家以及住所都填写有该国家的名称。我不知道将国家的名称放在“住所”表中是否明智。
具有这些要求的DB设计解决方案可能是:1)具有记录的地理对象类型(可能是分层的)的字典表(ID,名称):
{id = 1, Name = Province}, {id = 2, Name = Municipality}, {id = 3, Name = City}
, 等等
2)一个带有FK的表(id,GeoTypeId,ParentId,CountryId,Name)(自身ID-> ID),该表存储对象的链接层次结构。记录将是:
{id = 1, GeoTypeId = 1, ParentId = null, CountryId = ..., Name = Zuid-Holland}, {id = 2, GeoTypeId = 2, ParentId = 1, CountryId = ..., Name = Rotterdam}
。对于墨西哥,记录是 {id = n, GeoTypeId = 3, ParentId = null, CountryId = ..., Name = Morelia}
这对于编辑层次结构是很灵活的,但是您将需要一些额外的工作来选择记录(这是规范化的代价)。您也可以在新国家/地区需要时轻松添加其他GeoType记录,而无需更改架构。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句