powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / NULL vs NOT NULL
25 сообщений из 80, страница 2 из 4
NULL vs NOT NULL
    #39988348
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
Ты либо "отказываешься" от Null-ов, либо "учитываешь" их.

Прикол в том, что все эти его выдуманные из пальца "умолчательные значения" тоже учитывать придется (как, впрочем, ты уже выше указал), только вот нулл он всегда и везде нулл и "учитывается" он стандартным и однообразным способом, а у него повсюду будет черти что и учитываться должно черти как.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988353
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

не совсем так, есть малый подкол.

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

Они еще хуже единого Null в смысле размножения сущностей.
Настоящий отказ идет именно путем внедрения "нормализации до потери нуллов".

То, что я показал, в действительности, содержит в себе некое настояние всё-таки на чтении "первоисточников".

Дейт настаивает на том, что независимо от присутствия или отсутствия Null-значений в базовых
таблицах,
агрегатные Min/Max в SQL, с его точки зрения принципиально спроектированы неверно,
по его мысли они обязаны возвращать диапазонный максимум для Min и
диапазонный минимум для Max.

В этом есть определенные резоны.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988392
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С позиции требования о поддержании достоверности данных "замены" NULL на материализованные значения недопустимы.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988468
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noram
Я всегда их (NULLы) использую и ничего, кроме головной боли они мне не предлагали

Просто не надо использовать null там, где они не нужны. У некоторых проектировщиков почему-то все поля nullable, вместе с id, потому что им лень дописать not null при создании таблицы или галочку в своё иде поставить.
noram
а если используют, то какие аргументв за.

Данные могут быть, а могут не быть. Какие еще аргументы нужны? Чем ты будешь обозначать, что данных нет? Нулём, -1? И в чём разница?
noram
Но так это и так понятно, а пустое значение легче воспринимается, чем NULL.

Пустое значение - это костыль. Тебе так для всего придётся придумывать какие-то свои пустые значение, которые будут понятны только тебе. Можно вообще сделать битовые флаги типа null/нет/не знаю/затрудняюсь ответить и засунуть их в инт для каждого поля.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988486
noram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дп, crutchmuster, спасибо. В принципе со всем согласен. Правда не понимаю, как можно создать id и не проставить NOT NULL.
Мне NULL не нравится во сновои из-за путаницы пустого значения и неизвесного значения (null). С другой стороны, как тут правильно отметили, слишком сильная нормализация таблиц тоже не выход...
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988487
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noram
путаницы пустого значения и неизвесного значения (null)

Ну вот, теоретик баз данных.
Ты сам то способен определить различие между "пустого" и "неизвесного"?
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988514
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
У некоторых проектировщиков почему-то все поля nullable, вместе с id, потому что им лень дописать not null при создании таблицы или галочку в своё иде поставить.

Если некоторые идиоты молотком по голове себе стучат, то это не значит, что молоток вообще не следует использовать :))
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988547
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
noram
путаницы пустого значения и неизвесного значения (null)

Ну вот, теоретик баз данных.
Ты сам то способен определить различие между "пустого" и "неизвесного"?

noram, приведу простой пример.

Нужно вывести баланс поступлений и списаний по некоторым счетам.
Так вот - 0 в этом случае означает, что дебет и кредит баланса равны.
Сколько пришло, столько и ушло.

А вот NULL показывает, что по данному счету вообще не было никаких операций.

Так понятнее?
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988550
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008
aleks222
пропущено...

Ну вот, теоретик баз данных.
Ты сам то способен определить различие между "пустого" и "неизвесного"?

noram, приведу простой пример.

Нужно вывести баланс поступлений и списаний по некоторым счетам.
Так вот - 0 в этом случае означает, что дебет и кредит баланса равны.
Сколько пришло, столько и ушло.

А вот NULL показывает, что по данному счету вообще не было никаких операций.

Так понятнее?


Батенька, разве ж 0 - это "пустое"?
Это полное смысла значение.
Тема не раскрыта.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988558
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222, вообще-то я не о том писал.
Получилось, что я привожу пример пустого и неизвестного...
Пример о другом.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988565
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noram,
Вы слишком много говорите про Хоара, а я бы на Вашем месте обратился к отцу основателю реляционных баз данных, Кодду.

Эдгар Франк «Тед» Кодд (англ. Edgar Frank Codd; 23 августа 1923 — 18 апреля 2003) — британский учёный, работы которого заложили основы теории реляционных баз данных.

