Виды ограничений ссылочной целостности 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Виды ограничений ссылочной целостности



Ограничения ключей

 

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

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

 

Первичный ключ

Ограничение PRIMARY KEY определяет один или несколько столбцов таблицы, которые образуют ключевое поле. Ключевое поле уникальным образом определяет строку таблицы и обеспечивает объектную целостность таблицы.

Первичный ключ - домен или несколько доменов таблицы, однозначно характеризующие запись согласно третьей нормальной форме Бойесса-Кода. Объявляется при помощи служебных слов PRIMARY KEY(< FIELD1 > [,<FIELDN >]), где < FIELD > - имя поля или имена полей, перечисленные через запятую. Первичный ключ также может быть задан при создании домена таблицы. Например:

 

ID INTEGER NOT NULL PRIMARY KEY,

....

);

 

или (рекомендуемый вариант, с указанием имени CONSTRAINT)

CREATE TABLE MY_TABLE(

ID INTEGER NOT NULL,

....

CONSTRAINT PK_MY_TABLE PRIMARY KEY (ID),

);

 

У таблицы может быть только один первичный ключ.

Первичный ключ также можно создать командой ALTER TABLE

Внешний ключ

Внешний ключ представляет собой столбец или сочетание столбцов, которое используется для обеспечения связи между данными двух таблиц. Ограничение FOREIGN KEY обеспечивает ссылочную целостность и определяет ссылку на столбец с ограничением PRIMARY KEY или UNIQUE в той же или в другой таблице. Значения в столбце внешнего ключа должны отображаться в столбце ключевого поля. При наличии ссылок на значения ключевого поля эти значения не могут быть изменены или удалены.

Ограничение FOREIGN KEY имеет параметр CASCADE, с помощью которого можно распространять любое изменение значения столбца, определяющего ограничение UNIQUE или PRIMARY KEY, в любые значения внешнего ключа, ссылающиеся на это значение. Такое действие называется каскадной ссылочной целостностью.

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

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

Пример: (рекомендуемый вариант, с указанием имени constraint)

С REATE TABLE MY_TABLE(

...,

CID INTEGER NOT NULL,

...,

CONSTRAINT FK_MY_TABLE_TABLE2 FOREIGN KEY (CID) REFERENCES TABLE2(ID))

Конструкция REFERENCES <имя_мастер_таблицы> [<имя_поля>] используется дляограничения ссылочной целостности и определяет, что данный столбец является внешним ключом и указывает на ключ какой мастер_таблицы (родительской таблицы) он будет ссылаться.

Ссылку намастер_таблицу можно делать в строке, описывающей поле, но можно использовать конструкцию CONSTRAINT, также используемую для работы с ограничениями ссылочной целостности, которые накладываются на таблицу или на отдельный столбец. КонструкциЯ CONSTRAINT используется только в операторах CREATE TABLE и ALTER TABLE.

Уникальный ключ

Уникальный ключ - дополнительная возможность ограничения значений записей таблицы с целью профилактики занесения в нее двух и более записей, имеющих одинаковое значение указанного столбца (столбцов). В отличие от PRIMARY KEY количество уникальных ключей в таблице неограничено (точнее, ограничено максимальной комбинаторной суммой вариантов комбинации имен доменов, входящих в таблицу).Уникальный ключ также называется «альтернативным», и чаще всего предназначен не для однозначной идентификации столбца, как Первичный ключ, а для указания столбца, который позволяет осуществить дополнительную идентификацию строки. Например - номер паспорта, код ИНН, номер пенсионной страховки, и т.д.

Другие ограничения

 

Ограничение DEFAULT вводит значение в столбец, если оно не указано в инструкции INSERT. Обеспечивают доменную целостность данных.

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

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

Правила допустимости нулевого значения в рамках определения таблицы: допустимость нулевого значения столбца определяет, будет ли нулевое значение (NULL) принято в столбец как данные. NULL — это не ноль и не пробел. Это значит, что запись не была сделана или что было добавлено явное значение NULL, что обычно обозначает, что значение либо не известно, либо не применимо.

Как и в языках программирования, в SQL существуют различные типы данных для хранения переменных:

· Числа - для хранения числовых переменных (int, tinyint, smallint, bigint, numeric, decimal, money, smallmoney, float, real).

· Даты - для хранения даты и времени (date, time datetime, smalldatetime).

· Символы- для хранения символьных данных (char, nchar, varchar, nvarchar).

· Двоичные - для хранения бинарных данных (binary, varbinary, bit).

· Большеобъемные - типы данных для хранения больших бинарных данных (text, ntext, image).

· Специальные - указатели (cursor), 16-байтовое шестнадцатиричное число, которое используется для GUID (uniqueidentifier), штамп изменения строки (timestamp), версия строки (rowversion), таблицы (table).

Типы данных определяют тип информации (символы, числа или даты), которые могут содержаться в столбце, а также способ хранения этих данных. Сервер SQL Server 2008 предоставляет большой набор определенных системных типов данных, объединенных по категориям.

Замечания.

· Для использования русских символов (не ASCII кодировки) используются типы данных с приставкой " n " (nchar, nvarchar, ntext), которые кодируют символы двумя байтами. Иначе говоря, для работы с Unicode используются типы данных с "n".

· Для данных переменной длины используются типы данных с приставкой " var ". Типы данных без приставки " var " имеют фиксированную длину области памяти, неиспользованная часть которой заполняется пробелами или нулями.

3.2.4 Креативная часть лабораторной работы:

Для работы в заданной базе данных необходимо использовать команду:

 

USE Education;

Прежде чем создавать таблицу, рассмотрим спецификацию identity (1,1)

Многие коммерческие продукты допускают использование автоинкрементируемых столбцов в таблицах, т.е. полей, значение которых формируется автоматически при добавлении новых записей. Такие столбцы широко используются в качестве первичных ключей таблицы, т.к. они автоматически обеспечивают уникальность. Типичным примером столбца такого типа является последовательный счетчик, который при вставке строки генерирует значение на единицу большее предыдущего значения (значения, полученного при вставке предыдущей строки).

Автоинкрементируемое поле определяется посредством конструкции IDENTITY (1, 1). При этом первый параметр свойства IDENTITY (1) определяет, с какого значения начнется отсчет, а второй - какой шаг будет использоваться для приращения значения. Таким образом, в нашем примере первая вставленная запись будет иметь в столбце Spec_ID значение 1, вторая - 2 и т.д.

Бывают случаи, когда требуется подставить вполне конкретное значение в автоинкрементируемое поле. Например, нужно перенести уже имеющиеся данные во вновь создаваемую структуру; при этом эти данные участвуют в связи "один-ко-многим" со стороны "один". Таким образом, мы не можем допустить тут произвола. С другой стороны, нам не хочется отказываться от автоинкрементируемого поля, т.к. оно упростит обработку данных при последующей эксплуатации базы данных.

Таблицы создаются в схемах StudySchema ( «Группы» и «Студенты», «Предметы», «Учебный план», «Успеваемость») и DekanatSchema( «Преподаватели», «Кафедры»), таблица «Специальности» создается без схемы.

Создание таблицы Специальности:

Spec_ID int IDENTITY (1,1) PRIMARY KEY,

Spec_NAME VARCHAR (15) NOT NULL

);

Создание таблицы Группы:



Поделиться:


Последнее изменение этой страницы: 2021-03-09; просмотров: 125; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.178.157 (0.013 с.)