2

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

该应用程序专注于管理Things. 应用程序的要求/约束​​是:

  1. AThing必须有一个关联的Location.
  2. 例如, ALocation可以是“McDonalds”或“Melbourne Uni, Building AK, Room 301”,其中“Melbourne Uni”、“Building AK”和“Room 301”是独立相关的Locations
  3. (至少)Location必须存在3 个级别/层
  4. 必须提供“其他”位置,以便用户可以为数据库中不存在的位置输入自由文本

所以我想出了上述 4 种不同的实现,但我真的没有足够的 DBA 经验来知道哪个是最正确的。

位置/事物关系模型

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

4

1 回答 1

0

如果您对三个级别的估计被证明是不充分的,那么这两个选项 1 都可能证明不灵活且难以修改。

在您的选项 2 中,看起来可疑的实体是 ThingOtherLocations。任何(从它的名称)连接两个不同概念的东西都会被自动怀疑。如果你在这里确实有两个独立的概念,那么选项 2b 的结构不需要 OtherLocation 或 ThingOtherLocation。我怀疑你试图表示的关系(得名)实际上是位置之间的另一种关系——尽管我不清楚这一点。

编辑

根据您对 ThingOtherLocations 的说明,我建议您将与 Other 关联的文本简单地视为新位置,并将新位置与其他位置一起存储。似乎没有任何理由为这些情况包括特殊的数据库处理。

编辑

要处理子位置问题,您可能想考虑 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
于 2013-01-18T05:37:39.423 回答