2014-12-13 6 views
1

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

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

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

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

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

+0

Где вы будете хранить конфигурацию базы данных? Вы считаете, что не храните конфигурацию приложения в БД? –

+0

Я хотел сохранить конфигурацию своего веб-сайта в своей базе данных под таблицей «Конфигурация». Извините, если это неясно. – AntoineB

ответ

4

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

1

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

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

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

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

    $ configValue = unserialize (getMyValueFromDb ("myKey")); // или сохранение после изменения $ configValue = "новое значение"; saveMyValueToDb (serialize ($ configValue));

Также - PHP serialize и unserialize заботиться о побеге ценности и преобразовать его должным образом, вам не нужно беспокоиться о каком-то кома, разделенных струне неправильно расщепляется с explode.

Смежные вопросы