Лабораторна робота № 5.
Створення і модифікація таблиць бази даних за допомогою утиліти Database Desktop. Створення простої реляційної бази даних

Мета роботи – придбання практичних знань в створенні таблиць реляційних баз даних, отримання інформації про логічну структуру наявних таблиць і зміну їх структури.

Засоби. Пакет Delphi або C++Builder , утиліта DataBase Desktop

Теоретичні відомості

До складу пакетів Delphi і C++Builder входить утиліта DataBase Desktop, призначенням якої є створення і модифікація таблиць БД більшості підтримуваних форматів. Відмітимо, що при використанні RunTime-режиму роботи таблиці створюються, модифікуються і знищуються за допомогою (ті, що інтерактивно вводяться адміністратором або ті, що динамічно генеруються системою) SQL-розпоряджень.

DataBaseDesktop можна викликати з головного меню (послідовність Tools|DatabaseDesktop) або вибором відповідного варіанту стартового меню Windows або прямим стартом виконуваного файлу (типовий шлях ./Database Desktop/dbd32.exe); у останніх версіях Delphi і C++Builder використовується Database Desktop ver.7.0.

Зовнішній вигляд головного вікна утиліти показаний на рис.5.1.

Рис.5.1. Головне вікно утиліти Database Desktop

Відкрита в головному вікні таблиця БД представляється стандартною двовимірною таблицею з нумерацією записів в (віртуальному) стовпці, що співпадає по імені з ім'ям файлу таблиці (поточний запис підсвічується, для зміни її номера застосовується стандартна лінійка-навігатор). Для коректного відображення символів латиниці слід вибрати шрифт шляхом виконання Edit|Preferences|General|Change.

Варіант File|New дозволяє створювати, а File|Open – відкривати існуючі об'єкти БД - таблиці, файли з текстами SQL-запитів (*.SQL - файли) або файли „запитів за зразком” QBE (*.QBE - файли). За замовчуванням місце розташування цих файлів – каталог з аліасом (псевдонімом) WORK (змінюється File|Working Directory). При відкритті файлів таблиць БД пошук за замовчуванням ведеться в каталозі WORK (можливий вибір інших аліасів зі списку, що розкриваєтсья, Alias у вікні Open Table вибору файлів).

Для переведеня вибраної таблиці в режим редагування використовуються кнопка EditData (рис.5.1) або клавіша F9.

Інформацію про структуру вибраної таблиці можна одержати у вікні Structure Information (активізується Table|Info Structure для вибраної таблиці або Tools|Utilities|Info Structure. для вибору файлу таблиці), див. рис.5.2. В рядку Field Name вказується ім'я даного поля, в рядку Type – тип поля, Size – розмір поля (байти), Dec – число десяткових знаків (для числових полів). У правій частині вікна поміщається інформація про (необов'язкову) індексацію таблиці і ім'я (імена) індексних полів. Варіант Table Language (вибір з випадаючого списку Table properties) з подальшим натисненням кнопки Detail Indexes. дає можливість уточнити набір використовуваних при кодуванні таблиці символів. У цьому режимі змінити структуру таблиці БД не можна, для збереження файлу таблиці в інше місце (з іншим ім'ям) служить клавіша Save As.

Рис. 5.2. Вікна видачі інформації про структуру таблиці

Рис. 5.3. Вікна зміни структури таблиці

Для зміни структури таблиці слід використовувати вікно Restructure (Table|Restructure для вибраної таблиці або Tools|Utilities|Restructure. для вибору файлу таблиці), див. рис.5.3.

На відміну від вікна Info Structure тут можна (прямим редагуванням) змінювати назви, тип і розмір кожного поля, а також додавати (клавіша Ins) і/або знищувати (клавіша Del) існуючі поля. Кнопка Define викликає процедуру зміни індексування таблиці (зміна тих полів, що входять в індекс, вимогу унікальності індексу, сортування за збільшенням або спаданням). Варіант Table Language (вибір з випадаючого списку Table properties) з подальшим натисненням кнопки Modify. дає можливість вибрати набір використовуваних при кодуванні таблиці символів.

