SQL Server上更好的数据库设计?

时间:2012-06-26 07:22:26

标签: sql-server database-design

在SQL Server中,我需要设计一个User表。它应该有UserID (int)RoleID (int)UserName (nvarchar(255))

可以为用户分配名称但可能分配多个角色,因此UserId可能对应多个RoleID。这使得很难将主键分配给UserID,因为UserID可能会重复。

除了将其分成多个表之外,还有更好的设计吗?

2 个答案:

答案 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是复合键