Oracle – relacyjna baza danych Halina Tańska Podstawowe zagadnienia • Relacyjne bazy danych stanowią sposób dostępu do danych i łączenia ich ze sobą tak, aby użytkownik nie musiał wiedzieć w jaki sposób dane zostały pobrane z komputera. • Użytkownik korzystając z relacyjnej bazy danych musi mieć pojęcie jedynie o danych, a nie o sposobie ich pobierania. Wprowadzenie • • • • • Relacyjna baza danych obsługuje pojedynczą logiczną strukturę – relację (ang. relation). Jest to dwuwymiarowa struktura danych powszechnie nazywana tabelą w bazie danych. Atrybuty lub kolumny zawierają informację na temat struktury. Tabela pracownik zawiera atrybuty takie jak: nazwisko pracownika, wynagrodzenie, nazwisko kierownika itd. Bieżące wartości danych w tabeli nazywane są krotkami lub wierszami. Między kilkoma tabelami, nawet jeśli nie zawierają one żadnych danych, może istnieć relacja (ang. relationship). Na podstawie relacji, jedne atrybuty mogą być grupowane z innymi atrybutami i tworzyć klucz złożony, a nawet złożony klucz główny. Klucz główny (primary key) to taki atrybut lub grupa atrybutów (klucz złożony), który w sposób jednoznaczny identyfikuje wiersz w tabeli. W Oracle dla klucza głównego automatycznie jest tworzony niepowtarzalny indeks. Tabela może mieć tylko jeden klucz główny. Jeśli wymagana jest integralność referencyjna, każda tabela musi mieć zdefiniowany taki klucz. Klucz główny wykorzystywany jest jako identyfikator musi zawierać jakieś dane (nie może zawierać wartość NULL). W tabeli mogą istnieć jeszcze inne atrybuty o wartościach zdefiniowanych jako niepowtarzalne (unikatowe). W odróżnieniu od kluczy głównych, klucze unikatowe mogą zawierać wartość NULL Integralność referencyjna • • • • • • Do wyodrębnienia danych z dwóch tabel potrzebna jest taka wartość w kolumnie, która jest wspólna dla obydwu tabel. Automatyczne utrzymywanie i definiowanie relacji jest nazywane integralnością referencyjną. Zasady integralności mówią, że wartości kluczy obcych (foreign key) w jednej tabeli odpowiadają wartościom kluczy głównych w innej tabeli. Integralność referencyjna (referential integrity) to kod SQL, który na podstawie klucza głównego i klucza obcego wymusza relację pomiędzy kilkoma tabelami. Z relacji klucz klucz główny – klucz obcy oraz reguł integralności referyncyjnej korzysta wiele narzędzi. Tabele powiązane relacjami mają kilka ważnych zalet: łatwo się je tworzy, łatwo się dodaje lub zmienia, łatwo można powiązać je z innymi tabelami w celu znalezienia żądanych wyników. Użytkownik musi tylko rozumieć, czego dotyczą jego dane, a nie musi wiedzieć, jak uzyskać do nich dostępu. Cechy charakterystyczne Oracle9i • • • • • W rodzinie produktów baz danych Oracle9i zostały wprowadzone nowe funkcje, takie jak partycjonowane tabele i indeksy (zdolność do dzielenia każdej tabeli oraz indeksu na części na podstawie wartości klucza i umieszczania ich na różnych napędach dyskowych). W wersji Oracle9i znajduje się sporo udoskonaleń, takich jak nowa umiejętność partycjonowania, zwana partycjonowaniem list, udoskonalenie spójności odczytu, znane jako Deja vu, dodatkowe pule buforów, wiele rozmiarów bloków i znaczne ulepszenia narzędzia Log Miner. W Oracle9i istnieje nowe narzędzie zwane pompą danych, które pozwala, aby plik systemów operacyjnych były postrzegane przez Oracle jako tabela relacyjna. Oracle9i wprowadza do środowiska baz danych Oracle również język XML, a także obsługę Java oraz SQLJ. W Oracle9i została zachowana obsługa zorientowanych obiektowo elementów Oracle8. Oracle9i pozwala na definiowanie obiektów i ich typów (np. zdefiniowanie pól danych takich jak adres, nazwa miasta, nazwa stanu oraz kod pocztowy, jako obiektu i wielokrotne jego użycie). Pozwala stosować tabele zagnieżdżone (tabele wewnątrz tabel). Oracle9i obsługuje także macierze – typ obiektowy pod względem funkcjonalności podobne do tabeli zagnieżdżonej, ale stanowiący w rzeczywistości część wiersza w tabeli. Programowanie zorientowane obiektowo w Oracle9i • Klasa stanowi sposób grupowania powiązanych ze sobą elementów. Przykładem klasy w środowisku Oracle jest połączenie dwóch lub więcej tabel, w wyniku czego uzyskuje się część wspólną lub kombinacje kolumn każdej z tabel. • Hermetyzacja (encapsulation) oznacza, że dostęp do danych może się odbywać tylko zgodnie z określonymi zasadami. Przykładem tego w Oracle9i będą ograniczenia referencyjne rządzące relacjami danych pomiędzy obiektami. • Rozszerzalność (extensibility) to zdolność tworzenia nowych obiektów bez wywierania wpływu na inne obiekty. • Dziedziczenie (inheritance) znaczy, że zmiana wprowadzona w jednym powiązanym obiekcie, odzwierciedlona zostaje we wszystkich obiektach korzystających z danego typu obiektowego. • Polimorfizm (polymorphism) oznacza, że temu samemu obiektowi informacja może być podawana w różnych kontekstach i jego reakcja będzie zależna od kontekstu danych wejściowych. Narzędzia Oracle • Narzędzia programistyczne Oracle – obecne od wersji 4. Są one dostępne niemal we wszystkich środowiskach obsługujących bazy danych. Oznacza to, że programista może projektować i testować aplikację na komputerze typu PC i umieścić ją docelowo w systemie UNIX lub nawet na komputerach mainframe. • Narzędzie Fast Forms - równoważnik dzisiejszego kreatora (wspomagające użytkownika w procesie budowania podstawowego formularza). Narzędzie do tworzenia raportów – odmiana dzisiejszego języka SQL*Plus (User-Friendly Interface). • Podstawowe narzędzie do budowania raportów RPT przemianowano na SQL*Forms v2.0 i zostało dodane nowe narzędzie piszące raporty SQL*ReportWinter v1.0. formularze w tej wersji znacznie rozszerzyły możliwości programistyczne i możliwości działania formularzy on-line. Oracle v7 przyniósł znaczące zmiany w bazie danych i narzędziach. Zestaw narzędzi nazwano Developer/2000 – bazował on w większym stopniu na Windows. Oracle Developer 6i • • • • • • • Komponent Project Builder służy programiście do utrzymania wszystkich elementów aplikacji, takich jak różne formularze i kody źródłowe raportów oraz kod języka pośredniego. Project Builder umożliwia skompilowanie pojedynczego programu lub wszystkich programów w projekcie. Developer Oracle działa opierając się na wspólnych elementach wykorzystywane przez wszystkie narzędzia. Developer Oracle zawiera Object Navigator, w którego oknie można obejrzeć hierarchiczną strukturę wszystkich obiektów aplikacji. W Object Navigatorze dostępne są dwa widoki: Ownership oraz Visual. Obiekty w widoku Ownership są wyświetlane zgodnie z blokami reprezentującymi wiersze tabeli. Natomiast w widoku Visual obiekty wyświetlają się w zależności od tego, jak pojawiają się na ekranie wyjściowym. Form Builder służy do budowania i utrzymywania aplikacji wykorzystujących formularze. Programowanie w Developer Oracle znacznie różni się od pracy z językami trzeciej generacji. Aplikacje buduje się tworząc na ekranie obiekty, które reprezentują elementy danych, jakie będą wyszukiwane w bazie danych, mają szatę graficzną, służą m.in. Do nawigacji w programie. Wybrane działania (activities) lub zdarzenia (events) są zakodowane w procedurach wyzwalających (triggers), będących jednostkami programistycznymi, które są wykorzystywane w chwili wystąpienia jakiegoś zdarzenia. Zdarzenia dotyczą tego, co się dzieje na ekranie. Raport Builder jest narzędziem działającym na zasadzie kreatora i służy do tworzenia różnego rodzaju raportów na podstawie danych znajdujących się w bazie. Jest wyposażony w proceduralne konstruktory służące do formatowania danych, obliczania sum danych. Grapfics Builder służy do opracowywania różnego rodzaju wykresów generowanych na podstawie danych znajdujących się w bazie. Oracle Developer 6i • SQL*Plus – interaktywne narzędzie pracujące w trybie znakowym działającym w środowisku Oracle9i RDBMS. SQL*Plus można wykorzystywać do przetwarzania pojedynczych instrukcji języka SQL albo do interaktywnego przetwarzania instrukcji języka SQL z udziałem użytkownika. Ma bardzo rozbudowane umiejętności tworzenia raportów w trybie tekstowym, dzięki którym z wyników zapytania można sformatować raport. Jest także edytorem skryptów lub edytorem tekstowym działającym w trybie znakowym. Może być wykorzystywany do funkcji administracyjnych i ma możliwość przyjmowania informacji wejściowych z plików systemu operacyjnego lub skryptów SQL. Oracle Developer 6i SQL*Loader służy do wczytywania danych z plików zewnętrznych do bazy danych Oracle. SQL*Leader pełni wiele funkcji, takich jak: • Dane można wczytywać z wielu wejściowych plików danych, różniących się typem pliku. • Rekordy wejściowe mogą mieć długość stałą lub zmienną. • Podczas jednego uruchomienia można wczytać kilka tabel. Możliwe jest także logiczne wczytanie wybranych rekordów do poszczególnych tabel. • Dla danych wejściowych mogą zostać stosowane funkcje SQL przed ich wczytaniem do tabeli. • Kilka rekordów fizycznych może zostać połączonych w jeden rekord logiczny. I odwrotnie, SQL może pojedynczy rekord fizyczny wczytać pod postacią kilku rekordów logicznych. Oracle Developer 6i • Tabele zewnętrzne to nowe udogodnienie, które sprawia, że na użytek wczytywania jednowymiarowe pliki wyglądają jakby były relacyjnymi tabelami. Tabele zewnętrzne zaczynają się tam, gdzie kończy się działanie SQL*Loader. Oracle9i postrzega jednorodny, jednowymiarowy plik jako tabelę, dlatego transformacja danych może zostać bez trudu przeprowadzona w SQL, dostępne jest wczytywanie równoległe oraz możliwe wczytywanie przy użyciu bezpośredniej ścieżki dostępu z obsługą indeksów. To nowe udogodnienie jest całkowicie zgodne z SQL*Loader, czyta plik sterujący SQL*Loader i buduje poprawne DDL (Data Definition Language) dla nowych typów obiektów. Net8 • • Net8 stanowi w Oracle podstawę systemu komunikacji klient-serwer. Net8 pozwala użytkownikowi niezauważalnie pracować z prawie każdą wersją Oracle na dowolnym komputerze i w niemal każdym środowisku, bez konieczności programowania lub szczególnej obsługi jakichkolwiek spraw związanych z siecią lub połączeniami. Dzięki Net8 programowanie w Oracle jest łatwiejsze, bo programy (pisane w Oracle Forms, SQL*Plus i in.) można tworzyć i testować w jednym środowisku komputerowym, a uruchamiać w zupełnie innym i to bez żadnych modyfikacji. W środowisku klient-serwer Net8 umożliwia programom rezydującym i wykonywanym na niedrogich komputerach PC, dostęp do danych znajdujących się na komputerach większych i szybszych. Net8 potrafi obsługiwać tysiące użytkowników łączących się ze środowiskiem Oracle9i za pośrednictwem menedżera połączeń z zainstalowanym komponentem technologii wielowątkowej. Net8 jest elastycznym protokołem sieciowym potrafiącym obsługiwać różne technologie sieciowe. Dzięki temu jest on w stanie komunikować użytkownika z bazą Oracle, zapewniając wysoki poziom zgodności aplikacji Oracle. Log Miner • Pozwala na manipulację zawartością plików log – zarówno archiwalnych (archive log file), jak i służących do ponawiania operacji (redo log file). Informacje te można potem wykorzystywać do tworzenia polecenia REDO SQL wykorzystywanego do ponawiania transmisji w innym systemie oraz polecenia UNDO SQL pomocnego przy cofaniu błędów użytkownika. Log Miner przydaje się przy sprawdzaniu bazy danych i wykonywaniu specjalistycznych analiz. • Log Miner obsługuje obiekty z wierszami złączonymi (chained) i przemieszczonymi (migrated) oraz takimi, gdzie wykonywane było tzw. bezpośrednie wstawianie (direct-path inserts), a także dodatkowe typy danych, takie jak LONG, LOB i kilka typów obiektowych, w tym DDL. Export i Import • • • • • Export tworzy pliki systemu operacyjnego na podstawie danych z tabel Oracle Import czyta pliki systemu operacyjnego, tworzy tabele i wczytuje dane z powrotem do tabel. Narzędzi export i import używa się razem przede wszystkim do robienia kopii zapasowej i odzyskiwania danych, przenoszenia danych do innych baz Oracle, a także do konwersji danych wcześniejszych wersji Oracle. Obsługują zarówno wszystkie obiekty w określonej przestrzeni tabel, jak i dokonują wyszukiwania z zastosowaniem symboli wieloznacznych, w celu wybrania obiektów tabel przeznaczonych do eksportu. Przy użyciu narzędzi Export i Import można zapisywać dane w archiwach, usuwać wiersze, które nie są już używane. Usunięcie ich jest równie łatwe, jak dodanie wiersza przy użyciu narzędzia Import, gdy zajdzie taka potrzeba. Oba narzędzia mają zastosowanie przy tworzeniu środowisk tekstowych, gdyż mają zdolności przechwytywania wszystkich tabel, indeksów i danych dowolnego użytkownika oraz rekonstruowania ich w innej bazie danych Oracle. Projektowanie schematu relacyjnego i budowanie bazy danych