员工被组织成团队。每个团队可以有多个员工,每个员工可以属于多个团队。这种多对多关系由team_membership表表示。
每个项目分配给一个团队。项目细分为任务,每个任务分配给一名员工。
是否可以保证任务的员工是相应项目团队的成员,而不添加触发器或冗余列?
CREATE TABLE employee
(
employee_id bigserial PRIMARY KEY,
employee_name text
);
CREATE TABLE team
(
team_id bigserial PRIMARY KEY,
team_name text
);
CREATE TABLE team_membership
(
team_id bigint NOT NULL REFERENCES team,
employee_id bigint NOT NULL REFERENCES employee,
PRIMARY KEY (team_id, employee_id)
);
CREATE TABLE project
(
project_id bigserial PRIMARY KEY,
team_id bigint NOT NULL REFERENCES team,
project_name text
);
CREATE TABLE task
(
task_id bigserial PRIMARY KEY,
task_name text,
project_id bigint NOT …Run Code Online (Sandbox Code Playgroud)