Перевод атрибутов отношений из диаграммы ER в SQL

В настоящее время я пытаюсь получить доступ к SQL в первый раз, поэтому я работаю с несколькими проблемами. Вот пример спецификации базы данных:

Студенты (имя, пол, курс) выполняют проекты (название). В каждом проекте есть два руководителя (имя, пол, отдел). Все учащиеся выполняют проект, но не все проекты принимаются. Более одного студента могут сделать один и тот же проект. Студенты регулярно встречаются с одним из своих надзирателей, и эти встречи записываются (дата, время, студент, руководитель, заметки).

Пока у меня есть диаграмма ER, которая, на мой взгляд, верна:

введите описание изображения здесь

Я могу получить основы (например, создание таблицы Student и т. Д.), Но у меня возникают проблемы с представлением о том, как представлять отношения, в частности отношения с собраниями, и как представлять его и его атрибуты в SQL. Должен ли я вместо этого создать «собрание»?

Да, вы должны создать объект Meeting для представления отношений многих и многих между Student и 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 и Supervisor . Кроме того, вы можете использовать что-то, называемое составным ключом на вашей таблице собраний, я предполагаю, что это сводится к личным предпочтениям, я обычно делаю это таким образом, когда представляю много-много отношений. Я не говорю, что это синтаксис, который вы будете использовать, что зависит от вашей базы данных, это был всего лишь пример, указывающий на то, что вы в правильном направлении. Надеюсь, поможет.

Также для вашей диаграммы (я просто догадываюсь, что это для класса), вы можете захотеть заглянуть в программное обеспечение, такое как визуальная или визуальная парадигма, чтобы создать свою диаграмму ER. Хотя большинство людей смогут понять вашу текущую диаграмму, это неправильное моделирование.

Для удовольствия я сделал диаграмму, основанную на ваших таблицах: введите описание изображения здесь

Вам понадобится сущность между Supervisor и Project если у них много отношений. Это называется associative entity . Я назвал мой SupervisorProject так, чтобы они были немного более ясными.

Редактировать Оглядываясь на то, что Студент и проект были много к одному, исправили это, извините.

В ответ на Cohagen это сообщение stackoverflow предполагает, что многие из многих отношений, таких как Supervise могут быть представлены путем сохранения таблицы отношений, даже если у нее нет атрибутов. Напротив, таблица Do находится между отношением «много к одному» и не имеет атрибутов, поэтому мы можем избавиться от нее и просто добавить ссылку на внешний ключ для таблицы проекта у студентов.