Должен ли я нормализовать поля, разделенные запятыми (например, идентификаторы фирм, теги, участники) в MySQL, если я чаMySql

Форум по Mysql
Ответить
Anonymous
 Должен ли я нормализовать поля, разделенные запятыми (например, идентификаторы фирм, теги, участники) в MySQL, если я ча

Сообщение Anonymous »

Я работаю над приложением Flutter с серверной частью MySQL + PHP и храню в своей базе данных некоторые поля с несколькими значениями в виде строк, разделенных запятыми.
Вот некоторые из моих параметров:

Код: Выделить всё

firmIds = 'firm2,firm3,firm4';
tags = 'tag1,tag2';
participants='user1,user2,user3';
И я разделил их следующим образом:

Код: Выделить всё

final firms = firmUid.split(',');
и так далее.
и иногда мне нужно сделать что-то вроде:

Код: Выделить всё

SELECT category, COUNT(DISTINCT serialNumber)
FROM inspects
WHERE ...
GROUP BY category
ORDER BY count DESC
LIMIT 5;
Теперь я также хочу перечислить 5 лучших фирм с наибольшим количеством проверок, но поскольку идентификаторы фирм могут содержать несколько значений, разделенных запятыми, я не могу просто ГРУППИРОВАТЬ ПО идентификаторам фирм.
Один из возможных подходов — получить все записи, разделить строки идентификаторов фирм во Flutter, объединить их в список и посчитать их в цикле.
Но меня это беспокоит. было бы медленно для тысячи (или десятки тысяч) записей.
Мои вопросы:
Для растущей таблицы (возможно, 10–100 тыс. строк) приемлемо ли по-прежнему использовать значения, разделенные запятыми, и FIND_IN_SET() в SQL-запросах?
ИЛИ
Должен ли я вместо этого создавать отдельные таблицы нравится:

Код: Выделить всё

inspects_firms(inspect_id INT, firmIds VARCHAR(100));
inspects_tags(inspect_id INT, tag VARCHAR(100));
inspects_participants(inspect_id INT, participantUid VARCHAR(100));
и использовать JOIN для подсчета и группировки?
Стоит ли нормализовать все эти поля, разделенные запятыми, или я могу оставить их как есть для удобства и нормализовать только наиболее критичные к производительности поля?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... cipants-in
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»