<!-- <!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>