带条件的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
建议的设计,您将能够代表一位医生(按其头衔),但就在今天,他是另一个人的助手,世卫组织也是一名助理(按她的头衔),但今天是这个特定患者的医生。