哪些数据模型最正确?

时间:2013-01-18 04:29:24

标签: database database-design relational-database

我正在为我将要开发的应用程序创建数据模型,我希望得到一些模型的反馈。该应用程序将完全重新开发在Lotus Notes中创建的内容,重新开发的主要目的之一是转向关系数据存储层。

该应用程序专注于管理Things。应用程序的要求/限制是:

  1. Thing必须有关联的Location
  2. A Location可以是“McDonalds”,或“Melbourne Uni,Building AK,301室”,其中'Melbourne Uni','Building AK'和'Room 301'是分开的{{1 }}。
  3. (至少)必须存在3级/ Locations
  4. 必须有“其他”位置的规定,以便用户可以为数据库中不存在的位置输入自由文本
  5. 所以我提出了上面4种不同的实现方式,但是我没有足够的DBA经验来知道哪一个是最正确的。

    Location / Thing relational model

    对此有任何想法和/或建议将不胜感激!

1 个答案:

答案 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