SQL: использование значений NULL и значений по умолчанию - PullRequest
40 голосов
/ 22 января 2010

Каковы плюсы и минусы использования значений NULL в SQL по сравнению с значениями по умолчанию * * 1013

PS. Здесь было задано много похожих вопросов, но никто не отвечает на мой вопрос.

Ответы [ 13 ]

0 голосов
/ 23 апреля 2015

Я так ценю все это обсуждение. Я нахожусь в процессе создания хранилища данных и использую модель Kimball довольно строго. Однако есть один очень вокальный пользователь, который ненавидит суррогатные ключи и хочет, чтобы NULL были везде. Я сказал ему, что нормально иметь пустые столбцы для атрибутов измерений и для любых дат или чисел, которые используются в вычислениях, поскольку значения по умолчанию подразумевают неверные данные. Я согласен с преимуществами использования NULL в определенных столбцах, но это делает кубирование намного лучше и надежнее, если есть суррогатный ключ для каждого внешнего ключа измерения, даже если этот суррогат равен -1 или 0 для фиктивной записи , SQL любит целые числа для объединений, и если в качестве суррогатного ключа отсутствует пропущенное значение измерения, а в качестве суррогатного ключа предоставляется пустое значение, то вы получите то же число записей, используя одно измерение, что и кубирование другого измерения. Тем не менее, вычисления должны быть выполнены правильно, и вы должны учитывать значения NULL в них. День рождения должен быть НЕДЕЙСТВИТЕЛЕН, чтобы, например, возраст не рассчитывался. Я верю в хорошее управление данными и принятие этих решений с пользователями заставляет их думать о своих данных больше, чем когда-либо.

0 голосов
/ 09 октября 2010

NULL НИКОГДА не экономьте место хранения в DB2 для OS / 390 и z / OS. Каждый обнуляемый столбец требует одного дополнительного байта памяти для нулевого индикатора. Таким образом, для столбца CHAR (10), который может иметь значение NULL, потребуется 11 байт памяти на строку - 10 для данных и 1 для нулевого индикатора. Это имеет место независимо от того, установлено ли для столбца значение NULL или нет.

В DB2 для Linux, Unix и Windows есть опция сжатия, которая позволяет столбцам устанавливать нулевое значение для экономии места. При использовании этой опции DB2 удаляет неиспользуемое пространство из строки, в которой столбцы имеют значение NULL. Однако эта опция недоступна на мэйнфреймах.

REF: http://www.craigsmullins.com/bp7.htm

Итак, лучшая практика моделирования для DB2 Z / OS - это использовать "NOT NULL WITH DEFAULT" в качестве стандарта для всех столбцов. То же самое следовало в некоторых крупных магазинах, которые я знал. Облегчает жизнь программистам, не обращаясь к нулевому индикатору, и фактически экономит память, устраняя необходимость использовать дополнительный байт для нулевого указателя.

0 голосов
/ 23 января 2010

Две очень хорошие статьи, ориентированные на доступ к Null, Аллена Брауна:

Аспекты работы с Nulls в коде VBA:

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

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