C# 是否存在外键依赖于2主键?
作为问题标题。示例:我有三个表:员工、教师、学生 一名员工的外键取决于学生的主键 一名员工的外键取决于教师的主键C# 是否存在外键依赖于2主键?,c#,sql,C#,Sql,作为问题标题。示例:我有三个表:员工、教师、学生 一名员工的外键取决于学生的主键 一名员工的外键取决于教师的主键 我试过了,但我做不到。因为我理解你的问题: 一个外键可以引用两个不同的表吗 回答:不,它不能 您可以(也可能应该)轻松定义两个单独的外键: 员工是|有学生 员工是|有老师 您不能让外键链接到两个表 如果您可以控制表结构,那么使用不同的结构可能更有意义 table: Person table: EmployeeInfo (all information about being an
我试过了,但我做不到。因为我理解你的问题: 一个外键可以引用两个不同的表吗 回答:不,它不能 您可以(也可能应该)轻松定义两个单独的外键:
- 员工是|有学生
- 员工是|有老师
table: Person
table: EmployeeInfo (all information about being an employee i.e. EmpNo, ClockNo etc) with a foreign key on Person
table: TeacherInfo (all information about being a teacher i.e. HomeRoom, subject etc) with a foreign key on Person
table: StudentInfo (all information about a student i.e. course, funding type etc) with a foreign key on Person
这样,通过一些简单的联接,您可以获得所有教师都是员工,或者所有学生都是员工,或者所有既不是教师也不是学生的员工,教师和员工的主键与人员表之间有外键。例如:
CREATE TABLE people
(
id bigserial NOT NULL,
first_name character varying(128) NOT NULL,
last_name character varying(128) NOT NULL,
-- other columns appropriate to a person
CONSTRAINT people_pk PRIMARY KEY (id)
)
CREATE TABLE students
(
fk_person bigint NOT NULL,
-- other columns appropriate to the student
CONSTRAINT students_pk PRIMARY KEY (fk_person),
CONSTRAINT students_fk FOREIGN KEY (fk_person)
REFERENCES people (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
CREATE TABLE teachers
(
fk_person bigint NOT NULL,
-- other columns appropriate to the teacher
CONSTRAINT teachers_pk PRIMARY KEY (fk_person),
CONSTRAINT teachers_fk FOREIGN KEY (fk_person)
REFERENCES people (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
CREATE TABLE employees
(
fk_person bigint NOT NULL,
-- other columns appropriate to the employee
CONSTRAINT employees_pk PRIMARY KEY (fk_person),
CONSTRAINT employees_fk FOREIGN KEY (fk_person)
REFERENCES people (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
您还可以向人员添加一个鉴别器列,以便区分学生和教师,并在employees中对鉴别器列进行检查(或触发),以确保该表中仅包含教师和学生。有关鉴别器列的更多信息,请查看您不能做什么?我怀疑您可能存在向后的数据关系。在其他事情中,一个人可能同时是老师和学生吗?@claudio Redi:外键这个表指的是其他两个主键table@Clockwork-缪斯:我希望代码ID的学生和代码ID的老师成为帐户的雇员如果我以前是你们系统的学生,那么我的学校决定(当我还是学生的时候!)他们要我教一门课,会发生什么?
student
中有哪些数据也在teacher
中?