<!--
  <!DOCTYPE appendix PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd">
-->

<appendix id="database">
<title
>Вступ до баз даних</title>

<sect1 id="what-is-a-database">
<title
>Що таке база даних?</title>
<para
>Базу даних можна визначити як збірку даних з певної теми. Цю збірку певним чином впорядковано, що спрощує перегляд інформації, внесення змін та додавання нових записів. </para>
<para
>На діаграмі наведено один з прикладів, про який ми говорили раніше: проста телефонна книга. </para>
<screenshot>
  <screeninfo
>Діаграма бази даних телефонних номерів</screeninfo>
    <mediaobject>
        <imageobject>
            <imagedata fileref="contact-example.png" format="PNG"/>
        </imageobject>
        <textobject>
            <phrase
>Діаграма бази даних телефонних номерів</phrase>
        </textobject>
    </mediaobject>
</screenshot>
<para
>На наведеному вище малюнку показано набір з двох записів контактів, кожен з яких зображено як окрему картку. Зрозуміло, що такій картці можна поставити у відповідність окремий рядок таблиці: </para>

<para
><emphasis
>Таблиця <guilabel
>Контакти</guilabel
></emphasis
></para>
<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry
><guilabel
>Ім’я</guilabel
></entry>
<entry
><guilabel
>Номер телефону</guilabel
></entry>
</row>
<row>
<entry
>Джоан</entry>
<entry
>699 23 43 12</entry>
</row>
<row>
<entry
>Адам</entry>
<entry
>711 19 77 21</entry>
</row>
</tbody>
</tgroup>
</informaltable>

<para
><emphasis
>Терміни та визначення</emphasis
>: окремий елемент даних, що є частиною більшої збірки можна назвати <firstterm
>рядком</firstterm
> або, якщо сказати професійніше, <firstterm
>записом</firstterm
>. Сама збірка записів називається <firstterm
>таблицею</firstterm
>. Крім того, найприроднішою назвою для такої таблиці є та назва, яка описує дані, що зберігаються у таблиці, тобто <guilabel
>Контакти</guilabel
>. Крім того, кожен з рядків таблиці складається зі <firstterm
>стовпчиків</firstterm
>, які часто називають <firstterm
>полями</firstterm
>. У таблиці <guilabel
>Контакти</guilabel
> два стовпчики (поля): <guilabel
>Ім’я</guilabel
> і <guilabel
>Номер телефону</guilabel
>. </para>
<para
>У простих випадках <firstterm
>база даних</firstterm
> складається з єдиної таблиці. Багато хто вважає, що база даних — це і є одна таблиця. Як ми згодом переконаємося, для створення справжніх баз даних, зазвичай, потрібно декілька таблиць. </para>
<para
>Ну от, у нас вже є проста база даних з одною таблицею <guilabel
>Контакти</guilabel
>. </para>
</sect1>


<sect1 id="database-and-spreadsheet">
<title
>База даних і електронна таблиця</title>
<para
>Дуже ймовірно, ви вже колись користувалися програмами для роботи з електронними таблицями, зокрема KSpread, OpenOffice.org Calc або Microsoft Excel. Якщо це так, ви певно могли подумати: гаразд, у електронних таблицях і у базах даних є таблиці, навіщо ж користуватися останніми? </para>
<para
>Порівнюючи електронні таблиці і бази даних ви можете зіткнутися з такими питаннями (пізніше ми розглянемо ці питання докладніше): </para>
<itemizedlist>
<listitem
><para
><link linkend="referential-data-integrity"
>Цілісність довідкових даних</link
></para
></listitem>
<listitem
><para
><link linkend="data-redundyncy"
>Резервування даних</link>
</para
></listitem>
<listitem
><para
><link linkend="data-integrity-and-validity"
>Цілісність і коректність даних</link
></para
></listitem>
<listitem
><para
><link linkend="data-limiting"
>Обмеження перегляду даних</link
></para
></listitem>
<listitem
><para
><link linkend="performance-and-capacity"
>Швидкодія і місткість</link
></para
></listitem>
<listitem
><para
><link linkend="convenient-data-entry"
>Зручність запису даних</link
></para
></listitem>
<listitem
><para
><link linkend="reports"
>Звіти</link
></para
></listitem>
<listitem
><para
><link linkend="programming"
>Програмування</link
></para
></listitem>
<listitem
><para
><link linkend="multiuse"
>Доступність для декількох користувачів</link
></para
></listitem>
<listitem
><para
><link linkend="security"
>Безпека</link
></para
></listitem>
</itemizedlist>

