在 SQL Server 中,我需要设计一个User
表。它应该有一个UserID (int)
,一个RoleID (int)
和一个UserName (nvarchar(255))
。
可以为用户分配一个名称,但也可以分配多个角色,因此 aUserId
可能对应于多个RoleID
s。这使得很难将主键分配给UserID
可能UserID
重复的对象。
除了把它分成多个表之外,还有什么更好的设计吗?
在 SQL Server 中,我需要设计一个User
表。它应该有一个UserID (int)
,一个RoleID (int)
和一个UserName (nvarchar(255))
。
可以为用户分配一个名称,但也可以分配多个角色,因此 aUserId
可能对应于多个RoleID
s。这使得很难将主键分配给UserID
可能UserID
重复的对象。
除了把它分成多个表之外,还有什么更好的设计吗?
你应该有:
1. a user table with UsertId(int), UserName (Varchar)
2. a role table with RoleId(int), RoleName(Varchar)
3. a user_role table with user_id(int), role_id(int)
并且不要忘记添加正确的索引和外键。
是的,有一个表 Roles,然后是具有 UserID 和 RoleID 的 RolesUsers,最后是一个 Users 表
编辑:其中 RolesUsers 中的 UserID + RoleID 是复合键