Я пытаюсь создать клон очень популярного приложения под названием Discord
, которое позволяет людям общаться с помощью голоса, видео и текста.
Discord позволяет каждому пользователю создавать свои собственные серверы и приглашать люди к ним. Чтобы пользователи могли создавать серверы, я сначала создал 2 таблицы - users
и servers
Users table:
id, username, password
и
Servers table:
id, name, image, userId
Таким образом, связь между этими двумя таблицами такова. user
может создавать и иметь много servers
, а server
принадлежит user
. Пока все хорошо.
После создания server
, users
может присоединиться к server
в качестве членов этого server
. A user
может присоединиться к любому количеству servers
, а server
может иметь много участников. Я добился этого путем создания таблицы соединений server_users
и отношения «многие ко многим» между users
и servers
:
Server_Users table:
id, userId, serverId
Это работает нормально, однако я не уверен, что logi c за отношениями «многие ко многим» между users
и servers
является правильным. Мне кажется, что я применяю 2 отношения между пользователями и серверами, и я не знаю, правильно ли это. Может мне нужно больше таблиц, чтобы прояснить отношения?
User
имеет много servers
, а server
принадлежит user
(потому что user
является владельцем / создателем server
, а server
принадлежит только 1 user
- его создателю) Server
имеет много users
и users
имеет много servers
(Как и в каждом server
может иметь много участников, и каждый участник может быть частью многих серверов)