Если в ячейку
Если в ячейку типа TEXT не влазят данные, MySQL автоматически увеличит её до необходимого размера или выдаст исключение?
Как сделать "резиновую" ячейку в таблице?
Никак- плохо...
если нужно помещать в таблицу данные, которые не лезут в LONGTEXT
Вы явно выбрали инструмент не по задаче. Храните такое в файловой системе.
речь идёт о поле "заблокированные". Пользователь сайта может заблокировать одного пользователя, и тогда даже типа TEXT - много... А может психануть и блокировать всех подряд в течение месяца. И что тогда делать?
не нужно хранить обычный реляционный список в виде текста и проблемы не будет никакой.
Просто создаёте отдельную таблицу blocked_users (user_id, blocked_user_id).
Для каждой отдельной блокировки создаётся отдельная запись
На старте поле (ячейка) может быть пустым, а с течением времени заполняться. И чтоб не ходить вокруг да около, вкратце речь идёт о поле "заблокированные". Пользователь сайта может заблокировать одного пользователя, и тогда даже типа TEXT - много... А может психануть и блокировать всех подряд в течение месяца. И что тогда делать? :) Мало того, что возникает необходимость проверять каждый раз размер этого поля, накладывается другой вопрос: Он (или его) больше не сможет блокировать?
зачем на каждого пользователя таблицу создавать?
Просто создаёте отдельную таблицу blocked_users (user_id, blocked_user_id)
А как вы себе это представляете?My1Name, вам уже показали структуру таблицы (одной на всех), объяснили типы колонок в ней. Прочитайте внимательно ещё раз комментарии выше. Если всё равно непонятно, то ссылку на учебник вам тоже выше дали.
Допустим, есть таблица "Users". В ней хранятся основные данные всех пользователей. Чтоб писать список "blocked" с новой строки, таблица "blocked_users" у каждого пользователя должна быть своя.Не должна.
Чтоб писать список "blocked" с новой строки, относящийся к конкретному пользователю, таблица "blocked_users" у каждого пользователя должна быть своя.
select blocked_user_id from blocked_users where user_id = 'A'
Если нужно будет получить список пользователей, которых заблокировал пользователь 'A', то просто делаем запрос
и строиться на сочетании user_id + blocked_id
какой индекс повесишь, так и будет.
И у меня сложилось какое-то спорное мнение, по поводу эффективности реляционных БД при построении списка "заблокированные", относящегося к конкретному пользователю...
NoSql архитектура - это прямой доступ к файлам, которые гораздо меньше конечной (проектируемой) таблицы.
прямой доступ к файлам, когда у тебя данных много, а получить тебе нужно небольшой их кусок будет сильно медленее
кто такое сказал?Отвечаю - я! :)
в случае, если у тебя индекс есть, то на вопрос "заблокировал ли пользователь А пользователя Б" ты получишь ответ за почти константное время.