我想设计一个具有以下要求的数据库,但我遇到了问题。
我有3种类型的用户:医生,注册用户和管理员。将来我可能会添加其他类型的用户。每个用户类型都有不同的配置文件字段。例如,注册用户应具有(Username
,Password
,Email
,FirstName
和LastName
)。医生也有以前的字段,但也应该有额外的字段(PhoneNumber
,WorkPlace
,Country
,State
,City
,...)。对于其他用户类型,这些字段可能不同。某些字段对于每种用户类型都是通用的,有些字段不是。
我想我需要两个表:用户和角色。
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
但是如何为不同的用户类型实现不同的配置文件字段?
答案 0 :(得分:2)
我认为您需要一个供用户使用的表(您拥有的)和另外3个表(表继承),用于具有相同id
(OneToOne
关系的医生,注册用户和管理员具有特定列。
答案 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)