Sql 如何设计此链接表?
好的,我有一个用户表,希望一起定义用户组。我的最佳解决方案是创建三个数据库表,如下所示: 用户表Sql 如何设计此链接表?,sql,database,Sql,Database,好的,我有一个用户表,希望一起定义用户组。我的最佳解决方案是创建三个数据库表,如下所示: 用户表 user_id user_name 用户组链接 group_id member_id 群组信息 group_id group_name 此方法将成员和组信息分开。这正是我的想法。有更好的方法吗?另外,对于链接其他两个表的表,什么是好的命名约定?在我看来,这是一个相当标准的基于角色的用户模型。这很好。在我看来,这是一个相当标准的基于角色的用户模型。这很好。看起来不错,我同意: Group ---
user_id
user_name
用户组链接
group_id
member_id
群组信息
group_id
group_name
此方法将成员和组信息分开。这正是我的想法。有更好的方法吗?另外,对于链接其他两个表的表,什么是好的命名约定?在我看来,这是一个相当标准的基于角色的用户模型。这很好。在我看来,这是一个相当标准的基于角色的用户模型。这很好。看起来不错,我同意:
Group
-----
GroupID (PK)
Name
CreatedDate
GroupUser
---------
GroupUserID (PK)
GroupID (FK)
UserID (FK)
CreatedDate
User
----
UserID (PK)
Firstname
Lastname
CreatedDate
...
看起来,很好,我会选择:
Group
-----
GroupID (PK)
Name
CreatedDate
GroupUser
---------
GroupUserID (PK)
GroupID (FK)
UserID (FK)
CreatedDate
User
----
UserID (PK)
Firstname
Lastname
CreatedDate
...
视情况而定
如果一个成员只能属于一个组,那么您的解决方案是过度的(并且没有适当地优化)。在这种情况下,去掉UserGroupLink
表就足够了,只需在UserTable
中添加一个group\u id
列即可
如果一个成员只能属于一个组,那么您的解决方案是过度的(并且没有适当地优化)。在这种情况下,去掉
UserGroupLink
表就足够了,只需在UserTable
中添加一个group\u id
列,重要的是选择一个约定并坚持它
以下是我如何命名这些表(顺便说一句,结构很好):
重要的是选择一个惯例并坚持下去 以下是我如何命名这些表(顺便说一句,结构很好):
你的桌子布局很合适,先生。联接表有各种命名约定——RubyonRails使用两个表名,并按字母顺序用下划线联接:“group_member”(组成员)。IMHO,您的表布局是合适的。联接表有各种命名约定-Ruby on Rails使用两个表名,并按字母顺序用下划线联接:“group_member”(组成员)。除了答案之外,创建表的决定不依赖于个人意见。我们称之为数据库规范化;数据库设计中要遵循的规则。除了答案之外,创建表的决策不依赖于个人意见。我们称之为数据库规范化;数据库设计中要遵循的规则。每个用户都可以是多个组的成员。我应该在OP(我的错误)中指定每个用户都可以是多个组的成员。我应该在OP(我的错误)@Soo,FK=foreign key中指定另一个表中的键。GroupId+UserId不是链接表中可以接受的PK吗?@Jacob,是的。与复合键相比,我更喜欢单个代理键;这是一个选择问题。@Soo,FK=外键,来自另一个表的键。GroupId+UserId在链接表中不是可以接受的PK吗?@Jacob,是的。与复合键相比,我更喜欢单个代理键;这是一个选择的问题。这里缺少信息。一个用户可以属于多个组吗?属于某个组是可选的还是必需的?您提出的解决方案还可以,但如果用户必须只有一个组,则可以进一步缩减。此外,调用它的成员id与调用用户的实体不一致。此处缺少信息。一个用户可以属于多个组吗?属于某个组是可选的还是必需的?您提出的解决方案还可以,但如果用户必须只有一个组,则可以进一步缩减。此外,调用它的成员id与调用用户的实体不一致。