繁体   English   中英

MySQL EER图中的关系

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM