Temat 4 (ostatni) Oracle i PL/SQL

1. W hotelu jest potrzebna baza danych. Mają się w niej znaleźć informacje o gościach, pokojach podzielonych na kategorie (zaproponuj je), rezerwacjach (zamówionych – na rodzaj pokoju i przydzielonych – na konkretny pokój). W oparciu o te informacje powinno dać się:

  1. dokonywać rezerwacji przypisując wolny pokój zgodny z oczekiwaniami gościa – jeśli nie można spełnić oczekiwań gościa zapisując zamówienie rezerwacji do rozstrzygnięcia przez upoważnionych pracowników;
  2. sprawdzać ile razy dana osoba była gościem w ostatnich dwóch latach;
  3. o godz. 23 sprawdzać, którzy goście przybyli do hotelu zgodnie z rezerwacją;
  4. zwalniać wolny pokój i wypisywać rachunek;

Zaprojektuj schemat bazy danych w III postaci normalnej.

2. Podaj dwie definicje hotelowej bazy danych w Oracle:

  1. jedną używającą deklaratywnych więzów spójności referencyjnej;
  2. drugą używającą wyzwalaczy bazy danych.

3. Zapisz instrukcje SQL (ewentualnie procedury) wykonujące zadania 1a-d.

4. Zaprogramuj jako procedurę PL/SQL następujące zadanie:

Dokonaj rezerwacji pokoju dla VIP (bardzo ważnego gościa) na jedną noc. Jeśli nie ma wolnego pokoju, spełniającego oczekiwania gościa, wśród osób, które dokonały rezerwacji na pokój spełniający specyfikację VIP, wybierz jedną z nich – nie mającą statusu VIP i zamień jej rezerwację na rezerwację dla VIP. Skasowaną rezerwację na pokój zamień na zamówioną rezerwację.

Pamiętaj o obsłudze wyjątków.

5. Napisz wyzwalacz, który dokonuje odpowiednich zmian w bazie danych, przy zmianie przypisania kategorii do pokoju.

6. Przygotuj formularz w Oracle*Forms 4.5 do wyświetlania klientów i złożonych przez nich zamówień.

7. Napisz dwie procedury hipertekstowe:

  1. jedną wyświetlającą na ekranie przeglądarki formularz rezerwacyjny;
  2. drugą przyjmującą zgłoszenie, dokonującą odpowiedniej rezerwacji i wypisującą potwierdzenie.

8. Zakładając, że hotel obsługuje wyłącznie wycieczki przyjeżdżające z całego świata, zaprojektuj obiektową bazę danych (nie korzystaj z powiązań relacyjnych klucz obcy - klucz główny).

9. Zaprojektuj hurtownię danych dla hotelowej bazy danych służącą do analizy wyników finansowych w zależności od kraju klientów, kategorii pokoi i pory roku. Zakładając, że jest możliwość połączenia mapy z danymi w hurtowni danych zaproponuj schemat do prezentacji danych na mapie.

10. Zaproponuj schemat rozproszonej bazy danych dla firmy posiadającej sieć hoteli na całym świecie.

11. Przeanalizuj na serwerze Oracle plan wykonywania następujących zapytań:

  1. wypisz numery pokoi i ich kategorie, na które dokonał rezerwacje klient 'Kowalski';
  2. wpisz klientów, którzy przebywali w Apartamencie Królewskim w ciągu ostatnich dwóch lat.

Czy należy założyć dodatkowe indeksy? Czy należy dołączyć wskazówki dla optymalizatora?

12. Załóż bazę danych na serwerze Oracle dla swojej aplikacji zapisanej w wybranym przez siebie kliencie (Access, Visual Basic, Oracle*Forms 4.5, przeglądarka, program w języku C). Ewentualnie zmień swoją aplikację tak aby korzystała z danych serwera. Czy podział zadań między stronę klienta i serwera został prawidłowo dokonany? Które części strony klienta mogłyby się znaleźć po stronie serwera?

Bibliografia

  1. L. Banachowski, Bazy danych Tworzenie aplikacji, PLJ, 1998.
  2. Dokumentacja dotycząca Oracle8.
  3. R.Wrembel, W.Wieczerzycki, Projektowanie aplikacji bazy danych Oracle, Nakom 1997.