<sect2 id="difference-database-and-spreadsheet">
<title
>Чим база даних відрізняється від електронної таблиці?</title>

<para
>Поступово розширюючи можливості мобільного телефону, додайте до вашої таблиці <guilabel
>Контакти</guilabel
> стовпчик (поле) <guilabel
>Адреса</guilabel
>. Додайте більше телефонних номерів (робочі, домашні) для кожної з осіб у списку, а також додайте до імен прізвища. Щоб це було простіше зрозуміти, зробимо такі припущення: </para>
<itemizedlist>
<listitem
><para
>кількість осіб у таблиці обмежено двома (очевидно, у справжній базі даних цих осіб можуть бути сотні або тисячі)</para
></listitem>
<listitem
><para
>осіб з однаковими іменами і прізвищами у таблиці немає</para>
</listitem>
</itemizedlist>
<para
><emphasis
>Таблиця контактів</emphasis
></para>
<informaltable>
<tgroup cols="3">
<tbody>
<row>
<entry
><emphasis
>Ім’я і прізвище</emphasis
></entry>
<entry
><emphasis
>Телефон</emphasis
></entry>
<entry
><emphasis
>Адреса</emphasis
></entry>
</row>
<row>
<entry
>Joan Smith</entry>
<entry
>699 23 43 12</entry>
<entry
>Вестерн-гейт 1, Варшава</entry>
</row>
<row>
<entry
>Adam Willson</entry>
<entry
>711 19 77 21</entry>
<entry
>London, Frogs Drive 5</entry>
</row>
<row>
<entry
>Joan Smith</entry>
<entry
>110 98 98 00</entry>
<entry
>Вестерн-гейт 1</entry>
</row>
<row>
<entry
>Smith Joan</entry>
<entry
>312 43 42 22</entry>
<entry
>Варшава, Вестерн-гейт 1</entry>
</row>
<row>
<entry
>ADAM Willson</entry>
<entry
>231 83 02 04</entry>
<entry
>Frogs Drive 5, London</entry>
</row>
</tbody>
</tgroup>
</informaltable>

<para
>Подібну таблицю можна створити як у формі електронної таблиці, так і у формі бази даних. Користуватися електронною таблицею, звичайно ж, дуже просто. З якими ж проблемами ми можемо зіткнутися на цьому етапі? </para>

<sect3 id="referential-data-integrity">
<title
>Цілісність довідкових даних</title>
<para
>Припустімо, що ви користуєтеся електронною таблицею і маєте бажання змінити адресу принаймні однієї особи. З цим пов’язано невеличку проблему: вам доведеться міняти цю адресу у багатьох рядках. Наприклад, Джоан зустрічається у трьох рядках. Справжня проблема виникне, якщо ви забудете змінити один з рядків: адреса, пов’язана з однією з осіб стане <emphasis
>неоднозначною</emphasis
>, оскільки <emphasis
>ваші дані втратять цілісність</emphasis
>. </para>
<para
>Крім того, не існує простих способів вилучення даних певної особи з таблиці, оскільки для подібного вилучення слід вилучити всі пов’язані з цією особою рядки таблиці. </para>
</sect3>


<sect3 id="data-redundyncy">
<title
>Резервування даних</title>
<para
>Цю проблему безпосередньо пов’язано з попередньою. У полях <guilabel
>Ім’я та прізвище</guilabel
> та <guilabel
>Адреса</guilabel
> ті самі дані доведеться вводити декілька разів. Це типовий для електронних таблиць неефективний спосіб зберігання даних, оскільки за його використання розміри бази даних невиправдано збільшуються, а отже робота з даними вимагатиме підвищеного використання ресурсів комп’ютера (більший об’єм даних і повільніший доступ). </para>
<para
>Як можна розв’язати ці проблеми за допомогою бази даних? Ви можете розділити інформацію на менші фрагменти створенням додаткової таблиці <emphasis
>Особи</emphasis
> з лише двома стовпчиками: <guilabel
>Ім’я та прізвище</guilabel
> і <guilabel
>Адреса</guilabel
>: </para>

