我正在为我将要开发的应用程序创建数据模型,我希望得到一些模型的反馈。该应用程序将完全重新开发在Lotus Notes中创建的内容,重新开发的主要目的之一是转向关系数据存储层。
该应用程序专注于管理Things
。应用程序的要求/限制是:
Thing
必须有关联的Location
。Location
可以是“McDonalds”,或“Melbourne Uni,Building AK,301室”,其中'Melbourne Uni','Building AK'和'Room 301'是分开的{{1 }}。Locations
层所以我提出了上面4种不同的实现方式,但是我没有足够的DBA经验来知道哪一个是最正确的。
Location / Thing relational model
对此有任何想法和/或建议将不胜感激!
答案 0 :(得分:0)
如果您对三个级别的估计证明不足,则两个选项1都可能证明不灵活且难以修改。
在您的选项2s中,看起来可疑的实体是ThingOtherLocations。任何(从它的名字)连接两个不同概念的东西都是自动怀疑的。如果你在这里确实有两个独立的概念,那么选项2b的结构不需要OtherLocation或ThingOtherLocation。我怀疑你试图表达的关系(从中获取名称)实际上是位置之间的另一种关系 - 尽管我对此并不清楚。
修改强>
根据您对ThingOtherLocations的澄清,我建议您将与其他相关联的文本视为新位置,并将新位置与其他位置一起存储。似乎没有任何理由为这些案例包含特殊的数据库处理。
修改强>
要处理子位置问题,您可能会考虑Joe Celko在嵌套集上的工作。对此的主要参考是:
Joe Celko.
Joe Celko's Trees and Hierarchies in SQL for Smarties,
(The Morgan Kaufmann Series in Data Management Systems)
ISBN 1-55860-920-2