在SQL Server中,我需要设计一个User
表。它应该有UserID (int)
,RoleID (int)
和UserName (nvarchar(255))
。
可以为用户分配名称但可能分配多个角色,因此UserId
可能对应多个RoleID
。这使得很难将主键分配给UserID
,因为UserID
可能会重复。
除了将其分成多个表之外,还有更好的设计吗?
答案 0 :(得分:6)
你应该:
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)
不要忘记添加正确的索引和外键。
答案 1 :(得分:2)
是的,有一个表Roles,然后是带有UserID和RoleID的RolesUsers,最后是一个Users表
编辑:RolesUsers中的UserID + RoleID是复合键