В диаграмме UML, где один класс состоит из другого класса, есть ли таблица неявных ассоциаций или ее нужно показывать?
Например, если у меня есть главы, состоящие из абзацев, достаточно ли этого одного:
Или класс ассоциации должен быть явно показан следующим образом:
Я никогда не видел, чтобы это делалось так, как в последнем примере, поэтому я предполагаю, что это подразумевается. Или, может быть, я не нормализовал данные должным образом (учитывая, что глава появляется как в классе Chapter, так и в классе Paragraph).
Вам не нужна третья таблица, потому что абзац может иметь один FK в своей главе.
Просто нет никакого намека. Если вам нужен класс ассоциации, вам нужно определить его. Однако UML предназначен не для построения диаграмм, а для моделирования. Вы можете опустить свой класс ассоциации на диаграмме, если хотите. Однако класс ассоциации по-прежнему будет существовать в вашей модели.
Нет, не подразумевается.
Причина, по которой вы этого не видели, заключается в том, что в большинстве случаев это просто не имеет смысла. В классе ассоциации классовая часть дополнительно описывает свойства ассоциации. В вашем примере вы создаете искусственный объект, который на самом деле почти ничего не приносит. Такой подход может быть полезен для отношений «многие ко многим», которые невозможны для композиции (каждая часть может иметь не более одного целого). Даже если вы хотите показать внешний ключ, это будет просто один из классов. Но это подразумевается самой ассоциацией. Согласно спецификации UML встроенный атрибут эквивалентен ассоциации.
Более того, в UML вы можете просто изобразить отношения «многие ко многим», но применяя соответствующие кратности на концах ассоциации. Вы можете захотеть показать класс, изображающий это, только при моделировании на уровне кода.
Нет, не подразумевается.
UML — это не таблицы, а классы. Автор диаграммы классов должен сообщить аудитории, как следует интерпретировать класс. Некоторые диаграммы UML моделируют реальный мир, другие моделируют часть функциональности приложения, а третьи отображают физическую реализацию.
По-видимому, читая ваш вопрос, вы моделируете реляционную базу данных, где класс представляет собой физическую таблицу. В этом случае я бы ожидал, что каждая таблица явно моделируется как класс UML.
Стандарт UML этого не требует.
Кстати, обозначения (PK) и (FK) не соответствуют стандарту UML.
В качестве примечания: вы не можете создать черновик главы без содержания с этой моделью.