gpt4 book ai didi

mysql - SQL 表或字段

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

我有一个概念性的问题。

我的数据库有一个存储有关人员信息的表。其中一个字段是他们的电话号码(我所在的国家/地区为 8 位数字)。

问题是在某些情况下,两个或更多人会有相同的电话号码。

我的问题是:将电话号码存储在另一个表中然后通过外键引用它而不是仅将它们存储为一个字段是否是更好的选择?如果是这样,结果是否相同数据库的大小是?

我不知道这是否会产生任何影响,但该表的记录不会超过 600.000 - 800.000,我猜重合的电话号码将占总记录的 10% 左右。

编辑:

-每条记录最多可以有4个电话号码(两行两格)

-这两种情况都会发生,有时用户会寻找所有拥有特定号码的人,有时用户会想知道一个人拥有的所有电话号码是多少

最佳答案

从技术上讲,要规范化,您将有一个单独的电话号码表,然后是一个 PersonPhonenumber 表。

但是,在实践中,我很少看到电话号码和地址的这种结构。首先,当您只想更改一个人的地址或电话时,很容易犯错误并更新多个人的地址或电话。另一方面,它增加了一个对大多数人来说似乎不需要的额外连接。除了少量的重复之外,你并没有真正从这个级别获得太多 yield 。

真正的决定者是您将如何使用和更新这些数字。如果你想频繁地更新所有具有相同号码的人,最好完全归一化。如果您通常一次只想更新一个人,那么只有一个 Person 表和一个 PersonPhone Number 表可能风险较小。

如果您想要历史记录,那么我会使用一个人表和一个 PersonPhoneNumber 历史记录表。它将包含 personid、电话号码、开始日期和结束日期。因此,当 John 和 Mary 离婚时,他的电话号码会有结束日期,而她的不会,而且您可以清楚地看到谁在什么时候有号码。

关于mysql - SQL 表或字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28706130/

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