目前我是第一次尝试掌握 SQL,所以我正在解决一些问题。这是一个示例数据库规范:
学生(姓名、性别、课程)做项目(标题)。每个项目都有
两名主管(姓名、性别、部门)。所有学生都做一个项目
但并非所有项目都被接受。不止一名学生可以做同样的事情
项目。学生定期与他们的一位导师会面,这些
记录会议(日期、时间、学生、主管、笔记)。
到目前为止,我已经绘制了一个我认为正确的 ER 图:
我可以了解基础知识(例如创建学生表等),但我无法理解如何表示关系,特别是会议关系,以及如何在 SQL 中表示它及其属性。我应该创建一个“会议”实体吗?
是的,你应该创建一个Meeting
实体来表示多对多关系Student
and Supervisor
。在其中,您可以使用与这些各自的表相对应的外键来关联这些表。在 SQL 中,它可能看起来像这样:
Create table Meeting {
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
student_id INT NOT NULL,
supervisor_id INT NOT NULL,
//rest of the fields...
FOREIGN KEY (student_id) REFERENCES Student(id)
FOREIGN KEY (supervisor_id) REFERENCES Supervisor(id)
}
你也会为Supervise
之间Project
and Supervisor
。您也可以在会议桌上使用称为复合键的东西,我想这取决于个人喜好,在表示多对多关系时我通常这样做。我并不是说这是您将使用的语法,这取决于您的数据库,这只是一个为您指明正确方向的示例。希望能帮助到你。
另外,对于您的图表(我只是猜测这是一个类),您可能需要研究 visio 或视觉范例等软件来创建您的 ER 图。虽然大多数人能够理解您当前的图表,但这不是正确的建模。
For fun I made a diagram based on your tables:
![enter image description here](https://i.stack.imgur.com/drNu5.png)
你会想要一个实体Supervisor
and Project
如果它们是多对多关系。这被称为associative entity
。我标记了我的SupervisorProject
只是为了让他们更清楚一点。
Edit忽略了学生和项目是多对一的事实,修复了这个问题,抱歉。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)