Проектирование базы данных: много столбцов против нескольких с массивами в них - PullRequest
0 голосов
/ 26 января 2011

Допустим, мне нужно хранить квартиры в моем БД. Квартиры имеют несколько атрибутов, таких как размер, площадь, меблированы они или нет и т. Д.

Что лучше: хранить каждое значение в отдельном столбце или иметь несколько столбцов с массивами в них?

Ответы [ 4 ]

2 голосов
/ 26 января 2011

Я согласен с Джоэлом, что это зависит, особенно.на сколько столбцов.Для чего бы это ни стоило, я всегда начинал с простого пути и делал один столбец для каждого «интересного» атрибута.Конечно, все, что вы хотите запросить или выполнить математические расчеты ($ / sq-ft), является самым простым в столбце.

Возможно, некоторые блоки, которые просто отображают, можно сгруппировать ... но я быне обязательно так начинать.

1 голос
/ 26 января 2011

Если вы говорите о реляционных базах данных, таких как Oracle, mysql, postgre, то обычно лучше иметь один столбец для каждого атрибута.С помощью этого метода вы можете легко найти в вашей базе данных определенный атрибут.

Хранение нескольких значений в одном столбце является редкостью и используется только для очень специальных оптимизаций производительности.

Посмотрите на нормализацию базы данных:http://en.wikipedia.org/wiki/Database_normalization

1 голос
/ 26 января 2011

Вы не можете ответить на этот вопрос одним единственным ответом. «это зависит» от количества столбцов, о которых мы говорим, и от того, можно ли их разумно разложить (т.е. нормализовать) на отдельные объекты: -P

0 голосов
/ 26 января 2011

Я обычно смотрю на данные, которые буду хранить, и вижу, будут ли данные чем-то, что мне нужно будет искать позже ... Например ... Если у меня есть стол с квартирами и я, вероятно, будупри поиске квартир с 4 спальнями (или 1,2,3 ...) я постараюсь поместить количество спален в отдельный столбец ... если количество спален в строке других параметров для квартиры, индексна "количество спален" нельзя использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...