Установка прапорця Pack Table дає можливість упакувати (видалити раніше помічені для знищення записи) таблицю при збереженні. Установка Record lock дозволяє реалізовувати (при подальшій роботі) режим блокування записів dBASE-таблиці (довжина додаткового поля - 8 - 24 байт).

Важливим етапом роботи з БД є призначення відповідностей аліасів (псевдонімів) імен таблиць і фактичних шляхів у файловій системі. Для виконання цієї функції служить Alias Manаger (рис.5.4), що активізується за допомогою Tools|Alias Manager. За допомогою Alias Manager можна призначити нові відповідності аліасів і шляхів у файловій системі, додати або видалити існуючі аліаси (кнопки New і Remove відповідно).

Рис. 5.4. Вікно настройки аліасів

Додатково до вищезгаданих Database Desktop дозволяє (вибором різних) варіантів дій (рис.5.5) проводити логічні операції над таблицями (при відомих обмеженнях).

Рис. 5.5. Вікна роботи з функціями зміни БД

Створення таблиць є етапом, наступним за логічним конструюванням структури БД і власне таблиць. За допомогою Database Desktop визначається лише логічна структура таблиці (параметри полів таблиці і інформація про індексування), запису ж в таблицю необхідно вносити пізніше. Для визначення таблиці використовується послідовність дій File|New|Table, після чого необхідно вибрати формат файлу таблиці (підтримуються більшість поширених форматів, див. рис.5.6).

Рис. 5.6. Вибір формату створюваної таблиці

Надалі в (подібному використовуваному в режимах Info Structure і Restructure) вікні (рис.5.7) пропонується вводити імена полів (стовпець Field Name), їх тип (можливий вибір за допомогою натиснення клавіші Space або подвійним клацанням правої клавіші миші випадаючого списку), розмір поля і число цифр (для числових полів).

Рис. 5.7. Вибору типу поля при створенні структури таблиці

Практично не рекомендується використовувати в назвах полів відмінних від латиниці кодувань і ключових слів із словника мови SQL. Варіанти випадаючого меню Table Properties дозволяють визначити індексацію таблиці (допустимі складені індекси) і кодову сторінку змісту записів даної таблиці.

У разі роботи із захищеними паролем таблицями слід використовувати варіант Tools|Passwords. для доповнення (або знищення) паролів. Paradox- таблиці підтримують паролі і режими доступу окремо для кожного поля.

Для таблиць формату Paradox можна задати додаткові характеристики. Установка режиму перевірки правильності даних, що вводяться, дозволяє встановити перевірку коректності даних на рівні поля; для цього у вікні Create Paradox Table після фіксації потрібного поля вибирається варіант Validaty Check з випадаючого списку Table Properties (аналог див. на рис.5.7).

Прапорець Required Field встановлюється у разі потреби обов'язкового заповнення поля, допустимий діапазон даних, що вводяться в поточне поле, встановлюється у вікнах Minimize і Maximize, значення за замовчуванням – Default, шаблон даних, що вводяться, - у вікні Picture (допомога у визначенні шаблонів видається по кнопці Assist.).

Paradox-таблиці також підтримують можливість визначення списку допустимих значень поля (список міститься в іншій таблиці); для реалізації цієї можливості слід використовувати вікно Table Lookup (здійснюється шляхом вибором варіанту Table Lookup з випадаючого списку Table Properties і натисненням кнопки Define); потрібне для заповнення поле вибирається з розташованого в лівій частині вікна Table Lookup списку Fields, список Lookup Table таблиць, що містять потрібні значення, міститься в правій частині вікна (з Lookup-таблиці вибирається перше поле, яке повинне мати відповідне вибраному в Fields тип).

