[英]Relationships in MySQL EER Diagram
我想 MySQL EER 图中的 map inheritance。
设想:
雇员表是医生和护士表的超类。
该员工具有 PK - emp_no 和两个子类的共同属性。
我想在 MySQL Workbench 中创建这些模式。
我搜索了很多示例,发现 inheritance 有 3 种解决方案。
其中之一是为每个实体创建一个单独的表,并将超类的 PK 包含在子类中。
我有以下实体:
employee (emp_no,...)
doctor(doct_no (pk),emp_no(fk),..)
nurse (nurse_no (pk), emp_no(fk),..)
我认为这个解决方案非常合理,但是,我对员工及其子类之间的关系类型感到困惑。
是不是因为两个子类都有自己的 PK 而不是识别关系?
但另一方面,关于医生和护士的所有详细信息都存储在员工表中,所以我想我们无法仅通过查看医生表来识别医生是谁。
如果是识别关系,那么医生的主键就变成了复合键——doct_no,emp_no,对吧?
而且,一般来说,如果我们有employee_no 来标识所有医生和护士,我们真的需要doct_no 和nurse_no 作为子类中的唯一标识符吗?
考虑以下数据集:
DROP TABLE IF EXISTS employee;
CREATE TABLE employee
(employee_id SERIAL PRIMARY KEY
,name VARCHAR(30) NOT NULL UNIQUE
,role VARCHAR(12) NOT NULL
);
INSERT INTO employee VALUES
(101,'Dr. No','Doctor'),
(102,'Dr. Pamela Lillian Isley','Doctor'),
(103,'Dr. Miranda Bailey','Doctor'),
(104,'Margaret Houlihan','Nurse'),
(105,'Thor Lundgren','Nurse'),
(106,'Paul Flowers','Nurse');
DROP TABLE IF EXISTS patient;
CREATE TABLE patient
(patient_id SERIAL PRIMARY KEY
,name VARCHAR(30) NOT NULL
);
INSERT INTO patient VALUES
(11,'Alice'),
(12,'Ben'),
(13,'Charlie'),
(14,'Dawn'),
(15,'Eric');
DROP TABLE IF EXISTS examination;
CREATE TABLE examination
(examination_id SERIAL PRIMARY KEY
,patient_id INT NOT NULL
,employee_id INT NOT NULL
,examination_date DATE NOT NULL
,UNIQUE(patient_id,employee_id,examination_date)
);
INSERT INTO examination VALUES
(1,11,101,'2021-01-01'),
(2,12,104,'2021-01-01'),
(3,12,102,'2021-01-02'),
(4,13,106,'2021-01-02'),
(5,14,105,'2021-01-03'),
(6,15,101,'2021-01-03'),
(7,15,104,'2021-01-03'),
(8,15,106,'2021-01-05');
一个问题:
SELECT e.examination_id
, e.examination_date
, p.name patient
, u.name examined_by
, u.role
FROM examination e
JOIN employee u
ON u.employee_id = e.employee_id
JOIN patient p
ON p.patient_id = e.patient_id;
+----------------+------------------+---------+--------------------------+--------+
| examination_id | examination_date | patient | examined_by | role |
+----------------+------------------+---------+--------------------------+--------+
| 1 | 2021-01-01 | Alice | Dr. No | Doctor |
| 3 | 2021-01-02 | Ben | Dr. Pamela Lillian Isley | Doctor |
| 2 | 2021-01-01 | Ben | Margaret Houlihan | Nurse |
| 4 | 2021-01-02 | Charlie | Paul Flowers | Nurse |
| 5 | 2021-01-03 | Dawn | Thor Lundgren | Nurse |
| 6 | 2021-01-03 | Eric | Dr. No | Doctor |
| 7 | 2021-01-03 | Eric | Margaret Houlihan | Nurse |
| 8 | 2021-01-05 | Eric | Paul Flowers | Nurse |
+----------------+------------------+---------+--------------------------+--------+
...而且看不到 EER/ERD
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.