gpt4 book ai didi

mysql - 数据库设计 : members table separate or all in one table?

转载 作者:行者123 更新时间:2023-12-01 00:34:05 24 4
gpt4 key购买 nike

我想创建一个包含个人信息和登录详细信息的 friend 表。

将成员表分成 2 个表更好,一个包含最少的细节,其次是其他详细信息。

还是留在一张 table 上?

我有很多包含成员外键的表。

最佳答案

这在很大程度上取决于那些“其他”细节是什么。这是一个常见而有趣的问题,乍看之下并没有“一成不变”的答案。但是,如果我们更抽象地考虑这个问题,关于您要表示的任何特定事物的属性(“细节”)之间的实际关系,我们可能会发现一些清晰度。

在您的问题中,您声明 friend 拥有“最少”和“其他”详细信息。我们不是将这些细节分类为“最小”或“其他”,而是根据任何个体(“原子”)细节是否可以完全由 friend 的独特性来决定。

我假设有一些主键 (PK),例如 FriendID 或电子邮件地址等。考虑到这个唯一的标识符,问问自己:“如果我得到一个 FriendID(或电子邮件或任何你用作 PK 的东西)我绝对确定那个 friend 的哪些细节?例如,给定 FriendID=2112,我绝对我知道那个 friend 的名字、姓氏和出生日期,但我绝对知道那个 friend 的电话号码,因为他们不止一个。

在给定 PK 的情况下,将您明确知道的所有详细信息组合在一张表中。将您需要更多数据的详细信息(如电话号码中的“家庭”或“工作”)放在“子”表中,外键返回到 PK 上的“父”表。 (注意:子表的PK极有可能是复合的;即由父表的PK和区分因素(如本例中的“home”或“work”)组成。多边复合键的 1-M 关系非常好。)

数据库极客将这种分解称为基于功能依赖

关于mysql - 数据库设计 : members table separate or all in one table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1086896/

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