Моделирование базы данных с помощью UML: отношения
Я учу UML для моделирования базы данных для проекта класса. По сути, база данных для социальной сети. Таблицы - это пользователь, друзья, профиль, статус, настенные посты и комментарии. У меня возникли проблемы с налаживанием точных отношений.
На первый взгляд кажется, что все таблицы имеют композиционные отношения (разной кратности); пользователь "имеет" профиль (1-1), пользователь "имеет" друзей (1-0..*), wall_posts (1-0..*), а wall_post "имеет" комментарии (1-0..*). Если пользователь удален, эффект будет каскадным и должен удалить все записи, имеющие этот идентификатор пользователя. В пользовательской таблице есть информация, такая как имя uid (которая не реплицируется в таблице wall_posts), поэтому необходимо удалить что-то вроде записи сообщения.
Есть ли изъян в моей логике?
1 ответ
Часть где a user "has" friends(1-0..*)
имеет недостатки.
Это должно быть нм между таблицей пользователя и самим собой (или 0..*-0..*
в нотации UML), потому что все эти друзья не являются эксклюзивными для одного пользователя. У каждого (надеюсь) может быть много друзей. Может быть реализовано friendship
таблица, которая содержит два (различных) внешних ключа для пользовательской таблицы и, возможно, дополнительные атрибуты, описывающие взаимосвязь.