【发布时间】:2018-04-03 19:19:26
【问题描述】:
我们的应用程序中至少有 50 个包含相同属性的对象(例如:city、country、color、personelType、organizationType 等等...)。这些属性包含:ID、Topic、Code、isActive
- 对于这些包含相同属性的对象,我们创建了两个对象,称为
BaseInfo和BaseHeader。 - 对于这些对象的设计表,我们创建了一个名为
Base-Header的表和另一个名为Base-Info的表。这些表的关系是:https://pasteboard.co/GQeV4Rl.png
现在,如果需要,开发人员会在 Base-Header 中添加新记录。例如,开发人员看到Base-Header,如果表中没有city 的记录,则为城市对象添加一条记录:insert into Base-Header (id, topic) values (1, 'city'); 或颜色:insert into Base-Header (id, topic) values (2, 'color');。在此之后,所有开发人员都知道城市记录中headerId 字段的值为Base-Info 是1,并且可以在应用程序中硬编码此ID 以获取城市数据。在我们的应用程序中具有相同状态的其他对象。
有了这个计划,我们就不需要为city、color等创建具有相同属性的表和对象。其他需要城市记录的表的所有外键,附Base-Info表。这种表格和对象的设计是否正确?
- 考虑你有这个架构 [https://pasteboard.co/GQnqaT5.png] 并更改为这个 [https://pasteboard.co/GQnqiCE.png]。通过这项工作,我们删除了所有具有相同道具的对象和表格。笔记。查询未更改且未添加任何联接或 where 子句。只是外键更改为 Base_Info。这很复杂吗?
非常感谢...
【问题讨论】:
-
您能分享一下您当前的架构和要求吗?因为目前我无法理解您的问题。
-
嗯,这听起来确实令人困惑和复杂,基于此,我会说对于我不确定我能不能看到的问题,这不是一个很好的解决方案。
-
@kayaman 这个模式设计并且我们使用它我们需要了解这种方法是否正确或者我们需要为每个对象创建表?
-
根据给出的信息,这似乎是一个糟糕的主意。为数据库中的每种类型的事物创建单独的表。从表面上看,您所描述的内容似乎非常简单和典型,但您有可能使用非常非典型的解决方案使事情变得过于复杂。
标签: java database hibernate oop database-design