2013-04-21 4 views
0

Что касается производительности & «Правильный способ делать вещи» и пытаться выяснить, какой способ лучше хранить данные конфигурации в базе данных SQL. Предположим, у вас есть данные конфигурации веб-сайта для установки минимального и максимального возраста, с которым человек должен получить доступ к сайту.Сохранение нескольких значений в одном столбце против нескольких столбцов для нескольких значений

CREATE TABLE SiteConfig 
(
    featureName varchar(100), 
    value varchar(100), 
) 

Что лучше:

  • Чтобы сохранить все это в одной строке и обрабатывать его в PHP с взорваться() ;.

    FeatureName: "ageRequirement"

    значение: "13 | 60"

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

    FeatureName: "minAge"

    значение: "13"

    FeatureName: "MaxAge"

    значение: "60"

В связи с количеством функций на веб-сайте, это разница в 60 ROWS данных против примерно 25.

ответ

0

Магазин имеет две отдельные функции.

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

Нет причин для разбора строки с разделителями-запятыми, чтобы получить две функции.

Следует признать, что в случае двух чисел, разделенных запятой, мало что может пойти не так. Это, однако, скользкий наклон, и вскоре вы можете попытаться заполнить несколько полей в одну строку и затем выделить много ресурсов для синтаксического анализа строки.

0

Если это значения, которые вы никогда не будете использовать сами по себе в базе данных, либо они будут работать.

Если вы подозреваете, что когда-либо захотите использовать значение в базе данных, вы не захотите, чтобы они находились в одном значении. Это сделало бы запрос данных сложным и неэффективным.

+0

Это была моя мысль. Пример, который я дал, прост, но есть много других функций, которые имели бы 2-5 разных переменных, если бы я пошел по этому маршруту. Я просто беспокоился о том, что нужно делать слишком много операторов SELECT для получения данных. – Vidarious

+0

@Vidarious: вы можете иметь отдельные столбцы для разных параметров вместо строк, что облегчает их выборку. Кроме того, вы можете использовать разные типы данных для разных значений. Например, «int», по-видимому, лучше подходит для минимальных и максимальных значений возраста. – Guffa

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