Программирование >>  Формирование связанных подзапросов 

1 ... 12 13 14 [ 15 ]


4.5.9. Установка значений по умолчанию

В SQL имеется возможность при вставке в таблицу строки, не указывая значений некоторого поля, определять значение этого поля по умолчанию. Наиболее часто используемым значением по умолчанию является NULL. Это значение принимается по умолчанию для любого столбца, для которого не было установлено ограничение NOT NULL.

Значение поля по умолчанию указхвается в команде CREATE TABLE тем же способом, что и ограничение столбца, с помощью ключевого слова

ОЕРАОТлКзначение по умолчанию>.

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

Предположим, что основная масса студентов, информация о которгх находится в таблице STUDENT, проживает в Воронеже. Чтобы при задании атрибутов не вводить для большинства студентов название города Воронеж, можно установить его как значение поля CITY по умолчанию, определив таблицу STUDENT следующим образом:

CREATE TABLE STUDENT

(STUDENT ID INTEGER PRIMARY KEY, SURNAME CHAR (2) NOT NULL,

NAE CHAR (10) NOT NULL,

STIPEND INTEGER CHECK (STIPEND < 2(1)),

KURS INTEGER,

CITY CHAR (15) DEFAULT ЕОроне,

BIRTHDAY DATE,

UNIV ID INTEGER);

Другая цель практического применения задания значения по умолчанию - это использование его как альтернативы для NULL. Как уже отмечалось выше, присутствие NULl в качестве возможных значений поля существенно усложняет интерпретацию операций сравнения, в которых участвуют значения таких



Упражнения

1. Создайте таблицу EXAMJVIARKS так, чтобы не допускался ввод в таблицу двух записей об оценках одного студента по конкретным экзамену и предмету обучения и чтобы не допускалось проведение двух экзаменов по любым предметам в один день,

2. Создайте таблицу предметов обучения SUBJECT так, чтобы количе-

ство отводимхх на предмет часов по умолчанию бхло равно 36, не допускались записи с отсутствующим количеством часов, поле SUBjID являлось первичным ключом таблицы и значения семестров (поле semester) лежали в диапазоне от 1 до 12.

полей, поскольку NULL представляет собой признак того, что фактическое значение поля неизвестно или неопределенно. Следовательно, строго говоря, сравнение с ним любого конкретного значения в рамках двузначной булевой логики является не-корректнхм, за исключением специальной операции сравнения is NULL, которая определяет, является ли содержимое поля каким-либо значением или оно отсутствует. Действительно, каким образом в рамках двузначной логики ответить на вопрос, истинно или ложно условие CITY = Воронеж, если текущее значение поля CITY неизвестно (содержит NULL)?

Во многих случаях использование вместо NULL значения, подставляемого в поле по умолчанию, может существенно упростить использование значений поля в предикатах.

Например, можно установить для столбца опцию NOT NULL, а для неопределенных значений числового типа установить значение по умолчанию равно нулю , или для полей типа CHAR пробел, использование которых в операциях сравнения не вызывает никаких проблем.

При использовании значений по умолчанию в принципе допустимо применять ограничения UNIQUE или PRIMARY KEY в этом поле. При этом, однако, следует иметь в виду отсутствие в таком ограничении практического смысла, поскольку только одна строка в таблице сможет принять значение, совпадающее с этим значением по умолчанию. Для такого применения задания по умолчанию необходимо (до вставки другой строки с установкой по умолчанию) модифицировать предыдущую строку, содержащую такое значение.



4.6. Поддержка целостности данных 1

3. Создайте таблицу EXAM MARKS таким образом, чтобы значения поля EXaMID б1ли больше значений поля SUBJ ID, а значения поля SUBJ ID б1ли больше значений поля STUDENT ID; пусть также будут запрещены значения NULL в любом из этих трех полей.

4.6. Поддержка целостности данных

В таблицах рассматриваемой базы данных значения некото-р1х полей связан! друг с другом. Так, поле STUDENT ID в таблице STUDENT и поле STUDENT ID в таблице EXAM MARKS связаны тем, что описывают одни и те же объекты, то есть содержат идентификаторы студентов, информация о которхх хранится в базе. Более того, значения идентификаторов студентов, которые допустимы в таблице EXAMMARKS, должны выбираться только из списка значений STUDENT ID, фактически присутствующих в таблице STUDENT, то есть принадлежащих реально опи-саннхм в базе студентам. Аналогично, значения поля UNIV ID таблицы STUDENT должны соответствовать идентификаторам университетов UNIV ID, фактически присутствующим в таблице UNIVERSITY, а значения поля SUBJ ID таблицы EXAM MARKS должны соответствовать идентификаторам предметов обучения, фактически присутствующим в таблице SYBJECT.

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

4.6.1. Внешние и родительские ключи

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



1 ... 12 13 14 [ 15 ]

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика