mysql - 数据库设计 - 表关系 - 更喜欢最小关系或 "time saving"关系

标签 mysql database table-relationships

寻找关于应在数据库表之间定义关系的位置的意见和反馈。具体来说,是更喜欢在概念上有意义且需要使用的直接关系,还是更喜欢使用尽可能少的关系。

例如,在此图中:

enter image description here a_g 关系确实需要存在。 d_g 关系在概念上是有意义的并且会经常使用。我的问题是是否存在这样的关系,或者是否忽略它而不是选择 d->c->b->a->g。

更多的关系有助于提高绩效,但在我看来,这会增加不一致的风险。它增加了 d->g 可能得到与 d->c->b->a->g 不同的 g 的风险。 (显然,这种特殊的设计规定 g 无论哪种方式都是相同的,但我说的是如果出现严重错误 - 那些“到底是怎么发生的”情况。)

同样,在使用 d 时,通常需要在不需要访问 c 和 b 中的数据的情况下访问 a。是否应该建立一种 a_d 关系,或者开始创建这些“节省时间”的关系是否会导致失控?

最佳答案

请考虑增加表组的填充或维护难度,这些表具有太多的引用完整性约束,特别是在存在诸如循环之类的依赖关系的情况下。 您必须在文档中提供表的顺序,填充或维护时必须遵循该顺序。 一个危险的替代方案是暂时关闭部分或全部引用完整性约束,并且不要忘记在维护后再次激活它们。

关于mysql - 数据库设计 - 表关系 - 更喜欢最小关系或 "time saving"关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23963194/

相关文章:

php - 使用子查询和连接查询更新行——真的很慢

java - 生成唯一的引用号

database - 冗余关系?

mysql - 对于这个 CakePHP 应用程序,我的模型关系应该是什么?

php - 如果使用 codeigniter 某些列为空,则查询不显示结果

php - MySQL:选择 2 个最早记录的时间(AM)

mysql - 从一列有多个值的地方选择全部

php - 表连接 SQL/PHP (CRUD)

php - 在 PHP 中关联两个值

mysql - 从MySql读取utf-8字符到C变量中