<para
><emphasis
>Таблиця <guilabel
>Особи</guilabel
></emphasis
></para>
<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry
><emphasis
>Ім’я і прізвище</emphasis
></entry>
<entry
><emphasis
>Адреса</emphasis
></entry>
</row>
<row>
<entry
>Joan Smith</entry>
<entry
>Вестерн-гейт 1, Варшава</entry>
</row>
<row>
<entry
>Adam Willson</entry>
<entry
>Frogs Drive 5, London</entry>
</row>
</tbody>
</tgroup>
</informaltable>

<para
>Кожен рядок у таблиці <guilabel
>Особи</guilabel
> відповідатиме <emphasis
>одній особі</emphasis
>. Віднині таблицю <guilabel
>Контакти</guilabel
> буде пов’язано або, як ще кажуть, вона стане реляційною для таблиці <guilabel
>Особи</guilabel
> . </para>

</sect3>

<sect3 id="data-integrity-and-validity">
<title
>Цілісність і коректність даних</title>
<para
>Зауважте спосіб, у який вводяться дані до полів <guilabel
>Назва і прізвище</guilabel
> та <guilabel
>Адреса</guilabel
>. Люди, які вводять дані можуть помилитися, а іноді є просто неуважними. У даних нашого прикладу у обох полях даних імені та прізвища можна використати різні послідовності імені і прізвища (Джоан Сміт і Сміт Джоан; Адам і АДАМ та багато інших варіантів). </para>
<para
>Наведена вище проблема демонструє те, що, наприклад, пошук номеру телефону особи з адресою «Вестерн-гейт 1, Варшава» не дасть вам повних результатів. Ви отримаєте лише один рядок з трьох можливих. Крім того, ви не знайдете всіх телефонних номерів, якщо шукатимете за ключовими словами «Джоан Сміт» у полі <guilabel
>Ім’я та прізвище</guilabel
>, оскільки запис «Сміт Джоан» не відповідає ключу пошуку «Джоан Сміт». </para>
<para
>Як же розв’язати ці проблеми за допомогою бази даних? Ви можете виконати це завдання зміною компонування таблиці <guilabel
>Особи</guilabel
> у такий спосіб: </para>
<orderedlist>
<listitem
><para
><emphasis
>Поділити дані</emphasis
> у полі <guilabel
>Ім’я і прізвище</guilabel
> на два окремих поля: <guilabel
>Ім’я</guilabel
> і <guilabel
>Прізвище</guilabel
>. </para
></listitem>
<listitem
><para
><emphasis
>Поділити дані</emphasis
> у полі <guilabel
>Адреса</guilabel
> між трьома окремими полями: <guilabel
>Вулиця</guilabel
>, <guilabel
>Номер будинку</guilabel
> і <guilabel
>Місто</guilabel
>. </para
></listitem>
<listitem
><para
><emphasis
>Забезпечити коректність даних:</emphasis
> програма має переконатися, що жодне з полів не є порожнім, наприклад, ви завжди маєте вказувати номер будинку. </para
></listitem>
</orderedlist>

<para
>Змінена таблиця виглядає десь так: </para>

