Хранение нескольких значений в одной строке SQL

Я пытаюсь смоделировать таблицу конфигурации для своего приложения, и я хотел бы узнать ваше мнение о том, как хранить несколько значений для значения конфигурации.

Например, как хранить доступные языки? Как сохранить допустимые расширения файлов и т. Д.?

Я хотел бы иметь поле key и поле value в моем столе configuration, но у меня есть несколько способов хранения значения:

  • Сериализация массива PHP и сохранение его в одной строке,
  • Хранение всех значений, разделенных запятой, как это 1,4,9,42
  • Наличие нескольких строк с одинаковыми key но разные values, Я не понимаю, как я мог заставить это работать, это было бы очень непригодно …

Спасибо за вашу помощь 🙂

1

Решение

Оставляя в стороне любое обсуждение того, является ли это хорошей идеей, многие люди делают это. Очень распространенный подход состоит в том, чтобы иметь поле «blob» в таблице «конфигурации» и хранить ваши данные в формате JSON. Вы будете сериализовать и десериализовать себя, но это не страшно.

4

Другие решения

Если вы хотите сохранить свою конфигурацию в базе данных (это не рекомендуется, но это имеет смысл, если у вас есть много экземпляров вашего приложения) — давайте проанализируем это:

  1. Подход с сохранением нескольких строк одним ключом — давайте забудем об этом;)

  2. Хранение многих значений, разделенных , — это может создать некоторые проблемы, если вам нужно сохранить значение с комой (например: 10,000 как десять тысяч). Затем вам нужно изменить его для хранения значений, как в CSV-файле, инкапсулированном с ",

  3. Лучшая идея — хранение сериализованных значений PHP. Поскольку ваше приложение написано на PHP, это будет лучшим родные метод. Использовать этот подход так же просто, как:

    $ ConfigValue = десериализации (getMyValueFromDb ( «MYKEY»));
    // или сохранить его после изменения
    $ configValue = «новое значение»;
    saveMyValueToDb (сериализации ($ configValue));

Также — PHP serialize а также unserialize позаботьтесь о экранировании значений и их правильном преобразовании, чтобы вам не приходилось беспокоиться о том, что некоторые строки, разделенные запятой, неправильно разделены explode,

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector