Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭУМКД_БД_2.doc
Скачиваний:
20
Добавлен:
23.09.2019
Размер:
6.01 Mб
Скачать

1.3.7. Отсутствующие значения (значения null)

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

Например, в столбце QUOTA таблицы SALESREPS содержатся плановые объёмы продаж для каждого служащего. Однако для одного из новых служащих план ещё не был утверждён, соответствующая информация в базе данных отсутствует. Конечно, в столбец QUOTA для нового служащего можно ввести значение 0, однако это исказит ситуацию. План служащего не равен нулю, а пока просто неизвестен.

Аналогично, столбец MANAGER в таблице SALESREPS для каждого служащего содержит идентификатор его менеджера. Однако Сэм Кларк (Sam Clark), вице-президент по торговым операциям, не подчиняется никому из отдела сбыта. К нему этот столбец не относится. И, опять же, можно ввести в столбец MANAGER для вице-президента число 0 или 9999, но ни одно из них не будет настоящим идентификатором начальника Сэма Кларка. Для этой строки не подходит ни одно число.

SQL поддерживает обработку отсутствующих данных с помощью понятия “отсутствующее значение”. Это значение показывает, что в конкретной строке определённый элемент данных отсутствует, или что столбец вообще не подходит для этой строки. Говорят, что значение такого элемента данных равно NULL. Однако NULL не является значением данных, как 0, 483.00 или "Sam Clark". Напротив, это признак, показывающий, что точное значение данных неизвестно или отсутствует. На рисунке показано содержимое таблицы SALESREPS. Обратите внимание на то, что в столбцах QUOTA и REP_OFFICE для Тома Снайдера (Tom Snyder) и в столбце MANAGER ДЛЯ Сэма Кларка (Sam Clark) содержатся значения NULL.

Таблица – SALESREPS

EMPL_ NUM

NAME

AGE

REP_OFFICE

TITLE

HIRE_DATE

MANAGER

QUOTA

SALES

105

Bill Adams

37

13

Sales Rep

12-FEB-88

104

$350,000 00

$367,911 00

109

Mary Jones

31

11

Sales Rep

12-OCT-89

106

$300,000 00

$392,725 00

102

Sue Smith

48

21

Sales Rep

10-DEC-86

108

$350,000 00

$474,050 00

106

Sam Clark

52

11

VP Sales

14-JUN-88

NULL

$275,000 00

$299,912 00

104

Bob Smith

33

12

Sales Mgr

19-MAY-87

106

$200,000 00

$142,594 00

101

Dan Roberts

45

12

Sales Rep

20-OCT-86

104

$300,000 00

$305,673 00

110

Tom Snyder

41

NULL

Sales Rep

13-JAN-90

101

NULL

$75,985 00

108

Larry Fitch

62

21

Sales Mgr

12-OCT-89

106

$350,004 00

$361,865 00

103

Paul Cruz

29

12

Sales Rep

01-MAR-87

104

$275,000 00

$286,775 00

107

Nancy Angelli

49

22

Sales Rep

14-N0V-98

108

$300,010 00

$186,042 00

Во многих ситуациях значения NULL требуют от СУБД отдельной обработки. Например, если пользователь просит вычислить сумму по столбцу QUOTA, что СУБД должна делать со значениями NULL при вычислении суммы? Ответ на подобные вопросы даёт набор правил обработки значений NULL в различных инструкциях и предложениях SQL. Из-за необходимости включения таких правил в синтаксис языка SQL многие теоретики реляционных баз данных считают, что значения NULL не следует использовать. Другие, в том числе доктор Кодд, отстаивают использование значений NULL двух видов, означающих "неизвестно" и "неприменимо".

Независимо от теоретических споров, значения NULL стали частью стандарта ANSI/ISO и реализованы почти во всех коммерческих СУБД.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]