<para
><emphasis
>Таблиця осіб</emphasis
></para>
<informaltable>
<tgroup cols="5">
<colspec colnum="1" colname="c1"
></colspec>
<colspec colnum="2" colname="c2"
></colspec>
<colspec colnum="3" colname="c3"
></colspec>
<colspec colnum="4" colname="c4"
></colspec>
<colspec colnum="5" colname="c5"
></colspec>
<tbody>
<row>
<entry
><emphasis
>Ім’я</emphasis
></entry>
<entry
><emphasis
>Прізвище</emphasis
></entry>
<entry
><emphasis
>Вулиця</emphasis
></entry>
<entry
><emphasis
>Номер будинку</emphasis
></entry>
<entry
><emphasis
>Місто</emphasis
></entry>
</row>
<row>
<entry
>Джоан</entry>
<entry
>Сміт</entry>
<entry
>Вестерн-гейт</entry>
<entry
>1</entry>
<entry
>Варшава</entry>
</row>
<row>
<entry
>Адам</entry>
<entry
>Вілсон</entry>
<entry
>Фроґс-драйв</entry>
<entry
>5</entry>
<entry
>Лондон</entry>
</row>
<row>
<entry namest="c1" nameend="c5"
><emphasis
>Умови</emphasis
></entry>
</row>
<row>
<entry
>обов’язкове поле</entry>
<entry
>обов’язкове поле</entry>
<entry
>обов’язкове поле</entry>
<entry
>обов’язкове поле</entry>
<entry
>обов’язкове поле</entry>
</row>
</tbody>
</tgroup>
</informaltable>

<para
>Завдяки введенню умови <guilabel
>обов’язкове поле</guilabel
> ми можемо забезпечити повноту введення даних. У інших таблицях ви можете, звичайно ж, пропустити деякі поля під час введення даних. </para>

</sect3>

<sect3 id="data-limiting">
<title
>Обмеження перегляду даних</title>
<para
>У електронних таблицях всі рядки і стовпчики таблиці показано у дещо важкій для сприйняття формі, особливо у таблицях, що містять дуже великий обсяг даних. Ви, звичайно ж, можете фільтрувати і впорядковувати рядки у електронній таблиці, але вам слід бути дуже обережним з такими діями. Користувачі електронних таблиць ризикують забути, що дані, які вони переглядають, було фільтровано, що може призвести до помилок. Наприклад, під час обчислення сум ви можете вважати, що у таблиці 100 рядків з даними, а насправді, у ній міститься ще 20 прихованих рядків. </para>
<para
>Якщо вам потрібно попрацювати над невеличкою підмножиною даних, наприклад, надіслати її іншим користувачам для редагування, ви можете скопіювати частину електронної таблиці і вставити її до іншої електронної таблиці, а після редагування вставити змінені дані назад до основної електронної таблиці. Подібне «ручне» редагування може спричинити втрату даних або помилку у обчисленнях. </para>
<para
>Для обмеження кількості записів у <emphasis
>перегляді даних</emphasis
> у програмах для роботи з базами даних передбачено <emphasis
>запити</emphasis
>, <emphasis
>форми</emphasis
> і <emphasis
>звіти</emphasis
>. </para>
<para
>Дуже практичний спосіб обмеження показаних даних розширеної версії описаної раніше таблиці <guilabel
>Особи</guilabel
>: </para>

<para
><emphasis
>Таблиця осіб</emphasis
></para>
<informaltable>
<tgroup cols="6">
<tbody>
<row>
<entry
><emphasis
>Ім’я</emphasis
></entry>
<entry
><emphasis
>Прізвище</emphasis
></entry>
<entry
><emphasis
>Вулиця</emphasis
></entry>
<entry
><emphasis
>Номер будинку</emphasis
></entry>
<entry
><emphasis
>Місто</emphasis
></entry>
<entry
><emphasis
>Прибуток</emphasis
></entry>
</row>
<row>
<entry
>Джоан</entry>
<entry
>Сміт</entry>
<entry
>Вестерн-гейт</entry>
<entry
>1</entry>
<entry
>Варшава</entry>
<entry
>2300</entry>
</row>
<row>
<entry
>Адам</entry>
<entry
>Вілсон</entry>
<entry
>Фроґс-драйв</entry>
<entry
>5</entry>
<entry
>Лондон</entry>
<entry
>1900</entry>
</row>
</tbody>
</tgroup>
</informaltable>

<para
>Припустімо, ви додали новий стовпчик <guilabel
>Прибутки</guilabel
>, що містить конфіденційні дані. Як тепер поділитися записом контакту з вашими колегами, не <emphasis
>розкриваючи даних щодо прибутків</emphasis
>? Це можна зробити, якщо <emphasis
>ви надасте їм лише результати запиту, а не цілу таблицю</emphasis
>. У запиті можна обрати всі стовпчики, окрім стовпчика <guilabel
>Прибуток</guilabel
>. У галузі роботи з базами даних такі запити часто називають <guilabel
>переглядами</guilabel
>. </para>

