Я должен хранить в MySQL какой-то каталог данных со смешанными массивами, например,
ITEM_TYPE1 | A | 7 | long_text | 1000-80 | N | 0 |
ITEM_TYPE1 | X | 8 | long_text | 9999-80 | B | 1 |
ITEM_TYPE2 | 7.50 | X1 | 1 | long_text | 8 | |
ITEM_TYPE2 | 1000.85 | 4F | 8 | long_text | 0 | |
ITEM_TYPE3 | long_text | 9 | 9 | | | |
ITEM_TYPE3 | long_text | 1 | 1 | | | |
Как видите, все ITEM_TYPE имеют разное количество значений массива разного типа (char, int, bool, текст, десятичное), поэтому я не могу предопределить правильные типы столбцов в одной таблице. Кроме того, я не могу использовать функции serialize или json, так как все данные должны быть отсортированы и в будущем выбраны фильтрами с использованием движка MySQL.
Что лучше (лучше - я имею в виду меньше размер данных на жестком диске и большепродуктивным с помощью запросов SELECT) способ хранения таких массивов данных? Я вижу два варианта:
Создание предопределенных столбцов для данных, например
int1, int2, int3, int4, int5, chr5_1, chr5_2, chr5_3, text1, text2, text3 <...>
, но он менее эффективен по размеру ...
или создать отдельные таблицы для каждого ITEM_TYPE с предварительно определенными столбцами в соответствии со значениями ITEM_TYPE?