Oracle Application Express Dla Oracle Application Express 4.2.2 Część 1. Przygotowanie schematu relacyjnej bazy danych 1. Uruchom w przeglądarce internetowej stronę logowania Oracle Application Express (APEX) i zaloguj się do swojego obszaru roboczego. Po pomyślnym zalogowaniu zostanie wyświetlony główny panel (Home) narzędzia. Uwaga! Przy pierwszym logowaniu możesz zostać poproszona/y o zmianę domyślnego hasła użytkownika. 2. Dane, które ma przetwarzać Twoja aplikacja, znajdują się w pliku csv o nazwie książki.csv (plik znajduje się na stronie WWW przedmiotu). Zaimportujemy teraz ten plik na podstawie jego zawartości utworzymy obiekty w bazie danych oraz wypełnimy je danymi. W tym celu: Pobierz ze strony przedmiotu plik ksiazki.csv i zapisz go w lokalnym folderze, Przejdź do panelu SQL Workshop (naciśnij przycisk SQL Workshop), następnie do panelu Utilities i wreszcie Data Workshop, 1
Aby uruchomić narzędzie wczytujące do bazy danych plik csv wybierz łącze Spreadsheet Data z panelu Data Load. Uruchomiony zostanie kreator wczytywania danych. Dane mają zostać wczytane do nowej tabeli (zaznacz przycisk radiowy Load To: New table) z pliku (zaznacz przycisk radiowy Load From: Upload file (comma separated or tab delimited)). Naciśnij przycisk Next>. Kolejny ekran kreatora pozwala na: i. wskazanie pliku zawierającego dane do wczytania (pole Text File) wpisz ścieżkę do pliku ksiazki.csv, ii. wskazanie znaku oddzielającego kolejne wartości w pliku (pole Separator) w naszym przypadku będzie to przecinek, iii. określenie, czy pierwszy wiersz pliku zawiera nagłówki kolumn (przycisk wyboru First row contains column names) plik ksiazki.csv zawiera nagłówki kolumn, iv. wskazanie sposobu kodowania znaków w pliku (pole File Character Set) w naszym przypadku strona kodowa to Eastern European Windows 1250. 2
Po wypełnieniu pól wskazanymi wartościami naciśnij przycisk Next>. Plik ksiazki.csv zostaje poddany analizie, jej wynik zostaje zaprezentowany na kolejnym ekranie kreatora. Wskaż teraz nazwę schematu, w którym zostanie utworzona tabela z danymi z pliku (powinien to być Twój domyślny schemat) oraz nazwę tej tabeli (KSIAZKI). Następnie naciśnij przycisk Next>. Kolejny ekran kreatora proponuje dodanie do tabeli KSIAZKI klucza głównego może on zostać założony na jednej z istniejących kolumn bądź na nowej kolumnie sztucznym identyfikatorze liczbowym. Wybieramy drugie rozwiązanie. W tym celu: i. Zaznaczamy przycisk radiowy Create new column, ii. Podajemy nazwę nowej kolumny: ID (pole New Primary Key Column), iii. Nazwa klucza podstawowego: KSIAZKI_PK (pole PK Constraint Name), iv. Wartości dla pola ID w kolejnych rekordach relacji KSIAZKI mają być automatycznie generowane za pomocą sekwencji; zaznaczamy przycisk radiowy Generated from a new sequence, v. Nazwa nowej sekwencji: KSIAZKI_SEQ (pole Sequence). 3
Po wypełnieniu pól wartościami naciśnij przycisk Load Data. Po zakończeniu importu otrzymujemy komunikat o jego przebiegu. Zwróć uwagę na liczbę zaimportowanych rekordów (wartość w kolumnie Succeeded). Sprawdzimy teraz obiekty, które zostały wygenerowane w skojarzonym z Twoją przestrzenią roboczą schemacie w wyniku działania kreatora. W tym celu: i. Przejdź do głównego panelu narzędzia (kliknij w zakładkę Home) ii. Następnie przejdź do panelu SQL Workshop (naciśnij przycisk SQL Workshop) i uruchom narzędzie Object Browser, pozwalające na podgląd obiektów w Twoim schemacie bazodanowym. iii. Upewnij się, że w lewym panelu narzędzia w polu wyboru typu wyświetlanych obiektów wyświetlona jest wartość Tables, a następnie kliknij na tabele KSIAZKI. W prawym panelu zostaną wyświetlone informacje o strukturze tabeli KSIAZKI. iv. Wyświetl zawartość tabeli KSIAZKI klikając na przycisk Data. 4
v. Wróć do ekranu wyświetlającego strukturę tabeli KSIAZKI (naciśnij przycisk Table). vi. Sprawdź, czy dla tabeli KSIAZKI kreator wygenerował jakieś dodatkowe obiekty (podpowiedź naciśnij przycisk Triggers). Obejrzyj strukturę i wyjaśnij funkcje tych obiektów. 3. Chcemy uzupełnić strukturę tabeli KSIAZKI o nowy atrybut o nazwie ISBN jest to niepowtarzalny 13-cyfrowy międzynarodowy identyfikator książki. Typ atrybutu to char(13), na atrybucie ma zostać zdefiniowany klucz unikalny o nazwie KSIAZKI_ISBN_UK. W tym celu: Wracamy do definicji struktury tabeli naciśnij przycisk Table. Naciskamy przycisk Add Column. Podajemy nazwę dodawanego atrybutu: ISBN (pole Add Column). Wartości dla atrybutu są na razie opcjonalne (w polu Nullable pozostawiamy wartość NULL (do not require a value)). Typ wartości: CHAR (pole Type). Długość: 13 (pole Length). 5
Po wypełnieniu wartości pól naciśnij przycisk Next> a następnie Finish (możesz podejrzeć postać polecenia SQL, które zostanie wysłane do bazy danych, naciskając przycisk SQL). Po pomyślnym dodaniu do tabeli nowej kolumny musimy zdefiniować odpowiednie ograniczenie integralnościowe chcemy, aby wartości kolumny ISBN były unikalne W tym celu: Naciskamy przycisk Constraints. Wyświetlony zostanie ekran pokazujący obecne w tabeli KSIAZKI ograniczenia integralnościowe (na razie jest to jedynie klucz główny o nazwie KSIAZKI_PK). Aby dodać do tabeli KSIAZKI nowe ograniczenie naciskamy przycisk Create. Następnie wypełniamy pola wyświetlonego dialogu: i. Nazwa ograniczenia: KSIAZKI_ISBN_UK (pole Constraint Name) ii. Rodzaj ograniczenia: Unique (pole Constraint Type) iii. Kolumna ograniczenia: ISBN (pole Unique Column 1) Po wypełnieniu pól wartościami naciśnij przycisk Next> a następnie Finish. Ekran wyświetlający obecne w tabeli KSIAZKI ograniczenia integralnościowe powinien wyświetlić nowe ograniczenie. 6
Spróbujemy teraz wypełnić kolumnę ISBN w wybranych rekordach tabeli KSIAZKI. W tym celu: i. Naciśnij przycisk Data. ii. Znajdź rekord opisujący dramat Adama Mickiewicza pt. Dziady. Aby dokonać edycji wartości atrybutów tego rekordu naciśnij przycisk z ikoną w kolumnie Edit. iii. Wpisz wartość 1234567890123 dla atrybutu ISBN a następnie wciśnij przycisk Apply Changes Sprawdź, czy zdefiniowany wcześniej klucz unikalny na atrybucie ISBN jest weryfikowany. W tym celu: i. Przejdź do edycji danych rekordu opisującego poemat Adama Mickiewicza pt. Pan Tadeusz. ii. Wpisz wartość 1234567890123 dla atrybutu ISBN (wartość ta została już użyta w poprzednio edytowanym rekordzie tabeli) i naciśnij przycisk Apply Changes. iii. Operacja powinna spowodować wyświetlenie komunikatu o naruszeniu więzów unikatowych. iv. Zmień numer ISBN na 1234567890122 i ponownie naciśnij przycisk Apply Changes. 4. Tabela KSIAZKI jest tabelą nieznormalizowaną atrybut opisujący autora powinien być umieszczony w osobnej tabeli, do której tabela KSIAZKI powinna zostać przyłączona kluczem obcym. W bieżącym punkcie ćwiczenia dokonamy normalizacji schematu. W tym celu: Przejdź do ekranu wyświetlającego strukturę tabeli KSIAZKI. Naciśnij przycisk Create Lookup Table. Zażądaj wyświetlenia atrybutów wszystkich typów (zaznacz przycisk radiowy Show: All Column Types) i zaznacz atrybut AUTOR. Następnie naciśnij przycisk Next>. 7
Ustal nazwę nowej tabeli na AUTORZY (pole New Table Name), a nazwę sekwencji, które będzie generowała wartości dla atrybutu-klucza podstawowego nowej tabeli na AUTORZY_SEQ (pole New Sequence). Następnie naciśnij przycisk Next> a potem Finish. Po pomyślnym utworzeniu nowej tabeli AUTORZY wyświetl jej strukturę, kod procedury wyzwalanej, która została utworzona dla tej tabeli oraz jej dane. 8
Sprawdź, jak zmieniła się struktura oraz zawartość tabeli KSIAZKI. 5. Zadanie samodzielne 1. Zmień strukturę tabeli AUTORZY w ten sposób, aby atrybut AUTOR został zastąpiony przez parę obowiązkowych atrybutów IMIE i NAZWISKO, typ obu atrybutów to VARCHAR2(50). Oprócz zmian struktury dokonaj również odpowiednich modyfikacji danych tabeli AUTORZY. Podpowiedź: Modyfikacji struktury tabeli dokonaj w narzędziu Object Browser Dane tabeli zmodyfikuj poleceniem SQL w narzędziu SQL Commands panelu SQL Workshop. Możesz w tym celu użyć poniższego polecenia DML: update autorzy set imie = substr(autor,1,instr(autor,' ')-1), nazwisko = substr(autor,instr(autor,' ')+1); Strukturę i dane tabeli AUTORZY po wykonaniu zmian przedstawiają poniższe rysunki. 9
6. Zadanie samodzielne 2. W strukturze tabeli KSIAZKI znajduje się atrybut GATUNEK. Powtórz operacje normalizacji struktury tabeli KSIAZKI dla tego atrybutu. Wynikiem operacji mają być: nowa tabela GATUNKI: modyfikacje struktury (zwróć uwagę na pojawienie się nowych ograniczeń integralnościowych jakich) i danych tabeli KSIAZKI. 10
7. Zadanie samodzielne 3. Dodaj do struktury tabeli KSIAZKI nowy atrybut MOJA_OCENA typu number(1) z dopuszczalnym zbiorem wartości (1,2,3,4,5). Poprawność wartości atrybutu ma kontrolować ograniczenie integralnościowe typu CHECK o nazwie KSIAZKI_MOJA_OCENA_CHK. Poniższe rysunki przedstawiają strukturę tabeli KSIAZKI i listę zdefiniowanych dla niej ograniczeń integralnościowych po wykonaniu modyfikacji. 11
Cześć 2. Projekt prostej aplikacji W niniejszej części ćwiczenia zaprojektujemy prostą aplikację, której zadaniem będzie wyświetlanie listy autorów książek obecnych w naszym księgozbiorze. Listę wyposażymy dodatkowo w możliwość definiowania nowych autorów oraz edycji i usuwania autorów istniejących. 1. Przejdź do głównego panelu narzędzia, naciśnij przycisk Application Builder a następnie Create>. 2. Zaznacz opcję Database w oknie Create Application i naciśnij przycisk Next> (aplikacja będzie przetwarzała dane tabel składowanych w bazie danych). 3. Podaj nazwę tworzonej aplikacji Księgozbiór (pole Name). Aplikacja będzie tworzona od zera w polu Create Options zaznacz pozycję Start from scratch. Wartości pozostałych pól pozostaw niezmienione. Naciśnij przycisk Next>. 4. Przystąpimy teraz do definiowania stron, składających się na naszą aplikację. Pierwsza strona, Strona domowa, będzie stroną statyczną, wyświetlającą łącza do pozostałych stron aplikacji. Aby utworzyć Stronę domową: zaznacz przycisk radiowy Blank nowa strona będzie stroną pustą, ustal nazwę nowej strony na Strona domowa (pole Page Name), naciśnij przycisk Add Page. Po wykonaniu powyższych czynności lista stron aplikacji powinna wyglądać jak na poniższym rysunku. 12
5. Druga strona aplikacji, Lista autorów, będzie wyświetlała informacje o autorach książek z naszego księgozbioru. Dane, wyświetlane na stronie, zostaną pobrane z tabeli AUTORZY. Aby utworzyć Listę autorów: zaznacz przycisk radiowy Report and Form nowa strona będzie składa się z podstrony wyświetlającej listę autorów (report) i podstrony umożliwiającej dodawanie, edycję i usuwanie danych autorów (form). strona będzie wywoływana z wcześniej utworzonej strony Strony domowej (pole: Subordinate to Page, wartość: Strona domowa) strona będzie pobierała dane z tabeli AUTORZY (pole: Table Name, wartość: AUTORZY). naciśnij przycisk Add Page. Po wykonaniu powyższych czynności lista stron aplikacji powinna wyglądać jak na poniższym rysunku (zauważ, że zostały utworzone dwie strony). Po zdefiniowaniu stron naszej aplikacji naciśnij przycisk Next>. 6. Na kolejnym ekranie wskazujemy, że nasza aplikacja nie będzie korzystała z obiektów innych, wcześniej utworzonych aplikacji zaznaczamy przycisk radiowy Copy Shared Components from Another Application: No. Naciśnij przycisk Next>. 7. Kolejny ekran kreatora pozwala na określenie dodatkowych cech aplikacji: 13
metody uwierzytelniania użytkowników aplikacji (pole Authentication Scheme) przez Oracle APEX (wartość: Application Express), przez system zarządzania bazą danych (wartość: Database Account) lub brak uwierzytelnienia (wartość: No Authentication), czy interfejs użytkownika aplikacji będzie wyposażony w zakładki (pole Tabs), domyślny język aplikacji (pole Language), źródło informacji o języku, jakim posługuje się użytkownik aplikacji (pole User Language Preference Derived From) ważne w sytuacji aplikacji wielojęzycznej, automatycznie tłumaczonej na język użytkownika, formaty czasu w aplikacji. Ustaw wartość ww. pól jak na poniższym rysunku i naciśnij przycisk Next >. 8. Na kolejnym ekranie kreatora wybieramy układ graficzny naszej aplikacji. Zaznacz przycisk radiowy przy układzie, który najbardziej Ci odpowiada. Następnie naciśnij przycisk Next>. 9. Ostatni ekran kreatora zawiera podsumowanie zebranych informacji. Naciśnij przycisk Create Application. 10. Struktura naszej aplikacji powinna przedstawiać się jak na poniższym rysunku. 14
11. Możemy teraz przystąpić do uruchomienia zbudowanej aplikacji. W tym celu naciśnij przycisk Run Application. Podaj nazwę i hasło do tego samego użytkownika, do jakiego przyłączyłeś się w narzędziu. Przetestuj działanie aplikacji: wyświetl listę autorów, wyszukaj dane określonego autora, dodaj nowego autora, spróbuj usunąć dane istniejącego autora. 15