Я проектирую систему для клиента, где он может создавать формы данных для различных продуктов, которые он продает сам. Число полей, которые он будет использовать, не будет более 600-700 (наихудший сценарий). Похоже, он, вероятно, будет в диапазоне от 400 до 500 (макс.).Одна таблица mysql со многими полями или многими (сотнями) таблицами с меньшим количеством полей?
У меня было 2 методов в виду, для создания базы данных (с помощью мета-данные):
а) Создать таблицу для каждого продукта, который будет содержать только поля, необходимые для этого продукта, что приведет к сотням таблиц но только необходимые поля для каждого продукта
или
б) использовать одну единственную таблицу со всеми полями формы Availabe (любого диапазона от тока 300 до макс 700), в результате чего в одной таблице, которая будет иметь много полеев, из которых только около 10% будет использоваться для каждой записи продукта (продукт обычно не должен использоваться более 50-80)
Какое решение лучше всего подходит? имея в виду, что обслуживание таблиц (создание, обновление и изменение) в таблице (таблицах) будет выполняться с использованием метаданных, поэтому мне не нужно будет делать изменения в таблице (таблицах) вручную.
Спасибо!
/**** UPDATE *****/
Просто обновление, даже после долгого времени (и ALLOT дополнительного опыта, накопленного) я должен упомянуть, что не normalizing база данных страшная идея. Более того, не нормализованная база данных почти всегда (как всегда из моего опыта) также указывает на неправильный дизайн приложения.
Hello pulegium, Я также подумал о чем-то подобном, но есть одна проблема: тип поля может быть чем угодно: от bool до text. В этом проекте нет способа иметь правильный тип поля для поля ecah ... (теоретически я мог бы использовать TEXT, поскольку он может содержать любые значения, которые мне нужны, но я хотел бы иметь подходящий тип поля, назначенный каждому of then) – mspir
, если у меня не больше полей field_value с разными типами полей ... (field_value_int, field_value_text, field_value_decimal и т. д.) ... но что doesent чувствует себя очень правильно ...? :) – mspir
Добавьте столбец 'field_type' в таблицу' field'. Это все равно позволит вам хранить все как текст в базе данных, но позволяет вам определять свои собственные правила проверки для поля по мере необходимости. Это дало бы вам всю гибкость дизайна pulegium, плюс вы не ограничивались бы только типами, поддерживаемыми вашим движком базы данных, но также могли бы иметь, например,, валидация 'must_be_multiple_of_five_percent' (для скидок),' week_day_name' и т. д. –