gpt4 book ai didi

mysql - 群体-人员数据库设计 - 需要建议

转载 作者:行者123 更新时间:2023-11-29 09:18:05 26 4
gpt4 key购买 nike

我正在开发一个应用程序,用户可以在其中将图片上传到服务器,然后向他们选择的人员发送带有显示这些图片的链接的电子邮件。

我的问题是关于在数据库中组织人员(我正在使用 MySQL)。

我希望每个用户都有这样的人员树:

  • 家庭
    • 妈妈
    • 爸爸
    • 乔纳森
  • 亲密的 friend
    • 大卫
    • 罗尼
  • 其他
    • Julia
    • 彼得
    • 亚历克斯
  • Tanya(不属于任何团体)

我考虑了数据库中的以下组织:

电子邮件表(所有用户的电子邮件)

组表(所有用户组)

人员表(所有用户人员)

在电子邮件表中,不会有两封相同的电子邮件。 电子邮件表中的name是用户在添加电子邮件时为其指定的名称(我称之为默认名称)。每个用户对同一个人可能有不同的名称。因此,这就是 People Tablename 的用途。 People Table 中的 name=NULL 表示默认名称将出现在人员树中。 group_id=NULL 表示此人不属于任何组。

这一切看起来合理吗?

此外,正如您所看到的,用户之间存在某种类型的电子邮件共享。这意味着,如果 Julia 更改了 David 的电子邮件,所有其他用户也将看到此更改(他们将收到有关此更改的电子邮件)。您认为这会导致问题吗?

我会感谢您的意见!

最佳答案

哦。给定的电子邮件可以与不同的“人”相关联?我认为它的语义相当丑陋。我会将人员表重命名为“联系人”。我还将“电子邮件”表中的“名称”字段重命名为“DefaultName”,以表明它完全是一个后备。

撇开语义不谈(这很重要,如果其他人必须使用这个数据库),您可以使用 varchar(20) 引用所有者作为外键。没有任何迹象表明它引用了什么,我假设它是某种所有者表,以用户名作为主键。我会推荐一个 int 代理键...如果用户想要更改他们的用户名会发生什么?

最后,我内心的执着会改变“无组”联系人。我会为每个联系人创建一个默认组,将其称为 _Groupless,并将像 Tanya 这样的“无组”联系人分配到 _Groupless 组。应用程序可以整理细节。我不太喜欢可选的外键。

关于mysql - 群体-人员数据库设计 - 需要建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3440620/

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