merged
.pdf
кортежі. Під мінімальною первинного ключа розуміється те, що якщо з безлічі атрибутів первинного ключа видалити хоча б один атрибут, то обмеження цілісності зміниться, тобто в БД зможуть з'являтися тіла відносин, які не допускалися вихідним первинним ключем. Якщо первинний ключ не оголошується явно, то в якості первинного ключа відносини приймається весь його заголовок. Зрозуміло, що оскільки за визначенням будь-яке тіло відносини із заданим заголовком є множиною, отже, в ньому відсутні дублікати, і первинний ключ, що співпадає із заголовком відносини, завжди має властивість унікальності. Повинно бути зрозуміло, що в цьому випадку визначення первинного ключа не задає ніякого обмеження цілісності. Щоб пояснити сенс обмеження посилальної цілісності, потрібно спочатку ввести поняття зовнішнього ключа. В принципі при використанні реляційної моделі даних можна зберігати всі дані, відповідні предметної області в одній таблиці. Приклад такої бази даних демонструвався в лекції 1 на рис. 1.6, де в одному файлі (інтуїтивному аналогу відносини) зберігалася інформація і про службовців, і про відділи, в яких вони працюють. Як було показано в лекції 1, такий підхід призводить до надмірності зберігання (дані про відділ повторюються в кожному записі про службовця цього відділу) і ускладнює виконання деяких операцій.
Обмеження цілісності для ієрархічної моделі Підтримується лише цілісність зв'язків між власниками та членами групового відносини (ніякої
нащадок не може існувати без предка). Як уже зазначалося, не забезпечується автоматична підтримка відповідності парних записів, що входять в різні ієрархії.
Обмеження цілісності мережевої моделі Як і в ієрархічній моделі забезпечується тільки підтримання цілісності по посиланнях (власник відносини - член відносини).
2. Операції модифікації даних у мові SQL: DELETE.
Оператор DELETE видаляє рядки з тимчасових і постійних базових таблиць, уявлень чи курсорів, причому в двох останніх випадках дія оператора поширюється на ті базові таблиці, з яких витягувалися дані в ці уявлення або курсори. Оператор видалення має простий синтаксис: DELETE FROM <ім'я таблиці> [WHERE <условие>];
Якщо умова WHERE відсутня, видаляються всі рядки з таблиці або подання (подання має бути обновлюваним).
Приклад:
Потрібно видалити з таблиці Laptop всі ПК-блокноти з розміром екрану менше 12 дюймів.
DELETE FROM Laptop WHERE screen <12
Всі блокноти можна видалити за допомогою оператора DELETE FROM Laptop
Варіант 21
Структурні обмеження цілісності — це обмеження, які випливають із властивостей структури даних, що зберігаються в базі.
Семантичні обмеження цілісності — це обмеження, що накладаються предметною областю, яка моделюється.
Створення таблиць бази даних – оператор CREATE TABLE Цей оператор створює структуру таблиці, заповнювати яку можна за допомогою оператора INSERT. Оператор CREATE TABLE визначає ім’я таблиці а також її стовпчики із типами та розмірами. Таблиця повинна містити хоча б один стовпчик, наприклад
CREATE TABLE student (student _id INTEGER,
surname VARCHAR(40), name VARCHAR(30), stipend DECIMAL,
kurs INTEGER, city VARCHAR(60), birthday DATE, univ_id INTEGER);
Створення індексів таблиць – оператори CREATE INDEX, DROP INDEX
Індексація дозволяє прискорити виконання операцій SELECT проте сповільнює операції INSERT та DELETE. Індекс зберігається в службовій таблиці, яка містить два поля. Перше поле представляє впорядковане значення індексу а друге – ідентифікатор запису в таблиці для якої створюється індекс. Індекси можна створювати як по одному, так і по декількох полях. При вказанні декількох індексних полів записи групуються по значенню першого індексу, всередині групи записи впорядковуються по другому індексу і т.д. Нехай таблиця EXAM_MARKS часто використовується для пошуку оцінок окремих студентів. Створюємо індекс цієї таблиці по полю STUDENT_ID
CREATE INDEX student_marks ON exam_marks(student _id);
Ім’я індекса (в даному випадку student_marks) має бути унікальним в базі даних. Сама таблиця (exam_marks) повинна бути створена і містити стовпці, по яких вона індексується. Після створення індексу всі подальші операції з ним здійснює СУБД. Якщо оцінки студентів необхідно впорядковувати ще й по даті, то оголошення індексу слід модифікувати
CREATE INDEX student_marks ON exam_marks(student _id, exam_date)
Для усунення індексу використовується команда DROP INDEX, наприклад
DROP INDEX student_marks;
Варіант 22
DROP – удаляет ранее созданный объект
Удаление таблицы
Для удаления таблицы из БД в языке SQL используется оператор
DROP TABLE:
DROP TABLE <имя_таблицы> CASCADE | RESTRICT
DROP TABLE [IF EXISTS] tbl_name [, tbl_name,...] [RESTRICT | CASCADE]
Оператор DROP TABLE удаляет одну или несколько таблиц. Все табличные данные и определения удаляются, так что будьте внимательны при работе с этой командой!
В версии MySQL 3.22 и более поздних можно использовать ключевые слова IF EXISTS, чтобы предупредить ошибку, если указанные таблицы не существуют.
Опции RESTRICT и CASCADE позволяют упростить перенос программы. В данный момент они не задействованы.
Примечание: DROP TABLE автоматически принимает текущую активную транзакцию.
DROP INDEX index_name ON tbl_name
Оператор DROP INDEX удаляет индексы, указанные в index_name из таблицы tbl_name. DROP INDEX не выполняет никаких действий в версиях MySQL до 3.22. В версиях 3.22 и более поздних DROP INDEX соответствует команде ALTER TABLE в части удаления индексов
DROP DATABASE [IF EXISTS] db_name
Оператор DROP DATABASE удаляет все таблицы в указанной базе данных и саму базу. Если вы выполняете DROP DATABASE на базе данных, символически связанной с другой, то удаляется как ссылка, так и оригинальная база данных. Будьте ОЧЕНЬ внимательны при работе с этой командой!
Оператор DROP DATABASE возвращает количество файлов, которые были удалены из директории базы данных. Как правило, это число равно количеству таблиц, умноженному на три, поскольку обычно каждая таблица представлена тремя файлами - `.MYD'-файлом, `MYI'-файлом и `.frm'- файлом.
Команда DROP DATABASE удаляет из директории указанной базы данных все файлы со следующими расширениями:
Расширение |
Расширение |
Расширение |
Расширение |
.BAK |
.DAT |
.HSH |
.ISD |
.ISM |
.ISM |
.MRG |
.MYD |
.MYI |
.db |
.frm |
|
Все поддиректории, имена которых состоят из двух цифр (RAIDдиректории), также удаляются.
В версии MySQL 3.22 и более поздних можно использовать ключевые слова IF EXISTS для предупреждения ошибки, если указанная база данных не существует.
Зміна структури таблиць бази даних – оператор ALTER TABLE Оператор ALTER TABLE використовується д ля додавання або зміни
параметрів стовпців бази даних. Для додавання стовпців використовується умова ADD, а для зміни – CHANGE. При додаванні стовпчика необхідно вказати ім.’я таблиці, ім.’я стовпчика, його тип та довжину. В операторі також можна задати місце додавання стовпчика. Якщо стовпчик вставляється на перше місце задається опція FIRST, якщо після деякого стовпчика, то задається опція
AFTER <назва стовпчика після якого вставляємо>.
Якщо опцій розташування стовпчика не вказано, то він розташовується на останньому місці. Приклади
ALTER TABLE student ADD id2 INT NOT NULL AFTER student _id ; ALTER TABLE student ADD id_final INT(6) ;
ALTER TABLE student ADD id1 INT(8) FIRST ;
Модифікація типу стовпчика можлива лише тоді, коли стовпчик пустий. Якщо стовпчик заповнений, то його довжину не можна зменшувати. При зміні стовпчика спочатку вказується попередня назва стовпчика, а потім – його нова назва. Приклади
ALTER TABLE student CHANGE id2 id3 VARCHAR(8) NOT NULL ; ALTER TABLE student CHANGE id3 id3 VARCHAR(20) ;
Для усунення стовпчиків використовують умову DROP
ALTER TABLE student DROP id2;
ЕКЗАМЕНАЦІЙНИЙ БІЛЕТ № 25
1. Реляційна модель даних. Первинні та зовнішні ключі.
Реляционная модель данных (РМД) – представление данных в виде совокупности двумерных таблиц особого вида, известного в математике как отношение (relation). Любое представление данных, в т.ч. иерархические и сетевые структуры, может быть приведено к двумерной табличной форме (первая реляционная СУБД System-R компании IBM)
______________________
Потенциальные и первичные ключи Множество атрибутов К = (Аi, Aj, …, Ak) отношения R называется потенциальным ключом R тогда и только тогда, когда выполняются два условия: - уникальность: нет двух разных кортежей в отношении R с одинаковым значением К; - минимальность: ни один из атрибутов Аi, Aj, …, Ak не может быть исключен из К без нарушения уникальности.
Перви́чный ключ (англ. primary key) — в реляционной модели данных один из потенциальных ключейотношения, выбранный в качестве основного ключа (или ключа по умолчанию).
______________________
Пусть R1 – базовое отношение. Тогда внешний ключ (foreign key) – FK в отношении R2 – это подмножество множества атрибутов R2 такое, что: - существует базовое отношение R1 с потенциальным (первичным) ключом PK; - каждое значение FK в текущем значении R2 всегда совпадает со значением PK некоторого кортежа в текущем значении R1.
2. Операція вибірки SELECT. Використання обчислювальних виразів.
Выборка записей осуществляется с помощью команды SELECT. Давайте рассмотрим пример её использования: SELECT id, login FROM users В результате, будет возвращён result_set, который содержит все записи таблицы users. Обратите внимание, что мы указали только поля: "id" и "login". Если нам нужны значения всех полей, то тогда надо использовать такой SQL-запрос: SELECT * FROM users В result_set будут выведены все записи таблицы users со всеми полями и их значениями. Как правило, требуется осуществлять выборку не таблицы целиком, а только записей, удовлетворяющих определённым критериям. Эти критерии можно описать в уже знакомой Вам конструкции "WHERE"
______________________
Пример. Вывести фамилии студентов, размер их стипендий в грн. и в $.
SELECT stName, stStipend, stStipend / 8,14 FROM Students ;
Результат:
stName stStipend stStipend / 8,14
--------- ----------- |
------------------- |
Иванов 1200 |
147,42 |
Петров 900 |
110,565 |
Сидоров 730 |
89,68 |
ЕКЗАМЕНАЦІЙНИЙ БІЛЕТ № 26
1. Реляційна модель даних. Цілісність об’єктів та цілісність зв’язків.
Реляционная модель данных (РМД) – представление данных в виде совокупности двумерных таблиц особого вида, известного в математике как отношение (relation). Любое представление данных, в т.ч. иерархические и сетевые структуры, может быть приведено к двумерной табличной форме (первая реляционная СУБД System-R компании IBM)
____________________________
Требованием целостности сущностей. Объекту или сущности реального мира в реляционных БД соответствуют кортежи отношений. Конкретно требование состоит в том, что любой кортеж любого отношения отличим от любого другого кортежа этого отношения, т.е. другими словами, любое отношение должно обладать первичным ключом.
____________________________
Ссылочная целостность и правила внешних ключей
При попытке удалить объект, на который ссылается внешний ключ:
-приостановить (ограничить) операцию удаления до момента, когда не будут удалены все ссылающиеся на него объекты в других отношениях (таблицах);
-каскадировать операцию удаления, удалив ссылающиеся на него объекты в других отношениях.
При попытке обновить объект, на который ссылается внешний ключ:
- приостановить (ограничить) операцию обновления до момента, когда не будут существовать все ссылающиеся на него объекты в других отношениях;
- каскадировать операцию обновления, обновив значение внешнего ключа в соответствующих ссылающихся на него объектах в других отношениях.
2. Операція вибірки SELECT. Умови відбору строк.
Выборка записей осуществляется с помощью команды SELECT. Давайте рассмотрим пример её использования: SELECT id, login FROM users В результате, будет возвращён result_set, который содержит все записи таблицы users. Обратите внимание, что мы указали только поля: "id" и "login". Если нам нужны значения всех полей, то тогда надо использовать такой SQLзапрос: SELECT * FROM users В result_set будут выведены все записи таблицы users со всеми полями и их значениями. Как правило, требуется осуществлять выборку не таблицы целиком, а только записей, удовлетворяющих определённым критериям. Эти критерии можно описать конструкции "WHERE"
Предложение WHERE состоит из ключевого слова WHERE, за которым следует условие поиска, определяющее, какие именно строки требуется выбрать. Если условие поиска имеет значение TRUE, строка будет включена в результат запроса. Если условие поиска имеет значение FALSE или NULL, то строка исключается из результата запроса.
1)Сравнение
Выражение1 =|<>|<|>|<=|>= Выражение2
2)Проверка на принадлежность диапазону значений (BETWEEN)
проверяемое_выражение [NOT] BETWEEN минимум AND максимум
3)Проверка на принадлежность множеству (IN)
проверяемое_выражение [NOT] IN (набор_констант)
4)Проверка на соответствие шаблону (LIKE)
имя_столбца [NOT] LIKE шаблон [ESCAPE символ_пропуска)
где шаблон – это строка, в которую может входить один или более подстановочных знаков.
% – совпадает с любой последовательностью из нуля или более символов
_ (символ подчеркивания) – совпадает с любым отдельным символом
5)Проверка на равенство значению NULL (IS NULL)
имя_столбца IS [NOT] NULL
6) Составные условия поиска (AND, OR и NOT) WHERE [NOT]
условие_поиска [AND|OR] [NOT] условие_поиска
ЕКЗАМЕНАЦІЙНИЙ БІЛЕТ № 27
Представлення вза’ємозв’язків 1:1, 1:M та M:N засобами реляційної моделі.
1. «Один-к-одному» - любому экземпляру сущности А соответствует только один экземпляр сущности В, и наоборот.
У любого конкретного ученика может быть только одна характеристика, и эта характеристика относится к единственному ученику.
2. «Один-ко-многим» - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, но любому экземпляру сущности В соответствует только один экземпляр сущности А.
Ученику ставят много оценок; поставленная оценка принадлежит только одному ученику.
3. «Многие-к-одному» - любому экземпляру сущности А соответствует только один экземпляр сущности В, но любому экземпляру сущности В соответствует 0, 1 или несколько экземпляров сущности А.
Преподаватель работает только в одном кабинете, однако рабочий кабинет может быть закреплен за несколькими преподавателями.
Какая же разница между связями «один-ко-многим» и «многие-к-одному»? Такая же, как между фразами «портфель ученика» и «ученик портфеля». То есть важно, кто во взаимоотношении двух объектов главный - ученик или портфель. Суть отношений двух объектов отражается в имени связи.
Если при определении связи вам сложно выделить подчиненность, то вывод только один: вы плохо разобрались в предметной области.
4. «Многие-ко-многим» - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, и любому экземпляру сущности В соответствует 0, 1 или несколько экземпляров сущности А.
Ученик Иванов учится у нескольких преподавателей. И каждый преподаватель работает со многими учениками.
