Я работаю над приложением, которое принимает любые загруженные данные CSV, хранит их вместе с другими наборами данных, которые были загружены ранее, а затем производит вывод (CSV или HTML) на основе выбора пользователем столбцов / значений, которые они хотят вернуть. База данных будет автоматически расширена для обработки новых / других столбцов и типов данных по мере необходимости. Это предпочтительнее модели «сущность-атрибут-значение».
Пример - загрузка этих двух наборов в пустую базу данных:
набор данных A:
name | dept | age
------+-------+------
Bob | Sales | 24
Tim | IT | 32
набор данных B:
name | dept | age | salary
------+-------+------+--------
Bob | Sales | 24 | £20,000
Tim | IT | 32 | £20,000
Программно изменит таблицу «данных», так что при импорте набора данных A будут созданы 3 новых столбца (имя, отдел, возраст). В результате импорта набора данных B создается 1 новый столбец (зарплата). На данный момент забудьте о том, следует ли объединять наборы записей или нет и что здесь нет нормализации.
У меня проблема в том, что некоторые столбцы также будут иметь значения поиска - допустим, столбец Dept в какой-то момент в будущем будет иметь связанные значения, которые дают адрес и номера телефонов этого отдела. То же самое можно сказать о столбце Заработная плата, поиске налоговых групп и т. Д.
Количество столбцов в этой большой таблице не должно становиться слишком большим (несколько сотен), но должно быть достаточно большим, чтобы пользователь мог управлять структурой и значениями таблицы поиска через панель администратора, а не привлекать разработчиков каждый раз.
Вопрос заключается в том, следует ли использовать отдельные таблицы поиска для каждого столбца (значение, описание) или комбинированную таблицу поиска, которая ссылается на столбец (столбец, значение, описание). Обычно я бы выбрал отдельные таблицы поиска, но здесь приложение должно будет создать их автоматически (например, lookup_dept, lookup_salary), а затем добавить новое соединение в главный оператор SQL. Это будет сделано по запросу пользователя, а не при добавлении столбца (чтобы избежать сотен пустых таблиц).
С другой стороны, комбинированную поисковую таблицу нужно будет несколько раз присоединять к таблице данных, каждый раз выбирая имя столбца.
Мне кажется, что индивидуальные поиски имеют смысл, но я могу лаять совершенно не то дерево.