Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л17.doc
Скачиваний:
2
Добавлен:
11.09.2019
Размер:
203.26 Кб
Скачать

3. Реляційні бази даних

Реляційна БД складається з взаємозв'язаних таблиць. Кожна таблиця містить інформацію про об'єкти одного типу, а сукупність усіх таблиць утворює єдину БД.

Таблиці, що утворюють БД, знаходяться в каталозі (теці) на жорсткому диску. Таблиці зберігаються у файлах і схожі на окремі документи або електронні таблиці (наприклад, табличного процесора Microsoft Excel) Проте, на відміну від документів, таблиці БД підтримують багатокористувальницький режим доступу, тобто можуть одночасно використовуватися декількома додатками.

Для однієї таблиці створюється декілька файлів, що містять дані, індекси, ключі і т. п. Головним з них є файл з даними, ім'я цього файлу стає ім'ям таблиці, яке задається при її створенні. У деякому смислі поняття таблиці і її головного файлу є синонімами, при виборі таблиці вибирається саме її головний файл: для таблиці dBase - це файл з розширенням DBF, а для таблиці Paradox - з розширенням DB. Імена інших файлів таблиці призначаються автоматично - усі файли мають однакове ім'я, співпадаюче з ім'ям таблиці, і різні розширення, що вказують на вміст відповідного файлу.

Кожна таблиця БД складається з рядків і стовпців і призначена для зберігання даних про однотипні об'єкти інформаційної системи. Рядок таблиці називається записом, стовпець таблиці - полем. Кожне поле повинне мати унікальне в межах таблиці ім'я.

Поле містить дані одного з допустимих типів, наприклад, строкового, цілочисельного або дати. При введенні значення в поле таблиці автоматично виконується перевірка відповідності типу значення і типу поля. У разі, коли ці типи не співпадають, а перетворення типу значення неможливе, генерирується виняткова ситуація.

Особливості організації таблиць залежать від конкретної СУБД, яка використовується для створення і ведення БД. Наприклад, в локальній таблиці dBase і в таблиці сервера InterBase немає поля автоінкрементного типу (з автоматично збільшуваним значенням), а в таблиці dBase не можна визначити ключ. Подібні особливості необхідно враховувати при виборі типу (формату) таблиці, так як вони впливають не лише на організацію БД, але і на побудову додатка для роботи з цією БД. Проте, незважаючи на усі відмінності таблиць, існують загальні правила створення і ведення БД, а також розробки додатків, які і будуть далі розглянуті.

Основу таблиці складає опис її полів, кожна таблиця повинна мати хоч би одне поле. Поняття структури таблиці є ширшим і включає:

  • опис полів;

  • ключ;

  • індекси;

  • обмеження на значення полів;

  • обмеження посилальної цілісності між таблицями;

  • паролі.

Іноді обмеження на значення полів, обмеження посилальної цілісності між таблицями, а також права доступу називають одним загальним терміном "обмеження".

Відмітимо, що окремі елементи структури залежать від формату таблиць, наприклад, для таблиць dBase не можна задати обмеження посилальної цілісності (т. я. у них немає ключів). Усі елементи структури задаються на фізичному рівні (рівні таблиці) і діють для усіх програм, що виконують операції з БД, включаючи засоби розробки і ведення БД (наприклад, програму Database Desktop). Багато з цих елементів (наприклад, обмеження на значення полів або поля перегляду) можна також реалізувати в додатку програмно, однак в цьому випадку вони діють тільки в межах свого застосування.

З таблицею в цілому можна виконувати наступні операції:

  • створення (визначення структури);

  • зміна структури (реструктуризація);

  • перейменування;

  • видалення.

При створенні таблиці задається структура і ім'я таблиці. При збереженні на диску створюються усі необхідні файли, що відносяться до таблиці. Їх імена співпадають з ім'ям таблиці.

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

При перейменуванні таблиця отримує нове ім'я, внаслідок чого нове ім'я також отримують усі її файли. Для цього використовуються відповідні програми (утиліти), призначені для роботи з таблицями БД, наприклад, Database Desktop або Data Pump.

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

Ключ є комбінацією полів, дані в яких однозначно визначають кожен запис в таблиці. Простий ключ складається з одного поля, а складений (складний) - з декількох полів. Поля, по яких побудований ключ, називають ключовими. У таблиці може бути визначений тільки один ключ. Ключ забезпечує:

  • однозначну ідентифікацію записів таблиці;

  • прискорення виконання запитів до БД;

  • встановлення зв'язку між окремими таблицями БД;

  • використання обмежень посилальної цілісності.

