Oracle 为了将来的灵活性,我应该使用关联表建模吗?
这是一个数据库建模问题 我通常使用标准的父子表设置对一对多进行建模,并且通常使用两个表之间的关联表对多对多进行建模。在这种情况下,当前需求需要一对多关系。但客户谈到了一些未来可能的需求,这将需要多对多关系 因此,这里有两个实施选项:Oracle 为了将来的灵活性,我应该使用关联表建模吗?,oracle,database-design,Oracle,Database Design,这是一个数据库建模问题 我通常使用标准的父子表设置对一对多进行建模,并且通常使用两个表之间的关联表对多对多进行建模。在这种情况下,当前需求需要一对多关系。但客户谈到了一些未来可能的需求,这将需要多对多关系 因此,这里有两个实施选项: 将数据库建模为一对多以满足当前需求。如果未来的需求需要多对多,那么我需要更改数据库结构和应用程序代码 对数据库进行多对多建模,并让应用程序代码将数据限制为一对多。如果未来的需求需要多对多,那么我只需要更改应用程序代码 在我们的应用程序中,事后更改数据库结构可能有点麻
你会选择哪个选项?为什么?根据潜在需求设计软件是相当困难的。我会坚持实际要求。那样你就能按时完成 而且,如果您对以后的多对多有实际需求,那么
只是我的意见。。另一方面,我是按小时计酬的 同意赛斯的观点。我们的情况与您相同,我们采用了多对多设计来存储一对多数据,而在未来的某个日期,我们需要存储多对多数据。随着时间的推移,它变成了(IMHO)一个可怕的混乱局面,因为事后看来是“个人的”多对多关系需求出现了,并且(出于一般合理的原因)实施了快速解决方案。现在,我们已经到了必须构建它的地步,我们不仅必须按照计划重构系统,还必须分解并解释所有临时的混乱情况。来自: Q:当存在多对多关系时,顾问希望使用联接表 在两张桌子之间。。。他们还希望使用完全相同的概念来表示1对多(父/子)关系。他们说,当使用当今的编程工具时,拥有第三个表有很多好处 对我来说,似乎必须维护三个表及其索引,而不仅仅是 2,这是不必要的,并且增加了开销 A:对于多对多,必须使用已知的关联表。这是 标准 对于一对多的人来说,他们正在“吸一些有趣的东西” 它不仅会受到你所描述的问题的影响,而且会使它变得更加困难 要保持这种1对多的关系,您还需要另外一个唯一索引 在关联表上,以强制执行“一” 您在每个连接中也会产生额外的IO开销,包括:
- 索引访问关联表的n IO
- 1 IO读取关联表
生活这听起来真是个糟糕的主意。签证申请人的一个例子:签证发放部门接受许多申请人。如果申请人申请一种签证,他/她不能申请多种类型的签证 这种关系是一对多(签证申请人)-签证表(签证类型)、申请人表(申请人id、签证类型) 如果我们将规则更改为多对多,即申请人可以申请多种签证,我们有-签证表(与之前相同)、申请人表(申请人id)、申请人签证表(申请人id、签证id) 因此,中断的级别是(如果/当该业务规则在将来发生更改时):必须将applicator.visa_type列迁移到applicator visa表中。公开此信息的网页也将被中断(即强制更改)。因此,数据库更改将伴随应用程序更改 总之,我想知道在DB中构建抽象是否值得,如果这不能与应用程序代码齐头并进的话。也就是说,如果商业规则发生变化,我愿意在DB层和web层一起应对变化。 有人在DB级别查看多对多关系时,可能会错误地认为这样的功能目前已经实现。选项1
- 接吻
- 雅格尼