СУБД LibreOffice Base

566 views
Skip to first unread message

Володимир Бондаренко

unread,
Feb 7, 2016, 6:20:31 AM2/7/16
to Комп'ютерний клуб "Вільна антилопа"
Перед викладанням теми "Системи управління базами даних. Бази даних" з використанням відкритого програмного забезпечення учитель має ознайомитися із системою управління базами даних LibreOffice Base.
В процесі ознайомлення ми зрозуміємо, що відмінність цієї СУБД від Microsoft Office Access полягає не лише у відмінності форматів файлів БД, але й певною мірою у філософії. Оскільки Access є закритим (пропрієтарним) програмним продуктом, то її творці розраховують, що їх бази даних зможуть бути використані лише із даною СУБД. Розробники ж LibreOffice Base орієнтувалися і на те, що з даною СУБД зможуть використовуватися і файли даних інших систем, наприклад, MySQL.
Звідси і відмінність у принципах роботи. У більшості сучасних реляційних БД таблиці є основою зберіганні інформації. Access же еволюціонувала до того, що таблиці стали на додачу до сховища даних ще й елементом інтерфейсу. Ось тому у таблицях  Access стало можливим використання так званих підстановок - випадаючих списків із значеннями, що зберігаються у інших таблицях. При цьому режим конструктора передбачає досить простий інструмент створення такої підстановки - настільки простий, що інколи користувач не зовсім розуміє принципи використання таких підстановок.
Якщо ж розглядати в цьому плані таблиці Base, то тут вони розглядаються саме як частина структури бази даних, але зовсім не як елемент інтерфейсу. Основним елементом інтерфейсу все ж вважається форма. Саме тому у Base створюється спочатку структура бази даних (проектуються таблиці, визначаються у них ключові поля, встановлюються зв’язки між таблицями через ключові поля, створюються форми), а потім данні через форми вводяться у базу і розподіляються між потрібними таблицями.
Далі розглянемо основні моменти, на які слід звернути увагу при створенні бази даних.

Володимир Бондаренко

unread,
Feb 7, 2016, 6:34:42 AM2/7/16
to Комп'ютерний клуб "Вільна антилопа"
Отже, обговоримо використання ключових полів.
Якщо в базі даних передбачено використання зв’язаних таблиць, то слід забезпечити ключові поля у цих зв’язаних таблицях одного і того ж типу. Ми рекомендували би використовувати штучно створене числове поле із автоінкрементом (збільшенням значення на 1 при додаванні нового запису). У такому випадку наша таблиця може виконувати роль довідника для підстановок значень у іншу таблицю. У іншій (цільовій) таблиці має бути передбачене поле такого ж типу (але без автоінкременту) аби повідомити з якого рядка (запису) таблиці-довідника використати інформацію.
Розглянемо для прикладу створення бази даних для складу. Зрозуміло, що це навчальна база даних, тому наразі розглянемо лише дві сутності із даної предметної області: товар та одиниця зберігання. Для кожної з них слід створити окрему таблицю, при чому таблиця одиниць зберігання буде виконувати роль довідника і структура її буде дуже простою: ключове поле з автоінкрементом, назва одиниці зберігання та скорочення цієї назви.

Володимир Бондаренко

unread,
Feb 7, 2016, 11:01:08 AM2/7/16
to antilo...@googlegroups.com
Створити  таблицю у СУБД Base можна у два способи:
  • створити таблицю у режимі дизайну - відповідає режиму конструктора у Access
  • використати помічника - набрати поля із таблиць-заготовок

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

Радимо все ж надати перевагу створенні таблиці у режимі дизайну.

Саме в цьому режимі ми можемо вказати назву поля, обрати тип даних для нього та вказати ключове поле:

Для визначення поля в якості ключового можна використати контекстне меню заголовка рядка структури (клацання правою кнопкою миші на значку зеленого трикутничка) та обрати у контекстному меню пункт "первинний ключ):

Аби забезпечити автоінкремент значень цього поля у випадаючому списку "Автовизначення" слад обрати "Так":

