-1

我是 mvc4 的新手,正在尝试开发一个新的应用程序,我在表 Employee、admin 和 customer 中有三个用户。问题是客户的字段比员工或管理员多,所以我无法制作单个用户表,然后我为每个用户制作了一个不同的表,其中包含用户名和密码。现在,当我想从他们各自的表中对用户进行身份验证时,我迷失了。是否有可能或者我应该使用用户名和密码分别制作用户表?但是这样做我是否应该在每次创建客户、员工和管理员之前先创建用户?

4

1 回答 1

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 成员系统的内置内容,因此您可能会从中受益匪浅。尽管根据您对用户数据的描述,您可能仍需要对一些包含用户信息的表进行子类型化,以避免出现大量空值。

于 2013-10-08T12:24:41.373 回答