</sect3>

<sect3 id="performance-and-capacity">
<title
>Швидкодія і місткість</title>
<para
>Навіть якщо ваш комп’ютер є досить потужним, ви зможете легко помітити, що всієї його потужності не вистачить на роботу з повільними великими електронними таблицями. Основною причиною малоефективної роботи з електронними таблицями є відсутність покажчиків, які б пришвидшували пошук даних (у базах даних такі покажчики є). Крім того, якщо ви користуєтеся інструментами на зразок буфера обміну даними, навіть копіювання даних у електронній таблиці іноді може бути досить довготривалою дією. </para>
<para
>Відкриття електронної таблиці, де міститься величезний обсяг даних, може тривати дуже довго. Під час відкриття з електронної таблиці до оперативної пам’яті вашого комп’ютера завантажується досить багато даних. Більша частина цих даних, ймовірно, не знадобиться або і зовсім не потрібна вам для роботи з таблицею. На відміну від електронних таблиць, у базах даних дані завантажуються зі сховища у оперативну пам’ять лише у разі потреби. </para>
<para
>Здебільшого у вас немає причин перейматися тим, як саме дані зберігаються у базі даних. Це означає, що на відміну від електронних таблиць, у базах даних не потрібно знайти про: </para>
<itemizedlist>
<listitem
><para
>Послідовність рядків, оскільки ви можете впорядкувати рядки відповідно до ваших потреб. Крім того, ви можете переглянути одні і ті самі дані у різний спосіб у різному порядку. </para
></listitem>
<listitem
><para
>Те саме стосується стовпчиків (полів) таблиці. </para
></listitem>
</itemizedlist>

<para
>Разом з <link linkend="data-limiting"
>обмеженням показаних даних</link
>, описаним у попередньому розділі, ці якості і визначають переваги баз даних. </para>

</sect3>

<sect3 id="convenient-data-entry">
<title
>Запис даних</title>
<para
>У сучасних версіях програм для створення електронних таблиць передбачено можливості розробки форм запиту даних. Такі форми корисні, якщо дані не може бути показано у зручний спосіб у табличній формі, наприклад, якщо у таблиці є рядки з великими фрагментами тексту або всі стовпчики не вміщуються у вікні. </para>
<para
>У такому разі вся робота з електронною таблицею буде проблематичною. Поля для введення даних буде досить широко рознесено електронною таблицею. Дуже часто такі поля не буде убезпечено від (навмисного чи ненавмисного) втручання користувачів. </para>
</sect3>

<sect3 id="reports">
<title
>Звіти</title>
<para
>У базах даних можливе групування, обмеження та підбиття підсумків щодо даних у формі <emphasis
>звіту</emphasis
>. Електронні ж таблиці зазвичай друкуються як невеличкі таблички без автоматичного керування розбиттям на сторінки та компонування полів. </para>
</sect3>

<sect3 id="programming">
<title
>Програмування</title>
<para
>У програмах для створення баз даних часто передбачено можливість використання повноцінних мов програмування. У сучасних електронних таблицях також передбачено таку можливість, але за допомогою методів електронних таблиць можна здебільшого змінювати вміст полів електронної таблиці і виконувати просте копіювання даних без врахування правил відповідності та цілісності, про які ми говорили раніше. </para>
<para
>Обробка даних у електронній таблиці, зазвичай, виконується за допомогою графічного інтерфейсу користувача, що може сповільнити обробку даних. Бази даних здатні працювати у фоновому режимі без графічних інтерфейсів. </para>
</sect3>