Задати вторинні індекси (використовуються для прискорення пошуків в таблиці і зміни порядку перегляду записів) в Paradox-таблиці можна за допомогою вибору варіанту Secondary Index з випадаючого списку Table Properties; натисненням кнопки Define визначається новий індекс, Modify – змінюється існуючий. У таблиці Define Secondary Index, що активізується, вибрані для індексації поля (поле) вибираються із зліва розташованого списку Fields в список Indexed Fields (справа, можна змінити порядок розташування полів). З метою (реального) оновлення індексу слід встановити прапорець Mantained, включення Case Sensitive приводить до обліку регістра при сортуванні по індексу. Одиночний (що включає єдине поле) вторинний індекс матиме ім'я, що співпадає з ім'ям таблиці; інакше ім'я індексу доведеться задати явно.

Таблиці Paradox підтримують (що підсилює зв'язки між таблицями) властивість посилальної цілісності, що гарантує неможливість видалення інформації в одній із зв'язаних таблиць, якщо ці дані пов'язані із записом (записами) в іншої таблиці. Для реалізації посилальної цілісності слід вибрати Referential Integrity з випадаючого списку Table Properties; натиснення кнопки Define визначають нові настройки, Modify – змінює ті, що існують. У правій частині вікна Referential Integrity, що відкривається, міститься список Table батьківських таблиць, в Parent’s Key при цьому відображаються складові первинного ключа поля вибраної батьківської таблиці; у лівій частині міститься список Fields полів поточної таблиці, з одним з яких слід пов'язати (однотипне) поле батьківської таблиці (не слід задавати зв'язане поле для кожного поля в батьківській таблиці). Слід вибрати Cascade в розділі Update Rule при бажанні, щоб зміни в зв'язаних полях батьківської таблиці викликали автоматичну зміну зв'язаних полів в дочірній таблиці; вибрати Prohibit при небажанні вирішувати редакцію зв'язаних полів в батьківській таблиці за наявності тих, що відносяться до них полів в дочірній таблиці і вибрати Strict Referential Integrity, щоб запобігти руйнуванню правил посилальної цілісності ранніми версіями Paradox. При натисненні ОК система запитає назву для установок посилальної цілісності. Наявні зв'язки посилального типу між батьківською і дочірніми таблицями можуть бути переглянуті в правій частині вікна Restructure Paradox Tables, для цього слід вибрати варіант Dependent Tables з випадаючого списку Table Properties (аналог рис.1.3).

При створенні баз даних за допомогою пакетів Delphi або C++Builder використовуються стандартні компоненти VCL (візуальної бібліотеки компонентів, рис.5.8).

Тут Data – пристрій зберігання даних (звичайно жорсткий диск), BDE(Borland Database Engine, альтернативне найменування IDAPI Integrated Database Application Program Interface) - технологія доступу до БД фірми Borland (фактично набір функцій обслуговування БД), Data Access Components – (невізуальні) компоненти (закладка DataAccess палітри компонентів Delphi / C++Builder) доступу до БД, Data Control Components – (візуальні) призначені для користувача компоненти (закладка DataControl палітри компонентів) відображення і управління інформацією БД (User Interface).

Рис.5.8. Компонентів VCL для взаємодії з базами даних в Delphi / C++Builder

Поміщений перед назвою компоненту символ „T” вказує на тип (шаблон) компоненту, при візуальному проектуванні додатку в середовищі Delphi/C++Builder компоненти одержують імена виду „Назва_компонентуN” (де N=1,2,3.).

Компонент типу TDataSource є сполучною ланкою між представленими TTable і TQuery і візуальними компонентами відображення і управління даними. Компонент TTable призначений для (двостороннього) з'єднання таблиць БД через BDE з компонентом TDataSource (з одним Ttable може бути пов'язано декілька TDataSource, але не навпаки). TQuery використовується для зв'язку з SQL-серверами через BDE, відкриваючи доступ до використання мови SQL для створення запиту з метою отримання даних від SQL-сервера (використання TQuery обов'язкове при побудові додатків класу „клієнт/сервер”).

