powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Промежуточная таблица для связки "многие ко многим"
10 сообщений из 10, страница 1 из 1
Промежуточная таблица для связки "многие ко многим"
    #38627259
murtukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, в БД новичок. Интересует такой вопрос: допустим есть таблица пользователей users. Необходимо реализовать возможность добавления пользователям в друзья других пользователей. Для этого мне посоветовали создать ещё одну таблицу relations с полями id1, id2, status.

Например пользователь 111 (я) отправляю запрос на добавление в друзья пользователю 222. Тогда в таблице relations добавляется запись:

id1 | id2 | status
111 222 0

Когда другой пользователь подтвердить запрос, добиватся ещё одна строка:


id1 | id2 | status
111 222 1
222 111 1

Получится что таблица relations будет во много раз больше чем таблица users. Если в базе будет 1 млн пользователей, и у каждого из них по 100 друзей, то в таблице relations будет 200000000 записей.

Будет ли это сильно тормозить БД? Или имеется более рациональный способ организовать систему добавления в друзья?
...
Рейтинг: 0 / 0
Промежуточная таблица для связки "многие ко многим"
    #38627262
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murtukovЕсли в базе будет 1 млн пользователей, и у каждого из них по 100 друзей, то в таблице relations будет 200000000 записей.

Будет ли это сильно тормозить БД? Или имеется более рациональный способ организовать систему добавления в друзья?Не нужно заниматься преждевременной оптимизацией. Вот когда будете приближаться к таким величинам, тогда и будет надо думать над этим.
А пока обычной таблицы-связки вполне достаточно.

Я, правда, не понял, зачем тут поле status, но это уже дело хозяйское...
...
Рейтинг: 0 / 0
Промежуточная таблица для связки "многие ко многим"
    #38627267
murtukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

а если у меня уже сейчас 1 млн пользователей? Как быть? Лучше заранее все оптимизировать, чем потом исправлять. Даже если не так, ответьте пожалуйста на вопрос, если у вас есть ответ.
...
Рейтинг: 0 / 0
Промежуточная таблица для связки "многие ко многим"
    #38627325
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murtukovНапример пользователь 111 (я) отправляю запрос на добавление в друзья пользователю 222. Тогда в таблице relations добавляется запись:

id1 | id2 | status
111 222 0

Когда другой пользователь подтвердить запрос, добиватся ещё одна строка:


id1 | id2 | status
111 222 1
222 111 1А зачем добавлять ещё строку? Статус поменять на единицу и всё.
...
Рейтинг: 0 / 0
Промежуточная таблица для связки "многие ко многим"
    #38627343
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murtukovЕсли в базе будет 1 млн пользователейНе будет.
...
Рейтинг: 0 / 0
Промежуточная таблица для связки "многие ко многим"
    #38627426
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати даmurtukovа если у меня уже сейчас 1 млн пользователей?то вы можете позволить себе нанять специалиста для решения этой задачи
...
Рейтинг: 0 / 0
Промежуточная таблица для связки "многие ко многим"
    #38627515
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murtukovmiksoft,

а если у меня уже сейчас 1 млн пользователей?То у вас уже наняты пара квалифицированных DBA и несколько программистов.
murtukovКак быть?Спросить у них.
Но, поскольку их у вас нет, то попытайтесь исходя из текущей нагрузки и посещаемости экстраполировать рост нагрузки в будущее. Но не слишком далекое. Например, на год.
murtukovЛучше заранее все оптимизировать, чем потом исправлять.Нет, преждевременная оптимизация - это зло.
murtukovДаже если не так, ответьте пожалуйста на вопрос, если у вас есть ответ.Например, существуют кластера и шардинг. Существует разделение северов по ролям (веб-фронтенд, веб-бэкенд, БД и т.п.)
В любом случае, когда у вас реально будет миллион пользователей, то одна сабжевая табличка будет лишь одной, далеко не самой острой, проблемой из множества.
...
Рейтинг: 0 / 0
Промежуточная таблица для связки "многие ко многим"
    #38627567
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murtukov,

Будет ли это сильно тормозить БД?


Нет.


Или имеется более рациональный способ организовать систему добавления в друзья?


Нет.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Промежуточная таблица для связки "многие ко многим"
    #39013325
JustBear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Один из вариантов это оптимизировать, разбивка на таблицы по каждому пользователю со ссылками на таблицы друзей в этих таблицах
id1|id2|table|staus
111|222|222_friends|1

id1|id2|table|status
222|111|111_friends|0

Получается если у обоих статус = 1 все ок - друзья, в противном случае тот у кого 1 подписчик или отправлен запрос в друзья
...
Рейтинг: 0 / 0
Промежуточная таблица для связки "многие ко многим"
    #39013970
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не оптимизация, а почти что наоборот.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Промежуточная таблица для связки "многие ко многим"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]