<sect3 id="multiuse">
<title
>Доступність для декількох користувачів</title>
<para
>Важко собі уявити спільне користування одною електронною таблицею декількома користувачами одночасно. Навіть якщо це технічно можливо у сучасних програмах, подібне користування потребує від користувачів дисциплінованості, уваги і знань, а цього гарантувати аж ніяк не можна. </para>
<para
>Класичним способом спільного використання даних електронної таблиці є надсилання цілого файла з нею (зазвичай, електронною поштою) або відкриття доступу до файла електронної таблиці у комп’ютерній мережі. Цей спосіб виявляється малоефективним, якщо йдеться про великі групи людей: дані, які потрібні вже зараз, може бути заблоковано внаслідок того, що зараз ними користується хтось інший. </para>
<para
>З іншого ж боку, бази даних і було розроблено для одночасного користування багатьма користувачами.  Навіть у найпростішій версії бази даних можливе блокування лише окремого рівня рядка таблиці, що спрощує спільне використання даних таблиці. </para>
</sect3>

<sect3 id="security">
<title
>Безпека</title>
<para
>Убезпечення електронної таблиці або її окремих розділів за допомогою пароля є лише символічною дією. Після того, як доступ до вашого файла буде відкрито у комп’ютерній мережі, будь-хто зможе скопіювати файл і спробувати зламати пароль. Здебільшого подібний злам не є аж надто важким, якщо пароль зберігається у самому файлі електронної таблиці. </para>
<para
>Блокування редагування або копіювання у електронній таблиці (або її частині) так само легко усунути. </para>
<para
>Для функціонування бази даних (окрім тих, які зберігаються у файлі, а не на сервері) не потрібне зберігання у окремому файлі, доступ до якого слід надавати користувачам. Користувачі отримують доступ до даних за допомогою комп’ютерної мережі, для чого, зазвичай, слід вказати ім’я користувача і пароль. Ви отримаєте доступ лише до тих даних (таблиць, форм або навіть вибраних рядків та стовпчиків), доступ до яких було відкрито за допомогою визначення відповідних прав доступу. </para>
<para
>Права доступу можуть стосуватися як редагування даних, так і їх читання. Якщо якісь дані вам недоступні, ці дані не буде надіслано на ваш комп’ютер, отже у вас не буде змоги зробити їх копію, подібну до копії файлів електронних таблиць. </para>

</sect3>
</sect2>
</sect1>

<sect1 id="database-design">
<title
>Компонування бази даних</title>
<para
>Компонування бази даних потребує ретельного планування. Зауважте, що зміна компонування таблиці <guilabel
>Контакти</guilabel
>, запропонована у розділі 1.2, може призвести до виникнення проблем, якщо таблицю вже заповнено даними. Наприклад, перейменування поля є простим завданням, але розбиття поля <guilabel
>Адреса</guilabel
> на окремі поля потребує ретельного виконання певної нудної роботи. </para>
<para
>Щоб уникнути подібних ускладнень, <emphasis
>обдумайте проект вашої бази даних</emphasis
> до її створення на комп’ютері і до того, як ви та інші користувачі почнуть нею користуватися. Таким чином, приділивши компонуванню таблиці певний час до її створення, ви, ймовірно, зекономите час під час щоденного використання цієї бази даних. </para>
</sect1>

<sect1 id="who-needs-a-database">
<title
>Кому потрібні бази даних?</title>
<itemizedlist>
<title
>Зверніться до електронних таблиць, якщо:</title>
<listitem
><para
>Ваші потреби є досить обмеженими, а об’єм ваших даних ніколи не буде значним (ви можете це точно знати?) </para
></listitem>
<listitem
><para
>Вам не вдається осягнути методологію побудови баз даних. Але ви можете перекласти це завдання на когось іншого або скористатися простішими інструментами. </para
></listitem>
<listitem
><para
>Ви користуєтеся складними електронними таблицями і не маєте часу або грошей, щоб перейти на бази даних. Обдумайте перехід або порадьтеся з кимось компетентним, щоб не наробити лиха. Не покладайтеся на магічні інструменти, які перетворять вашу електронну таблицю (байдуже якої якості) на базу даних. </para
></listitem>
</itemizedlist>

<itemizedlist>
<title
>Використовуйте бази даних, якщо:</title>
<listitem
><para
>Ваша збірка даних зростає кожного тижня.</para
></listitem>
<listitem
><para
>Вам часто доводиться створювати електронні таблиці, копіюючи до них багато даних, і вам здається, що ця робота стає все нуднішою. У такому разі перехід на роботу з базами даних дуже швидко себе виправдає. </para
></listitem>
<listitem
><para
>Ви створюєте звіти та бюлетені, які виходять за межі можливостей електронних таблиць. У такому разі вам слід спробувати скористатися базою даних з формами. </para
></listitem>
</itemizedlist>
</sect1>

