我正在寻找一个对我们的数据库设计师提出挑战的设计问题的方向.我搜索了档案和谷歌并没有得出任何结论,但我怀疑这是一个简单/新手类型的问题.
我们有一个存储事件位置的表.它被称为Location表.该表要求LocationCode是唯一的.该表还要求LocationName是唯一的.然而,在现实世界中,有时候两个地点将具有相同的名称,尽管它们存在于不同的地方(例如,在同一州的不同县中存在两个同名的学校).一位设计师坚持要通过在县名附加名称来强制命名,例如联盟高中 - 弗朗西斯县.她的理由是确保"受控词汇".另一位设计师坚持认为应该允许名称相同,因为这反映了现实,而LocationCodes应该用于强制/跟踪唯一性.
我倾向于第二个设计师的方向 - 应该允许名称不同.我能想到的一个类似的例子是人们经常使用相同的名字(例如Jane Doe).在存储有关人员的联系信息的表格中,似乎不会强迫名称不同,社会安全代码将执行跟踪唯一性的工作.
那么这个问题有一般指导方针或标准吗?指向有用文档的链接非常棒.提前致谢.
我倾向于第二个设计师的方向 - 应该允许名称不同.
我想你的意思是说你认为名字应该是相同的,你的表应该允许重复的名字.
在存储有关人员的联系信息的表格中,似乎不会强迫名称不同,社会安全代码将执行跟踪唯一性的工作.
虽然在一个简单的情况下也是如此,但在实际应用中你会发现这一点
明确识别人员既是一个难题,也是一个依赖于应用程序的问题.当地的机动车局有识别人的方法; 美国国税局有其自己的方式; 雇主有自己的方式; 学校和医院都有自己的方式(隐私法在这里有很大的影响).您可能需要找到自己的方式.
这是你根本无法避免的:在某些时候,贵公司的某个人必须能够分辨出哪些数据库行说"John Smith"与桌面前愤怒的客户匹配.
我看看这样的位置名称."旧金山"的全名是"旧金山,加利福尼亚州,美国".全名可以很容易地区分"克林顿,小姐".来自"爱荷华州克林顿".
我发现两个不同的地方有相同的非正式名称的情况.例如,可能有一个名为"天然桥,田纳西州"的城镇,以及田纳西州的另一个地方,这是一座天然桥,也被命名为"天然桥,田纳西州".不同的是,其中一个地方总是一个城市,而另一个总是不是.(根据我的经验,至少.发现例外我不会感到惊讶.)
但是,这些现实世界中的任何一个问题对您来说是否依赖于应用程序.我不必处理非城市的地名,因此存储"全名"是确保良好数据的简单直接方式.
在您的情况下,对于事件位置,我看不到允许重复名称在商业意义上是实用的.如果名称是重复的,您基本上要求人们记住哪个位置代码引用每个真实世界的位置,并将其名称作为提示.对于任何显着大小的数据库,人们无法在不记下差异的情况下可靠地做到这一点.
归档时间: |
|
查看次数: |
115 次 |
最近记录: |