
8. 3. Фізичне проектування бази даних
На етапі фізичного проектування бази даних виконується вибір ефективного розміщення бази даних на зовнішніх носіях для забезпечення найбільш ефективної роботи додатків бази даних.
Основні проблеми, зв’язані з фізичним збереженням даних, викликані повільним доступом і пошуком, а також низькою швидкістю передачі. Тому головною метою підвищення продуктивності системи з цієї точки зору є мінімізація кількості дискових операцій введення-виведення даних.
Для збереження даних можуть використовуватися різноманітні структури, які мають різну продуктивність. Але ідеального способу зберігання даних не існує. Тому СУБД повинна містити декілька структур зберігання даних для різних задач і части системи, а також передбачати можливість зміни способів збереження в залежності від вимог до продуктивності системи.
8. 4. Створення таблиць бази даних „Навчальний процес” засобами мови sql
Після створення бази даних необхідно створити таблиці. Таблиці створюються командою CREATE TABLE (див.розділ 6.4). Ця команда створює пусту таблицю (структуру таблиці), яка не містить записів. Нагадаємо, що записи до таблиці додаються командою INSERT. В команді CREATE TABLE задається ім’я таблиці та опис набору імен полів, які вказуються у відповідному порядку. Крім того, цією командою визначаються типи даних і розміри полів таблиці. Значення аргументу розміру залежить від типу даних. Якщо його не вказати, то СУБД призначить значення автоматично. Для числових полів це не важливо, а для даних типу CHAR потрібно обов’язково вказати розмір. За замовчуванням аргумент розміру дорівнює одиниці, а це означає, що поле може містити тільки один символ.
Наведемо приклад команди, яка створить структуру таблиці Облікові дані студентів:
create table student
(kod_st smallint not null primary key,
prizv varchar(20) not null,
ima varchar(15) not null,
pob varchar(15) not null,
data_nar datetime not null,
data_vst datetime not null,
kod_mova smallint not null,
kod_zamov smallint not null,
kod_pilgy smallint null,
kod_grupa smallint not null)
У цій команді CREATE TABLE використовується обмеження NOT NULL для запобігання попадання в поле нульових значень. Якщо при створенні таблиці обмеження не вказується, то SQL вважає, що нульові значення дозволені. Очевидно, що первинні ключі таблиці не повинні бути пустими, оскільки це буде порушувати їх функціональні можливості.
З допомогою PRIMARY KEY можна обмежувати таблицю або окремі її стовпці. Найкраще задавати обмеження PRIMARY KEY (первинний ключ) для поля, яке утворює унікальний ідентифікатор рядка. Первинним ключем таблиці Облікові дані студентів є поле kod_st.
Ці та інші обмеження розширюють можливості роботи з даними, які вводяться в таблицю. Коли створюється таблиця або змінюється її структура можна встановлювати обмеження на значення, які можуть бути введені в поля. Якщо це зроблено, SQL не буде дозволяти вводити значення, які порушують задані критерії. Існує два типи обмежень – обмеження поля (атрибуту), обмеження таблиці (відношення). Різниця між ними полягає в тому, що обмеження поля застосовується тільки до певного поля, а обмеження таблиці – до груп з декількох полів. Обмеження поля поміщається в кінець фрагмента команди після задання імені і типу даних. Обмеження таблиці поміщається в кінці команди після оголошення всіх полів. Наприклад, команда створення таблиці Паспортні дані матиме наступний вигляд:
create table pasport
(kod_st smallint foreign key (kod_st) references student (kod_st),
seria varchar(7) not null,
nomer varchar(6) not null,
kum_vud varchar(30) not null,
kolu_vud datetime not null,
ident_kod varchar(10) not null,
unique (nomer, ident_kod)
Як вже було зазначено вище, для обмеження цілісності PRIMARY KEY автоматично гарантує унікальність значень. Але в кожній таблиці може бути лише один первинний ключ. Якщо ж необхідно додатково забезпечити унікальність значень ще в одному або більше стовпцях окрім первинного ключа, то необхідно використовувати обмеження цілісності UNIQUE. У таблиці Паспортні дані поля nomer, ident_kod оголошено унікальними з допомогою атрибута UNIQUE.
Крім цього, у даній таблиці використовується обмеження FOREIGN KEY (зовнішній ключ), яке забезпечує зв’язок цієї таблиці (залежної) з головною таблицею Облікові дані студентів. Стовпці, які входять у зовнішній ключ, можуть посилатися тільки на стовпці первинного ключа або стовпці з обмеженням UNIQUE головної таблиці. Зовнішній ключ забезпечує цілісність даних двох таблиць. А саме, в залежну таблицю не можна вставити рядок, якщо зовнішній ключ не має відповідного значення в головній таблиці, а з головної таблиці не можна видалити рядок, якщо значення первинного ключа використовується в залежній таблиці.
В SQL також можна використовувати обмеження CHECK, яке задає діапазон можливих значень для стовпця. В основі обмеження цілісності CHECK лежить перевірка логічного виразу, який знаходить значення TRUE (істина) або значення FALSE (хибно). Якщо значення виразу – TRUE, то обмеження цілісності виконується і операція зміни чи вставки даних дозволяється. Якщо ж значення виразу – FALSE, то операція зміни чи вставки даних відміняється.
Наприклад, для забезпечення правильності задання значення стовпця в таблиці Навчальні плани (воно повинно знаходитися в діапазоні від 1 до 10) можна використовувати наступний логічний вираз:
((semestr>=1) OR (semestr<=10))
Обмеження цілісності на рівні поля буде виглядати так:
semestr integer not null check ((semestr>=1) OR (semestr<=10))