Назад | Перейти на главную страницу

Как хранить текстовые поля неизвестного и переменного размера?

Я пытаюсь создать таблицу (или несколько) для получения пользовательского ввода (UGC). Это содержимое может варьироваться по размеру от одного символа до нескольких сотен слов. Вход будет закодирован в utf8_unicode_ci и может быть в латинском или многобайтовом формате.

Вход должен быть доступен для поиска.

Как мне структурировать свою БД, чтобы обеспечить хороший компромисс между гибкостью и производительностью? Я мог бы например ...

  1. Установите верхний предел размера строки и получите высокие показатели производительности и удобства использования.
  2. Создайте несколько таблиц для различных диапазонов размеров и идентифицируйте каждый элемент по комбинации имени таблицы и идентификатора (поэтому мне понадобится центральная таблица с уникальным идентификатором, именем таблицы, идентификатором для конкретной таблицы).
  3. Разбейте каждый ввод на различные компоненты (то есть слова) и сохраните слова отдельно вместе с отношением, которое сопоставляет каждое утверждение с серией идентификаторов слов ...

Я уверен, что есть и другие варианты.

Я предполагаю, что это может немного зависеть от вашего движка базы данных, но, скорее всего, у него есть поле для «Текст» (в отличие от «Varchar» или «Char»), которое подходит для хранения текстовых данных разного размера. По сути это ваш вариант №1.

Если он будет в MySQL, тогда у вас есть доступное поле Text или Blob: http://dev.mysql.com/doc/refman/5.6/en/blob.html