数据库设计:具有角色和配置文件的用户,每个角色都有字段

时间:2014-04-22 13:18:39

标签: sql database profile

我想设计一个具有以下要求的数据库,但我遇到了问题。

我有3种类型的用户:医生,注册用户和管理员。将来我可能会添加其他类型的用户。每个用户类型都有不同的配置文件字段。例如,注册用户应具有(UsernamePasswordEmailFirstNameLastName)。医生也有以前的字段,但也应该有额外的字段(PhoneNumberWorkPlaceCountryStateCity,...)。对于其他用户类型,这些字段可能不同。某些字段对于每种用户类型都是通用的,有些字段不是。

我想我需要两个表:用户和角色。

Users Table
============
UserID INT PRIMARY KEY AUTO_INCREMENT
Username VARCHAR(50) NOT NULL,
Password VARCHAR(100) NOT NULL,
Email VARCHAR(50) NOT NULL,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
RoleID INT NOT NULL                   //This is the foreign key

Roles Table:
=============
RoleID INT PRIMARY KEY AUTO_INCREMENT
RoleName VARCHAR(50) NOT NULL

但是如何为不同的用户类型实现不同的配置文件字段?

2 个答案:

答案 0 :(得分:2)

我认为您需要一个供用户使用的表(您拥有的)和另外3个表(表继承),用于具有相同idOneToOne关系的医生,注册用户和管理员具有特定列。

答案 1 :(得分:0)

您可以为Doctors,RegisteredUsers和Administrator配置文件再创建3个表。

Doctors
==========
UserID INT PRIMARY KEY AUTO_INCREMENT,
PhoneNumber,
WorkPlace,
Country,
State,
City,
FOREIGN KEY (UserID) REFERENCES Users(UserID)

RegisteredUsers
=================
UserID INT PRIMARY KEY AUTO_INCREMENT,
Photo,
Address,
bla bla.....
FOREIGN KEY (UserID) REFERENCES Users(UserID)

Administrators
================
UserID INT PRIMARY KEY AUTO_INCREMENT,
.....
.....
FOREIGN KEY (UserID) REFERENCES Users(UserID)