Предположим, что у меня есть таблица продуктов, в которой будут зарезервированы несколько полей, а все остальные атрибуты - сгенерированные пользователем столбцы с нулевым значением.Дизайн базы данных: практично ли изменить схему таблиц во время выполнения?
(reserved)
__
/\
/ \
--------------------------------------
| id | name | color | height | width |
--------------------------------------
Как и EAV, он разрешает любое количество свойств, но свойства также будут запрашиваться. Каковы потенциальные недостатки такого подхода?
Можем ли мы исключаем проблемы безопасности, если только элементы управления, что пользователь в
ADD/DROP COLUMN
отчетности имя поля (которое будет всегда подтверждено для предотвращения сбрасывают зарезервированных полей)?Насколько дорогими
ADD/DROP COLUMN
заявления могут возникать, когда таблицы растут очень большими? Предполагая, что у нас есть ограничение скорости, чтобы избежать злоупотребления системой пользователем.Сколько (нулевых, неиндексированных) столбцов слишком много для одной таблицы с точки зрения производительности?
Ну, это то, что мы обычно делаем, просто хотели знать, что может отрицать эта альтернатива. Если я храню пару ключ/значение в отдельной таблице, тогда мне придется присоединиться к 3 таблицам для запроса свойства продукта (product, product_attributes, attribute_values) – Imran