powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
25 сообщений из 76, страница 1 из 4
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608767
Юзер 01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
База, в в ней таблички. Каждая табличка имеет суррогатный ключ типа Int64.
Таблички связаны между собой с помощью FK - ограничений. Каждое поле, ссылающееся по FK на другую табличку, может быть как "nullable", так и "not null", в зависимости от особенностей FK - связи. Тут удобство null-ов не вызывает сомнений.
С полями, реализующими FK-связи, вопросов нет.
...
А еще есть поля, несущие уже "кондовую" смысловую нагрузку: Фамилия, Стоимость, Адрес...
Какой смысл разрешать для таких полей значение null?

Ну, можно придумать. Например, поле "Дата начала строительство". Пока оно null, строительство и не началось. Но ведь можно для этого задействовать какую-либо "волшебную константу", какой-нибудь
Код: sql
1.
cast(0 as date)

...

Для строк использовать значение "пустая строка", для чисел - "0".

Null, конечно, сам по себе является такой "волшебной константой". Но ведь значение 0 (или "пустая строка") можно использовать в запросах наравне с остальными значениями, а с null-ами приходится кочевряжиться!

Вот и вопрос: есть ли смысл для "бизнес" - значений использовать типы с ограничениями
Код: sql
1.
not null & (devault value = 0|'')

?

Не создаст ли сие каких-либо неудобств в дальнейшем?
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608792
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзер 01Не создаст ли сие каких-либо неудобств в дальнейшем?Нулы в базе не хранятся, а значит экономят место, в отличие от волшебных констант. Но это еще полбеды. Потом эти константы полезут юзерам на экран. Фронтэндщикам геморой обеспечен. Нужно будет кастить все "это" в пустые значения. Вообщем, вас найдут и будут бить долго)) И фронт и бэк.
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608793
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это религиозный вопрос )
Например, в Dynamics AX во всех таблицах вместо null дат используется значение 1900-01-01 00:00:00.000.
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608794
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608828
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзер 01Но ведь значение 0 (или "пустая строка") можно использовать в запросах наравне с остальными значениями, а с null-ами приходится кочевряжиться!

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

И FK тоже для этого. Вам приходится учитывать наличие связей. Это всё делается от человеческих ошибок. Если бы человек не ошибался никогда, ничего этого было бы не нужно. Никаких констрейтов, связей, NULL-ов и прочего :)
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608829
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bideveloperЭто религиозный вопрос )
+
Юзер 01Для строк использовать значение "пустая строка", для чисел - "0".

Ничего плохого не вижу в том, что это будут значения по умолчанию, пока нет записи - ничего нигде не хранится, - это всего лишь значения по умолчанию, при добавлении записи пустая строка никого не испугает,
а её и ноль и проще контролировать при вводе данных и бывает, что это и есть потом реальное значение...
Если сам потом будешь дописывать лицо - то вообще делай как тебе удобнее и не парься...
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608831
Юзер 01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Relic HunterНулы в базе не хранятся, а значит экономят место, в отличие от волшебных констант.Пустая строка varchar тоже не хранится. А числа - наверняка даже когда они null также хранятся. Впрочем, какая разница, дело разве в этом?

Relic Hunter...Нужно будет кастить все "это" в пустые значения...А для чего нужно пустую строку (или нули в числах) кастить в пустое значение? Например. Структуры данных на клиентской стороне не предусматривают null значений, разве что специальные, для совместимости с null-данными в БД.

Relic Hunter...Вообщем, вас найдут и будут бить долго)) И фронт и бэк.Так в чем проблемы-то, конкретно?
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608832
Юзер 01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag...Если сам потом будешь дописывать лицо - то вообще делай как тебе удобнее и не парься...
Я вот и спрашиваю - может, в чем-то подвох? Не зря ведь народ отстаивает важность null-ов.
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608834
Юзер 01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt...
И FK тоже для этого. Вам приходится учитывать наличие связей. Это всё делается от человеческих ошибок. Если бы человек не ошибался никогда, ничего этого было бы не нужно. Никаких констрейтов, связей, NULL-ов и прочего :)Про nullы в FK я сразу написал, в стартовом сообщении. О чем тут еще говорить?

hVostt...Собственно в этом и смысл. Вам придётся учесть отсутствие значений, значит меньше возможностей натупить...Что за "смысл"?
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608857
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзер 01,

NULL обозначает отсутствующее или неизвестное значение. Это не ноль (0), и не пустая строка (""), это вообще не значение.
Вот и весь смысл.
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608860
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзер 01Так в чем проблемы-то, конкретно?Наверняка возникнет путаница и где-нибудь поедут результаты.
Не верите? Тогда не используйте NULL и проверите на себе
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608879
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нулл в некот. СУБД не хранится в индексах, поэтому если нужно часто искать по поле = нулл, то это создаст ряд неудобств.

Оба варианта имеют "+" и "-".
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608904
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЮзер 01,

NULL обозначает отсутствующее или неизвестное значение. Это не ноль (0), и не пустая строка (""), это вообще не значение.
Вот и весь смысл.
А Волга впадает в Каспийское море. К чему эта банальная сентенция?
LSVНулл в некот. СУБД не хранится в индексах, поэтому если нужно часто искать по поле = нулл, то это создаст ряд неудобств.

