带条件的PostgreSQL外键
我有两张桌子:带条件的PostgreSQL外键,postgresql,database-design,Postgresql,Database Design,我有两张桌子: CREATE TABLE Employee( id serial PRIMARY KEY, name varchar(30), salary money ); CREATE TABLE Doctor( employee_id integer, speciality varchar(30), cabinet integer, foreign key (employee_id) references Employee );
CREATE TABLE Employee(
id serial PRIMARY KEY,
name varchar(30),
salary money
);
CREATE TABLE Doctor(
employee_id integer,
speciality varchar(30),
cabinet integer,
foreign key (employee_id) references Employee
);
现在我需要创建一个与医生表非常相似的表DoctorsAssistant,但我遇到了一个问题,即检查一些员工是否不会同时是医生和医生助理,因为他们都将员工id作为外键。我该怎么办?我知道你的设计有什么错。您应该有一个表
employee
和另一个表empolyee\u role
,可以在其中管理不同类型的员工。然后创建一个关系1,2或1,n(如果必要的话),我建议您有一个更像这样的设计:角色
表,其值类似于(1,'足病医生'),(2,'医生助理')
,一个员工类型
表,带有(1,'助理'),(2,'医生')
,然后是结构为id…、name…、employee\u type(fk ref'ing employee\u type table)、role(fk ref'ing role table)
的employee
表。如果您选择使用404
建议的设计,您将能够代表一位医生(按其头衔),但就在今天,他是另一个人的助手,世卫组织也是一名助理(按她的头衔),但今天是这个特定患者的医生。