Требования Questions
, запрашиваемые Student
и связанные Answer
, предоставляемые либо Student
, либо Teacher
, могут быть представлены в UML с помощью ограничения :
Итак, в вашей модели 2 возможна ассоциация для ответа в отношении ответчика: ученик и учитель. Но ограничение говорит о том, что для данного ответа активен только один из них. Ограничения выражаются в фигурных скобках. Вы можете использовать либо естественный язык (или псевдо-естественный язык, как я это сделал здесь), либо использовать более формальное и менее двусмысленное выражение OCL.
В реляционной базе данных вы могли бы использовать именно эту схему и иметь два внешних ключа, допускающих значение NULL, например ByStudent
и ByTeacher
, и ваш код должен был бы убедиться, что ограничение соблюдается.
Альтернативный способ представить это в UML - показать с помощью обобщения отсутствующую концепцию:
This концептуально более перспективным. В реляционных базах данных нет способа напрямую express. Таким образом, вам нужно будет использовать некоторое отображение таблиц, которое в конечном итоге будет очень похоже на то, что описано выше, или с дополнительной таблицей одиночного наследования для отображения Author
.