Я проектирую систему, в которой файл может иметь переменное количество настраиваемых подполей.Мне нужно иметь возможность извлекать и фильтровать файлы со всеми прикрепленными полями.Поля настраиваются пользователем по имени и номеру.Какова лучшая практика для этой ситуации?
Я думаю о том, чтобы настроить ее на следующую структуру
TABLE files
id file_name
1 My file
2 My other file
TABLE file_fields
id | file_id | field_id | value
1 1 1 microwave
2 1 2 a machine that heats stuff up
3 1 3 43.54
4 2 1 oven
5 2 3 34.22
fields TABLE
id | title
1 Name of product
2 Description of product
3 Price of product
Затем я мог бы выполнить запрос, который объединяет и объединяет записи file_fields и объединенияих подать записи ... но это неуклюже?Есть ли способ json_encode эффективно использовать эти поля вместо конкатных значений, разделенных трубами?Запрос, который будет возвращать что-то вроде.
id -> 1
file_name -> My file
fields -> 1|Name of product|microwave|2|Description of product|a machine that heats stuff up|3|Price of product|43.54
id -> 2
file_name -> My other file
fields -> 1|Name of product|oven|3|Price of product|34.22
Могут ли быть серьезные недостатки простого кодирования всех данных поля в виде JSON и сохранения в текстовом поле?Для поиска вы можете просто выполнить тщательно отформатированный поиск текста ...
Я склоняюсь к тому, чтобы сделать что-то вроде этого
TABLE files
id file_name field_values_json
1 My file {"1":"microwave","2":"a machine that heats stuff up","3":"43.54"}
2 My other file {"1":"oven","3":"34.22"}
TABLE fields
id | title
1 Name of product
2 Description of product
3 Price of product
Есть какие-нибудь мысли по поводу этого подхода?