Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
24.01.2026
Размер:
355.56 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра Систем автоматизированного проектирования

отчет

по лабораторной работе №6

по дисциплине «Базы Данных»

Тема: Обеспечение целостности данных

Студенты гр. 3352

________________

Гареева К.Р.

________________

Жигунова О.М.

Преподаватель

________________

Горяинов С.В.

Санкт-Петербург

2025

Цель работы

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

Упражнение 1 - создание новой таблицы и применение ограничений целостности

Запрос 1

Создадим новую таблицу с помощью оператора CREATE и зададим в ней нужные столбцы и ограничения (рис. 1). В скобках мы описываем столбцы и добавляем в конце ссылочную операцию REFERENCES.

CREATE TABLE HumanResources.JobCandidateHistory

(

JobCandidateID INT NOT NULL PRIMARY KEY,

Resume XML NULL,

Rating INT NOT NULL

CONSTRAINT DF_JobCandidateHistory_Rating DEFAULT 5

CONSTRAINT CK_JobCandidateHistory_Rating CHECK(Rating BETWEEN 1 AND 10),

RejectedDate DATETIME NOT NULL,

ContactID INT NULL,

CONSTRAINT FK_JobCandidate_Contact

FOREIGN KEY (ContactID) REFERENCES Person.Contact(ContactID)

);

Рисунок 1 - Результат выполнения запроса 1

Убедимся, что в списке имеется таблица Human Resources. JobCandidate History (рис. 2).

Рисунок 2 - Таблица HumanResources.JobCandidateHistory

В обозревателе объектов развернем таблицу и также проверим наличие столбцов и ограничений (рис. 3).

Рисунок 3 - Проверка столбцов и ограничений.

Далее откроем файл TestConstraints.sql и по очереди запустим разные запросы. Первый выдаст ошибку, поскольку число для вставки не входит в диапазон допустимых значений (от 1 до 10) (рис. 4).

Рисунок 4 - Выполнение кода под примечанием This should fail.

Второй запрос выполнится корректно (рис. 5).

Рисунок 5 - Выполнение кода под примечанием This should succeed.

Упражнение 2- отключение ограничений:

С помощью запроса:

USE [AdventureWorks];

GO

ALTER TABLE HumanResources.JobCandidateHistory

NOCHECK CONSTRAINT CK_JobCandidateHistory_Rating;

GO

отключим ограничения (рис. 6).

Рисунок 6 - Отключение ограничений.

Проверим, отключено ли ограничение с помощью SELECT is_disabled, которое выводит столбец is_disabled, где: 1 - ограничение отключено, 0 - включено (рис. 7).

SELECT is_disabled

FROM sys.check_constraints

WHERE parent_object_id = OBJECT_ID('HumanResources.JobCandidateHistory')

AND name = 'CK_JobCandidateHistory_Rating';

Рисунок 7 - Проверка отключения ограничений.

С помощью запроса включим ограничения (рис. 8):

ALTER TABLE HumanResources.JobCandidateHistory

CHECK CONSTRAINT [CK_JobCandidateHistory_Rating];

GO

Рисунок 8 - Включение ограничений.

Проверим, включено ли ограничение (рис. 9).

SELECT

name AS ConstraintName,

type_desc AS ConstraintType,

is_disabled

FROM sys.check_constraints

WHERE parent_object_id = OBJECT_ID('HumanResources.JobCandidateHistory');

Рисунок 9 - Проверка включения ограничений.

Вывод

В ходе выполнения лабораторной работы была создана таблица HumanResources.JobCandidateHistory с необходимыми столбцами и ограничениями целостности, включая PRIMARY KEY, CHECK и DEFAULT для поля Rating и FOREIGN KEY для ContactID. Проверка и выполнение вставок из файла TestConstraints.sql показали, что ограничения работают корректно: попытка вставки некорректного значения Rating вызвала ошибку, корректное значение прошло успешно. С помощью команд ALTER TABLE … NOCHECK и CHECK было продемонстрировано отключение и последующее включение ограничения CHECK, что подтверждалось состоянием is_disabled в sys.check_constraints.

Соседние файлы в папке БД_лабы(11 лаб, 5 семестр)