Оба варианта имеют "+" и "-".
1.Если null не использовать - какие могут быть неудобства с индексами?
2. Какие именно минусы, можно пару примеров?
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608910
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...удивительное желание отвечать на незаданные вопросы.
ТС спрашивает о смысле использования значений null в полях, не являющихся ключевыми.
Ему начинают отвечать копипастами типа "потом пожалеешь/намучаешься" или "нулл это ...".

А почему, зачем - а вот так. Привыкли мы.
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608917
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзер 01hVostt...Собственно в этом и смысл. Вам придётся учесть отсутствие значений, значит меньше возможностей натупить...Что за "смысл"?

Вы перечитайте моё сообщение. Почитайте про теорию искусственных ограничений в дизайне.

Если совсем туго с мышлением и не доходит, ещё задайте вопрос, за каких хреном в оружии приделывают предохранители.
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608920
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД...удивительное желание отвечать на незаданные вопросы.
ТС спрашивает о смысле использования значений null в полях, не являющихся ключевыми.
Ему начинают отвечать копипастами типа "потом пожалеешь/намучаешься" или "нулл это ...".

Не выдумывайте глупости. Отвечают строго по делу.
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608926
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДskyANAЮзер 01,

NULL обозначает отсутствующее или неизвестное значение. Это не ноль (0), и не пустая строка (""), это вообще не значение.
Вот и весь смысл.
А Волга впадает в Каспийское море. К чему эта банальная сентенция?

Если вам тяжело даётся банальное мышление и логика, то уже никакие сентенции тут не помогут.
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608932
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД1.Если null не использовать - какие могут быть неудобства с индексами?
2. Какие именно минусы, можно пару примеров?яннп. Изъясняйся точнее.
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608940
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДskyANAЮзер 01,

NULL обозначает отсутствующее или неизвестное значение. Это не ноль (0), и не пустая строка (""), это вообще не значение.
Вот и весь смысл.
А Волга впадает в Каспийское море. К чему эта банальная сентенция?
Именно к тому, что всё банально. Не надо искать тайный смысл и создавать тему для срача на форуме.
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39608947
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если пользователь не указал свой возраст, потому как женщина, то не надо делать из него младенца
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39609169
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзер 01Но ведь можно для этого задействовать какую-либо "волшебную константу", какой-нибудь cast(0 as date). .... можно использовать в запросах наравне с остальными значениями, а с null-ами приходится кочевряжиться!
Да, это популярная идея. Чтобы вылечиться от неё, нужно устроиться работать на сопровождение продукта, созданного подобными гениями, и на своей шкуре ощутить, какое количество идиотских проблем вырастает из этих "некочевряжащихся" волшебных констант, и вдруг однажды осознать, что будь на их месте null-ы - такого бы не случилось. Тогда сразу становится понятно, зачем они нужны и почему "кочевряжиться" с ними нужно именно так.
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39609290
Юзер 01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer,

примеры будут? Или неприятие связано с особенностями конкретной СУБД?

В любимом оракле нулл и пустая строка - одно и то же.

Но не совсем. Какого-то диавола в оракле length('') оказывается нуллом.
И сравнение с пустой строкой тоже нулл. Ну, оракл он такой, своя религия. Оставим его, тут уже ничего не исправить.

Ну вот кому конкретно станет плохо, когда length('') станет равен 0?
Или AVG() станет возвращать действительно средний уровень дохода в семье именно на человека, а не средний уровень дохода только среди получающих этот доход?
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39609310
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзер 01
примеры будут?
Пожалуйста - таблица договоров, как водится, "Дата начала договора", "Дата окончания договора". Для действующих договоров, по Вашему предложению, в "Дату окончания" пишем 1900-01-01.
Пишем запрос "получить договоры, закрытые на начало 2017 года" для случая с NULL и для Вашего случая, чешем в затылке на тему "Какой же получился проще?".
Или для дат Вы захотите использовать вместо NULL уже 2 константы - Очень Большую и Очень Маленькую? И каждый раз при написании запроса гадать - А какую же из констант в поле писали раньше?
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39609316
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин Или для дат Вы захотите использовать вместо NULL уже 2 константы - Очень Большую и Очень Маленькую?Кстати, в PostgreSQL для дат так и есть, "infinity" и "-infinity", иногда очень удобно.
...
Рейтинг: 0 / 0
Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
    #39609347
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Юзер 01,

skyANA все точно описал.
При проектировании базы Вы на 100% не можете заложить все нужные константы на все случаи жизни для всех разных атрибутов всех разных сущностей.
Может конечно и сможете, но это потребует умопомрачительной работы, анализа и знания данных предметной области, причем с учетом перспективы будущего.
Т.е. есть большой шанс нарваться на то, что Ваша константа в один прекрасный момент вдруг станет не пустым значением для предметной области и бизнес-логики, со всеми вытекающими последствиями для системы.
Null умные люди специально придумали именно для того, чтобы указывать что значение неизвестно. Это значение ни с чем не пересечется, оно не равно никакому другому значению в предметной области.

Это как 0 - специальное число, которое до поры до времени числом не считали. Пока есть что считать, ноль нас мало интересует. Но чтобы обозначит как-то, что считать нечего, придумали 0. А в математ теориях это уже полноправное число и без него уже никак.
...
Рейтинг: 0 / 0
25 сообщений из 76, страница 1 из 4
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование: есть ли смысл разрешать null-значения для "бизнес-данных"?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]