如何使两个表引用数据库中的同一个对象?
How to make two tables refer to the same object in a database?
不好意思,请允许我解释一下。
我有一个table:医生,还有一个table:病人
Doctor 和 Patient 有相同的主键,'person_id'
病人也可以是医生,反之亦然,在这种情况下他们会有相同的 person_id
这是允许的吗?
我会在这些 table 之间使用什么样的关系?
我会允许两者的主键自动递增吗?
我将如何在 MySQL Workbench 中对此建模?
我觉得 Doctor
和 Patient
是 Person
的子 类。如果 Doctor
和 Patient
的实例之间的关系很重要,我会在那些 table 中使 person_id
成为对新 [=19] 的 foreign_key 引用=] 超类 table:
例如
CREATE TABLE `person`
( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 'PK person.id'
, ...
) ...
CREATE TABLE `doctor`
( person_id BIGINT PRIMARY KEY COMMENT 'PK, FK ref person.id'
, ...
, CONSTRAINT FK_doctor_person FOREIGN KEY person_id REFERENCE person (id)
ON UPDATE CASCADE ...
, ...
) ...
CREATE TABLE `patient`
( person_id BIGINT PRIMARY KEY COMMENT 'PK, FK ref person.id'
, ...
, CONSTRAINT FK_patient_person FOREIGN KEY person_id REFERENCE person (id)
ON UPDATE CASCADE ...
, ...
) ...
这只是一种可能的方法。如果没有关于问题的更多背景信息 space,我们无法给出明确的建议。
不好意思,请允许我解释一下。
我有一个table:医生,还有一个table:病人
Doctor 和 Patient 有相同的主键,'person_id'
病人也可以是医生,反之亦然,在这种情况下他们会有相同的 person_id
这是允许的吗? 我会在这些 table 之间使用什么样的关系? 我会允许两者的主键自动递增吗? 我将如何在 MySQL Workbench 中对此建模?
我觉得 Doctor
和 Patient
是 Person
的子 类。如果 Doctor
和 Patient
的实例之间的关系很重要,我会在那些 table 中使 person_id
成为对新 [=19] 的 foreign_key 引用=] 超类 table:
例如
CREATE TABLE `person`
( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 'PK person.id'
, ...
) ...
CREATE TABLE `doctor`
( person_id BIGINT PRIMARY KEY COMMENT 'PK, FK ref person.id'
, ...
, CONSTRAINT FK_doctor_person FOREIGN KEY person_id REFERENCE person (id)
ON UPDATE CASCADE ...
, ...
) ...
CREATE TABLE `patient`
( person_id BIGINT PRIMARY KEY COMMENT 'PK, FK ref person.id'
, ...
, CONSTRAINT FK_patient_person FOREIGN KEY person_id REFERENCE person (id)
ON UPDATE CASCADE ...
, ...
) ...
这只是一种可能的方法。如果没有关于问题的更多背景信息 space,我们无法给出明确的建议。