49355 (666235), страница 2
Текст из файла (страница 2)
Щодо застосування файлових систем
Після екскурсу в історію і можливості систем управління файлами підіб’ємо підсумки. Звичайно, перш за все файли застосовуються для збереження текстової інформації: документів, текстів програм тощо. Такі файли звичайно створюються і модифікуються за допомогою різноманітних текстових редакторів. Структура файлів звичайно дуже проста: це або послідовність записів, що містять рядки тексту, або послідовність байт, серед яких зустрічаються спеціальні символи (наприклад, символи кінця рядка).
Файли з текстами програм є вихідними параметрами компіляторів, які, в свою чергу формують файли, що містять об’єктні модулі. С точки зору файлової системи, об’єктні файли також абсолютно стандартної структурой – послідовність записів або байтів. Система програмування накладає на цю структуру більш складну і специфічну для цієї системи структуру об’єктного модуля. Підкреслимо, що логічна структура об’єктного модуля залищається невідомою для файлової системи, ця структура підтримується програмами системи програмування.
Зауважимо, що у названих випадках цілком достатньо тих засобів захисту файлів і синхронізації паралельного доступу, які забезпечують системи управління файлами.
Іншими словами, файлові системи звичайно забезпечують збереження слабо структурованої інформації, залишаючи подальшу структуризацію прикладним програмам.
Але якщо згадати, що тема нашої лекції стосується все ж таки інформаційних систем, яки головним чином орієнтовані на зберігання, вибір та модифікацію інформації, то ці можливості видаються недостатніми.
Структура інформації звичайно дуже складна, і хоча структури даних різноманітні, між ними часто простежується багато спільного. На початковому етапі обчислювальної техніки проблеми структуризації даних вирішувалися індивідуально у кожній інформаційній системі. Створювалися необхідні бібліотеки програм над файловими системами, подібно тому, як це робиться в компіляторах.
Але, оскільки в інформаційних системах необхідно підтримувати складні структури даних, ці індивідуальні засоби керування даними складали суттєву частину інформаційних систем, практично повторюючись, від однієї системи до іншої. Намагання виділити загальну частину інформаційних систем, відповідальну за керування складно-структурованими даними стало, першою спонукаючою причиною створення СКБД, яка, можливо, могла б представляти деяку загальну бібліотеку програм, доступну кожній інформаційній системі.
Розглянемо це на прикладі. Припустимо, що ми бажаємо реалізувати просту інформаційну систему, яка підтримує облік робітників деякої організації. Схема повинна видавати списки робітників у відповідності з вказаними номерами відділів, підтримувати реєстрацію переведення робітників з одного відділу в інший, прийняття та звільнення з роботи. Для кожного відділу повинна підтримуватися можливість одержання імені керівника цього відділу, загальної чисельності відділу, загальної суми заробітної плати за останній місяць тощо. Для кожного співробітника повинна підтримуватися можливість видачи номера посвідчення за повним іменем співробітника, видачи повного імені по номеру посвідчення, одержання інформації про поточну відповідність посади та розміру зарплатні.
Припустимо, що ми вирішили реалізувати таку інформаційну систему на основі файлової системи і користуватися при цьому одним файлом. Оскільки мінімальною інформаційною одиницею в нашому випадку є співробітник, у файлі містиметься один запис для кожного робітника. Поля таких записів повинні містити повне ім’я робітника (РОБ_ІМ), номер його посвідчення (РОБ_НОМ), розмір зарплатні (РОБ_ЗАРП), номер відділу (РОБ_ВІД_НОМ). Оскільки ми намагаємося обмежитися одним файлом, цей самий запис повинен містити імя керівника відділу (РОБ_ВІД_КЕР).
Для виконання функцій нашої інформаційної системи необхідна можливість багатоключового доступу до цього файлу за унікальними ключами. Ключ – це поле даних, яке однозначно визначає запис у файлі, тобто не дублюються у різних записах. В нашому випадку такими полями є РОБ_ІМ та РОБ_НОМ. Крім того, повинна забезпечуватись можливість вибору всіх записів для робітників з одного відділу (РОБ_ВІД_НОМ), тобто доступ за неунікальним ключем. Для того щоб одержати чисельність відділу або загальний розмір зарплатні, інформаційна система повинна що разу вибирати всі записи про робітників відділу і підраховувати відповідне нове значення.
РОБ_ІМ | РОБ_НОМ | РОБ_ЗАРП | РОБ_ВІД_НОМ | РОБ_ВІД_КЕР |
Таким чином, на прикладі реалізації навіть простої системи на базі файлової, користувач стикається з недоліками традиційних файлових систем, такими як:
-
Великі затрати праці програміста (створення достатньо складного долаштування, яке забезпечувалоб багатоключовий доступ до файлів).
-
Надлишковість даних (в записах на кожного співробітника вказується імя керівника відділу);
-
Слабкий контроль за даними (для здійснення окремої операції чи вибірки потрібно переглядати всі записи у файлі);
-
Недостатні можливості керування даними (якщо виникне ситуацію видати інформацію про співробітників з заданою зарплатнею, потрібно буде або повністю переглядати файл, або переоголосити поле РОБ_ЗРП ключовим).
Ситуацію можна виправити, якщо почати підтримувати два багатоключові файли РОБІТНИКИ і ВІДДІЛИ: перший файл міститиме поля РОБ_ІМ РОБ_НОМ РОБ_ЗАРП і РОБ_ВІД_НОМ, а другий – ВІД_НОМ, ВІД_КЕР, РОБ_ЗРП (загальний обсяг зарплатні) та ВІД_РОЗМІР (загальна кількість співробітників у відділі. Тоді, більша частина незручностей, про які йшлося, буде розвязана, але після такого переходу інформаційна система буде володіти новими якостями, які наближають її до СКБД – компютеризована система збереження даних, основне призначення якої зберігати інформацію, надаючи користувачеві можливості її вилучення і модифікації. Під інформацією слід розуміти все, що необхідно для поточної роботи даного користувача або підприємства.
РОБІТНИКИ:
РОБ_ІМ | РОБ_НОМ | РОБ_ЗАРП | РОБ_ВІД_НОМ |
ВІДДІЛИ:
ВІД_НОМ | ВІД_КЕР | РОБ_ЗАРП |
Перш за все система повинна знати, що вона працює з двома інформаційно звязаними файлами, їй необхідно знати структуру і зміст кожного поля (наприклад, що РОБ_ВІД_НОМ в файлі РОБІТНИКИ і ВІД_НОМ в файлі ВІДДІЛИ означають одне і те саме), а також розуміти, що зміни у першому файлі повинні викликати зміни і в другом, щоб загальний зміст був узгоджений. Наприклад, якщо на роботу приймуть нового робітника, необхідно додати запис у файл РОБІТНИКИ, а також відповідним чином змінити поле ВІД_ЗРП і ВІД_РОЗМІР у файлі ВІДДІЛИ.
Узгодженість даних є ключовим поняттям баз даних. Дійсно, якщо інформаційна система підтримує узгоджене збереження інформації в декількох файлах, можна казати, що вона підтримує базу даних – множина взаємоповязаних елементарних груп даних, які можуть оброблятися однією чи кількома прикладними системами. Якщо деяка допоміжна система керування даними дозволяє працювати з декількома файлами, забезпечуючи їх узгодженість, її можна назвати системою керування базами даних. Однієї лише узгодженості даних в декількох файлах не дозволяє обійтися однією лише бібліотекою функцій: така система повинна володіти деякими власними даними (мета-даними) і навіть знаннями, які визначають цілісність даних.
Але це ще не все, що вимагається від СКБД. По-перше, навіть у нашому прикладі незручно реалізовувати такі запити, як ”надати загальну чисельність відділу, в якому працює Іван Іванович Іванов”. Було б набагато простіше, якби СКБД дозволяла сформулювати такий запит на рідній і зрозумілій нам мові. Мову, яку потрібно опанувати для такого випадку називають мовою запитів до баз даних. Наприклад, на мові SQL (Structured Query Language) наш запит можна було виразити у формі:
SELECT РОБ_РОЗМІР
FROM РОБІТНИКИ, ВІДДІЛИ
WHERE РОБ_ІМ=”Іван Іванович Іванов”
AND СОТР_ОТД_НОМ=ОТД_НОМЕР
При формулюванні запиту СКБД дозволить не замислюватись над тим, яким чином буде виконуватися цей запит. Серед безлічі її мета-даних міститиметься інформація про те, що поле РОБ_ІМ є ключовим для файлу співробітники, а ВІД_НОМ - ключовим для файлу ВІДДІЛИ, і система сама скористається цим.