Значения по умолчанию для всех пустых столбцов - PullRequest
2 голосов
/ 08 июня 2009

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

Ответы [ 5 ]

3 голосов
/ 08 июня 2009

если вам требуется значение DEFAULT для всех столбцов NULL, вы можете сделать их все НЕ NULL!

1 голос
/ 09 июня 2009

Назначение значений по умолчанию только устраняет проблему, потому что, по сути, эти значения по умолчанию несут то же самое «значение», что и нулевые значения, поэтому вы сталкиваетесь с требованием включить специальный код в ваш код, чтобы иметь дело со «специальным значением» эти "особые значения".

1 голос
/ 09 июня 2009

Нули часто являются источником путаницы из-за логики трех значений, которые они включают. Например, запрос ...

select * from employee where job != 'MANAGER'

... можно ожидать возвращения всех сотрудников, которые не являются менеджерами. Однако, конечно, если JOB может быть нулевым, то этот запрос не вернет сотрудников, чье JOB равно нулю.

Возможно, это обоснование политики значений по умолчанию.

0 голосов
/ 09 апреля 2010

@ TonyAndrews:

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

NULL был изобретен для обработки пропущенного значения, поэтому для вашего запроса совершенно рационально не возвращать строки с нулевым значением в поле задания! Вы просите СУБД вернуть строки, задания которых не являются «Менеджерами»; это значит не возвращать мне тех, чья работа неизвестна. если вы также хотите пропустить работу, это другой вопрос.

только представьте, что могут быть некоторые менеджеры, чьи поля заданий имеют значение NULL (отсутствует, еще не введено), поэтому, если база данных возвратит их, результат запроса будет абсолютно неверным!

Возвращаясь к основному вопросу, я думаю, что если поле имеет значение NULL, оно должно иметь значение NULL в случае пропущенного значения, в противном случае, если поле никогда не имеет пропущенного значения (или всегда требует значение по умолчанию), просто сделайте его НЕ ПУСТО (NULL) по умолчанию значение. и это основано на бизнес-логике в определенном состоянии.

0 голосов
/ 08 июня 2009

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

Я думаю, что это отличная идея.

...