Ключ також називають первинним ключем або первинним (головним) індексом.

Інформація про ключ може зберігатися в окремому файлі або спільно з даними таблиці. Наприклад, в БД Paradox для цієї мети використовується окремий файл (ключовий файл або файл головного індексу) з розширенням РХ. У БД Access уся інформація міститься в одному загальному файлі з розширенням MDB. Значення ключа розташовуються в певному порядку. Для кожного значення ключа є унікальне посилання, що вказує на розташування відповідного запису в таблиці (у головному її файлі). Тому при пошуку запису виконується не послідовний перегляд усієї таблиці, а прямий доступ до запису на підставі впорядкованих значень ключа.

Ціною, яку розробник і користувач платять за використання такої технології, є збільшення розміру БД внаслідок необхідності зберігання значень ключа, наприклад, в окремому файлі. Розмір цього файлу залежить не лише від числа записів таблиці (що досить очевидно), але і від полів, які складають ключ. У ключовому файлі, окрім посилань на відповідні записи таблиці, зберігаються і значення самих ключових полів. Тому при входженні до складу ключа довгих строкових полів розмір ключового файлу може виявитися сумісним з розміром файлу з даними таблиці.

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

  • Ключ має бути унікальним. У складеного ключа значення окремих полів (але не усіх одночасно) можуть повторюватися.

  • Ключ має бути достатнім і не надмірним, тобто не містити полів, які можна видалити без порушення унікальності ключа.

  • До складу ключа не можуть входити поля деяких типів, наприклад, графічне поле або поле коментаря.

Вибір ключових полів не завжди є простим і очевидним завданням, особливо для таблиць з великою кількістю полів.

Зручним варіантом створення ключа буде використання для нього поля відповідного типу, яке автоматично забезпечує підтримку унікальності значень. Для таблиць Paradox таким є поле автоінкрементного типу. В той же час в таблицях dBase і InterBase поле подібного типу відсутнє, і програміст повинен забезпечувати унікальність значень ключа самостійно, наприклад, використовуючи спеціальні генератори.

Відмітимо, що при створенні і веденні БД правильним підходом вважається завдання в кожній таблиці ключа навіть у тому випадку, якщо на перший погляд він не потрібний.

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

Індекси при їх створенні іменуються. Як і у випадку з ключем, залежно від СУБД індекси можуть зберігатися в окремих файлах або спільно з даними. Створення індексу називають індексуванням таблиці.

Використання індексу забезпечує:

  • збільшення швидкості доступу (пошуку) до даних;

  • сортування записів;

  • встановлення зв'язку між окремими таблицями БД;

  • використання обмежень посилальної цілісності.

У двох останніх випадках індекс застосовується спільно з ключем другої таблиці.

Як і ключ, індекс є своєрідним змістом таблиці, перегляд якого виконується перед зверненням до її записів. Таким чином, використання індексу підвищує швидкість доступу до даних в таблиці за рахунок того, що доступ виконується не послідовним, а індексно-послідовним методом.

Сортування є впорядковуванням записів по полю або групі полів в порядку зростання або убування їх значень. Можна сказати, що індекс служить для сортування таблиць по індексних полях. Зокрема, в C++Builder записи набору Table можна сортувати тільки по індексних полях. Набір даних Query дозволяє виконати засобами SQL сортування по будь яким полям, проте і в цьому випадку для індексованих полів впорядкування записів виконується швидше.

Для однієї таблиці можна створити декілька індексів. У кожен момент часу один з них можна зробити поточним, тобто активним. Навіть при існуванні декількох індексів таблиця може не мати поточного індексу (поточний індекс важливий, наприклад, при виконанні пошуку і сортування записів набору даних Table).

Ключові поля зазвичай автоматично індексуються. У таблицях Paradox ключ також є головним (первинним) індексом, який не іменується. Для таблиць dBase ключ не створюється, і його роль виконує один з індексів.

Таким чином, використання ключів і індексів дозволяє:

  • однозначно ідентифікувати записи;

  • уникати дублювання значень в ключових полях;

  • виконувати сортування таблиць;

  • прискорювати операції пошуку в таблицях;

  • встановлювати зв'язки між окремими таблицями БД;

  • використовувати обмеження посилальної цілісності.

Одним з основних завдань БД є забезпечення швидкого доступу до даних (пошуку даних). Час доступу до даних значною мірою залежить від використовуваних для пошуку цих методів і способів.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]