我是mvc4的新手,并尝试开发一个新的应用程序,我在表Employee,admin和customer中有三个用户。问题是客户有多个字段而不是员工或管理员,所以我不能创建一个用户表,然后我为每个包含用户名和密码的用户创建了一个不同的表。现在,当我想从各自的表中验证用户时,我迷失了。是否可以或应该使用用户名和密码单独创建用户表?但是,在创建客户,员工和管理员之前,我是否必须首先创建用户?
答案 0 :(得分:3)
所以我不能制作单个用户表
当然可以。只需将“用户”与“有关用户的详细信息”分开即可。例如,假设您在此处有一个Users
表:
Users
---------
ID (PK)
Username
Password
(maybe a few other fields)
然后你将这个其他一些表子分类。表格如:
Employee
----------
ID (PK, FK to Users)
Name
EmployeeNumber
etc.
Customer
----------
ID (PK, FK to Users)
Name
CustomerNumber
etc.
Admin
----------
ID (PK, FK to Users)
(you get the idea)
非常类似于面向对象系统中的子类,这允许您在关系系统中进行子表。应用程序中的登录组件仅涉及Users
表,然后一旦经过身份验证,其他组件就可以从其他表中获取有关该用户的信息。 (这样可以让单个用户不止一件事。例如Employee
也是Admin
。)
编辑:请记住,这是基于对非常了解您的关系数据需求。您也可以使用以下设置完成相同的操作:
Users
----------
ID (PK)
Username
etc.
Roles
----------
ID (PK)
RoleName
UsersInRoles
----------
UserID (FK to Users)
RoleID (FK to Roles)
(Other tables about users)
此设置与ASP.NET成员资格系统内置的内容更接近,因此您可以从中获益。虽然根据您对用户数据的描述,您可能仍需要对包含用户信息的某些表进行子类型,以避免出现大量空值。