Після визначення усіх полів сутності "Одиниці виміру" таблиця матиме таку структуру:

Auto Generated Inline Image 1
Auto Generated Inline Image 2
Auto Generated Inline Image 3
Auto Generated Inline Image 1

Володимир Бондаренко

unread,
Feb 7, 2016, 11:36:28 AM2/7/16
to Комп'ютерний клуб "Вільна антилопа"
Створимо іншу таблицю, яка описуватиме сутність "Товар".
Знову для первинного ключа створимо штучне поле з автоінкрементом. Усі інші поля інтуїтивно зрозумілі. Звернемо увагу на поле "Одиниця виміру". Не доцільно вводити текстове значення для кожного запису таблиці товар - це призведе до надлишковості даних у нашій базі. Текстова інформація займає значно більше пам’яті, ніж числова. Саме тому ми створили таблицю-довідник із одиницями виміру та їх кодами. Тому поле "Одиниці виміру" у таблиці "Товар" визначимо як числове ціле - у нього будемо вносити лише коди одиниць виміру із відповідної таблиці-довідника.
Структура таблиці "Товари" буде виглядати так:

Auto Generated Inline Image 1

Володимир Бондаренко

unread,
Feb 7, 2016, 12:00:26 PM2/7/16
to Комп'ютерний клуб "Вільна антилопа"
Отже, коли таблиці спроектовано, можна встановити між ними зв’язок.
Для цього використовуємо інструмент "Зв’язки", який доступний через рядкове меню "Засоби":

Щоб використовувати цей інструмент, слід додати у нього усі таблиці, для яких слід встановити зв’язки:

Після додавання таблиці будуть не зв’язаними. Для встановлення зв’язку слід ключове поле таблиці-довідника перетягнути мишею на поле, в яке буде здійснено підстановку:

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

Після цього зв’язок можна вважати встановленим і засіб "Зв’язки" можна закрити.
Теоретично, можна вже вводити дані - спочатку у таблицю-довідник, а потім у "головну" таблицю. Але, як уже згадувалося вище, бажано для роботи з даними у базі використовувати форми. Отже, у нашій базі даних матимемо дві форми: для створення та редагування довідника та для створення, редагування та перегляду основної таблиці.
Auto Generated Inline Image 1
Auto Generated Inline Image 2
Auto Generated Inline Image 3
Auto Generated Inline Image 4

Володимир Бондаренко

unread,
Feb 7, 2016, 12:38:32 PM2/7/16
to Комп'ютерний клуб "Вільна антилопа"
При створенні форм, на відміну від створення таблиць, краще використовувати помічника.
Спочатку створимо дуже просту форму для таблиці-довідника та введемо декілька значень.
Спочатку оберемо таблицю, для роботи з якою буде створена форма та поля, які будуть при роботі важливі. Оскільки штучне поле, яке ми створили для первинного ключа, формуватиметься через автоінкремент, то його додавати на форму не має сенсу:

Для додавання полів на форму використовуйте кнопку ">". Якщо потрібно додати усі поля, то клацніть по кнопці ">>".
За допомогою кнопки "Далі" проходимо кроки помічника аж до вибору розташування елементів керування на формі. На цьому кроці у нашому випадку краще обрати стиль назви полів над значеннями:

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


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


Auto Generated Inline Image 1
Auto Generated Inline Image 2
Auto Generated Inline Image 3
Auto Generated Inline Image 4

Володимир Бондаренко

