我正在尝试建立嵌套关系的模型,但很难达到我想要的目标。我想举一个例子,希望能回答我的一些问题;它基于地理。
我想要一个单一的区域实体。这个区域实体允许行星,大陆和国家。
基本上只有一个区域叫做地球。这将是层次结构的第一层。然后我将得到7个大陆,它们将嵌套在地球区域内。然后我将把世界上所有的国家都加起来,把它们与它们的外大陆联系起来。一个国家属于一个以上的大陆,可能会有边缘情况(我不知道这个例子中是否有,但我希望有)。
我想说的是:
选择一个大陆上的所有国家。我也希望有无限期筑巢的能力,所以下一层是州/省。所以我可以说我想要北美所有的省份。
我可以想象SQL的外观,但我不知道如何进行多层嵌套:
Select *
From Region Outer, Region Inner
Where Outer.Name = "North America"
AND Inner.Type = "State"
我只提出了一个简单的区域实体,然后是一个自引用的父子实体:
Region {RegionID, Name, Type}
SubRegion {ParentID, ChildID}
我最感兴趣的是学习如何做到这一点。如果我做了错误或糟糕的设计决策/假设,请随意提出您自己的建议。我对地理方面的东西也没有明确的兴趣,我只是觉得这是一个很好的例子,说明了我正在努力实现的目标。
我正试图在SQL 2008 R2中用C_和LINQ来实现这一点。
这感觉像是一个分层的网络图,所以我认为应该有一个很好理解的方法来做到这一点;我只是不知道。
最佳答案
为什么要把事情复杂化?
只要在表中有“country”、“contain”、“state”、“country”、“city”和“district”列。
“国家”和“大陆”看似多余,但“莫斯科”在欧洲,符拉迪沃斯托克在亚洲,但两者都在俄罗斯联邦。
土耳其、丹麦和埃及也存在类似的情况。