Компонент TDBGrid відображає вміст таблиці в розгорненому вигляді (дані структуровані в табличному вигляді із смугами вертикальної і горизонтальної прокрутки, для навігації по записах зручно використовувати компонент TDBNavigator), TDBEdit дозволяє відображати і редагувати вміст заданого поля поточного запису, TDBImage призначений для перегляду тих полів, що містять зображення, (поля типу BLOB). Компонент TBDLookupCombo використовується у випадках, коли необхідно при переміщенні по записах деякої таблиці одночасно бачити (у випадаючому списку) пов'язану з поточним записом додаткову інформацію з іншої таблиці, TDBListBox дозволяє редагувати зв'язане поле поточного запису таблиці даних шляхом вибору можливого значення із списку. У пізніших версіях Delphi/C++Builder число компонентів роботи з БД розширене.

Настройка властивостей компонентів при створенні діючого додатку приведена в табл.5.1 (компонент TQuery потрібен лише при необхідності використання мови SQL).

Таблиця 5.1.— Настройки властивостей компонентів VCL при створенні додатків баз даних.

Тип компонента

Властивість, що налаштовується (Property)

Значення властивості, що налаштовується

TDBGrid

DataSource

ім’я компонента DataSource (сторінка палітри компонентів DataControls)

TDataSource

DataSet

ім’я компонента Table або Query(*),сторінка палітри компонентів DataAccess

TTable (якщо SQL не потрібно)

DatabaseName

ім’я аліасу БД (*)

TableName

ім’я файлу таблиці (*)

IndexFieldName

ім’я індексованого поля (*)

IndexName

ім’я вторинного індексу (*)

TQuery (якщо потрібно SQL)

DatabaseName

ім’я аліасу БД (*)

DataSource

порожньо (в найпростішому випадку)

SQL

select * from ім’я_таблиці

RequestLive

true

TDBNavigator

DataSource

ім’я компонента DataSource (*), сторінка палітри компонентів DataControls

(*) - можливість вибору із випадаючого списку

Для перегляду вмісту таблиці в DesignTime (проектування додатку без створення виконуваного коду) необхідно встановити в Ttable або TQuery властивість Active=true.

Зовнішній вигляд екранної форми (майбутнього вікна) при проектуванні простого додатку БД приведений на рис.5.9. Вказані компоненти поміщаються на форму стандартним чином (шляхом перетягання мишею з палітри компонентів), з них тільки Table і DataSource видимі в період DesignTime і будуть невидимі при RunTime (етап виконання програми після компіляції).

Рис.5.9. Форми простого додатку класу баз даних на етапі проектування (DesignTime)

На рис.2.2 відкрита (таблиця візуалізується в компоненті DBGrid, окремі поля таблиці - в компонентах DBEdit1 - DBEdit4 і DBImage) таблиця ANIMALS з файлу ANIMALS.DBF формату dBase (аліас BCDEMOS у випадку C++Builder). Компоненти TDBNavigator, TDBEdit і TDImage настроюються шляхом установки властивості DataSource в реальну назву компоненту TDataSource (при єдиному на формі компоненті такого типу це звичайно TDataSource1); для TDBEdit і TDImage додатково у властивості DataField вказується ім'я поля, яке необхідно відобразити в компоненті. Редагування зображення в TDImage можливе за допомогою буфера обміну (Ctrl+C, Ctrl+V, Ctrl+X для копіювання в буфер, вставки з буфера і очищення відповідно).

Перехід між візуалізацією форми і текстом програми в DesignTime здійснюється стандартним чином (клавіша F12), виклик вікна Object Inspectorа (де на вкладці Properties і встановлюються необхідні значення властивостей) – клавішею F11. З метою позиціонування компоненту DBGrid в нижній частині вікна його властивість Align встановлена в значення alBottom, властивість Active компоненту Table – в True.

