gpt4 book ai didi

mysql - 如何在 SQL 中连接多个表,其对象将使用继承建模?

转载 作者:搜寻专家 更新时间:2023-10-30 22:05:27 26 4
gpt4 key购买 nike

对于我的大学作业,我必须为学校设计一些基本的疾病管理系统。我决定以

的形式对一些基本继承进行建模
  • 人 --> 学生
  • 人 --> 员工
  • 人 --> 监护人

人(PersonID、FirstName、LastName)

Student (StudentID (引用 PersonID), ... )

我之所以决定这样做,是因为我首先在 UML 中对此进行了建模,并在其中进行了继承。

我有另一个表,其中存储了同时具有 StudentID、StaffID 和 GuardianID 的事件。但是我想知道如何在 mysql 中创建一个连接来显示所有三个继承人的名字?

例如

Student.FirstName Student.LastName、Staff.FirstName、Staff.LastName 等...

我该怎么做?

还是我这样做完全错了?

提前致谢。

http://pastebin.com/m263dd7 - 链接到我的表格 DDL。

最佳答案

我对您描述的数据库设计没有任何问题。在 SQL 中对继承建模总是有点笨拙,但您使用了问题最少的解决方案。

这是一个查询,用于回答您有关检索给定事件的学生和教职员工姓名的问题:

SELECT ps.FirstName, ps.LastName, pf.FirstName, pf.LastName
FROM Incidents i
JOIN Students s USING (student_id)
JOIN Persons ps ON (s.student_id = ps.person_id)
JOIN Staff f USING (staff_id)
JOIN Persons pf ON (f.staff_id = pf.person_id)
WHERE i.incident_id = ?;

我假设 Incidents 表看起来包含如下列:

CREATE TABLE Incidents (
incident_id SERIAL PRIMARY KEY,
student_id INT NOT NULL,
staff_id INT NOT NULL,
FOREIGN KEY (student_id) REFERENCES Students(student_id),
FOREIGN KEY (staff_id) REFERENCES Staff(staff_id)
);

实际上,我希望事件与每个教职工和学生之间存在某种多对多关系。否则,一个事件可能只涉及一名学生和一名工作人员?

关于mysql - 如何在 SQL 中连接多个表,其对象将使用继承建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/431825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com