Л. Партыка, И. И. Попов системы управления базами данных


Ограничения на уровне таблицы



бет123/215
Дата29.01.2022
өлшемі4,64 Mb.
#115817
1   ...   119   120   121   122   123   124   125   126   ...   215
Байланысты:
Голицына О Л Партыка Т Л Попов И И Системы

Ограничения на уровне таблицы. Синтаксис команды create Table предусматривает использование предложения <ограничение таблицы>, с помощью которого определяются ограничения целостности на уровне таблицы.

Синтаксис предложения следующий:



<ограничение_таблицы> := [ CONSTRAINT <имя_ограничения>] { [ { PRIMARY KEY | UNIQUE } { (<имя_колонки> [ASC I DESC] [,..., n] )}] | FOREIGN KEY

[ ( <имя колонки>[,..., n ] ) ] REFERENCES <внешняя_таблица> [(<имя_колонки_внешней_таблицы> [, ..., n ] ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] | CHECK (логическое выражение> ) }

Назначение параметров совпадает с назначением аналогичных параметров предложения <ограничение_столбца>. Тем не менее в предложении <ограничение_таблицы> имеются некоторые новые параметры:

<имя_колонки> — столбец (или список столбцов), на которые необходимо наложить какие-либо ограничения целостности;

[ASC   |   DESC]  — метод упорядочения данных в индексе. Индекс создается при указании ключевых слов primary


key, unique. При указании значения ASC данные в индексе будут упорядочены по возрастанию, при указании значения DESC — по убыванию. По умолчанию используется значение ASC.

Примеры создания таблиц. В качестве примера рассмотрим инструкции создания таблиц базы данных Сессия: Таблица Студенты состоит из следующих столбцов:

ID_студент — тип данных integer, уникальный ключ;

Фамилия — тип данных char, длина 30;

Имя — тип данных char, длина 15;

Отчество — тип данных CHAR, длина 20;

Номер_группы — тип данных char, длина 6;

Адрес — тип данных char, длина 30;

Телефон — тип данных char, длина 8.

Создание таблицы выполнялось с помощью следующей команды:

CREATE TABLE Студенты

(ID_Студент         INTEGER NOT NULL,

Фамилия              CHAR(30) NOT NULL,

Имя        CHAR(15) NOT NULL,

Отчество              CHAR(20) NOT NULL,

Номер_группы  INTEGER NOT NULL,

Адрес      .             CHAR(30),

Телефон               CHAR(8),

PRIMARY KEY   (ID_Студент) )

На все столбцы таблицы, кроме столбцов Адрес и Телефон, наложены ограничения not null, запрещающие ввод строки при неопределенном значении столбца.

Для создания таблицы Дисциплины была использована команда:

CREATE TABLE Дисциплины
(ID_Дисциплина     INTEGER NOT NULL, Наименование      VARCHAR(40) NOT NULL, PRIMARY KEY(ID_Дисциплина) ,UNIQUE (Наименование))

Таблица содержит два столбца (ID_Дисциплина, Наименование).

На столбцы ID_Дисциплина, Наименование наложены ограничения not null, запрещающие ввод строки при неопределенном значении столбца.

Столбец ID_Дисциплина объявлен первичным ключом, а на значения, вводимые в столбец Наименование, наложено условие уникальности.

Таблица Учебный_план включает в себя следующие столбцы:

ID_план  — тип данных   integer,  столбец уникального ключа;

ID_Дисциплина — тип данных integer;

Семестр — тип данных integer;

Количество_часов — тип данных INTEGER;

ID_Преподаватель — тип данных INTEGER.

Создание таблицы выполнялось с помощью следующей команды:

CREATE TABLE Учебный_план

(ID_План              INTEGER NOT NULL,

ID_Дисциплина  INTEGER NOT NULL,

Семестр                INTEGER NOT NULL,

Количество_часов            INTEGER,

ID_Преподаватель             INTEGER,

PRIMARY KEY   (ID_План),

CHECK  ((Семестр   >=   1)   OR   (Семестр   <=   10)))

Для значений столбца Семестр сформулировано логическое выражение, разрешающее вводить только значения от 1 до 10.

Таблица Сводная_ведомость состоит из следующих столбцов:

ID_Студент — тип данных integer, столбец уникального ключа;

ID_План  — тип данных  integer,  столбец уникального ключа;

Оценка — тип данных INTEGER;

Дата_сдачи — тип данных DATETIME;

ID_Преподаватель — ТИП данных INTEGER.

Создание таблицы выполнялось с помощью следующей команды:

CREATE TABLE Сводная_ведомость

(ID_Студент         INTEGER NOT NULL,

ID_План               INTEGER NOT NULL,

Оценка  INTEGER NOT NULL,

Дата_сдачи          DATETIME NOT NULL,

PRIMARY KEY   (ID_Студент, ID_Дисциплина),

CHECK  ((Оценка >= 0) OR (Оценка <= 5)))

На все столбцы таблицы наложены ограничения not null, запрещающие ввод строки при неопределенном значении столбца.

Для значений столбца Оценка сформулировано логическое выражение, разрешающее вводить только значения от 0 до 5: 0 — незачет, 1 — зачет, 2 — неудовлетворительно, 3 — удовлетворительно, 4 — хорошо, 5 — отлично.

И наконец, перечислим столбцы таблицы Кадровый_состав:

ID_Преподаватель  — тип данных  INTEGER, уникальный ключ;

Фамилия — тип данных char, длина 30;

Имя — тип данных char, длина 15;

Отчество — тип данных char, длина 20;

Должность — тип данных char, длина 20;

Кафедра — тип данных CHAR, длина 3;

Адрес — тип данных char, длина 30;

Телефон — тип данных CHAR, длина 8.

Создание таблицы выполнялось с помощью следующей команды:

CREATE TABLE Кадровый_состав

(ID_ Преподаватель INTEGER NOT NULL, :

Фамилия              CHAR(30) NOT NULL,

Имя        CHAR(15) NOT NULL,

Отчество              CHAR(20) NOT NULL,

Должность           CHAR(20) NOT NULL,

Кафедра               CHAR(3) NOT NULL,

Адрес    CHAR(30),

Телефон               CHAR(8),

PRIMARY KEY        (ID_Преподаватель))

На все столбцы таблицы, кроме столбцов Адрес и Телефон, наложены ограничения not null, запрещающие ввод строки при неопределенном значении столбца.

Для таблиц Учебный_план и Сводная ведомость должны быть построены внешние ключи, связывающие таблицы базы данных Сессия:

FК_Дисциплина — внешний ключ, связывающий таблицы Учебный_план и Дисциплины по столбцу ID_Дисциплина;

FK Kадровый_состав  —  внешний ключ, связывающий таблицы Учебный_план и Кадровый состав по столбцу
ID_Преподаватель;

FK_Cтудент   —   внешний   ключ,   связывающий   таблицы Сводная_ведомость и Студенты ПО столбцу ID_Студент;



fk_План — внешний ключ, связывающий таблицы Сводная_ведомость и Учебный_план ПО столбцу ID_План.

Добавление внешних ключей в таблицы будет описано при рассмотрении возможностей команды alter table.

Изменение структуры таблицы (ALTER   TABLE)

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

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

добавить в таблицу определение нового столбца;

удалить столбец из таблицы;

изменить значение по умолчанию для какого-либо столбца;

добавить или удалить первичный ключ таблицы;

добавить или удалить внешний ключ таблицы;

добавить или удалить условие уникальности;

добавить или удалить условие на значение.


 

Рассмотрим обобщенный синтаксис команды alter table:

ALTER TABLE <имя_таблицы>

[ALTER COLUMN <имя_столбца> [SET DEFAULT <выражение>]|

[DROP DEFAULT]]

|[ADD <определение_столбца>]

|DROP COLUMN <имя_столбца> [CASCADE]|[RESTRICT]]

|[ADD [<определение первичного ключа>] |

[<определение_внешнего ключа>] |

[<условие_уникальности>] |

[<условие_на_значение>]]|[DROP CONSTRAINT <имя_ограничения> [CASCADE]|[RESTRICT]]

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

Назначение многих параметров и ключевых слов команды alter table аналогично назначению соответствующих параметров и ключевых слов команды create table (например, синтаксис конструкции <определение_столбца> совпадает с синтаксисом аналогичной конструкции команды create table).

Основные режимы использования команды alter table следующие:

добавление столбца;

удаление столбца;

модификация столбца;

изменение, добавление и удаление ограничений (первичных и внешних ключей, значений по умолчанию).





Достарыңызбен бөлісу:
1   ...   119   120   121   122   123   124   125   126   ...   215




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет