Давайте предположим, что у нас есть многосайтовая CMS и каждый веб-сайт в этой CMS имеет 2 варианта: preview_width и preview_height.Мы знаем, что каждая опция должна иметь значение по умолчанию, если оно не определено пользователем.Также мы знаем, что список опций будет расширен в ближайшее время.Как лучше хранить такие параметры в таблице MySQL?
Я знаю три метода, и у обоих есть недостатки (или, может быть, я не знаю, как правильно использовать эти методы) ...
Практика № 1: каждый параметр представлен в виде столбца в таблице options
.
Недостаток: мы должны изменять таблицу options
каждый раз, когда добавляем новую опцию.
Практика № 2: Все опции хранятся в виде сериализованного объекта / массива вСтолбец опций таблицы сайтов.
Недостатки: чтобы добавить новую опцию со значением по умолчанию - нам нужно перебрать все строки и изменить сериализованные опции;или мы можем добавить эту опцию, когда она запрошена и найдена отсутствующей.
Практика № 3: Все опции хранятся в таблице опций со структурой: id, site_id, option_name, option_value.
Недостатки: при добавлении новой опции мы должны обновить эту таблицу, добавив значения по умолчанию для каждого веб-сайта.
Какой у вас выбор?Какую практику выбирать, когда новые опции добавляются очень часто?Любые другие практики?
Спасибо.