根据以下要求设计模式的最佳方式是什么?
需要存储的国家、州、县和县可以划分为区域。然后,区域可以让具有各种数据点的人员进行报告。
区域也可以进一步划分,就像分组人员一样。因此,区域1可以有部门A、部门B,每个部门都有人员。地区和地区,每个地区都有不同的元数据集,不同的国家、州和县也不同。
报告将是与人相关的数据,类似于谷歌分析,从国家到地区和部门都是如此。
注意:区域可以有10个人,1个部门,4个人,其余6个人不绑定到任何部门。
发布于 2009-09-28 22:18:37
听起来每个人只能有一个区域。
如果您正在进行事务处理(与数据挖掘/仓库相反),那么我将使用RegionID外键将人员链接到区域。
至于(可选的)部门,您可以使用链接表将人员链接到部门:PersonID,DivisionID,或者如果您不介意NULL DivisionID,您可以有一个外键。
至于地理区域的层次结构,在我更多地了解国家之间的限制以及这些结构所代表的内容之前,我会犹豫是否对此进行建模。虽然认为一切都会向上滚动到下一个级别是很好的,但我已经处理了很多跳过级别的层次结构,并且这些层次结构的建模方式非常不同。此外,许多国家(如英国)通常不会有美国(除非您打算使用英格兰、苏格兰、威尔士和北爱)。France is even more complex。
对于报告/汇总方面(或者如果您只做数据挖掘/仓储),我将转换到单独的维度模型,它将“锁定”其他内容作为属性,并使汇总变得更容易。因此,星型模式将锁定事实的不同级别的维度in。
发布于 2009-09-28 22:14:34
在我的脑海中:
国家、州、县、市都有fk到regions.
国家<-州<-县<-城市^\\//地区^|分区^ |/ divisions_people (多个部门1人)^| people
发布于 2009-09-28 22:17:10
国家/地区表: country_id,country_name,population
状态表: state_id、state_name、country_id、population
县表: county_id,county_name,state_id,population
地区表: region_id,region_name,county_id,population
分区表: division_id,division_name,region_id,population
在您的代码中或通过触发的约束(取决于您的RDBMS)验证您在一个只有50人的区域中没有一个300人的部门。如果有人在一个地区而不在一个地区,你的地区人口将是500人,而它的地区总和只有450人(剩下50人在一个地区,但没有地区)。
https://stackoverflow.com/questions/1489587
复制相似问题