<sect1 id="database-software">
<title
>Програмне забезпечення для створення баз даних</title>
<para
>Досі ми обговорювали лише загальні характеристики баз даних без заглиблення у подробиці щодо спеціальних програм для компонування таких баз даних. </para>
<para
>Перші бази даних було створено на великих комп’ютерах 60-их років минулого століття, наприклад, на IBM System/360. Це були часи, коли персональних комп’ютерів ще не було, отже обслуговування таких баз даних потребувало високоспеціалізованого персоналу. Хоча тодішнє комп’ютерне обладнання було ненадійним, комп’ютери були незрівнянно повільнішими і мали набагато менший обсяг пам’яті, ніж сучасні, у баз даних вже тоді була беззаперечна перевага: можливість одночасного доступу до них багатьох користувачів за допомогою мережі. </para>
<para
>У 1970-их роках науковці розробили теорію реляційних баз даних (зокрема терміни <firstterm
>таблиця</firstterm
>, <firstterm
>запис</firstterm
>, <firstterm
>стовпчик (поле)</firstterm
> і <firstterm
>реляційність</firstterm
> та багато інших). На цій основі було створено бази даних IBM DB2 і Oracle, які розвиваються і використовуються і до сьогодні. Наприкінці 1970-их з’явилися перші персональні комп’ютери (ПК). Поступово їх користувачі отримали доступ до багатьох типів програмного забезпечення, зокрема і до баз даних. </para>
<para
>Якщо йдеться про великі бази даних компаній, ситуація не змінилася: для їх роботи потрібні потужні комп’ютери або комп’ютерні комплекси, які називають <firstterm
>кластерами</firstterm
>. Але ця тема вже виходить за межі питань, які ми висвітлюємо у цьому підручнику. </para>
<para
>Серед «доступних» баз даних з графічним інтерфейсом, призначених для роботи на ПК ви можете обрати одну з таких: </para>

<itemizedlist>
<listitem
><para
><ulink url="http://www.dbase.com/"
>DBase</ulink
> — інструмент для роботи з базами даних у DOS, популярний у 1980-і. Файли у форматі DBase все ще інколи використовуються через їх простоту. </para
></listitem>
<listitem
><para
><ulink url="http://msdn.microsoft.com/vfoxpro/productinfo/overview/"
>FoxPro</ulink
> — програма, подібна до DBase (початок 1990-их). Після купівлі компанією Microsoft програма отримала графічний інтерфейс користувача, тому використовується для створення баз даних на ПК. Цей програмний продукт все ще продається, хоча вже є трохи застарілим. </para
></listitem>
<listitem
><para
><ulink url="http://office.microsoft.com/access/"
>Microsoft Access</ulink
> —  програма для роботи з базами даних (компонування даних і графічного інтерфейсу) з багатьма зручними спрощеннями, тому придатна для початківців. Цю програму розроблено наприкінці 1980-их на базі 16-бітової архітектури. Цей програмний продукт є дуже поширеним, особливо у невеликих компаніях, де ефективність і можливість одночасного користування декількома користувачами не є критичною. </para
></listitem>
<listitem
><para
><ulink url="http://www.filemaker.com/"
>FileMaker</ulink
> — популярна програма, подібна за простотою до MS Access, працює на платформах Windows і Macintosh, продається з 1985 року. </para
></listitem>
<listitem
><para
><ulink url="http://www.kexi.pl/"
>&kexi;</ulink
> — програма, що може працювати на багатьох платформах (Unix/Linux, Windows, Mac OS X), створена у 2003 році. Розробка цієї програми проводиться у межах принципів відкритого програмного забезпечення. Програма є частиною <ulink url="http://www.kde.org/"
>стільничного середовища KDE</ulink
>, тобто графічного робочого середовища для систем Unix/Linux. Значний внесок у розробку &kexi; зроблено польською компанією OpenOffice. </para
></listitem>
</itemizedlist>

</sect1>

</appendix>
