Если есть ещё какой-то вариант диаграммы, который будет и полным, и неизбыточным, и выглядеть по-проще - я с удовольствием его приму.
Ну, просто для экспериментов у меня нет времени. Едва хватает читать и что-то отвечать.
Но хорошо. Вы вот формируете какую-то запись. Можно же нарисовать диаграмму объектов. Судя по серой диаграмме между студентом и предметом может быть
1. Студент записался на Предмет и на момент наблюдение потратил на изучение Х времени.
Или
2. Студент записался на Предмет и на момент наблюдение потратил на изучение Х времени и сдавать экзамен не будет
или
3. Студент записался на Предмет и на момент наблюдение потратил на изучение Х времени и сдавать экзамен будет
или
4. Студент записался на Предмет и на момент наблюдение потратил на изучение Х времени и сдавать экзамен будет, но еще не сдавал
или
5. Студент записался на Предмет и на момент наблюдение потратил на изучение Х времени и сдавать экзамен будет, и закончил обучение сдав экзамен
Разве тут нет логических ловушек?
Если мы выберем вариант 1, то так и не поймем есть экзамен или его нет, вернее это совершенно не важно, т.е. по сути это почти эквивалентно варианту 2
Аналогично, если мы выберем вариант 3, то остановимся на факте, что нужно сдавать экзамен, следовательно такая конструкция нелогична, нужно либо вариант 4 либо 5
Итого должны быть валидны только 2, 4 или 5
Итого имеем то, что можно смоделировать 4 атрибутами
Затрачено времени
Будет экзамен?
Дата экзамена
Оценка
Вся избыточность только в случае отсутствия экзамена.
Возможные решения
Между Студент и Предмет две связи с двумя классами-ассоциациями: Записан на курс (Затрачено времени), Есть экзамен (Дата, Оценка)
Может быть ввести отдельный класс - Экзамен - соединив его с классом ассоциацией Изучение - 1 ко многим, то есть фиксируется не одна а несколько попыток сдачи экзамена. Экзамен класс который как мы помним определяется в том момент когда Студент записывается на Предмет и тогда как-то определяется нужно ли ему сдавать экзамен или достаточно просто изучить предмет