Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Авт_ПМП / Лабораторна робота_ПМП_всі.doc
Скачиваний:
10
Добавлен:
05.02.2016
Размер:
134.66 Кб
Скачать

Лабораторна робота №8

Тема: Створення баз даних.

Теоретичні відомості Визначення даних

Мова DDL (Data Definition Language), як частина мови SQL, дозволяє створювати і видаляти різні об’єкти бази даних – наприклад, таблиці, представлення, індекси тощо. Основними операторами мови SQL, призначеними для визначення даних, є:

CREATE SCHEMA

DROP SCHEMA

CREATE DOMAIN

ALTER DOMAIN

DROP DOMAIN

CREATE TABLE

ALTER TABLE

DROP TABLE

CREATE VIEW

DROP VIEW

Створення баз даних

В різних СУБД процедура створення баз даних різна. В клієнт-серверних системах право створення баз даних як правило закріплене за адміністратором бази даних (АБД). В персональних системах база даних створюється в процесі інсталяції і настройки параметрів самої СУБД. Стандарт ISO не визначає процедури створення екземпляру бази даних, тому в кожному з діалектів мови SQL використовується свій власний підхід. Наприклад, в СУБД ORACLE створення екземпляру бази є частиною процесу інсталяції системи.

У відповідності із стандартом ISO, таблиці та інші об’єкти бази даних існують в деякому середовищі(environment). Крім того, кожне середовище містить в собі один або більше каталогів (catalog), а кожний каталог – набір схем (shema). Схема – це поіменована сукупність взаємопов’язаних об’єктів бази даних ( всі об’єкти бази даних повинні бути описані в тій чи іншій схемі). Об’єктами схеми можуть бути таблиці, представлення, домени і набори символів. Стандарт залишає право вибору конкретного механізму створення і знищення каталогів за розробником СУБД, але регламентує механізм створення і знищення схем. Оператор визначення схеми має такий формат:

CREATE SHEMA [name | AUTHORIZATION creator-identifier]

Таким чином, якщо творцем схеми під іменем sql_test буде користувач Ivanov, то даний оператор виглядатиме таким чином:

CREATE SHEMA sql_test AUTHORIZATION Ivanov

Схема видаляється з допомогою оператора DROP SHEMA, який має такий формат:

DROP SHEMA name [RESTRICT | CASCADE]

Якщо вказано ключове слово RESTRICT (саме воно діє за змовчуванням), схема повинна бути пустою(не містити жодного об’єкту), інакше виконання цієї операції буде відмінено. Якщо вказано ключове слово CASCADE, автоматично будуть видалені всі пов’язані з цією схемою об’єкти. Якщо ж в ході виконання цього оператора якась операція закінчилась невдало, буде відмінено виконання всього оператора DROP SHEMA.

На сьогоднішній день оператори CREATE SHEMA і DROP SHEMA реалізовані в небагатьох СУБД.

Створення таблиць (оператор create table)

Після створення загальної структури бази даних можна приступати до створення таблиць, які представляють відношення, що входять до складу проекту бази даних. Для цього використовується оператор CREATE TABLE (спрощений варіант), який має формат:

CREATE TABLE table_name

(column_name data_type [NULL | NOT NULL][,…])

В результаті виконання цього оператора буде створена таблиця з іменем table_name, яка матиме один або більше стовпчиків з іменами що задаються параметрами column_name і матимуть тип, що задається параметрами data_type.

Ключове слово NULL визначає, що дане поле можемістити значення NULL. Ключове слово NOT NULL визначає, що дане полене можемістити значення NULL. За змовчуванням, стандарт ISO визначає, що діє ключове слово NULL.

Стовпчики первинних ключів завжди визначаються з ключовим словом NOT NULL.

Приклад використання оператора CREATE TABLE. Оператор

CREATE TABLE Osoba (

kod INTEGER NOT NULL,

priz VARCHAR(50) NOT NULL)

створить таблицю Osoba, в якій є 2 стовпчики – kod i priz. Поле kod має цілочисельний тип, а поле priz має тип VARCHAR, тобто символьний і яке містить не більше 50 символів. Оператор, який створить таблицю table_a, якою ми користувались на попередніх лекціях, матиме вид

CREATE TABLE table_a(

kod INTEGER NOT NULL,

suma DECIMAL(8,2) NOT NULL,

data DATE )

В стандарті ISO наведено декілька варіантів визначення цього оператора. Базовий форматцього оператора має вид:

CREATE TABLE table_name

{(column_name data_type [NOT NULL] [UNIQUE]

[DEFAULT default_option] [CHECK (search_condition)] [,…]}

[PRIMARY KEY (list_of_columns),]

{[UNIQUE (list_of_columns)] [,…]}

{FOREIGN KEY (list_of_foreign_key_columns)

REFERENCES parent_table_name [list_of_candidate_key_columns)],

[MATCH {partial | FULL}]

[ON UPDATE referential_action]

[ON DELETE referential_action] [,…]}

{[CHECK (searh_condition)] [,…])}

Дана версія оператора CREATE TABLE містить не тільки визначення даних (параметри table_name, column_name, data_type і специфікатор NOT NULL, які ми розглядали у спрощеному варіанті) але й засоби визначення цілісності бази даних, ключів і таке інше.

Необов’язкова фраза DEFAULT задає значення - default_option, яке буде вставлятись оператором INSERT для невизначеного значення даного стовпчика (default_option може бути літералом).

Необов’язкова фраза UNIQUE задає унікальність значення цього поля, тобто не повинно існувати двох і більше рядків в таблиці з одноковим значення цього поля. Для стовпчиків, які вказані у фразі UNIQUE повинен застосовуватись режим NOT NULL для їх можливих значень. Система заблокує виконання любого оператора INSERT аба UPDATE який створює рядок з дубльованими значеннями стовпчиків, які вказані у фразі UNIQUE.