unread,
Feb 8, 2016, 4:25:25 AM2/8/16
to antilo...@googlegroups.com
Отже, попередній пост був присвячений створенню простої форми, через яку можна переглядати та вводити дані таблиць-довідників.
Вище вже згадувалося про те, що введення даних у таблиці з підстановками краще з використанням форм. При чому це ефективніше і зручніше робити з використанням елементу керування "список", в якому можна обрати одне із значень з таблиці-довідника. Зрозуміло, що прийоми створення форми з такими елементами керування дещо відрізняються від тих прийомів, які ми розглядали вище.
По-перше, перед створенням форми слід привести до відповідних умов подання таблиць (якщо це необхідно).
По-друге, після використання помічника у створенні форми її потрібно буде відредагувати та переконатися у правильності обраних параметрів елементів керування.
Розглянемо створення форми з підстановками детальніше.
При створенні основної таблиці (Товари) ми вже визначилися, що у ній одне з полів буде числовим, яке вказуватиме на ключове поле таблиці-довідника (ОдВиміру), через яке можна визначити конкретне текстове значення. Створюючи таблицю-довідник ми встановили ключове поле найпершим у списку полів. Але для організації підстановки треба, щоб ключове поле було останнім у списку полів. Що ж робити? Невже треба відредагувати таблицю? Це ж буде проблематично, особливо коли вже встановлені зв’язки між таблицями. Ось тепер нам стане в нагоді представлення, яке ми можемо створити у секції "Таблиці" бази даних.
Після того, як ми оберемо створення представлення, відкриється діалог, у якому ми можемо додати таблиці для вибору полів з них. Додамо таблицю "ОдВиміру":


Після цього додамо поля, які нам будуть потрібні, виконуючи по ним подвійне клацання мишею. Нагадуємо, що додаємо назву та ID, причому ключове поле має бути останнім - це важливо для створення форми з підстановкою:

Після вибору полів зберігаємо представлення та закриваємо конструктор.
Можна переконатися, що представлення містить обрану нами інформацію і в потрібному нами порядку, відкривши створений нами об’єкт:

Отже, представлення готове - можна приступати до створення форми з підстановкою. Створюємо форму традиційним способом - у режимі помічника можна просто додати усі поля таблиці "Товари".
Як видно, у поле "Одиниці виміру" виведено числове значення ключового поля, а не текстове значення із таблиці-довідника. Тепер створену автоматично форму можна закрити, бо наступним кроком буде її редагування у конструкторі (дизайнері). Для цього у контекстному меню нової форми обираємо пункт "Змінити":


Тепер у редакторі форм ми можемо вносити зміни у графічні елементи керування:

Редагування форми за принципами дуже схоже на редагування форми у візуальних середовищах програмування. Проте можна помітити, що деякі елементи керування згруповані - назви та значення полів об’єднані. Нам же потрібно працювати окремо з полем: замість текстового поля "Одиниця виміру" слід вставити список. Для розгрупування об’єктів слід виконати по потрібному об’єкту клацання, утримуючи клавішу Ctrl.
Отже, виділимо таким чином згадане текстове поле і знищимо його. Тепер нам слід переконатися, що у редакторі форм увімкнено режим помічника - натиснена кнопка із зображенням чарівної палички:


Далі - обираємо для додавання елемент "Список":

Малюємо його на формі замість вилученого елемента. Як тільки припинимо малювання, відкриється діалог помічника (завдяки увімкненому нами режиму). На першому кроці - обираємо таблицю-довідник. Оскільки ми вирішили використовувати представлення, то обираємо його:

На другому кроці обираємо поле, значення якого будемо підставляти:

На третьому кроці обираємо відповідність одного поля іншому і натискаємо кнопку "Завершити":

Якщо у доданому нами списку відсутній елемент для розкривання списку, тоді треба у його контекстному меню обрати "Елемент керування" та на вкладці "Загальні встановити значення "Розкривний" - "Так":


Після цього редактор форм можна закрити і випробувати роботу форми з випадаючим списком.
Auto Generated Inline Image 1
Auto Generated Inline Image 7
Auto Generated Inline Image 8
Auto Generated Inline Image 9
Auto Generated Inline Image 1
Auto Generated Inline Image 2
Auto Generated Inline Image 3
Auto Generated Inline Image 1
Auto Generated Inline Image 2
Auto Generated Inline Image 3
Auto Generated Inline Image 4
Auto Generated Inline Image 5
Auto Generated Inline Image 6

Володимир Бондаренко

unread,
Feb 26, 2016, 4:32:39 AM2/26/16
to Комп'ютерний клуб "Вільна антилопа"
А про запити у СУБД LibreOffice Base пропоную почитати тут
Reply all
Reply to author
Forward
0 new messages