Лучший способ хранить смешанные массивы данных в MySQL? - PullRequest
0 голосов
/ 01 ноября 2019

Я должен хранить в 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?

...