Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 3.5.5 Управление таблицами.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
96 Кб
Скачать
☆

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

 

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

 

<ограничение_ таблицы>::= [ CONSTRAINT <имя_ ограничения>]

{ [ { PRIMARY KEY I UNIQUE }

{(<имя_ колонки> [ASC   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,

Фамилия.               СНАН  (3())  NOT    NULL,

имя .                       CHAR  (15)   NOT.   NULL,

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

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

Адрес                     CHAR (30),

Телефон                 СНАХ (8),

РRIMARY KEY    (ID_ Студент))

 

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

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

 

CREATE  TABLE Дисциплины

(ID _ Диcциплина     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_ План ),

СНЕСК                              ((Семестр >= 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_ Дисциплина),

СНЕЕК                   ((Оценка >= О) 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,

Кафедра                                    СНAR   (3)  NОТ  NULL,

Адрес                                        CHAR  (30),

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

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

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

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

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

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

• FК_Студент — внешний ключ, связывающий таблицы «Сводная_ ведомость» и «Студенты» по столбцу ID_ Студент;

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

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