Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задания практика 3 часть консоль БД MySQLпо ПР ТРЗБД_.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Задание 1

  1. Удалите таблицы, созданные в практической работе №3

  2. Создать таблицу Progress, назначить ограничения PRIMARY KEY и запретить ввод в таблицу оценок, отличных от 2,3,4,5, т.е. создать ограничение для значений столбца Mark в таблице Progress.

Решение.

CREATE TABLE Progress

(NRecordBook Varchar(6)

CONSTRAINT ProgressStudentForeign FOREIGN KEY

REFERENCES Student,

PIN INT,

IDSubject INT,

IDReport INT,

NTerm Varchar(2),

Mark SMALLINT

CONSTRAINT ProgressMarkCheck CHECK(Mark BETWEEN 2 AND 5 )) INGAIN = InnoDB;

Задание 2

  1. Задайте ограничения для других таблиц рассматриваемой базы данных.

  2. Задайте ограничения для полей таблиц базы данных вашего варианта.

Контрольные вопросы

  1. На каких уровнях создаются ограничения?

  2. Какие ключевые слова используются при создании ограничений?

  3. Что можно написать в скобках после ключевого слова CHECK?

  4. Можно ли в условии ограничения создавать сложные выражения?

Практическая работа № 5

Тема: «Разработка серверной части базы данных в СУБД MySQL. Установление связей между таблицами».

Цель: научиться устанавливать связи между таблицами, используя язык SQL.

Время выполнения: подготовка: 3 мин; выполнение: 32 мин; проверка: 10 мин; всего: 45 мин.

Указания по выполнению практической работы

Ограничение FOREIGN KEY

Синтаксис на уровне столбца

[СONSTRAINT <имя ограничения>] FOREIGN KEY

REFERENCES <имя ссылочной таблицы> [(<имя столбца> )]

[ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT | SET DEFAULT}] [ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT | SET DEFAULT}]

Ограничение FOREIGN KEY устанавливает внешний ключ и организует ссылку по внешнему ключу на заданное в предложении REFERENCES отношение. После добавления внешнего ключа любая запись, добавляемая в ссылаемую таблицу, должна иметь запись в ссылочной таблице. Ограничений FOREIGN KEY в таблице может быть несколько, в идеале столько, сколько таблица имеет внешних (чужих) ключей. Следует напомнить, что внешний ключ может быть подмножеством первичного ключа, как это и продемонстрировано в следующем примере.

Необязательные конструкции ON DELETE и ON UPDATE позволяют задать поведение СУБД при удалении и обновлении строк из таблицы-предка. Параметры, следующие за этими ключевыми словами, имеют следующие значения:

  • CASCADE – при удалении или обновлении записи в таблице-предке, содержащей первичный ключ, записи со ссылками на это значение в таблице-потомке удаляются или обновляются автоматически;

  • SET NULL – при удалении или обновлении записи в таблице-предке, содержащей первичный ключ, в таблице-потомке значения внешнего ключа, ссылающегося на таблицу-предка, устанавливаются в null;

  • NO ACTION – при удалении или обновлении записей, содержащих первичный ключ, с таблицей-потомком никаких действий не производится;

  • RESTRICT – если в таблице-потомке имеются записи, ссылающиеся на первичный ключ таблицы-предка, при удалении или обновлении записей с таким первичным ключом возвращается ошибка;

  • SET DEFAULT – согласно стандарту SQL, при удалении или обновлении первичного ключа в таблице-потомке для ссылающихся на него записей в поле внешнего ключа должно устанавливаться значение по умолчанию (в MySQL это ключевое слово зарезервировано, но не обрабатывается).

Задача.

Назначить в таблице Успеваемость (Progress) внешний ключ и организовать ссылку по внешнему ключу на все ссылочные таблицы.

Решение.

Ссылочными по отношению к отношению Progress являются таблицы Student, Teacher, Subject, Report, следовательно, в таблице будет четыре внешних ключа.

CREATE TABLE Progress

(NRecordBook VARCHAR(6),

PIN INT,

IDSubject INT,

IDReport INT,

NTerm VARCHAR(2),

Mark SMALLINT,

CONSTRAINT ProgressPrimary PRIMARY KEY

(NrecordBook,IDSubject,IDReport,NTerm),

CONSTRAINT ProgressStudentForeign FOREIGN KEY (NRecordBook)

REFERENCES Student,

CONSTRAINT ProgressSubjectForeign FOREIGN KEY (IDSubject)

REFERENCES Subject,

CONSTRAINT ProgressReportForeign FOREIGN KEY (IDReport) REFERENCES Report,

CONSTRAINT ProgressTeacherForeign FOREIGN KEY

(PIN) REFERENCES Teacher ) INGAIN = InnoDB;

Внешние ключи являются по своей сути двунаправленными. По умолчанию SQL Server 2000 запретит удаление строки в ссылочной таблице, если ей соответствует хотя бы одна строка в ссылающейся таблице. То есть нельзя удалить информацию о студенте, если в таблице Progress есть хотя бы одна запись, которая соответствует этому студенту. Опция ON DELETE CASCADE указывает на то, что при удалении записи в ссылочной таблице, автоматически удаляются записи в ссылающейся таблице. Опция же ON UPDATE CASCADE позволяет при модификации строки в родительской таблице модифицировать

соответствующие строки в дочерних таблицах. По умолчанию устанавливается опция NO ACTION, запрещающая в одном случае удаление, в другом – редактирование.