gpt4 book ai didi

mysql - SQL 一对多关系,但是多对一表关系

转载 作者:行者123 更新时间:2023-11-29 21:58:05 25 4
gpt4 key购买 nike

我有 5 个可以包含电话字段的表,但我希望每个表都可以选择多个电话号码。

创建一个子表并将其链接到其他 5 个“父”表更有意义,而不是创建 5 个子表。但现在我正在考虑如何将该表链接到其他 5 个表。

我的第一个想法是过滤 2 个主题。一个存储链接表名称的字段,以及一个包含五个表之一的键的通用外键。我还是偏向这个方向。

接下来的想法是将 5 个外键放入表中,并允许它们为空。我不喜欢 4 个空字段的想法。更不用说我对另一个表也有同样的问题,该表将以类似的方式链接到其他 11 个表。

第三个是一个链接表或联结表,同样(我相信)具有 5 个可为空的外键,但这似乎并没有比选项 2 做更多的事情,但复杂性更高一些。

第四个选项,我对大多数表的主键使用自动增量字段。我可以为这些表切换到 UUID 或 GUID。出于安全原因,我已经设置为使用 UUID 作为主要数据,但为了性能而对大多数表使用自动增量。

我遇到了第五个选项,其中将自动增量字段与表名称组合以创建新的字符字段。 (仅在创建表期间,因此从技术上讲不是计算字段。)但除了第一个选项之外,再一次看不到这样做的好处。

其中一个是最好的方法吗,还是还有另一个我错过或不理解的选择?

最佳答案

如果您想将相同的电话号码分配给三个记录(形成您的 5 个表格),是否要将具有相同电话号码的三个记录添加到您的“phone_numbers”表格中?

这是一个优化问题,因此在 SQL 语义意义上没有“好方法”。

我认为在开发中最容易使用的是第一种方式:表中的table_nameid,但不要使用varchar。使用枚举或“table_name_id”TINYINT(引用第二个带有名称的表)。

关于mysql - SQL 一对多关系,但是多对一表关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32926925/

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