Необов’язкова фраза CHECK (search_condition). Кожний стовпчик має власний домен, тобто набір допустимих значень. Наприклад, для визначення наукового ступеня співробітника достатньо всього 3 значення – не має, кадидат і доктор. Тому домен для поля Naukov_stupin можна визначити як набір з 3-х значень- ‘не має’, ‘кадидат’, ‘доктор’. Фраза

CHECK (Naukov_stupin IN(‘не має’, ‘кадидат’, ‘доктор’))

задаватиме допустимі значення для поля Naukov_stupin. Тобто ніякі інші значення в це поле СУБД не дозволить внести.

Всі інші фрази оператора CREATE TABLE, що залишились називають обмеженнями для таблиці і можуть відокремлюватись (не обов’язково) фразою

CONSTRAINT constraint_name.

Використання цієї фрази дозволить в подальшому відмінити те чи інше обмеження за допомогою оператора ALTER TABLE.

Фраза PRIMARY KEY визначає стовпчик або стовпчики, які утворюють первинний ключ таблиці. Визначення любої таблиці повинно містити не більше однієї фрази PRIMARY KEY. Система заблокує виконання любого оператора INSERT аба UPDATE який створює рядок з дубльованими значеннями в стовпчиках, вказаних у фразі PRIMARY KEY. Наприклад, якщо S1 iS2 – стовпчики, які вказані у фразі PRIMARY KEY, і в таблиці вже є рядок зі значеннямиaibу цих стовпчиках відповідно, то спроба вставити новий рядок зі значеннямиaibу цих стовпчиках буде заблокована.

Фраза FOREIGN KEY дозволяє визначити зовнішні ключі таблиці. Фраза містить такі елементи:

  • список list_of_foreign_key_columns складається з імен одного або більше стовпчиків, які утворюють даний зовнішній ключ;

  • фразу REFERENCES, яка визначає батьківську таблицю з іменем parent_table_name, яка містить потенційний ключ, поля якого визначені зовнішнім ключем (задаються списком list_of_candidate_key_columns);

  • необов’язкову фразу ON UPDATE для визначення правила поновлення даних, які задаються параметром referential_action. Цей параметр може приймати одне з таких значеннь: CASCADE, SET NULL, SET DEFAULT, NO ACTION. Якщо фраза ON UPDATE опущена, за змовчуванням використовується правило NO ACTION;

  • необов’язкову фразу ON DELETE для визначення правила поновлення даних, які задаються параметром referential_action. Цей параметр може приймати одне з таких значень: CASCADE, SET NULL, SET DEFAULT, NO ACTION. Якщо фраза ON DELETE опущена, за змовчуванням використовується правило NO ACTION.

Правила підтримки цілісності посилань, які задаються у фразі FOREIGN KEY після ON UPDATE і ON DELETE:

  • CASCADE – виконується поновлення/видалення рядка з батьківської таблиці з автоматичним поновленням/видаленням всіх рядків дочірньої таблиці, пов’язаних з даним рядком батьківської таблиці;

  • SET NULL – виконується видалення рядка з батьківської таблиці, а у зовнішні ключі дочірньої таблиці, пов’язаних з даним рядком батьківської таблиці заноситься значенння NULL. Цей варіант застосовується лише для тих стовпчиків зовнішнього ключа, у визначенні яких задано NULL;

  • SET DEFAULT - виконується видалення рядка з батьківської таблиці, а у зовнішні ключі дочірньої таблиці, пов’язаних з даним рядком батьківської таблиці заноситься значення за змовчуванням.

  • NO ACTION операція видалення рядка з батьківської таблиці відміняється. Це значення використовується за змовчуванням.

Приклади. Оператор

CREATE TABLE Vidom(

kod INTEGER NOT NULL,

year SMALLINT NOT NULL,

mounth SMALLINT NOT NULL,

D REAL NOT NULL DEFAULT 0 ,

CONSTRAINT ind PRIMARY KEY (kod,year, mounth))

створить таблицю з назвою Vidom, яка матиме стовпчики - kod, year, mounth, D і первинний ключ з іменем ind, який визначається стовпчиками kod,year, mounth. Причому поля kod,year, mounth, D не можуть приймати значення NULL, а поле D за змовчуванням прийматиме значення 0, тобто оператор INSERT, що не містить явного задання значення поля D, автоматично підставлятиме значення 0. Приклад використання CHECK для недопущення вводу помилкових значень.

CREATE TABLE Osoba

(ID_OSOBA INTEGER NOT NULL,

PRIZ VARCHAR(50) NOT NULL,

NAME VARCHAR(50) NOT NULL,

POBAT VARCHAR(50) NOT NULL,

SEX CHAR(4) CHECK (SEX IN (‘жін.’,’чол.’)),

ID_FACULT SMALLINT NOT NULL)

Цей оператор створить таблицю Osoba з відповідними стовпчиками, причому в стовпчик SEX система не дозволить ввести нічого крім значень ‘жін.’і ’чол.’.

Слід зауважити, що не всі діалекти SQL підтримують фразу DEFAULT (Access 97 не підтримує цієї фрази).

ХІД ВИКОНАННЯ РОБОТИ

  1. Створіть запит, який визначає схему таблиці USTANOVAі назвіть її своїм прізвищем.

  2. Створіть запит, який визначає таблицю USTANOVA1 і назвіть її своїм прізвищем.

  3. Оформіть звіт

Практична та лабораторна робота №9

Тема: Використанням команди видалення таблиці

Соседние файлы в папке Авт_ПМП