gpt4 book ai didi

MySQL - 按父级查找子类属性的最有效方法?

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

我正在尝试在 MySQL 中实现子类模式,如下所述:

http://www.tomjewett.com/dbdesign/dbdesign.php?page=subclass.php

根据上面的文章,父表没有必要有外键。 (“请注意,父表中没有任何属性可以告诉我们学生是 TA、RA 还是两者都不是 — 两个外连接查询的并集将生成一个包含我们需要的所有信息的表”)

这真的是最好的模式吗?

在我的项目中,我试图对父表中的记录实现完整、不相交的特化。例如,我有一个“员工”表,然后是各种子类表——例如“会计师”、“程序员”和“律师”。每个员工都有且只有一个子类,所有子类都是员工。

对于任何给定的employee_id,我希望能够显示该记录的所有属性,包括特定于该员工子类的属性。连接所有子类表(如文章所示)是最有效的方法吗?即使我可能有数百个子类表和/或大量父记录?

我能想到的一种替代方法是在我的“Employees”表中创建一个“subclass_type”列。这样,我就可以在适当的子类表上执行直接查找。这会比连接大量单独的表更快吗?

最佳答案

有钱

我相信,在您的情况下,我要么遵循您的替代建议,要么平铺到一张表中。

关于您的替代建议:employees 获取 subclass_type 和 subclass_id(每个都不允许 NULL),并且 accountants 上没有其他外键等。

关于扁平化:如果子类的数量非常小,您可以考虑使用employees上的字段,例如accountant_cpa_idlawyer_independent_practice( bool 值) 。您可能会在应用程序层中验证,对于任何给定行,只应填充一个子类的 employees 字段。我建议不要使用这种策略的 subclass_type 字段,因为它会带来非规范化的麻烦,而没有相应的 yield 。

希望这有帮助!

关于MySQL - 按父级查找子类属性的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20791209/

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