Відмітимо, що можливе (а іноді і переважно) явне привласнення значень властивостей компонентів (наприклад, рядком DBNavigator1-> DataSource=DataSource1; у стилі C). Фільтрація даних при використанні TTable може бути здійснена настройкою строкової властивості Filter цього компоненту (можливе використання будь-якої кількості об'єднаних логічними зв'язками умов). При необхідності використання мови SQL запитів до баз даних слід замість TTable застосувати TQuery (в цьому випадку властивості TableName, Index- FieldName і IndexName відсутні, а ім'я таблиці задається в стрічковій властивості SQL – див. зразок в табл.2.1; властивість DataSource в цьому випадку слід залишити порожньою).

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

Завдання

Створити таблиці БД заданого формату згідно Вашого варіанту, провести при цьому логічне конструювання таблиць (визначити назви, тип, довжини полів таблиць і необхідні для роботи БД індекси), створити (порожні) таблиці БД, наповнити (за допомогою Database Desktop) їх вмістом (достатньо 3-5 записів), визначити розташування таблиць у файловій системі даної ЕОМ і задати аліас.

Ви повинні показати практичні знання у відкритті таблиць (з використанням технології аліасів) для перегляду і (можливої) реструктуризації, доповнення, зміни і знищення окремих записів.

Варіант

Предметна область БД

1

Географія (континент, країна, площа, населення, столиця і т.д.)

2

Студенти (прізвище, ім’я, по-батькові, дата народження, номер залікової, група і т.д.)

3

Торгівля (магазин, товар, код товару, виробник, ціна і т.д.)

4

Фільми (назва фільму, режисер, студія, рік випуску, тривалість і т.д.)

5

Бібліотека (назва книги, автор, рік випуску, видавництво, кількість сторінок і т.д.)

6

Європа (країна, площа, населення, столиця і т.д.)

7

Ресторан (назва, адреса, телефон, мінімальне замовлення, години роботи і т.д.)

8

Школа (Клас, кількість учнів, класний керівник, в яку зміну навчається і т.д.)

9

Сесія (предмет, оцінка, викладач, дата, вид контролю і т.д.)

10

Фірма (назва, директор, адреса, телефон, рахунок і т.д.)

11

Музика (назва пісні, виконавець, автор, композитор і т.д.)

12

Телефонний довідник (прізвище, ім’я, по-батькові, адреса, телефон, примітка і т.д.)

13

Комп’ютер (монітор, відео, ОЗУ, мишка і т.д.)

14

Принтери (тип, марка, фірма, картридж, швидкість друку і т.д.)

15

Поліклініка (прізвище лікаря, профіль, години прийому, номер кабінету і т.д.)

16

Спорт (прізвище спортсмена, дата народження, вид спорту, команда, країна і т.д.)

17

Міський транспорт (вид транспорту, номер маршруту, початкова зупинка, кінцева і т.д.)

18

Аеропорт (номер рейсу, пункт призначення, дата рейсу, тип літака, час вильоту і т.д.)

19

Мікросхеми пам’яті (позначення, розрядність, місткість, вартість і т.д.)

20

Іподром (кличка коня, масть, вік, вид забігу, прізвище наїзника і т.д.)

 

Створити програму (конкретна таблиця для роботи з нею), самостійно визначити типи полів і необхідні для функціонування додатку компоненти, сконструювати вікно додатку (призначений для користувача інтерфейс), налаштувати властивості компонентів, перевірити функціональність в DesingTime і скомпілювати додаток для кінцевої відладки.

Ви повинні обґрунтувати запропонований інтерфейс (враховуючи ергономічність і дизайн) і продемонструвати виконання додатком заданої функціональності (включаючи обґрунтованість індексування таблиці).