В СУБД для определения отсутствующих данных описаны 2 вида значений: пустое значение и неопределенной (NULL).
Пустые значения – это в первую очередь одно из множества возможных значений какого-то вполне определенного типа данных, например 0 является пустым значением для числового типа данных, false является пустым для логического типа данных, «» - пустое значение для строки. В приведенных случаях можно определить пустое значение путем сравнения имеющегося значения с константой пустого значения, определенной для типа данных. Но СУБД в силу реализованных в них схем долговременного хранения работают только со строками постоянной длинны, поэтому строку, относящуюся к символьному типу и состоящую из набора пробелов следует относить к пустой строке. Операция сравнения будет подтверждать это. Во многих СУБД для проверки на пустоту реализована логическая функция и записан ISEMPTY, оператор указывается в скобках. Если такой функции в СУБД нет, то применяется простая функция сравнения.
Неопределенное значение. Для обозначения неопределенного значения, в БД в записях любого типа указывается значение NULL. Неопределенное значение лучше всего рассмотреть на примере: пусть имеется таблица, состоящая из 2-х полей. Первое поле – фамилия, второе – год рождения. Предположим, что в таблицу занесен пользователь, для которого не указан год рождения. Естественно год рождения есть, но он не определен. В этом случае некорректно использовать пустое значение, в таких случаях применяется значение NULL. Как и любые типы данных NULL значение имеет свойства:
1. В течении времени понимание этого значения может меняться, например, если указать в рассмотренной выше таблице поле «номер паспорта», то до наступления совершеннолетия значение NULL будет рассматриваться как отсутствует, после наступления – как не указано.
2. NULL значение может быть присвоено переменой или константе любого типа
3. Результатом в любых операциях над выражением с NULL значением, будет NULL значение.
NULL значение и общие правила вычисления выражений с ним: общее правило вычисления с NULL значениями, применятся в следующих случаях:
1. К арифметическим
2. К побитным операциям
3. К операциям над строками
4. К операциям сравнения
При сложении числового значения со значением NULL будет получаться NULL. При делении числового значения на NULL получается NULL. При сложении строки и значения NULL будет получаться NULL.
Таким образом можно сделать вывод, что применение арифметических операций с NULL значением всегда дает NULL.
Логические операции с неопределенном значении. При сравнении 2-х значений типа NULL результатом сравнения будет не true, не false, а неизменная неопределенность. При сравнении NULL значений с какими-либо определенными значениями результатом также будет являться неопределенное значение. Для проверки выражений данного значения используется специальная функция ISNULL.
Требования к табличной форме предоставления данных в реляционной БД:
1. Конечность – работа с бесконечными таблицами, отношениями или любыми другими представлениями и организациями данных неудобно и затрачиваемые на это усилия как правило неоправданно и не имеют практического применения
2. Заголовок таблицы, представляющий отношение, должен обязательно состоять из одной строки, при этом название каждого столбца (поля) должно быть уникально, не допускаются многоярусные заголовки. Все многоярусные заголовки должны заменяться на одноярусные, путем подбора соответствующих названий или разбиения на несколько таблиц
3. Порядок следования строк должен быть несущественен, однако это требование не является строго ограничительным, т.к. можно без труда любую таблицу привести к упорядоченному виду. Для этого, к примеру, можно добавить дополнительное поле с заголовком «Прядок».
4. В таблице, представляющее отношение не должно быть записей-дубликатов, если в таблице встречаются повторяющиеся записи. Это можно легко исправить введением дополнительного столбца, отвечающего за количество дубликатов.
5. Данные во всех столбцах должны быть одного типа, не допускается. Чтобы в столбце для разных записей применялись данные разных типов, кроме того все данные должны быть простых типов. Простой тип данных – это такой тип, значение которого не содержит составных частей. Таким образом, в полях таблицы не должны присутствовать ни списки, ни массивы, ни деревья, относящиеся к составным типам.