Моделирование базы данных с помощью 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 таблица, которая содержит два (различных) внешних ключа для пользовательской таблицы и, возможно, дополнительные атрибуты, описывающие взаимосвязь.

Другие вопросы по тегам