- •Общие указания к выполнению практических работ
- •Критерии оценки:
- •Практическая работа № 1
- •Указания по выполнению практической работы Возможности монитора MySql
- •Задание 1
- •Описание учебного примера
- •Практическая работа №2
- •Указания по выполнению практической работы Команда alter table
- •Удаление таблиц
- •Задание 1
- •Контрольные вопросы
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа № 3
- •Указания по выполнению практической работы
- •Задание 1
- •Задание 1
- •Задание 2
- •1. Создание eer-диаграммы
- •Контрольные вопросы
- •Лабораторная работа № 7
- •Указания по выполнению лабораторной работы
- •Для компонента adoConnection1 устанавливаем следующие свойства
- •Простая выборка
- •Использование вычисляемых полей
- •Логические связки and и or
- •Выборка с упорядочением
- •Контрольные вопросы
- •Практическая работа № 11
- •Указания к выполнению лабораторной работы Запросы к нескольким таблицам
- •Задание1
- •Табличный подзапрос
- •Использование операций in и not in
- •Использование операций some, any и all
- •Использование exists и not exists
- •Задание
- •Контрольные вопросы
- •Лабораторная работа № 14
- •Команда insert
- •Задание 1
- •Команда update
- •Задание 2
- •Команда delete
- •Задание 3
- •Контрольные вопросы
- •Лабораторная работа № 15
- •Задание
- •Задание 2
- •Контрольные вопросы
- •Лабораторная работа № 16
- •Контрольные вопросы
- •Практическая работа № 17
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа № 18
- •Добавление триггера
- •Создание триггера на before update
- •Удаление триггера
- •Список созданных триггеров
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Контрольные вопросы
- •Лабораторная работа № 19
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа № 20
- •Задание 1
- •Контрольные вопросы
- •Практическая работа № 21
- •Уровни привилегий и пользователи
- •Отмена привилегий и удаление пользователей
- •Задание 1 Работа локально
- •Варианты заданий предметных областей для создания баз данных Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант16
- •Вариант 17
- •Вариант 18
- •Вариант 19
- •Вариант 20
- •Вариант 22
- •Вариант 23
- •Вариант 24
- •Вариант 25
- •Вариант 26
- •Вариант 27
- •Вариант 28
- •Вариант 29
- •Вариант 30
- •Вариант 31
- •Вариант 32
Задание 1
Удалите таблицы, созданные в практической работе №3
Создать таблицу 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
Задайте ограничения для других таблиц рассматриваемой базы данных.
Задайте ограничения для полей таблиц базы данных вашего варианта.
Контрольные вопросы
На каких уровнях создаются ограничения?
Какие ключевые слова используются при создании ограничений?
Что можно написать в скобках после ключевого слова CHECK?
Можно ли в условии ограничения создавать сложные выражения?
Практическая работа № 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, запрещающая в одном случае удаление, в другом – редактирование.
