BDE має унікальну здатність виконувати запити до таблиць, що знаходиться на різних серверах БД (чи до таблиць різних форматів). Це так звані "гетерогенні" (або "розподілені") запити, тому що дані "розподілені" по різних БД можливо того самого SQL-сервера.
Виконати гетерогенний запит можна у такий спосіб:
1. Розташувати на формі, приєднати для відповідних БД декілька компонентів Database і відкрити з’єднання з ними (мал. 1).
2. Створити і відкрити Database, який приєднаний до драйвера типу STANDARD (тобто до локальних таблиць).
3. Виконати запит у компоненті Query, приєднаній до "стандартного" Database:
SELECT C.CLIENT_NAME
FROM ":A:CLIENTS" C, ":B:EMPLOYEE" E
WHERE E.EMP_NO = C.CLIENT_ID
Використовуючи інтерфейс BDE, розроблювач додатку може використовувати SQL для злиття (join) таблиць з різних наборів даних (наприклад, з таблиць Paradox, InterBase і Sybase) одним SQL-запитом із використанням «аласів», наприклад:
FROM ':Local_alias:customer.db' C, ':IB_alias:order' O, ':SYB_alias:lineitem' I
WHERE (O.Cust_No = C.Cust_No) AND (O.Order_No = I.Order_No)
Подібні запити виконуються у такий спосіб:
1. Ядро Local SQL "розбирає" запит і з'ясовує, які таблиці з яких БД використовуються у запиті
2. Дані з кожної таблиці витягаються у локальний «кеш» (тобто до клієнта) чи у пам'ять тимчасові таблиці.
3. Витягнуті дані обробляються локальним SQL (joіn, where, order by і т.ін.).
Запитання до контрольного заходу за модулем 3:
Дайте означення терміну «подання». В яких випадках використовується подання?
Які існують правила присвоєння імен стовпцям подання?
Напишіть команду створення подання, що містить прізвище автора, назви книг, прізвище редактора та ціни на книги, вартість яких перевищує середнє значення цін всіх книг.
Які оператори керують правами доступу до бази даних?
Яким чином здійснюється обробка трансакцій?
Що означає посилальна цілісність в термінах бази даних?
Які можливості забезпечують тригери?
Який механізм призначений для створення послідовного унікального номера в стовпцях таблиці?
Які правила використання прикладного програмування SQL? Як називаються програми, що написані мовою процедур і тригерів СУБД?
Що розуміють під гетерогенним запитом?
Практичні завдання для виконання лабораторних робіт
Лабораторна робота № 1. Спроектувати бази даних згідно варіанту. Визначити таблиці та типи даних в них.
1. “Видавництво”. Містить інформацію про: книги, їх авторів, редакції, тираж, рівні продажу, деталі продажу, контракти.
2. “Вантажоперевезення”. Містить інформацію про: автомобілі, водіїв, замовників, контракти, замовлення, пункти призначення.
3. “Бібліотека”. Містить інформацію про: книги, їх авторів, поступлення, наявність, вибуття, відділи, абонементи.
4. “Відділ кадрів”. Містить інформацію про: відділи, посади, працівників, оклади, нарахування заробітної плати.
5. “Облік основних засобів”. Містить інформацію про: матеріально-відповідальних осіб, відділи, основні засоби, їх вартість, дати вводу в експлуатацію, передачу, списання.
6. “Абітурієнт”. Містить інформацію про: індивідуальні дані абітурієнтів, факультети, спеціальності ВНЗ, результати вступних іспитів.
7. “Туристичне агентство”. Містить інформацію про: туристичні маршрути, санаторії та бази відпочинку, замовників, замовлення, пункти призначення, дати виїзду та прибуття, вартість, наявність вакантних путівок.
8. “Студент”. Містить інформацію про: індивідуальні дані студентів, факультети, спеціальності ВНЗ, предмети та дисципліни, що вивчаються, викладачів, результати сесій.
9. “Відділ постачання”. Містить інформацію про: працівників відділу, складські приміщення, постачальників, розрахунки з постачальниками, контракти, сировину та матеріали, їх вартість, дату отримання та передачу у виробництво.
10. “Складський облік”. Містить інформацію про: постачальників, контракти, сировину, матеріали та напівфабрикати, їх вартість, дату отримання, передачу у виробництво, отримання готової продукції, передачу в реалізацію.
11. “Відділ збуту”. Містить інформацію про: працівників відділу, складські приміщення, покупців, розрахунки з покупцями, контракти, готову продукцію, дату відвантаження.
12. “Облік на підприємстві громадського харчування”. Містить інформацію про: працівників, постачальників, придбання сировини та товарів, виробництво готової продукції, їх вартість, реалізацію.
13. “Аптека”. Містить інформацію про: склади, постачальників, лікарські засоби, їх вартості, реалізацію.
14. “Каси авіакомпанії”. Містить інформацію про: рейси, пункти призначення, час відправлення та прибуття, наявність квитків, дані про пасажирів.
15. “Облік у торгівлі”. Містить інформацію про: працівників, постачальників, контракти, склади, магазини, придбання товарів, їх вартості, реалізацію.
16. “Спортивні змагання”. Містить інформацію про: індивідуальні дані спортсменів, їх результати, види спорту.
17. “Облік будівельного виробництва”. Містить інформацію про: працівників, постачальників, матеріали, контракти, замовників, виконані будівельно-монтажні роботи, здачу підрядних робіт та їх вартість..
18. “Облік ТМЦ (товарно-матеріальних цінностей)”. Містить інформацію про: відділи, ТМЦ, їх вартість, постачальників, дату придбання, переміщення, списання, продажу, вартість продажу.
19. “Банк”. Містить інформацію про: працівників, відділи, клієнтів, рахунки, суми, відсотки, види внесків.
20. “Податкова інспекція”. Містить інформацію про: працівників, відділи, платників податків, заборгованість, штрафи та пеню.
Лабораторна робота № 2. Модифікувати таблиці. Заповнити таблиці відповідними записами.
Лабораторна робота № 3. Здійснити вибірку даних з таблиць: прості запити, запити із сортуванням та угрупуванням. Побудувати звіти з використанням об’єднання декількох таблиць в запитах.
Лабораторна робота № 4. Провести складний аналіз даних в таблицях з використанням підзапитів. Модифікувати дані в таблицях використовуючи підзапити.
Лабораторна робота № 5. Створити подання з об'єднаннями і підзапитами.
Лабораторна робота № 6. Призначити права доступу до таблиць баз даних іншим користувачам. Організувати обробку трансакцій в базі даних. Створити тригер та генератор.
Лабораторна робота № 7. Засобами С++Builder чи Delphi спроектувати створити додаток для роботи з базою даних, який задовольняє вимогам, аналогічним тим, що наведені у попередніх лабораторних роботах.