gpt4 book ai didi

database - 建模用户、组和成员数据库表

转载 作者:搜寻专家 更新时间:2023-10-30 20:30:55 25 4
gpt4 key购买 nike

我正在尝试按如下方式创建用户、组和成员表。一个用户可能属于一个或多个组,一个组可能有一个或多个用户。 User 和 Group 表之间的多对多关系是使用 Membership 表维护的。我想维护成员(member)资格状态(已批准/待定/其他??)和成员(member)资格批准者信息。成员批准人将是管理员组中的用户之一。以下是我心中的一个粗略模式。我是数据库建模的新手,希望获得有关以下实现的一些反馈。特别是我不确定 Membership 表是否应该有使用 'user_id' FK 的 'approved_by' 列,还是应该创建一个单独的表来维护 MembershipStatus(id, membership_id, status, approved_by)?我猜这里有一个单独的表 MembershipStatus 更合适,但不确定。此外,我计划在此应用程序中使用 ActiveRecord 作为 ORM。我感谢在实现此设计/架构时提出的任何意见或建议。

User:
id, Primary Key
userid, Integer, Unique
username, String, Unique
email, String, Unique
created_at, DateTime
updated_at, DateTime

Group:
id, Primary Key
groupid, Integer, Unique
groupname, String, Unique
created_at, DateTime
updated_at, DateTime

Membership:
PK(user_id, group_id)
status, String
approved_by, user_id FK to User table
created_at, DateTime
updated_at, DateTime

MembershipStatus
id
membership_id FK to Membership table
status, String
approved_by, user_id FK to User table
created_at, DateTime
updated_at, DateTime

-谢谢

最佳答案

看起来不错。

您在 2 个表中显示 approved_by。如果您保留 MembershipStatus 表,那么它应该属于该表。也 - 名称“approved_by”暗示可能存在或可能不存在的“已批准”状态。你可能会想到另一个名字......

您还应该有一个表,可能会标识哪些用户是哪些组的管理员。这样您就可以为允许批准的人以及实际批准的商店编写数据库端安全性代码。

此外,我不太喜欢将审计历史记录存储在您所展示的表格中。要么使用内置审计的数据库,要么将其拉出到另一个表中以记录审计历史。

最后,id 和 userid 似乎是多余的。使用用户标识。 (其他表类似)

关于database - 建模用户、组和成员数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8144429/

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