Работая в компании IBM, он создал реляционную модель данных. Он также внёс существенный вклад в другие области информатики.

12 правил Кодда
Материал из Википедии — свободной энциклопедии
Перейти к навигацииПерейти к поиску
12 правил Кодда (англ. Codd’s 12 rules) — 13 правил (в данном случае исчисление начинается с 0), которым должна удовлетворять каждая система управления реляционными базами данных[1].

Предложены английским математиком Эдгаром Коддом (Edgar Codd) в 1985 году в статьях в журнале ComputerWorld[2][3].

В действительности правила столь строги, что все популярные так называемые «реляционные» СУБД не соответствуют многим критериям.

Правила
Правило 0: Основное правило (Foundation Rule):

Система, которая рекламируется или позиционируется как реляционная система управления базами данных, должна быть способна управлять базами данных, используя исключительно свои реляционные возможности.
Правило 1: Информационное правило (The Information Rule):

Вся информация в реляционной базе данных на логическом уровне должна быть явно представлена единственным способом: значениями в таблицах.
Правило 2: Гарантированный доступ к данным (Guaranteed Access Rule):

В реляционной базе данных каждое отдельное (атомарное) значение данных должно быть логически доступно с помощью комбинации имени таблицы, значения первичного ключа и имени столбца.
Правило 3: Систематическая поддержка отсутствующих значений (Systematic Treatment of Null Values):

Неизвестные, или отсутствующие значения NULL, отличные от любого известного значения, должны поддерживаться для всех типов данных при выполнении любых операций. Например, для числовых данных неизвестные значения не должны рассматриваться как нули, а для символьных данных — как пустые строки.
Правило 4: Доступ к словарю данных в терминах реляционной модели (Active On-Line Catalog Based on the Relational Model):

Словарь данных должен сохраняться в форме реляционных таблиц, и СУБД должна поддерживать доступ к нему при помощи стандартных языковых средств, тех же самых, которые используются для работы с реляционными таблицами, содержащими пользовательские данные.
Правило 5: Полнота подмножества языка (Comprehensive Data Sublanguage Rule):

Система управления реляционными базами данных должна поддерживать хотя бы один реляционный язык, который
(а) имеет линейный синтаксис,
(б) может использоваться как интерактивно, так и в прикладных программах,
(в) поддерживает операции определения данных, определения представлений, манипулирования данными (интерактивные и программные), ограничители целостности, управления доступом и операции управления транзакциями (begin, commit и rollback).
Правило 6: Возможность изменения представлений (View Updating Rule):

Каждое представление должно поддерживать все операции манипулирования данными, которые поддерживают реляционные таблицы: операции выборки, вставки, изменения и удаления данных.
Правило 7: Наличие высокоуровневых операций управления данными (High-Level Insert, Update, and Delete):

Операции вставки, изменения и удаления данных должны поддерживаться не только по отношению к одной строке реляционной таблицы, но и по отношению к любому множеству строк.
Правило 8: Физическая независимость данных (Physical Data Independence):

Приложения не должны зависеть от используемых способов хранения данных на носителях, от аппаратного обеспечения компьютеров, на которых находится реляционная база данных.
Правило 9: Логическая независимость данных (Logical Data Independence):

Представление данных в приложении не должно зависеть от структуры реляционных таблиц. Если в процессе нормализации одна реляционная таблица разделяется на две, представление должно обеспечить объединение этих данных, чтобы изменение структуры реляционных таблиц не сказывалось на работе приложений.
Правило 10: Независимость контроля целостности (Integrity Independence):

Вся информация, необходимая для поддержания целостности, должна находиться в словаре данных. Язык для работы с данными должен выполнять проверку входных данных и автоматически поддерживать целостность данных.
Правило 11: Независимость от расположения (Distribution Independence):

База данных может быть распределённой, может находиться на нескольких компьютерах, и это не должно оказывать влияния на приложения. Перенос базы данных на другой компьютер не должен оказывать влияния на приложения.
Правило 12: Согласование языковых уровней (The Nonsubversion Rule):

Если используется низкоуровневый язык доступа к данным, он не должен игнорировать правила безопасности и правила целостности, которые поддерживаются языком более высокого уровня.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988567
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin
Правило 10: Независимость контроля целостности (Integrity Independence):

