Вопрос, на который отвечают учителя и ученики - Разработка базы данных - PullRequest
1 голос
/ 03 мая 2020

Я проектирую базу данных. У меня есть Вопрос, Ответ, Студенческая и учительская сущности. Вопрос, задаваемый только студентами, но отвечаемый учителями и учениками, как показано ниже: e

Таким образом, у Ответа должен быть только один идентификатор учителя или идентификатор студента Как я могу представить это на диаграмме класса без использования наследования?

1 Ответ

3 голосов
/ 03 мая 2020

Требования Questions, запрашиваемые Student и связанные Answer, предоставляемые либо Student, либо Teacher, могут быть представлены в UML с помощью ограничения :

enter image description here

Итак, в вашей модели 2 возможна ассоциация для ответа в отношении ответчика: ученик и учитель. Но ограничение говорит о том, что для данного ответа активен только один из них. Ограничения выражаются в фигурных скобках. Вы можете использовать либо естественный язык (или псевдо-естественный язык, как я это сделал здесь), либо использовать более формальное и менее двусмысленное выражение OCL.

В реляционной базе данных вы могли бы использовать именно эту схему и иметь два внешних ключа, допускающих значение NULL, например ByStudent и ByTeacher, и ваш код должен был бы убедиться, что ограничение соблюдается.

Альтернативный способ представить это в UML - показать с помощью обобщения отсутствующую концепцию:

enter image description here

This концептуально более перспективным. В реляционных базах данных нет способа напрямую express. Таким образом, вам нужно будет использовать некоторое отображение таблиц, которое в конечном итоге будет очень похоже на то, что описано выше, или с дополнительной таблицей одиночного наследования для отображения Author.

...