gpt4 book ai didi

mysql - 多对多关系 : better OTLT or 48 association/junction tables?

转载 作者:行者123 更新时间:2023-11-30 00:58:00 24 4
gpt4 key购买 nike

我正在研究一个具有大量多对多关系的数据库模型。

在我的方案中,有一组 6 个表(假设 T1、T1 ... T6)和另一组 8 个表(假设 S1、S2 ... S8)。我们假设每个表(T1、T1 ... T6、S1、S2 ... S8)都有一个 PK。第一组的每个表都与第二组的每个表相关联,我需要存储有关关系的信息,就像您在这个简单的示例中看到的那样: http://en.wikipedia.org/wiki/Junction_table

遇到这种情况该如何处理?

单真实查找表 (OTLT) 是否优于 6 x 8 关联表解决方案?是否存在更好的解决方案?

预先感谢您的回复。

-----编辑---

我正在上传一些图片来澄清问题:

问题:http://i.stack.imgur.com/ltCZx.png

我知道 OTLT 方法意味着性能较低,但另一方面是对问题进行建模的最快方法。爆丸建议我把所有T1,...T6表合并成一张大表。由于 T1...T6 与模式的其他(未提及)表之间存在其他关系,该解决方案是不可能的(至少在该模型中不可能)。

最佳答案

您可以在此处查看我的 OTLT 讨论:

http://granadacoder.wordpress.com/2009/05/06/one-true-lookup-table-discussion/

但基本上,使用 OTLT,您面临着将错误数据放入表中的风险。

假设您有一个 Employee 表,其中一个“查找”是 EmployeeStatus。例如 Employee.EmpStatus 列。

您的 OTLT 表有多个员工状态......但它还有很多其他内容。就像“OrderStatus”,与 Employee-Status 无关。

那你做什么?

上面的链接显示代码使用检查约束来确保您只将 OTLT 中的有效值放入 Employee.EmpStatus 列中。

然而,虽然它可以保护数据完整性,但它是有代价的。每个插入都必须进行检查约束检查(废话)........

所以我尝试在力量中找到平衡。如果 Lookup 非常通用,我会将其放在 OTLT 中。一旦它做了任何超出的事情,我就会移动它。

这是我的另一个技巧。在高并发数据库上,我将在DEV和QA中使用检查约束。但在生产中我会禁用它,至少只要没有任何问题。

关于mysql - 多对多关系 : better OTLT or 48 association/junction tables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20384782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com