Логическое проектирование и реализация реляционных баз данных. Основы Transact-SQL (Лабораторная работа № 2), страница 5

Значение по умолчанию

Значения, хранимые в столбце, могут определяться по умолчанию. В этом случае за описанием имени и типа столбца через пробел следует ключевое слово default и константное выражение. Например:

coach_type varchar(20) default ‘СВ’

В этой строке определен столбец, описывающий типы вагонов поезда. Для него установлено значение по умолчанию – СВ.

Автоматическое создание уникальных идентификаторов в столбце

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

id_passenger intidentity (1, 1)

ключевое слово identity указывает на то, что данный столбец содержит уникальные номера. После identity в скобках идут два параметра: начальное значение идентификатора и приращение. При добавлении первой записи в таблицу passengers в поле id_passenger будет занесен номер 1, для следующей записи – 2 и т. д. Единица – умалчиваемое значение для обоих параметров, т. е. описание вида

id_passenger int identity

аналогично предыдущему.

Свойство identity нельзя установить:

·  у нескольких столбцов одной таблицы;

·  у нецелочисленных столбцов (исключения: decimal(p, 0) и numeric(p, 0));

·  у столбцов, для которых существует значение по умолчанию (default).

2.2.2.3. Вычисляемые столбцы

Вычисляемые столбцы – это такие столбцы, в которых значения не хранятся, а вычисляются по заданной формуле. Пусть, например, существует таблица goods (товары) со столбцами the_name (наименование товара), price(цена), amount(количество экземпляров) и cost(стоимость). Известно, что стоимость (при самой примитивной ее трактовке) рассчитывается как цена, умноженная на количество экземпляров. Поэтому столбец cost может хранить значения, вычисляемые автоматически, без вмешательства пользователя. То есть cost является вычисляемым столбцом.

В Transact-SQL вычисляемые столбцы описываются таким образом:

имя_вычисляемого_столбца as формула

Пример с таблицей goods:

create table goods(

           the_name varchar(80),

           price int,

           amount int,

           cost as price * amount)

Значения в вычисляемых столбцах пересчитываются при каждом обращении к таблице. Модифицировать значения в вычисляемых столбцах напрямую – невозможно.

2.2.2.4. Ограничения целостности

Под ограничением целостности (ОЦ) в СУБД понимается механизм контроля значений, которые могут храниться в полях строки. В табл. 2 перечислены виды ОЦ, поддерживаемых в SQL Server 2005.

Таблица 2 – Ограничения целостности в SQL Server

Вид ограничения

Описание

primary key

Определяет первичный ключ

foreign key

Определяет внешний ключ


Продолжение таблицы 2

check

С помощью логических условий задаёт область допустимых значений для простого или составного атрибута

not null

Запрещает хранение неопределённых значений

unique

Гарантирует уникальность значений в таблице

ОЦ – это объект БД. Ему может быть присвоено имя; именованное ОЦ может быть удалено, модифицировано. Одно ОЦ распространяется либо на один конкретный столбец, либо на несколько столбцов одновременно. В первом случае оно называется ОЦ на уровне столбца, во втором – ОЦ на уровне таблицы.

Ограничение первого типа задается в описании столбца таблицы. Синтаксис SQL-конструкции, позволяющей описать ОЦ, имеет вид:

[constraint имя]

           {[null | not null]

           | [{primary key | unique}]

           | [[foreign key] references таблица [(столбец)]

                       [on delete {cascade | no action}]

                       [on update {cascade | no action}]

           ]

           | check (выражение)}

Приведем конкретные примеры объявления ОЦ на уровне столбцов таблиц.