Вся информация, необходимая для поддержания целостности, должна находиться в словаре данных. Язык для работы с данными должен выполнять проверку входных данных и автоматически поддерживать целостность данных.
когда уже СУБД научатся контролировать пересечение-непересечение интервалов/дат!
буду искренне рад ))
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988582
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
когда уже СУБД научатся контролировать пересечение-непересечение интервалов/дат!

Да! 35 лет прошло и до сих про приходится делать костыли.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988633
noram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторНужно вывести баланс поступлений и списаний по некоторым счетам.
Так вот - 0 в этом случае означает, что дебет и кредит баланса равны.
Сколько пришло, столько и ушло.

А вот NULL показывает, что по данному счету вообще не было никаких операций.

Так понятнее?
Да, SQL2008, так понятнее. Спасибо, очень наглядный пример.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988639
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noram
авторНужно вывести баланс поступлений и списаний по некоторым счетам.
Так вот - 0 в этом случае означает, что дебет и кредит баланса равны.
Сколько пришло, столько и ушло.

А вот NULL показывает, что по данному счету вообще не было никаких операций.

Так понятнее?

Да, SQL2008, так понятнее. Спасибо, очень наглядный пример.как раз кривой пример

Наллы и агрегаты - это отдельная песня
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988656
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
a_voronin
Правило 10: Независимость контроля целостности (Integrity Independence):

Вся информация, необходимая для поддержания целостности, должна находиться в словаре данных. Язык для работы с данными должен выполнять проверку входных данных и автоматически поддерживать целостность данных.
когда уже СУБД научатся контролировать пересечение-непересечение интервалов/дат!
буду искренне рад ))


Не используйте интервалы - и минуют вас печали и геморрои.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988670
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
andreymx
пропущено...
когда уже СУБД научатся контролировать пересечение-непересечение интервалов/дат!
буду искренне рад ))


Не используйте интервалы - и минуют вас печали и геморрои.
заказчик упорно считает, что в период с 01-03-2020 по 13-07-2020 по заготовке номер 1234 должна быть одна цена, а с 14-07 по 14-08 другая. И других цен в этот период быть не должнл
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988673
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
aleks222
пропущено...


Не используйте интервалы - и минуют вас печали и геморрои.
заказчик упорно считает, что в период с 01-03-2020 по 13-07-2020 по заготовке номер 1234 должна быть одна цена, а с 14-07 по 14-08 другая. И других цен в этот период быть не должнл

Заказчик фсегда прав.
Но разработчик должен быть умным.
Даты НАЧАЛА действия цены абсолютно достаточно... и НИКАКИХ перекрытий даже возникнуть не может.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988679
noram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx,
авторкак раз кривой пример
Приведите прямой пример. Мне пример SQL2008 показался убедительным, и не важно, что он в отдельной песне, важно, что он показывает необходимость наличия налов.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988687
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noram
andreymx,
авторкак раз кривой пример

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

давай пример!
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988841
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Не используйте интервалы - и минуют вас печали и геморрои.

Но они нужны. Часто любят всё пересчитывать задним числом.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988853
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
aleks222
Не используйте интервалы - и минуют вас печали и геморрои.

Но они нужны. Часто любят всё пересчитывать задним числом.


Увы, ты так ничего и не понял.
Надо переквалифицироваться в управдомы.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988856
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Надо переквалифицироваться в управдомы.

Зачем переквалифицироваться? Я и так управдом на 0,25 ставки.
aleks222
Увы, ты так ничего и не понял.

Что я должен был понять? Что не надо было идти работать в РИЦ?
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988860
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
aleks222
Надо переквалифицироваться в управдомы.

Зачем переквалифицироваться? Я и так управдом на 0,25 ставки.
aleks222
Увы, ты так ничего и не понял.

Что я должен был понять? Что не надо было идти работать в РИЦ?


Начало действия параметра однозначно определяет диапазон.
Поэтому скулеж: "пересечение диапазонов" - удел управдомов.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988867
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
a_voronin
Правило 10: Независимость контроля целостности (Integrity Independence):

Вся информация, необходимая для поддержания целостности, должна находиться в словаре данных. Язык для работы с данными должен выполнять проверку входных данных и автоматически поддерживать целостность данных.
когда уже СУБД научатся контролировать пересечение-непересечение интервалов/дат!
буду искренне рад ))


На вертике есть конструкции, ориентированные на интервалы. INTERPOLATE PREVIOUS VALUE
...
Рейтинг: 0 / 0
25 сообщений из 80, страница 2 из 4
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / NULL vs NOT NULL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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