Что делает таблица только с двумя внешними ключами?
Я исследовал MySQL и столкнулся с этим интересным ERD. Я понимаю все это, кроме user_chat
столик здесь Имеет 2 внешних ключа, ссылающихся на таблицу chat
а также user
, Что это делает в любом случае? Означает ли это, что:
- Мне пришлось
INSERT INTO message, chat, user_chat
по мануалу, когда появляется новый чат? - Я могу только сделать
SELECT
заявление с этимuser_chat
Таблица? user_chat
не может содержать другие столбцы, такие какfavorite
если люди хотят быстро получить к нему доступ?- Могу ли я удалить строку в
user_chat
стол, так как они неunique
?
Я самообучаюсь и все еще начинаю изучать эту тему, так что это может многое значить, если это можно объяснить, чтобы помочь мне понять это. Очень признателен!
3 ответа
Между многими существует связь user
а также chat
это означает, что один пользователь может участвовать в нескольких чатах, и в каждом чате может участвовать несколько пользователей.
Такого рода отношения невозможно представить напрямую, используя FOREIGN KEY
ограничения, которые могут обеспечить только отношение один-ко-многим. Чтобы обойти это, разработчики базы данных используют таблицу "сущность пересечения", такую как user_chat
что позволяет уменьшить отношение "многие ко многим" до отношения "один ко многим к одному".
Когда вы создаете новый чат, вы вставляете запись в user_chat
для каждого участника и для любых новых участников, которые присоединяются к чату в процессе. Основное использование этого пересечения в этом примере - позволить вам легко найти всех участников чата (например, для уведомления их о новых сообщениях) или найти все разговоры, в которых участвовал конкретный пользователь.
Да, таблицы этого типа, имеющие только 2 внешних ключа, в основном используют для входа в систему. это просто связь / отношение ничего другого. это помогает легко извлекать данные больше ничего
В реляционных базах данных невозможно реализовать отношение "многие ко многим". В этом случае Chat
а также User
иметь отношения многие ко многим. Нам нужно разбить отношение "многие ко многим" на отношения "один ко многим", введя " ассоциативную сущность", которая содержит 2 столбца в качестве внешних ключей для каждой из таблиц. В этом случае user_chat
выступает в качестве ассоциативного субъекта.