
- •Трехуровневая архитектура
- •Основные утилиты
- •Анализатор запросов Query Analyzer
- •Расширенный синтаксис оператора создания таблиц create table
- •Ограничения – эффективное средство обеспечения целостности данных.
- •Типы ограничений
- •Ограничения ключей
- •Ограничения первого ключа
- •Ограничения внешнего ключа
- •Добавление внешнего ключа в существующую таблицу:
- •Ограничение уникальности
- •Ограничение проверки
- •Ограничения стандартных значений
- •Объекты sql Server – правила и стандартные значения
- •Сравнение средств поддержки целостности данных
- •Системы безопасности субд sql Server
- •Компоненты структуры безопастности
- •Серверные роли и роли бд, определяемые пользователем роли
- •Фиксированные роли сервера
- •Фиксированные роли бд
- •Индексация в субд
Ограничения ключей
Существуют 4 общепринятых типа ключей:
первичный;
внешний;
альтернативный;
инверсный.
На первые три типа ключей могу налагаться ограничения в базе данных.
Инверсный ключ фактически представляет собой индекс, который не налагает на таблицу какие-либо ограничения, а вместо поддержки целостности применяется в качестве альтернативного способа сортировки.
Ограничения первого ключа
Первичный ключ (primary key) представляет собой уникальный идентификатор строки.
Первичный ключ должен содержать уникальные значения (и поэтому не может принимать нулевые значения).
Создать первичный ключ при помощи команды CREATE TABLE либо команды ALTER TABLE.
CREATE TABLE Customers
(CustomerNo int NOT NULL PRIMARY KEY,
CustomerName varchar (25) NOT NULL)
Создание первичного ключа для существующей таблицы:
ALTER TABLE Employees
ADD CONSTRAINT PK_EmployeeID
PRIMARY KEY (EmployeeID)
Ограничения внешнего ключа
Ограничения внешнего ключа используется как для обеспечения целостности данных, так и для задания отношений между таблицами.
<имя_столбца><тип_данных>
<допустимость_NULL_значения>
FOREYGN KEY REFERENCES <имя_таблицы>
(<имя_столбца>)
[ON DELETE {CASCADE NO ACTION}]
[ON UPDATE {CASCADE NO ACTION}]
_______________________________________________________________________
Пример:
CREATE TABLE OrderDetails(
OrderID int NOT NULL,
UnitPrice money NOT NULL,
PartNo varchar(10) NOT NULL,
8000
…
CONSTRAINT PK_OrderDetails PRIMARY KEY (OrderID, PartNo),
CONSTRAINT PK_Orde FPREYGN KEY (OrderID)
ON DELETE NO ACTION
ON UPDATE CASCADE
)
Добавление внешнего ключа в существующую таблицу:
= Первичный и внешний ключ может существовать для одного и того же поля.
= В каждой таблице может присутствовать от 0 до 253 внешних ключей.
= Единственное ограничивающее условие – данный столбец может иметь только один внешний ключ.
= На один и тот же столбец может ссылаться неограниченное количество таблиц.
ALTER TABLE Orders
ADD CONSTRAINT FK_EmployeeOrders
FOREYGN KEY (EmployeeID) REFERENCES
Employees (EmployeeID)
Ограничение уникальности
= Таблица может иметь более одного ограничения уникальности.
Создание ограничения уникальности для существующей таблицы:
ALTER TABLE Employees
ADD CONSTRAINT AK_EmployeeSSN
UNIQUE (SSN)
Выполнив запуск хранимой процедуры EXEC sp_helpconstraint <имя_таблицы>, можно получить сведения об именах, критериях и статусе ограничений данной таблицы.
Ограничение проверки
ALTER TABLE Customers
ADD CONSTRAINT CN_CustomerPhone
CHECK (Phone
LIKE ‘ ([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9])’)
Нельзя применить к кома
Ограничения стандартных значений
Стандартные значения используются только в операторе INSERT – их нельзя применять к операторам UPDATE или DELETE.
Если в операторе INSERT присутствует значение для данного столбца, значения по умолчанию использоваться не будут.
Если же в данном столбце значения в операторе INSERT не заданно, система будет использовать стандартные значения.
CREATE TABLE Shippers (
ShipperID int NOT NULL PRIMARY KEY,
ShipperName varchar(25) NOT NULL,
…
Date smalldatetime NOT NULL DEFAULT GETDATE()
)
-- функция GETDATE() возвращает текущую дату и время.
-- Например, 24.06.2008 17:44:52