同一个表中的用户和员工或单独的表?

时间:2018-04-06 13:43:03

标签: sql database sql-server-2008 database-design database-table

我必须决定为我的应用程序设计数据库。到目前为止,我有用于存储这些字段的Users表:

**USERS**
RecID - auto increment
UserID - unique id (Primary key)
UserName
Password
Salt
TempPassword
FirstName
LastName
Email
SystemAdmin
QuestionID
Answer
Active
CreateDate
CreateUID

此表存储有关用户的所有信息。应用程序中有另一个名为Staff的部分。根据他们希望在表格中看到的规格

**STAFF**
First name 
Last name 
Middle Initial 
Position
Email 
Comments

正如您所见,员工在“用户”表中已存在一些字段,如“姓氏”,“姓氏”和“电子邮件”。最重要的是员工记录不一定是用户。换句话说,员工记录永远不会登录系统,他们不需要所有用户信息/字段,但用户可能是员工。出于这个原因,我不知道该走哪条路。我应该为员工创建另一张桌子吗?这将导致一些冗余数据,因为员工的记录可能已经是Users表中的记录。同时我想保留在Users表中没有登录信息的员工记录。有两个单独的表将保持数据库清洁但多余。对于这种情况,最好的方法是什么?此外,我正在考虑将来的效率和查询数据。如果有人能提供一些有用的建议或例子。提前谢谢。

1 个答案:

答案 0 :(得分:2)

或创建第三个表:Contact,其中包含常规联系信息:

Contact
--------------
Id   <-- primary key - links to ContactId in linked tables
FirstName
LastName
Email
ContactTypeId -- perhaps to enable identification?
etc...

然后链接到员工和用户的联系人表格:

Staff
-----------
Id
ContactId <-- foriegn key
Position
etc...

Users
------------
Id
ContactId <-- foriegn key
Username
Password
etc....

然后将联系人信息集中存储在同一个表中,并链接到需要存储联系人类型数据的任何表。