Issuu on Google+


Oracle Database 11g. Kompendium administratora Autor: Kevin Loney T³umaczenie: Pawe³ Gonera ISBN: 978-83-246-2549-9 Tytu³ orygina³u: Oracle Database 11g The Complete Reference Format: 168×237, stron: 1504

Poznaj najbardziej efektywne funkcje najnowszej wersji bazy danych Oracle • Jak u¿ywaæ nowych funkcji i narzêdzi Oracle 11g? • Jak uruchamiaæ efektywne zapytania SQL? • Jak tworzyæ instrukcje PL/SQL? Baza danych Oracle 11g znacz¹co ró¿ni siê od wczeœniejszych wersji Oracle. Dziêki nowym funkcjom programiœci i administratorzy baz danych zyskali du¿o wiêksz¹ kontrolê nad przechowywaniem, przetwarzaniem oraz odczytywaniem danych. Jeœli chcesz zdobyæ najnowsz¹ specjalistyczn¹ wiedzê z tego zakresu, skorzystaj z przewodnika Kevina Loneya, œwiatowej s³awy eksperta w dziedzinie projektowania, tworzenia i dostrajania baz danych Oracle oraz administrowania tymi bazami. Ksi¹¿ka „Oracle Database 11g. Kompendium administratora” stanowi kompletny, napisany klarownym jêzykiem i bogaty w niebanalne przyk³ady przewodnik po najnowszej wersji Oracle. Korzystaj¹c z tego podrêcznika, nauczysz siê wdra¿aæ aktualne zabezpieczenia, dostrajaæ wydajnoœæ bazy danych, tworzyæ instalacje przetwarzania siatkowego oraz stosowaæ narzêdzie flashback. Dowiesz siê, jak wykorzystywaæ techniki stosowane w relacyjnych systemach baz danych i aplikacjach. Poznasz tak¿e zaawansowane opcje Oracle, takie jak technologia Data Pump, replikacja czy indeksowanie. Nieocenion¹ zalet¹ ksi¹¿ki jest dodatek zawieraj¹cy polecenia Oracle, s³owa kluczowe i funkcje. • Wybór architektury Oracle 11g • Planowanie aplikacji systemu Oracle • Tworzenie tabel, sekwencji, indeksów i kont u¿ytkowników • Optymalizacja bezpieczeñstwa • Importowanie i eksportowanie danych • Unikanie b³êdów ludzkich dziêki technologii flashback • Optymalizacja dostêpnoœci i skalowalnoœci – Oracle Real Application Clusters • Wielkie obiekty LOB i zaawansowane funkcje obiektowe • Zarz¹dzanie zmianami oraz buforowanie wyników • Tworzenie aplikacji baz danych z u¿yciem Java JDBC i XML Skorzystaj z wiedzy ekspertów – twórz efektywne relacyjne bazy danych!


Spis tre!ci

5

Spis tre!ci O autorze ................................................................................................. 21 O wspó"pracownikach ............................................................................... 23

Cz#!$ I

Najwa%niejsze poj#cia dotycz&ce bazy danych ....................... 25

Rozdzia" 1. Opcje architektury bazy danych Oracle 11g ............................................... 27 Bazy danych i instancje ...............................................................................................................28 Wn!trze bazy danych ...................................................................................................................29 Przechowywanie danych .......................................................................................................31 Ochrona danych ....................................................................................................................32 Struktury programowe ...........................................................................................................33 Wybór architektury i opcji ...........................................................................................................34

Rozdzia" 2. Instalacja bazy danych Oracle 11g i tworzenie bazy danych ....................... 35 Przegl"d opcji licencji i instalacji ................................................................................................36 U$ycie programu OUI do instalowania komponentów systemu Oracle ......................................37

Rozdzia" 3. Aktualizacja do wersji Oracle 11g ............................................................. 45 Wybór metody aktualizacji ..........................................................................................................46 Przed aktualizacj" ........................................................................................................................47 Uruchamianie narz!dzia do zbierania informacji przed aktualizacj" ...........................................48 Wykorzystanie asystenta aktualizacji bazy danych .....................................................................49 R!czna aktualizacja bezpo%rednia ...............................................................................................50 Wykorzystanie mechanizmów eksportu i importu .......................................................................51 Wersje narz!dzi eksportowania i importowania ....................................................................51 Wykonywanie aktualizacji ....................................................................................................52 Zastosowanie metody z kopiowaniem danych .............................................................................53 Po aktualizacji .............................................................................................................................53

Rozdzia" 4. Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro%enia ... 55 Podej%cie kooperacyjne ...............................................................................................................56 Dane s" wsz!dzie .........................................................................................................................57 J!zyk systemu Oracle ..................................................................................................................58 Tabele ....................................................................................................................................59 Strukturalny j!zyk zapyta& ....................................................................................................59 Proste zapytanie w systemie Oracle ......................................................................................60


6

Oracle Database 11g. Kompendium administratora Dlaczego system baz danych nazywa si! „relacyjnym”? ......................................................61 Proste przyk*ady ....................................................................................................................63 Zagro$enia ...................................................................................................................................64 Znaczenie nowego podej%cia .......................................................................................................65 Zmiana %rodowisk .................................................................................................................65 Kody, skróty i standardy nazw ..............................................................................................66 Jak zmniejszy+ zamieszanie? .......................................................................................................67 Normalizacja .........................................................................................................................68 Opisowe nazwy tabel i kolumn .............................................................................................72 Dane w j!zyku naturalnym ....................................................................................................74 Stosowanie wielkich liter w nazwach i danych .....................................................................74 Normalizacja nazw ......................................................................................................................75 Czynnik ludzki ............................................................................................................................75 Zadania aplikacji i dane aplikacji ..........................................................................................76 Identyfikacja zada& ...............................................................................................................78 Identyfikacja danych .............................................................................................................80 Model biznesowy .........................................................................................................................82 Wprowadzanie danych ..........................................................................................................82 Zapytania i tworzenie raportów .............................................................................................83 Normalizacja nazw obiektów ......................................................................................................84 Integralno%+ poziom-nazwa ...................................................................................................84 Klucze obce ...........................................................................................................................85 Nazwy w liczbie pojedynczej ................................................................................................85 Zwi!z*o%+ ..............................................................................................................................86 Obiekt o nazwie tezaurus ......................................................................................................86 Inteligentne klucze i warto%ci kolumn .........................................................................................86 Przykazania .................................................................................................................................87

Cz#!$ II

SQL i SQL*Plus .................................................................... 89

Rozdzia" 5. Zasadnicze elementy j#zyka SQL .............................................................. 91 Styl ..............................................................................................................................................93 Utworzenie tabeli GAZETA ........................................................................................................93 Zastosowanie j!zyka SQL do wybierania danych z tabel ............................................................94 S*owa kluczowe select, from, where i order by ...........................................................................97 Operatory logiczne i warto%ci ......................................................................................................99 Testy pojedynczych warto%ci ..............................................................................................100 LIKE ...................................................................................................................................103 Proste testy dla list warto%ci ................................................................................................105 :"czenie wyra$e& logicznych ..............................................................................................107 Inne zastosowanie klauzuli where — podzapytania ..................................................................108 Podzapytania zwracaj"ce pojedyncz" warto%+ ....................................................................109 Podzapytania zwracaj"ce listy warto%ci ...............................................................................110 :"czenie tabel ............................................................................................................................111 Tworzenie perspektyw ...............................................................................................................113 Rozszerzanie perspektyw ..........................................................................................................115

Rozdzia" 6. Podstawowe raporty i polecenia programu SQL*Plus ............................... 117 Tworzenie prostego raportu .......................................................................................................119 remark .................................................................................................................................120 set headsep ..........................................................................................................................121 ttitle i btitle ..........................................................................................................................122 column .................................................................................................................................122 break on ...............................................................................................................................123


Spis tre!ci

7 compute avg ........................................................................................................................124 set linesize ...........................................................................................................................125 set pagesize ..........................................................................................................................125 set newpage .........................................................................................................................126 spool ....................................................................................................................................126 /* */ .....................................................................................................................................128 Obja%nienia dotycz"ce nag*ówków kolumn ........................................................................128 Inne w*asno%ci ...........................................................................................................................129 Edytor wierszowy ................................................................................................................129 set pause ..............................................................................................................................132 save .....................................................................................................................................132 store .....................................................................................................................................133 Edycja ..................................................................................................................................133 host ......................................................................................................................................134 Dodawanie polece& programu SQL*Plus ............................................................................135 Odczytywanie ustawie& programu SQL*Plus ...........................................................................135 Klocki ........................................................................................................................................137

Rozdzia" 7. Pobieranie informacji tekstowych i ich modyfikowanie ............................. 139 Typy danych ..............................................................................................................................139 Czym jest ci"g? .........................................................................................................................140 Notacja ......................................................................................................................................140 Konkatenacja (||) ........................................................................................................................143 Wycinanie i wklejanie ci"gów znaków ......................................................................................144 RPAD i LPAD .....................................................................................................................144 LTRIM, RTRIM i TRIM .....................................................................................................145 :"czenie dwóch funkcji .......................................................................................................146 Zastosowanie funkcji TRIM ................................................................................................149 U$ycie dodatkowej funkcji ..................................................................................................149 LOWER, UPPER i INITCAP ..............................................................................................150 LENGTH .............................................................................................................................151 SUBSTR ..............................................................................................................................152 INSTR .................................................................................................................................155 ASCII i CHR .......................................................................................................................159 Zastosowanie klauzul order by oraz where z funkcjami znakowymi .........................................160 SOUNDEX ..........................................................................................................................161 Obs*uga j!zyków narodowych ............................................................................................163 Obs*uga wyra$e& regularnych .............................................................................................163 Podsumowanie ...........................................................................................................................163

Rozdzia" 8. Wyszukiwanie z wykorzystaniem wyra%e( regularnych ............................. 165 Wyszukiwanie w ci"gach znaków .............................................................................................165 REGEXP_SUBSTR ...................................................................................................................167 REGEXP_INSTR ................................................................................................................171 REGEXP_LIKE ..................................................................................................................172 REPLACE i REGEXP_REPLACE .....................................................................................173 REGEXP_COUNT ..............................................................................................................177

Rozdzia" 9. Operacje z danymi numerycznymi ............................................................ 179 Trzy klasy funkcji numerycznych ..............................................................................................179 Notacja ......................................................................................................................................180 Funkcje operuj"ce na pojedynczych warto%ciach ......................................................................180 Dodawanie (+), odejmowanie (–), mno$enie (*) i dzielenie (/) ...........................................181 NULL ..................................................................................................................................182


8

Oracle Database 11g. Kompendium administratora NVL — zast!powanie warto%ci NULL ...............................................................................182 ABS — warto%+ bezwzgl!dna .............................................................................................184 CEIL ....................................................................................................................................184 FLOOR ................................................................................................................................184 MOD ...................................................................................................................................184 POWER ...............................................................................................................................185 SQRT — pierwiastek kwadratowy ......................................................................................185 EXP, LN i LOG ...................................................................................................................186 ROUND i TRUNC ..............................................................................................................186 SIGN ...................................................................................................................................188 SIN, SINH, COS, COSH, TAN, TANH, ACOS, ATAN, ATAN2 i ASIN .........................188 Funkcje agregacji .......................................................................................................................189 Warto%ci NULL w funkcjach agregacji ...............................................................................189 Przyk*ady funkcji operuj"cych na pojedynczych warto%ciach oraz na grupach warto%ci ....190 AVG, COUNT, MAX, MIN i SUM ....................................................................................191 :"czenie funkcji grupowych z funkcjami operuj"cymi na pojedynczych warto%ciach .......192 STDDEV i VARIANCE .....................................................................................................194 Opcja DISTINCT w funkcjach grupowych .........................................................................194 Funkcje operuj"ce na listach ......................................................................................................195 Wyszukiwanie wierszy za pomoc" funkcji MAX lub MIN .......................................................197 Priorytety dzia*a& i nawiasy .......................................................................................................198 Podsumowanie ...........................................................................................................................199

Rozdzia" 10. Daty — kiedy!, teraz i ró%nice ................................................................ 201 Arytmetyka dat ..........................................................................................................................201 SYSDATE, CURRENT_DATE i SYSTIMESTAMP .........................................................202 Ró$nica pomi!dzy dwiema datami ......................................................................................203 Dodawanie miesi!cy ...........................................................................................................204 Odejmowanie miesi!cy .......................................................................................................204 GREATEST i LEAST .........................................................................................................204 NEXT_DAY .......................................................................................................................205 LAST_DAY ........................................................................................................................207 MONTHS_BETWEEN — liczba miesi!cy dziel"cych dwie daty ......................................207 :"czenie funkcji przetwarzania dat .....................................................................................208 Funkcje ROUND i TRUNC w obliczeniach z wykorzystaniem dat ..........................................208 Formatowanie w funkcjach TO_DATE i TO_CHAR ................................................................209 Najcz!stsze b*!dy funkcji TO_CHAR .................................................................................214 NEW_TIME — prze*"czanie stref czasowych ....................................................................214 Obliczenia z wykorzystaniem funkcji TO_DATE ...............................................................215 Daty w klauzuli where ...............................................................................................................217 Obs*uga wielu stuleci .................................................................................................................218 Zastosowanie funkcji EXTRACT ..............................................................................................219 Zastosowanie typu danych TIMESTAMP .................................................................................220

Rozdzia" 11. Funkcje konwersji i transformacji ............................................................ 223 Podstawowe funkcje konwersji .................................................................................................225 Automatyczna konwersja typów danych .............................................................................227 Ostrze$enie przed automatyczn" konwersj" ........................................................................230 Specjalne funkcje konwersji ......................................................................................................230 Funkcje transformacji ................................................................................................................231 TRANSLATE .....................................................................................................................231 DECODE ............................................................................................................................232 Podsumowanie ...........................................................................................................................233


Spis tre!ci

9

Rozdzia" 12. Grupowanie danych ................................................................................ 235 Zastosowanie klauzul group by i having ...................................................................................235 Dodanie klauzuli order by ...................................................................................................237 Kolejno%+ wykonywania klauzul .........................................................................................238 Perspektywy grup ......................................................................................................................240 Zmiana nazw kolumn za pomoc" aliasów .................................................................................241 Mo$liwo%ci perspektyw grupowych ..........................................................................................242 Zastosowanie klauzuli order by w perspektywach ..............................................................243 Logika klauzuli having ........................................................................................................244 Zastosowanie klauzuli order by z kolumnami i funkcjami grupuj"cymi .............................246 Kolumny z*"cze& .................................................................................................................246 Dodatkowe mo$liwo%ci grupowania ..........................................................................................247

Rozdzia" 13. Kiedy jedno zapytanie zale%y od drugiego ................................................ 249 Zaawansowane podzapytania ....................................................................................................249 Skorelowane podzapytania ..................................................................................................250 Koordynacja testów logicznych ..........................................................................................251 Zastosowanie klauzuli EXISTS oraz jej skorelowanego podzapytania ...............................252 Z*"czenia zewn!trzne ................................................................................................................254 Sk*adnia z*"cze& zewn!trznych w wersjach bazy danych poprzedzaj"cych Oracle9i .........254 Nowa sk*adnia z*"cze& zewn!trznych .................................................................................256 Zast"pienie klauzuli NOT IN zewn!trznym z*"czeniem .....................................................258 Zast"pienie klauzuli NOT IN klauzul" NOT EXISTS .........................................................259 Z*"czenia naturalne i wewn!trzne ..............................................................................................260 UNION, INTERSECT i MINUS ...............................................................................................261 Podzapytania IN ..................................................................................................................264 Ograniczenia stosowania operatorów UNION, INTERSECT i MINUS .............................264

Rozdzia" 14. Zaawansowane mo%liwo!ci ..................................................................... 265 Z*o$one grupowanie ..................................................................................................................265 Tabele tymczasowe ...................................................................................................................267 Zastosowanie funkcji ROLLUP, GROUPING i CUBE .............................................................268 Drzewa rodzinne i klauzula connect by .....................................................................................272 Wykluczanie pojedynczych wierszy i ga*!zi .......................................................................275 Poruszanie si! w kierunku korzeni ......................................................................................276 Podstawowe zasady .............................................................................................................278

Rozdzia" 15. Modyfikowanie danych: insert, update, merge i delete ............................. 281 insert ..........................................................................................................................................281 Wprowadzanie informacji o godzinie ..................................................................................282 insert na podstawie select ....................................................................................................283 Zastosowanie wskazówki APPEND do poprawy wydajno%ci instrukcji insert ...................284 rollback, commit i autocommit ..................................................................................................285 Zastosowanie punktów zapisu .............................................................................................285 Niejawne polecenie commit ................................................................................................287 Automatyczne cofanie .........................................................................................................287 Wprowadzanie danych do wielu tabel .......................................................................................287 delete .........................................................................................................................................291 update ........................................................................................................................................292 Instrukcja update z wbudowan" instrukcj" select ................................................................293 Instrukcja update z warto%ciami NULL ...............................................................................294 Zastosowanie polecenia merge ..................................................................................................295 Obs*uga b*!dów .........................................................................................................................298


10

Oracle Database 11g. Kompendium administratora

Rozdzia" 16. DECODE i CASE: if, then oraz else w j#zyku SQL ..................................... 301 if, then, else ...............................................................................................................................301 Zast!powanie warto%ci przy u$yciu funkcji DECODE ..............................................................304 Funkcja DECODE w innej funkcji DECODE ...........................................................................305 Operatory wi!kszy ni$ i mniejszy ni$ w funkcji DECODE .......................................................309 Funkcja CASE ...........................................................................................................................310 U$ycie operatora PIVOT ...........................................................................................................313

Rozdzia" 17. Tworzenie tabel, perspektyw, indeksów, klastrów i sekwencji oraz zarz&dzanie nimi .............................................. 317 Tworzenie tabeli ........................................................................................................................317 Szeroko%+ ci"gów znaków i precyzja danych liczbowych ...................................................318 Zaokr"glanie danych podczas wprowadzania do bazy ........................................................321 Ograniczenia w instrukcji create table .................................................................................321 Wyznaczanie indeksowych przestrzeni tabel ......................................................................324 Nazwy ogranicze& ...............................................................................................................325 Usuwanie tabel ..........................................................................................................................326 Uaktualnianie definicji tabel ......................................................................................................326 Regu*y dodawania lub modyfikowania kolumn ..................................................................329 Tworzenie tabel tylko do odczytu .......................................................................................330 Modyfikowanie aktywnie wykorzystywanych tabel ...........................................................330 Tworzenie kolumn wirtualnych ...........................................................................................331 Usuwanie kolumn ................................................................................................................332 Tworzenie tabeli na podstawie innej tabeli ................................................................................333 Tworzenie tabeli o strukturze indeksu .......................................................................................335 Tworzenie perspektyw ...............................................................................................................336 Stabilno%+ perspektywy .......................................................................................................336 Zastosowanie klauzuli order by w perspektywach ..............................................................337 Tworzenie perspektyw tylko do odczytu .............................................................................338 Indeksy ......................................................................................................................................338 Tworzenie indeksów ...........................................................................................................339 Wymuszanie niepowtarzalno%ci ..........................................................................................340 Tworzenie indeksów niepowtarzalnych ..............................................................................340 Tworzenie indeksów bitmapowych .....................................................................................341 Kiedy nale$y tworzy+ indeksy .............................................................................................342 Tworzenie niewidocznych indeksów ...................................................................................342 Ró$norodno%+ danych w kolumnach indeksowanych .........................................................343 Ile indeksów wykorzystywa+ w tabeli .................................................................................344 Lokalizacja indeksów w bazie danych ................................................................................344 Odbudowywanie indeksu ....................................................................................................345 Indeksy tworzone na podstawie funkcji ..............................................................................345 Klastry .......................................................................................................................................346 Sekwencje ..................................................................................................................................348

Rozdzia" 18. Partycjonowanie ..................................................................................... 351 Tworzenie tabeli partycjonowanej .............................................................................................351 Partycjonowanie wed*ug listy ....................................................................................................354 Tworzenie podpartycji ...............................................................................................................354 Tworzenie partycji wed*ug odwo*a& i interwa*ów .....................................................................355 Indeksowanie partycji ................................................................................................................357 Zarz"dzanie tabelami partycjonowanymi ..................................................................................357

Rozdzia" 19. Podstawowe mechanizmy bezpiecze(stwa systemu Oracle ...................... 359 U$ytkownicy, role i uprawnienia ...............................................................................................359 Tworzenie u$ytkownika ......................................................................................................360 Zarz"dzanie has*ami ............................................................................................................361


Spis tre!ci

11 Standardowe role .................................................................................................................365 Polecenie grant ....................................................................................................................366 Odbieranie uprawnie& i ról ..................................................................................................366 Jakie uprawnienia mog" nadawa+ u$ytkownicy? ......................................................................367 Prze*"czanie si! do innego u$ytkownika za pomoc" polecenia connect ..............................369 create synonym ....................................................................................................................372 Wykorzystanie uprawnie&, które nie zosta*y nadane ...........................................................372 Przekazywanie uprawnie& ...................................................................................................372 Tworzenie ról ......................................................................................................................374 Nadawanie uprawnie& do ról ...............................................................................................374 Przypisywanie ról do innych ról ..........................................................................................375 Nadawanie ról u$ytkownikom .............................................................................................375 Definiowanie hase* dla ról ...................................................................................................376 Usuwanie has*a z roli ..........................................................................................................377 W*"czanie i wy*"czanie ról ..................................................................................................377 Odbieranie uprawnie& nadanych rolom ...............................................................................378 Usuwanie roli ......................................................................................................................378 Nadawanie uprawnienia UPDATE do okre%lonych kolumn ...............................................378 Odbieranie uprawnie& do obiektów .....................................................................................379 Zabezpieczenia na poziomie u$ytkownika ..........................................................................379 Nadawanie uprawnie& publicznych .....................................................................................381 Nadawanie uprawnie& do ograniczonych zasobów ...................................................................382

Cz#!$ III Wi#cej ni% podstawy ........................................................... 383 Rozdzia" 20. Zaawansowane w"a!ciwo!ci bezpiecze(stwa — wirtualne prywatne bazy danych ......................................................... 385 Konfiguracja wst!pna ................................................................................................................386 Tworzenie kontekstu aplikacji ...................................................................................................387 Tworzenie wyzwalacza logowania ............................................................................................388 Tworzenie strategii bezpiecze&stwa ..........................................................................................389 Zastosowanie strategii bezpiecze&stwa do tabel ........................................................................391 Testowanie mechanizmu VPD ..................................................................................................391 Implementacja mechanizmu VPD na poziomie kolumn ............................................................393 Wy*"czanie mechanizmu VPD ..................................................................................................393 Korzystanie z grup strategii .......................................................................................................395

Rozdzia" 21. Zaawansowane w"a!ciwo!ci bezpiecze(stwa — przezroczyste szyfrowanie danych ....................................................... 397 Przezroczyste szyfrowanie danych w kolumnach ......................................................................397 Konfiguracja ........................................................................................................................398 Dodatkowa konfiguracja baz danych RAC .........................................................................399 Otwieranie i zamykanie portfela ..........................................................................................399 Szyfrowanie i deszyfrowanie kolumn .................................................................................400 Szyfrowanie przestrzeni tabel ....................................................................................................401 Konfiguracja ........................................................................................................................402 Tworzenie zaszyfrowanej przestrzeni tabel .........................................................................403

Rozdzia" 22. Przestrzenie tabel .................................................................................. 405 Przestrzenie tabel a struktura bazy danych ................................................................................405 Zawarto%+ przestrzeni tabel .................................................................................................406 Przestrze& RECYCLEBIN ..................................................................................................408 Przestrzenie tabel tylko do odczytu .....................................................................................409 Przestrzenie tabel nologging ................................................................................................410 Tymczasowe przestrzenie tabel ...........................................................................................410


12

Oracle Database 11g. Kompendium administratora Przestrzenie tabel dla operacji cofania zarz"dzanych przez system ....................................410 Przestrzenie tabel z du$ymi plikami ....................................................................................411 Szyfrowane przestrzenie tabel .............................................................................................411 Obs*uga opcji flashback ......................................................................................................412 Transportowanie przestrzeni tabel .......................................................................................412 Planowanie wykorzystania przestrzeni tabel .............................................................................413 Oddzielenie tabel aktywnych od tabel statycznych .............................................................413 Oddzielenie indeksów od tabel ............................................................................................413 Oddzielenie du$ych od ma*ych obiektów ............................................................................413 Oddzielenie tabel aplikacji od obiektów podstawowych .....................................................414

Rozdzia" 23. Zastosowanie programu SQL*Loader do "adowania danych ...................... 415 Plik steruj"cy .............................................................................................................................416 :adowanie danych o zmiennej d*ugo%ci ..............................................................................417 Rozpocz!cie *adowania .............................................................................................................418 Rekordy logiczne i fizyczne ......................................................................................................421 Uwagi na temat sk*adni pliku steruj"cego .................................................................................422 Zarz"dzanie *adowaniem danych ...............................................................................................424 Powtarzanie operacji *adowania danych ....................................................................................425 Dostrajanie operacji *adowania danych .....................................................................................426 :adowanie Direct Path ..............................................................................................................428 Dodatkowe w*asno%ci ................................................................................................................429

Rozdzia" 24. Mechanizm eksportu i importu Data Pump .............................................. 431 Tworzenie katalogu ...................................................................................................................431 Opcje mechanizmu Data Pump Export ......................................................................................432 Uruchamianie zadania eksportu mechanizmu Data Pump .........................................................435 Zatrzymywanie dzia*aj"cych zada& i ich wznawianie .........................................................436 Eksportowanie z innej bazy danych ....................................................................................437 Opcje EXCLUDE, INCLUDE i QUERY ............................................................................437 Opcje mechanizmu Data Pump Import ......................................................................................439 Uruchamianie zadania importu mechanizmu Data Pump ..........................................................441 Zatrzymanie dzia*aj"cych zada& i ich wznawianie ..............................................................443 Opcje EXCLUDE, INCLUDE i QUERY ............................................................................443 Przekszta*canie importowanych obiektów ..........................................................................444 Generowanie SQL ...............................................................................................................444

Rozdzia" 25. Zdalny dost#p do danych ........................................................................ 447 :"cza baz danych ......................................................................................................................447 Jak dzia*aj" *"cza baz danych ..............................................................................................447 Zdalne zapytania .................................................................................................................448 Definiowanie synonimów lub perspektyw ..........................................................................449 Zdalne aktualizacje ..............................................................................................................450 Sk*adnia *"cza bazy danych .................................................................................................451 Zastosowanie synonimów w celu uzyskania przezroczystej lokalizacji obiektów .....................454 Pseudokolumna User w perspektywach .....................................................................................456

Rozdzia" 26. Perspektywy zmaterializowane ............................................................... 459 Dzia*anie ....................................................................................................................................459 Wymagane uprawnienia systemowe ..........................................................................................460 Wymagane uprawnienia do tabel ...............................................................................................461 Perspektywy tylko do odczytu a perspektywy z mo$liwo%ci" aktualizacji ................................461 Sk*adnia polecenia create materialized view .............................................................................462 Typy perspektyw zmaterializowanych ................................................................................466 Perspektywy zmaterializowane z kluczami g*ównymi i kolumnami RowID ......................466 Zastosowanie tabel gotowych ..............................................................................................467 Indeksowanie tabel perspektywy zmaterializowanej ...........................................................467


Spis tre!ci

13 Zastosowanie perspektyw zmaterializowanych do modyfikacji %cie$ek wykonywania zapyta& .......................................................................468 Pakiet DBMS_ADVISOR .........................................................................................................470 Od%wie$anie perspektyw zmaterializowanych ..........................................................................472 Jakiego rodzaju od%wie$anie mo$na wykona+? ...................................................................472 Szybkie od%wie$anie z u$yciem CONSIDER FRESH ........................................................476 Od%wie$anie automatyczne .................................................................................................476 Od%wie$anie r!czne .............................................................................................................477 Polecenie create materialized view log ......................................................................................478 Modyfikowanie zmaterializowanych perspektyw i dzienników ................................................480 Usuwanie zmaterializowanych perspektyw i dzienników .........................................................480

Rozdzia" 27. Zastosowanie pakietu Oracle Text do wyszukiwania ci&gów znaków ........ 483 Wprowadzanie tekstu do bazy danych .......................................................................................483 Zapytania tekstowe i indeksy .....................................................................................................484 Zapytania tekstowe ..............................................................................................................485 Dost!pne wyra$enia w zapytaniach tekstowych ..................................................................486 Dok*adne wyszukiwanie s*ów .............................................................................................487 Dok*adne wyszukiwanie wielu s*ów ...................................................................................488 Wyszukiwanie fraz ..............................................................................................................491 Wyszukiwanie s*ów, które s" blisko siebie .........................................................................492 Zastosowanie wzorców w operacjach wyszukiwania ..........................................................493 Wyszukiwanie s*ów o tym samym rdzeniu .........................................................................494 Wyszukiwanie niedok*adne .................................................................................................494 Wyszukiwanie s*ów o podobnym brzmieniu .......................................................................495 Zastosowanie operatora ABOUT ........................................................................................496 Synchronizacja indeksów ....................................................................................................498 Zestawy indeksów .....................................................................................................................498

Rozdzia" 28. Tabele zewn#trzne .................................................................................. 501 Dost!p do zewn!trznych danych ...............................................................................................501 Tworzenie tabeli zewn!trznej ....................................................................................................502 Opcje tworzenia tabel zewn!trznych ...................................................................................506 :adowanie danych do tabel zewn!trznych w czasie ich tworzenia .....................................511 Modyfikowanie tabel zewn!trznych ..........................................................................................512 Klauzula access parameters .................................................................................................512 Klauzula add column ...........................................................................................................513 Klauzula default directory ...................................................................................................513 Klauzula drop column .........................................................................................................513 Klauzula location .................................................................................................................513 Klauzula modify column .....................................................................................................513 Klauzula parallel .................................................................................................................513 Klauzula project column .....................................................................................................514 Klauzula reject limit ............................................................................................................514 Klauzula rename to ..............................................................................................................514 Ograniczenia, zalety i potencjalne zastosowania tabel zewn!trznych .......................................514

Rozdzia" 29. Zapytania flashback ............................................................................... 517 Przyk*ad czasowego zapytania flashback ..................................................................................518 Zapisywanie danych ..................................................................................................................519 Przyk*ad zapytania flashback z wykorzystaniem numerów SCN ..............................................520 Co zrobi+, je%li zapytanie flashback nie powiedzie si!? ............................................................521 Jaki numer SCN jest przypisany do ka$dego wiersza? ..............................................................522 Zapytania flashback o wersje .....................................................................................................523 Planowanie operacji flashback ..................................................................................................525


14

Oracle Database 11g. Kompendium administratora

Rozdzia" 30. Operacje flashback — tabele i bazy danych ............................................. 527 Polecenie flashback table ...........................................................................................................527 Wymagane uprawnienia ......................................................................................................528 Odtwarzanie usuni!tych tabel ..............................................................................................528 W*"czanie i wy*"czanie kosza .............................................................................................530 Odtwarzanie danych do okre%lonego numeru SCN lub znacznika czasu ............................530 Indeksy i statystyki ..............................................................................................................531 Polecenie flashback database .....................................................................................................532

Rozdzia" 31. Powtarzanie polece( SQL ....................................................................... 537 Konfiguracja wysokiego poziomu .............................................................................................537 Izolacja i *"cza .....................................................................................................................538 Tworzenie katalogu polece& ................................................................................................538 Przechwytywanie polece& .........................................................................................................539 Definiowanie filtrów ...........................................................................................................539 Uruchamianie przechwytywania .........................................................................................540 Zatrzymywanie przechwytywania .......................................................................................541 Eksportowanie danych AWR ..............................................................................................541 Przetwarzanie polece& ...............................................................................................................541 Powtarzanie polece& ..................................................................................................................542 Uruchamianie klientów powtarzania i sterowanie nimi .......................................................543 Inicjowanie i uruchamianie powtarzania .............................................................................543 Eksportowanie danych AWR ..............................................................................................545

Cz#!$ IV PL/SQL .............................................................................. 547 Rozdzia" 32. Wprowadzenie do j#zyka PL/SQL ............................................................ 549 Przegl"d j!zyka PL/SQL ...........................................................................................................549 Sekcja deklaracji ........................................................................................................................550 Sekcja polece& wykonywalnych ................................................................................................553 Logika warunkowa ..............................................................................................................555 P!tle .....................................................................................................................................556 Instrukcje CASE ..................................................................................................................564 Sekcja obs*ugi wyj"tków ...........................................................................................................566

Rozdzia" 33. Aktualizacja dzia"aj&cych aplikacji .......................................................... 569 Bazy danych o wysokiej dost!pno%ci ........................................................................................569 Architektura Oracle Data Guard ..........................................................................................570 Tworzenie konfiguracji zapasowej bazy danych .................................................................572 Zarz"dzanie rolami — prze*"czanie i prze*"czanie awaryjne ..............................................574 Wprowadzanie zmian DDL w sposób nieinwazyjny .................................................................577 Tworzenie kolumn wirtualnych ...........................................................................................577 Modyfikowanie aktywnie wykorzystywanych tabel ...........................................................578 Dodawanie kolumn NOT NULL .........................................................................................579 Reorganizacja obiektów w trybie online .............................................................................579 Usuwanie kolumn ................................................................................................................582

Rozdzia" 34. Wyzwalacze ........................................................................................... 585 Wymagane uprawnienia systemowe ..........................................................................................585 Wymagane uprawnienia do tabel ...............................................................................................586 Typy wyzwalaczy ......................................................................................................................586 Wyzwalacze na poziomie wierszy .......................................................................................586 Wyzwalacze na poziomie instrukcji ....................................................................................586 Wyzwalacze BEFORE i AFTER .........................................................................................587 Wyzwalacz INSTEAD OF ..................................................................................................587


Spis tre!ci

15 Wyzwalacze na poziomie schematu ....................................................................................588 Wyzwalacze na poziomie bazy danych ...............................................................................588 Wyzwalacze z*o$one ...........................................................................................................588 Sk*adnia wyzwalaczy ................................................................................................................588 :"czenie wyzwalaczy typu DML ........................................................................................590 Ustawianie warto%ci we wprowadzanych wierszach ...........................................................592 Utrzymanie zdublowanych danych .....................................................................................593 Dostosowanie obs*ugi b*!dów do indywidualnych potrzeb .................................................594 Wywo*ywanie procedur wewn"trz wyzwalaczy ..................................................................596 Nazwy wyzwalaczy .............................................................................................................597 Tworzenie wyzwalaczy zwi"zanych z operacjami DDL .....................................................597 Wyzwalacze zwi"zane z operacjami na poziomie bazy danych ..........................................602 Tworzenie wyzwalaczy z*o$onych ......................................................................................602 W*"czanie i wy*"czanie wyzwalaczy .........................................................................................604 Zast!powanie wyzwalaczy ........................................................................................................605 Usuwanie wyzwalaczy ..............................................................................................................605

Rozdzia" 35. Procedury, funkcje i pakiety ................................................................... 607 Wymagane uprawnienia systemowe ..........................................................................................608 Wymagane uprawnienia do tabel ...............................................................................................609 Procedury a funkcje ...................................................................................................................610 Procedury a pakiety ...................................................................................................................610 Sk*adnia polecenia create procedure ..........................................................................................610 Sk*adnia polecenia create function ............................................................................................612 Odwo*ywanie si! do zdalnych tabel w procedurach ............................................................614 Procedury diagnostyczne .....................................................................................................615 Tworzenie funkcji u$ytkownika ..........................................................................................616 Dostosowanie obs*ugi b*!dów do indywidualnych potrzeb .................................................618 Nazwy procedur i funkcji ....................................................................................................619 Sk*adnia polecenia create package ............................................................................................620 Przegl"danie kodu ]ród*owego obiektów proceduralnych .........................................................623 Kompilacja procedur, funkcji i pakietów ...................................................................................623 Zast!powanie procedur, funkcji i pakietów ...............................................................................624 Usuwanie procedur, funkcji i pakietów .....................................................................................625

Rozdzia" 36. Wbudowany dynamiczny SQL i pakiet DBMS_SQL .................................... 627 Polecenie EXECUTE IMMEDIATE .........................................................................................627 Zmienne wi"$"ce .......................................................................................................................629 Pakiet DBMS_SQL ...................................................................................................................630 OPEN_CURSOR ................................................................................................................631 PARSE ................................................................................................................................631 BIND_VARIABLE oraz BIND_ARRAY ...........................................................................631 EXECUTE ..........................................................................................................................632 DEFINE_COLUMN ...........................................................................................................632 FETCH_ROWS, EXECUTE_AND_FETCH oraz COLUMN_VALUE ............................633 CLOSE_CURSOR ..............................................................................................................633

Rozdzia" 37. Dostrajanie wydajno!ci PL/SQL .............................................................. 635 Dostrajanie SQL ........................................................................................................................635 Dostrajanie kodu PL/SQL .........................................................................................................636 Zastosowanie pakietu DBMS_PROFILER do identyfikowania problemów .............................637 U$ycie funkcji PL/SQL obs*uguj"cych operacje masowe .........................................................642 forall ....................................................................................................................................642 bulk collect ..........................................................................................................................644


16

Cz#!$ V

Oracle Database 11g. Kompendium administratora

Obiektowo-relacyjne bazy danych ........................................ 647

Rozdzia" 38. Implementowanie typów, perspektyw obiektowych i metod ..................... 649 Zasady pracy z abstrakcyjnymi typami danych .........................................................................649 Abstrakcyjne typy danych a bezpiecze&stwo ......................................................................650 Indeksowanie atrybutów abstrakcyjnego typu danych ........................................................653 Implementowanie perspektyw obiektowych ..............................................................................655 Operowanie na danych za po%rednictwem perspektyw obiektowych ..................................658 Wyzwalacz INSTEAD OF ..................................................................................................658 Metody ......................................................................................................................................661 Sk*adnia metod ....................................................................................................................661 Zarz"dzanie metodami ........................................................................................................663

Rozdzia" 39. Kolektory (tabele zagnie%d%one i tablice zmienne) ................................... 665 Tablice zmienne .........................................................................................................................665 Tworzenie tablicy zmiennej ................................................................................................665 Opis tablicy zmiennej ..........................................................................................................666 Wstawianie rekordów do tablicy zmiennej ..........................................................................667 Pobieranie danych z tablic zmiennych ................................................................................669 Tabele zagnie$d$one ..................................................................................................................672 Definiowanie przestrzeni tabel dla tabel zagnie$d$onych ...................................................673 Wstawianie rekordów do tabeli zagnie$d$onej ...................................................................673 Wykonywanie zapyta& do tabel zagnie$d$onych ................................................................675 Dodatkowe funkcje dla tabel zagnie$d$onych i tablic zmiennych .............................................677 Zarz"dzanie tabelami zagnie$d$onymi i tablicami zmiennymi .................................................677 Problemy ze zmienno%ci" charakterystyk kolektorów .........................................................678 Lokalizacja danych ..............................................................................................................679

Rozdzia" 40. Wielkie obiekty (LOB) ............................................................................ 681 Dost!pne typy ............................................................................................................................681 Definiowanie parametrów sk*adowania dla danych LOB ..........................................................683 Zapytania o warto%ci typu LOB .................................................................................................685 Inicjowanie warto%ci ...........................................................................................................687 U$ywanie polecenia insert w podzapytaniach .....................................................................689 Aktualizowanie warto%ci LOB ............................................................................................689 Funkcje obs*ugi ci"gów znaków w typach LOB .................................................................690 Operowanie na warto%ciach LOB za pomoc" pakietu DBMS_LOB ...................................691 Usuwanie obiektów typu LOB ............................................................................................708

Rozdzia" 41. Zaawansowane funkcje obiektowe .......................................................... 709 Obiekty wierszy a obiekty kolumn ............................................................................................709 Tabele obiektowe i identyfikatory OID .....................................................................................710 Wstawianie wierszy do tabel obiektowych ..........................................................................711 Pobieranie danych z tabel obiektowych ..............................................................................712 Aktualizowanie warto%ci i ich usuwanie z tabel obiektowych .............................................712 Funkcja REF ........................................................................................................................713 Funkcja DEREF ..................................................................................................................714 Funkcja VALUE .................................................................................................................717 Nieprawid*owe odwo*ania ...................................................................................................717 Perspektywy obiektowe z odwo*aniami REF ............................................................................718 Przegl"d perspektyw obiektowych ......................................................................................718 Perspektywy obiektowe korzystaj"ce z odwo*a& .................................................................719 Obiektowy j!zyk PL/SQL .........................................................................................................723 Obiekty w bazie danych ............................................................................................................724


Spis tre!ci

17

Cz#!$ VI J#zyk Java w systemie Oracle ............................................. 727 Rozdzia" 42. Wprowadzenie do j#zyka Java ................................................................. 729 Krótkie porównanie j!zyków PL/SQL i Java ............................................................................730 Zaczynamy ................................................................................................................................731 Deklaracje ..................................................................................................................................731 Podstawowe polecenia ...............................................................................................................732 Instrukcje warunkowe .........................................................................................................733 P!tle .....................................................................................................................................737 Obs*uga wyj"tków ...............................................................................................................739 S*owa zastrze$one w Javie ..................................................................................................740 Klasy ..........................................................................................................................................740

Rozdzia" 43. Programowanie z u%yciem JDBC .............................................................. 747 Korzystanie z klas JDBC ...........................................................................................................748 Operacje z wykorzystaniem sterownika JDBC ..........................................................................751

Rozdzia" 44. Procedury sk"adowane w Javie ................................................................ 755 :adowanie klas do bazy danych ................................................................................................757 Korzystanie z klas ......................................................................................................................761 Bezpo%rednie przywo*ywanie procedur sk*adowanych Javy ...............................................764 Wydajno%+ ...........................................................................................................................764

Cz#!$ VII

Przewodniki autostopowicza ................................................................... 767

Rozdzia" 45. Autostopem po s"owniku danych Oracle .................................................. 769 Nazewnictwo .............................................................................................................................770 Nowe perspektywy w systemie Oracle 11g ...............................................................................770 Mapy DICTIONARY (DICT) i DICT_COLUMNS ..................................................................774 Tabele (z kolumnami), perspektywy, synonimy i sekwencje ....................................................776 Katalog — USER_CATALOG (CAT) ................................................................................776 Obiekty — USER_OBJECTS (OBJ) ..................................................................................777 Tabele — USER_TABLES (TABS) ...................................................................................778 Kolumny — USER_TAB_COLUMNS (COLS) .................................................................780 Perspektywy — USER_VIEWS ..........................................................................................781 Synonimy — USER_SYNONYMS (SYN) .........................................................................784 Sekwencje — USER_SEQUENCES (SEQ) ........................................................................784 Kosz — USER_RECYCLEBIN i DBA_RECYCLEBIN ..........................................................785 Ograniczenia i komentarze ........................................................................................................785 Ograniczenia — USER_CONSTRAINTS ..........................................................................785 Kolumny ogranicze& — USER_CONS_COLUMNS ..........................................................787 Wyj"tki ogranicze& — EXCEPTIONS ...............................................................................788 Komentarze do tabel — USER_TAB_COMMENTS .........................................................789 Komentarze do kolumn — USER_COL_COMMENTS .....................................................790 Indeksy i klastry ........................................................................................................................790 Indeksy — USER_INDEXES (IND) ..................................................................................790 Kolumny indeksowane — USER_IND_COLUMNS ..........................................................792 Klastry — USER_CLUSTERS (CLU) ................................................................................793 Kolumny klastrów — USER_CLU_COLUMNS ................................................................794 Abstrakcyjne typy danych i obiekty LOB .................................................................................795 Abstrakcyjne typy danych — USER_TYPES .....................................................................795 Obiekty LOB — USER_LOBS ...........................................................................................797 :"cza bazy danych i perspektywy zmaterializowane ................................................................798 :"cza bazy danych — USER_DB_LINKS .........................................................................798 Perspektywy zmaterializowane ...........................................................................................798 Dzienniki perspektyw zmaterializowanych — USER_MVIEW_LOGS .............................800


18

Oracle Database 11g. Kompendium administratora Wyzwalacze, procedury, funkcje i pakiety ................................................................................801 Wyzwalacze — USER_TRIGGERS ...................................................................................801 Procedury, funkcje i pakiety — USER_SOURCE ..............................................................802 Wymiary ....................................................................................................................................803 Alokacja i zu$ycie przestrzeni razem z partycjami i podpartycjami ..........................................805 Przestrzenie tabel — USER_TABLESPACES ...................................................................805 Limity dyskowe — USER_TS_QUOTAS ..........................................................................806 Segmenty i obszary — USER_SEGMENTS i USER_EXTENTS ......................................806 Partycje i podpartycje ..........................................................................................................807 Wolna przestrze& — USER_FREE_SPACE .......................................................................809 U$ytkownicy i uprawnienia .......................................................................................................810 U$ytkownicy — USER_USERS .........................................................................................810 Limity zasobów — USER_RESOURCE_LIMITS .............................................................810 Uprawnienia do tabel — USER_TAB_PRIVS ...................................................................811 Uprawnienia do kolumn — USER_COL_PRIVS ...............................................................811 Uprawnienia systemowe — USER_SYS_PRIVS ...............................................................811 Role ...........................................................................................................................................812 Audytowanie .............................................................................................................................813 Inne perspektywy .......................................................................................................................814 Monitorowanie wydajno%ci — dynamiczne perspektywy V$ ...................................................814 CHAINED_ROWS .............................................................................................................815 PLAN_TABLE ...................................................................................................................815 Zale$no%ci mi!dzy obiektami — USER_DEPENDENCIES i IDEPTREE .........................816 Perspektywy dost!pne tylko dla administratora ..................................................................816 Oracle Label Security ..........................................................................................................816 Perspektywy bezpo%redniego *adowania SQL*Loader ........................................................816 Perspektywy obs*ugi globalizacji ........................................................................................817 Biblioteki .............................................................................................................................817 Us*ugi heterogeniczne .........................................................................................................817 Typy indeksowe i operatory ................................................................................................818 Zarysy .................................................................................................................................818 Doradcy ...............................................................................................................................818 Planowanie zada& ................................................................................................................819

Rozdzia" 46. Autostopem po dostrajaniu aplikacji i zapyta( SQL .................................. 821 Nowe mo$liwo%ci dostrajania w Oracle 11g ..............................................................................821 Nowe funkcje dostrajania w Oracle 11g ....................................................................................822 Zalecane praktyki dostrajania aplikacji .....................................................................................823 Wykonujmy jak najmniej operacji ......................................................................................824 Upraszczajmy, co si! da ......................................................................................................827 Przekazujmy bazie potrzebne jej informacje .......................................................................829 Maksymalizujmy przepustowo%+ otoczenia ........................................................................829 Dzielmy i rz"d]my ..............................................................................................................831 Testujmy prawid*owo ..........................................................................................................832 Generowanie i czytanie planów wykonania ...............................................................................835 Polecenie set autotrace on ...................................................................................................835 Polecenie explain plan .........................................................................................................839 Najwa$niejsze operacje spotykane w planach wykonania .........................................................840 TABLE ACCESS FULL .....................................................................................................840 TABLE ACCESS BY INDEX ROWID ..............................................................................841 Powi"zane podpowiedzi ......................................................................................................841 Operacje u$ywaj"ce indeksów ............................................................................................841 Kiedy baza u$ywa indeksów ...............................................................................................843 Operacje na zbiorach danych ...............................................................................................849 Operacje wykonuj"ce z*"czenia ...........................................................................................856


Spis tre!ci

19 Z*"czenia wi!cej ni$ dwóch tabel ........................................................................................856 Przetwarzanie równoleg*e i buforowanie ............................................................................863 Implementowanie zarysów sk*adowanych .................................................................................864 Podsumowanie ...........................................................................................................................866

Rozdzia" 47. Buforowanie wyników SQL oraz buforowanie zapyta( po stronie klienta .... 867 Ustawienia parametrów bazy danych dla bufora wyników SQL ...............................................874 Pakiet DBMS_RESULT_CACHE ............................................................................................875 Perspektywy s*ownikowe bufora wyników SQL .......................................................................876 Dodatkowe informacje na temat bufora wyników SQL .............................................................877 Bufor kliencki Oracle Call Interface (OCI) ...............................................................................877 Ograniczenia buforowania klienckiego Oracle Call Interface (OCI) .........................................878

Rozdzia" 48. Analiza przypadków optymalizacji ............................................................ 879 Przypadek 1. Czekanie, czekanie i jeszcze raz czekanie ............................................................879 Przypadek 2. Mordercze zapytania ............................................................................................883 U$ycie zdarzenia %ladu 10053 .............................................................................................885 Przypadek 3. D*ugotrwa*e zadania wsadowe .............................................................................887

Rozdzia" 49. Zaawansowane opcje architektoniczne — DB Vault, Content DB oraz Records DB .............................................. 891 Oracle Database Vault ...............................................................................................................891 Nowe koncepcje w Oracle Database Vault ..........................................................................892 Blokowanie Oracle Database Vault .....................................................................................893 W*"czanie Oracle Database Vault .......................................................................................894 Uwagi na temat instalacji Database Vault ...........................................................................895 Oracle Content Database Suite ..................................................................................................899 Repository ...........................................................................................................................899 Zarz"dzanie dokumentami ..................................................................................................900 Bezpiecze&stwo u$ytkowników ..........................................................................................900 Oracle Records Database ...........................................................................................................901

Rozdzia" 50. Opcja Real Application Clusters w systemie Oracle ................................. 905 Przygotowania do instalacji .......................................................................................................905 Instalowanie konfiguracji Real Application Clusters ................................................................906 Sk*adowanie danych ............................................................................................................907 Parametry inicjalizacji .........................................................................................................908 Uruchamianie i zatrzymywanie instancji klastra .......................................................................910 Mechanizm TAF ........................................................................................................................911 Dodawanie w!z*ów i instancji do klastra ...................................................................................914

Rozdzia" 51. Autostopem po administrowaniu baz& danych ......................................... 915 Tworzenie bazy danych .............................................................................................................916 Praca z Oracle Enterprise Manager .....................................................................................916 Uruchamianie i zamykanie bazy danych ...................................................................................917 Zarz"dzanie obszarami pami!ci .................................................................................................918 Plik parametrów ..................................................................................................................920 Zarz"dzanie przestrzeni" dla obiektów ......................................................................................920 Znaczenie klauzuli storage ..................................................................................................921 Segmenty tabel ....................................................................................................................923 Segmenty indeksów .............................................................................................................924 Systemowe zarz"dzanie segmentami wycofania .................................................................924 Segmenty tymczasowe ........................................................................................................925 Wolna przestrze& .................................................................................................................927 Okre%lanie rozmiaru obiektów ............................................................................................927 Monitorowanie przestrzeni tabel wycofania ..............................................................................930


20

Oracle Database 11g. Kompendium administratora Automatyczne zarz"dzanie sk*adowaniem danych ....................................................................931 Konfiguracja us*ugi ASM ...................................................................................................931 Zarz"dzanie miejscem w segmentach ........................................................................................932 Przenoszenie przestrzeni tabel ...................................................................................................933 Generowanie zbioru przestrzeni przeno%nych .....................................................................933 Do*"czanie zbioru przestrzeni przeno%nych ........................................................................934 Kopie zapasowe .........................................................................................................................935 Data Pump Export i Import .................................................................................................936 Kopie zapasowe offline .......................................................................................................936 Kopie zapasowe online ........................................................................................................937 Mened$er odzyskiwania RMAN .........................................................................................941 Co dalej? ....................................................................................................................................941

Rozdzia" 52. Autostopem po XML w bazach danych Oracle ......................................... 943 Definicje DTD, elementy i atrybuty ..........................................................................................943 Schematy XML .........................................................................................................................947 Wykonywanie polece& SQL na danych XML za pomoc" XSU ................................................949 Polecenia insert, update i delete w XSU ..............................................................................951 XSU i Java ..........................................................................................................................952 Dostosowanie procedur obs*ugi SQL ..................................................................................953 Korzystanie z typu danych XMLType .......................................................................................954 Inne funkcje ...............................................................................................................................956

Cz#!$ VIII Alfabetyczne zestawienie polece( ....................................... 957 Skorowidz ........................................................................................... 1443


Rozdzia 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro3enia Aby stworzy! aplikacj" systemu Oracle i szybko oraz efektywnie z niej korzysta!, u#ytkownicy i programi$ci musz% pos&ugiwa! si" wspólnym j"zykiem, a tak#e posiada! g&"bok% wiedz" zarówno na temat aplikacji biznesowych, jak i narz"dzi systemu Oracle. W poprzednich rozdzia&ach zaprezentowano ogólny opis systemu Oracle oraz sposoby jego instalacji i aktualizacji. Teraz, po zainstalowaniu oprogramowania, mo#emy przyst%pi! do tworzenia aplikacji. Kluczowym elementem w tym przypadku jest $cis&a wspó&praca mened#erów i personelu technicznego. Dawniej analitycy systemowi szczegó&owo badali wymagania klienta, a nast"pnie programi$ci tworzyli aplikacje, które spe&nia&y te wymagania. Klient dostarcza& jedynie opis procesu, który aplikacja mia&a usprawni!, oraz testowa& jej dzia&anie. Dzi"ki najnowszym narz"dziom systemu Oracle mo#na tworzy! aplikacje znacznie lepiej odpowiadaj%ce potrzebom i przyzwyczajeniom u#ytkowników. Jest to jednak mo#liwe tylko w przypadku w&a$ciwego rozumienia zagadnie' biznesowych. Zarówno u#ytkownicy, jak i programi$ci powinni zmierza! do maksymalnego wykorzystania mo#liwo$ci systemu Oracle. U#ytkownik aplikacji ma wiedz" na temat zagadnie' merytorycznych, której nie posiada programista. Programista rozumie dzia&anie wewn"trznych funkcji i w&asno$ci systemu Oracle i $rodowiska komputerów, które s% zbyt skomplikowane dla u#ytkownika. Ale takie obszary wy&%czno$ci wiedzy nie s% liczne. Podczas korzystania z systemu Oracle u#ytkownicy i programi$ci zwykle poruszaj% si" w obr"bie zagadnie' znanych obu stronom. Nie jest tajemnic%, #e pracownicy „merytoryczni” i „techniczni” od lat nie darz% si" szczególn% sympati%. Przyczyn% tego stanu s% ró#nice w posiadanej wiedzy, zainteresowaniach


56

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

i zwyczajach, a tak#e inne cele. Nie bez znaczenia jest tak#e poczucie odr"bno$ci, jakie powstaje w wyniku fizycznego oddzielenia obu grup. Mówi%c szczerze, te zjawiska nie s% wy&%cznie domen% osób zajmuj%cych si" przetwarzaniem danych. Podobne problemy dotycz% na przyk&ad pracowników dzia&u ksi"gowo$ci, którzy cz"sto pracuj% na ró#nych pi"trach, w oddzielnych budynkach, a nawet w innych miastach. Relacje pomi"dzy cz&onkami fizycznie odizolowanych grup staj% si" formalne, sztywne i dalekie od normalno$ci. Powstaj% sztuczne bariery i procedury, które jeszcze bardziej pot"guj% syndrom izolacji. Mo#na by powiedzie!, #e to, co zosta&o napisane powy#ej, jest interesuj%ce dla socjologów. Dlaczego wi"c przypominamy te informacje przy okazji systemu Oracle? Poniewa" wdro"enie tego systemu fundamentalnie zmienia natur& zwi'zków zachodz'cych pomi&dzy pracownikami merytorycznymi a technicznymi. W systemie Oracle nie u"ywa si& specyficznego j&zyka, który rozumiej' tylko profesjonali/ci. System ten mo#e opanowa! ka#dy i ka#dy mo#e go u#ywa!. Informacje, wcze$niej wi"zione w systemach komputerowych pod czujnym okiem ich administratorów, s% teraz dost"pne dla mened#erów, którzy musz% jedynie wpisa! odpowiednie zapytanie. Ta sytuacja znacz%co zmienia obowi%zuj%ce regu&y gry. Od momentu wdro#enia systemu Oracle obydwa obozy znacznie lepiej si" rozumiej%, normalizuj%c zachodz%ce pomi"dzy nimi relacje. Dzi"ki temu powstaj% lepsze aplikacje. Ju# pierwsze wydanie systemu Oracle bazowa&o na zrozumia&ym modelu relacyjnym (który wkrótce zostanie szczegó&owo omówiony). Osoby, które nie s% programistami, nie maj% problemów ze zrozumieniem zada' wykonywanych przez system Oracle. Dzi"ki temu jest on dost"pny w stopniu praktycznie nieograniczonym. Niektóre osoby nie rozumiej%, jak wa#n% rzecz% jest, aby run"&y przestarza&e i sztuczne bariery pomi"dzy u#ytkownikami i systemowcami. Z pewno$ci% jednak metoda kooperacyjna korzystnie wp&ywa na jako$! i u#yteczno$! tworzonych aplikacji. Jednak wielu do$wiadczonych projektantów wpada w pu&apk": pracuj%c z systemem Oracle, usi&uj% stosowa! metody sprawdzone w systemach poprzedniej generacji. O wielu z nich powinni zapomnie!, gdy# b"d% nieskuteczne. Niektóre techniki (i ograniczenia), które by&y sta&ym elementem systemów poprzedniej generacji, teraz nie tylko s% zbyteczne, ale nawet maj% ujemny wp&yw na dzia&anie aplikacji. W procesie poznawania systemu Oracle nale#y pozby! si" wi"kszo$ci starych nawyków i bezu#ytecznych metod. Od teraz s% dost"pne nowe od$wie#aj%ce mo#liwo$ci. Za&o#eniem tej ksi%#ki jest prezentacja systemu Oracle w sposób jasny i prosty — z wykorzystaniem poj"!, które s% zrozumia&e zarówno dla u#ytkowników, jak i programistów. Omawiaj%c system, wskazano przestarza&e i niew&a$ciwe techniki projektowania i zarz%dzania oraz przedstawiono alternatywne rozwi%zania.

Podej4cie kooperacyjne Oracle jest obiektowo-relacyjnym systemem baz danych. Relacyjna baza danych to niezwykle prosty sposób przedstawiania i zarz%dzania danymi wykorzystywanymi w biznesie. Model relacyjny to nic innego, jak kolekcja tabel danych. Z tabelami wszyscy spotykamy si" na co


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia

57

dzie', czytaj%c na przyk&ad raporty o pogodzie lub wyniki sportowe. Wszystko to s% tabele z wyra2nie zaznaczonymi nag&ówkami kolumn i wierszy. Pomimo swojej prostoty model relacyjny wystarcza do prezentowania nawet bardzo z&o#onych zagadnie'. Obiektowo-relacyjna baza danych charakteryzuje si" wszystkimi w&asno$ciami relacyjnej bazy danych, a jednocze$nie ma cechy modelu obiektowego. Oracle mo#na wykorzysta! zarówno jako relacyjny system zarz%dzania baz% danych (RDBMS), jak te# skorzysta! z jego w&asno$ci obiektowych. Niestety, jedyni ludzie, którym przydaje si" relacyjna baza danych — u#ytkownicy biznesowi — z regu&y najmniej j% rozumiej%. Projektanci aplikacji tworz%cy systemy dla u#ytkowników biznesowych cz"sto nie potrafi% obja$ni! poj"! modelu relacyjnego w prosty sposób. Aby by&a mo#liwa wspó&praca, potrzebny jest wspólny j"zyk. Za chwil" wyja$nimy, czym s% relacyjne bazy danych i w jaki sposób wykorzystuje si" je w biznesie. Mo#e si" wydawa!, #e materia& ten zainteresuje wy&%cznie „u#ytkowników”. Do$wiadczony projektant aplikacji relacyjnych odczuje zapewne pokus" pomini"cia tych fragmentów, a ksi%#k" wykorzysta jako dokumentacj" systemu Oracle. Chocia# wi"kszo$! materia&u z pierwszych rozdzia&ów to zagadnienia elementarne, to jednak projektanci, którzy po$wi"c% im czas, poznaj% jasn%, spójn% i funkcjonaln% terminologi", u&atwiaj%c% komunikacj" z u#ytkownikami oraz precyzyjniejsze ustalenie ich wymaga'. Wa#ne jest równie# pozbycie si" niepotrzebnych i prawdopodobnie nie$wiadomie stosowanych przyzwyczaje' projektowych. Wiele z nich zidentyfikujemy podczas prezentacji modelu relacyjnego. Trzeba sobie u$wiadomi!, #e nawet mo#liwo$ci tak rozbudowanego systemu, jak Oracle mo#na zniweczy!, stosuj%c metody w&a$ciwe dla projektów nierelacyjnych. Gdy u#ytkownik docelowy rozumie podstawowe poj"cia obiektowo-relacyjnych baz danych, mo#e w spójny sposób przedstawi! wymagania projektantom aplikacji. Pracuj%c w systemie Oracle, jest w stanie przetwarza! informacje, kontrolowa! raporty i dane oraz niczym prawdziwy ekspert zarz%dza! w&asno$ciami tworzenia aplikacji i zapyta'. 3wiadomy u#ytkownik, który rozumie funkcjonowanie aplikacji, z &atwo$ci% zorientuje si&, czy osi%gn"&a ona maksymaln% wydajno$!. System Oracle uwalnia tak#e programistów od najmniej lubianego przez nich obowi%zku: tworzenia raportów. W du#ych firmach niemal 95 % wszystkich prac programistycznych to #%dania tworzenia nowych raportów. Poniewa# dzi"ki systemowi Oracle u#ytkownicy tworz% raport w kilka minut, a nie w kilka miesi"cy, spe&nianie takiego obowi%zku staje si" przyjemno$ci%.

Dane s6 wsz7dzie W bibliotece znajduj% si" informacje o czytelnikach, ksi%#kach i karach za nieterminowy zwrot. W&a$ciciel kolekcji kart baseballowych zbiera informacje o graczach, notuje daty i wyniki meczów, interesuje si" warto$ci% kart. W ka#dej firmie musz% by! przechowywane rejestry z informacjami o klientach, produktach czy cenach. Informacje te okre$la si" jako dane. Teoretycy cz"sto mówi%, #e dane pozostaj% danymi, dopóki nie zostan% odpowiednio zorganizowane. Wtedy staj% si" informacjami. Je$li przyj%! tak% tez", system Oracle $mia&o mo#na nazwa! mechanizmem wytwarzania informacji, gdy# bazuj%c na surowych danych, potrafi na przyk&ad wykonywa! podsumowania lub pomaga identyfikowa! trendy handlowe. Jest to wiedza, z istnienia której nie zawsze zdajemy sobie spraw". W niniejszej ksi%#ce wyja$nimy, jak j% uzyskiwa!.


58

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

Po opanowaniu podstaw obs&ugi systemu Oracle mo#na wykonywa! obliczenia z danymi, przenosi! je z miejsca na miejsce i modyfikowa!. Takie dzia&ania nazywa si" przetwarzaniem danych. Rzecz jasna, przetwarza! dane mo#na równie#, wykorzystuj%c o&ówek, kartk" papieru i kalkulator, ale w miar" jak rosn% zbiory danych, trzeba si"gn%! po komputery. System zarz'dzania relacyjnymi bazami danych (ang. Relational Database Management System — RDBMS) taki, jak Oracle umo#liwia wykonywanie zada' w sposób zrozumia&y dla u#ytkownika i stosunkowo nieskomplikowany. Mówi%c w uproszczeniu, system Oracle pozwala wykonywanie trzech operacji pokazanych na rysunku 4.1: wprowadzanie danych do systemu, utrzymywanie (przechowywanie) danych, wyprowadzanie danych i pos&ugiwanie si" nimi. Rysunek 4.1. Dane w systemie Oracle

W systemie Oracle sposób post"powania z danymi mo#na opisa! schematem wprowadzanie-utrzymywanie-wyprowadzanie. System dostarcza inteligentnych narz"dzi pozwalaj%cych na stosowanie wyrafinowanych metod pobierania, edycji, modyfikacji i wprowadzania danych, zapewnia ich bezpieczne przechowywanie, a tak#e wyprowadzanie, na przyk&ad w celu tworzenia raportów.

J7zyk systemu Oracle Informacje zapisane w systemie Oracle s% przechowywane w tabelach. W podobny sposób s% prezentowane w gazetach na przyk&ad informacje o pogodzie (rysunek 4.2). Tabela pokazana na rysunku sk&ada si" czterech kolumn: Miasto, Temperatura, Wilgotno*+ i Warunki. Zawiera tak#e wiersze dla poszczególnych miast — od Aten do Sydney — oraz nazw": POGODA. Kolumny, wiersze i nazwa to trzy g&ówne cechy drukowanych tabel. Podobnie jest w przypadku tabel z relacyjnych baz danych. Wszyscy z &atwo$ci% rozumiej% poj"cia u#ywane do


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia

59

Rysunek 4.2. Dane w gazetach cz&sto podawane s' w tabelach

opisu tabeli w bazie danych, poniewa# takie same poj"cia stosuje si" w #yciu codziennym. Nie kryje si" w nich #adne specjalne, niezwyk&e czy tajemnicze znaczenie. To, co widzimy, jest tym, na co wygl%da.

Tabele W systemie Oracle informacje s% zapisywane w tabelach. Ka#da tabela sk&ada si" z jednej lub wi"kszej liczby kolumn. Odpowiedni przyk&ad pokazano na rysunku 4.3. Nag&ówki: Miasto, Temperatura, Wilgotno*+ i Warunki wskazuj%, jaki rodzaj informacji przechowuje si" w kolumnach. Informacje s% zapisywane w wierszach (miasto po mie$cie). Ka#dy niepowtarzalny zestaw danych, na przyk&ad temperatura, wilgotno$! i warunki dla miasta Manchester, jest zapisywany w osobnym wierszu. Rysunek 4.3. Tabela POGODA w systemie Oracle

Aby produkt by& bardziej dost"pny, firma Oracle unika stosowania specjalistycznej, akademickiej terminologii. W artyku&ach o relacyjnych bazach danych kolumny czasami okre$la si" jako „atrybuty”, wiersze jako „krotki”, a tabele jako „encje”. Takie poj"cia s% jednak myl%ce dla u#ytkownika. Cz"sto terminy te s% tylko niepotrzebnymi zamiennikami dla powszechnie zrozumia&ych nazw z j"zyka ogólnego. Firma Oracle stosuje ogólny j"zyk, a zatem mog% go równie# stosowa! programi$ci. Trzeba pami"ta!, #e niepotrzebne stosowanie technicznego #argonu stwarza barier" braku zaufania i niezrozumienia. W tej ksi%#ce, podobnie jak to uczyniono w dokumentacji systemu Oracle, konsekwentnie pos&ugujemy si" poj"ciami „tabele”, „kolumny” i „wiersze”.

Strukturalny j zyk zapyta( Firma Oracle jako pierwsza zacz"&a stosowa! strukturalny j&zyk zapyta: (ang. Structured Query Language — SQL). J"zyk ten pozwala u#ytkownikom na samodzielne wydobywanie informacji z bazy danych. Nie musz% si"ga! po pomoc fachowców, aby sporz%dzi! cho!by najmniejszy raport.


60

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

J"zyk zapyta' systemu Oracle ma swoj% struktur", podobnie jak j"zyk angielski i dowolny inny j"zyk naturalny. Ma równie# regu&y gramatyczne i sk&adni", ale s% to zasady bardzo proste i ich zrozumienie nie powinno przysparza! wi"kszych trudno$ci. J"zyk SQL, którego nazw" wymawia si" jako sequel lub es-ku-el, oferuje, jak wkrótce si" przekonamy, niezwyk&e wr"cz mo#liwo$ci. Korzystanie z niego nie wymaga #adnego do$wiadczenia w programowaniu. Oto przyk&ad, jak mo#na wykorzystywa! SQL. Gdyby kto$ poprosi& nas, aby$my w tabeli POGODA wskazali miasto, gdzie wilgotno$! wynosi 89 %, szybko wymieniliby$my Ateny. Gdyby kto$ poprosi& nas o wskazanie miast, gdzie temperatura wynios&a 19°C, wymieniliby$my Chicago i Manchester. System Oracle jest w stanie odpowiada! na takie pytania niemal równie &atwo. Wystarczy sformu&owa! proste zapytania. S&owa kluczowe wykorzystywane w zapytaniach to select (wybierz), from (z), where (gdzie) oraz order by (uporz%dkuj wed&ug). S% to wskazówki dla systemu Oracle, które u&atwiaj% mu zrozumienie #%da' i udzielenie poprawnej odpowiedzi.

Proste zapytanie w systemie Oracle Gdyby w bazie danych Oracle by&a zapisana przyk&adowa tabela POGODA, pierwsze zapytanie przyj"&oby pokazan% poni#ej posta! ($rednik jest informacj% dla systemu, #e nale#y wykona! zapytanie): select Miasto from POGODA where Wilgotnosc = 89;

System Oracle odpowiedzia&by na nie w taki sposób: Miasto -----------ATENY

Drugie zapytanie przyj"&oby nast"puj%c% posta!: select Miasto from POGODA where Temperatura = 19;

W przypadku tego zapytania system Oracle odpowiedzia&by tak: Miasto ----------MANCHESTER CHICAGO

Jak &atwo zauwa#y!, w ka#dym z tych zapyta' wykorzystano s&owa kluczowe select, from oraz where. A co z klauzul% order by? Przypu$!my, #e interesuj% nas wszystkie miasta uporz%dkowane wed&ug temperatury. Wystarczy, #e wprowadzimy takie oto zapytanie: select Miasto, Temperatura from POGODA order by Temperatura;

— a system Oracle natychmiast odpowie w nast"puj%cy sposób: Miasto Temperatura ---------- ----------LIMA 7


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia MANCHESTER CHICAGO SYDNEY SPARTA PARYD ATENY

61

19 19 21 23 27 36

System Oracle szybko uporz%dkowa& tabel" od najni#szej do najwy#szej temperatury. W jednym z kolejnych rozdzia&ów dowiemy si", jak okre$li!, czy najpierw maj% by! wy$wietlane wy#sze, czy ni#sze warto$ci. Zaprezentowane powy#ej przyk&ady pokazuj%, jak &atwo uzyskuje si" potrzebne informacje z bazy danych Oracle, w postaci najprzydatniejszej dla u#ytkownika. Mo#na tworzy! skomplikowane #%dania o ró#ne dane, ale stosowane metody zawsze b"d% zrozumia&e. Mo#na na przyk&ad po&%czy! dwa elementarne s&owa kluczowe where i order by — po to, by wybra! tylko te miasta, w których temperatura przekracza 26 stopni, oraz wy$wietli! je uporz%dkowane wed&ug rosn%cej temperatury. W tym celu nale#y skorzysta! z nast"puj%cego zapytania: select Miasto, Temperatura from POGODA where Temperatura > 26 order by Temperatura;

System Oracle natychmiast wy$wietli nast"puj%c% odpowied2: Miasto Temperatura ---------- ----------PARYD 27 ATENY 36

Mo#na stworzy! jeszcze dok&adniejsze zapytanie i poprosi! o wy$wietlenie miast, w których temperatura jest wy#sza ni# 26 stopni, a wilgotno$! mniejsza ni# 70 %: select Miasto, Temperatura, Wilgotnosc from POGODA where Temperatura > 26 and Wilgotnosc < 70 order by Temperatura;

— a system Oracle natychmiast odpowie w nast"puj%cy sposób: Miasto Temperatura Wilgotnosc ------------- ------------ ---------PARYD 27 62

Dlaczego system baz danych nazywa si „relacyjnym”? Zwró!my uwag", #e w tabeli POGODA wy$wietlaj% si" miasta z kilku pa'stw, przy czym w przypadku niektórych pa'stw w tabeli znajduje si" wi"cej ni# jedno miasto. Przypu$!my, #e interesuje nas, w którym pa'stwie le#y okre$lone miasto. W tym celu mo#na utworzy! oddzieln% tabel" LOKALIZACJA zawieraj%c% informacje o zlokalizowaniu miast (rysunek 4.4). Ka#de miasto z tabeli POGODA znajduje si" równie# w tabeli LOKALIZACJA. Wystarczy znale2! interesuj%c% nas nazw" w kolumnie Miasto, a wówczas w kolumnie Panstwo w tym samym wierszu znajdziemy nazw" pa'stwa.


62

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

Rysunek 4.4. Tabele POGODA i LOKALIZACJA

S% to ca&kowicie odr"bne i niezale#ne od siebie tabele. Ka#da z nich zawiera w&asne informacje zestawione w kolumnach i wierszach. Tabele maj% cz"$! wspóln%: kolumn" Miasto. Dla ka#dej nazwy miasta w tabeli POGODA istnieje identyczna nazwa miasta w tabeli LOKALIZACJA. Spróbujmy na przyk&ad dowiedzie! si", jakie temperatury, wilgotno$! i warunki atmosferyczne panuj% w miastach australijskich. Spójrzmy na obie tabele i odczytajmy z nich te informacje. W jaki sposób to zrobili$my? W tabeli LOKALIZACJA znajduje si" tylko jeden zapis z warto$ci% AUSTRALIA w kolumnie Panstwo. Obok niego, w tym samym wierszu w kolumnie Miasto figuruje nazwa miasta SYDNEY. Po znalezieniu nazwy SYDNEY w kolumnie Miasto tabeli POGODA przesun"li$my si" wzd&u# wiersza i znale2li$my warto$ci pól Temperatura, Wilgotnosc i Warunki. By&y to odpowiednio: 21, 99 i SQONECZNIE. Nawet je$li tabele s% niezale#ne, z &atwo$ci% mo#na spostrzec, #e s% z sob% powi%zane. Nazwa miasta w jednej tabeli jest powi'zana (pozostaje w relacji) z nazw% miasta w drugiej (patrz rysunek 4.5). Relacje pomi"dzy tabelami tworz% podstaw" nazwy relacyjna baza danych (czasami mówi si" te# o relacyjnym modelu danych). Rysunek 4.5. Relacje pomi&dzy tabelami POGODA i LOKALIZACJA

Dane zapisuje si" w tabelach, na które sk&adaj% si" kolumny, wiersze i nazwy. Tabele mog% by! z sob% powi%zane, je$li w ka#dej z nich znajduje si" kolumna o takim samym typie informacji. To wszystko. Nie ma w tym nic skomplikowanego.


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia

63

Proste przyk&ady Kiedy zrozumiemy podstawowe zasady rz%dz%ce relacyjnymi bazami danych, wsz"dzie zaczynamy widzie! tabele, wiersze i kolumny. Nie oznacza to, #e wcze$niej ich nie widzieli$my, ale prawdopodobnie nie my$leli$my o nich w taki sposób. W systemie Oracle mo#na zapisa! wiele tabel i wykorzysta! je do szybkiego uzyskania odpowiedzi na pytania. Typowy raport kursów akcji w postaci papierowej mo#e wygl%da! tak, jak ten, który zaprezentowano na rysunku 4.6. Jest to fragment wydrukowanego g"st% czcionk% alfabetycznego zestawienia wype&niaj%cego szereg w%skich kolumn na kilku stronach w gazecie. Jakich akcji sprzedano najwi"cej? Które akcje odnotowa&y najwy#szy procentowy wzrost, a które najwi"kszy spadek? W systemie Oracle odpowiedzi na te pytania mo#na uzyska! za pomoc% prostych zapyta'. Jest to dzia&anie o wiele szybsze ni# przeszukiwanie kolumn cyfr w gazecie. Rysunek 4.6. Tabela kursów akcji

Na rysunku 4.7 pokazano indeks gazety. Co mo#na znale2! w sekcji F? W jakim porz%dku b"dziemy czyta! artyku&y, je$li wertujemy gazet" od pocz%tku do ko'ca? W systemie Oracle odpowiedzi na te pytania mo#na uzyska! z pomoc% prostych zapyta'. Nauczymy si", jak formu&owa! takie zapytania, a nawet tworzy! tabele do zapisywania informacji. W przyk&adach u#ytych w tej ksi%#ce wykorzystano dane i obiekty, z którymi cz"sto spotykamy si" na co dzie' — w pracy i w domu. Dane do wykorzystania w !wiczeniach mo#na znale2! wsz"dzie. Na kolejnych stronach poka#emy, w jaki sposób wprowadza si" i pobiera dane. Przyk&ady bazuj% na spotykanych na co dzie' 2ród&ach danych. Podobnie jak w przypadku ka#dej nowej technologii, nie wolno dostrzega! tylko jej zalet, trzeba równie# widzie! zagro#enia. Je$li skorzystamy z relacyjnej bazy danych oraz szeregu rozbudowanych i &atwych w u#yciu narz"dzi dostarczanych z systemem Oracle, niebezpiecze'stwo,


64

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

Rysunek 4.7. Tabela danych o sekcjach w gazecie

#e padniemy ofiar% tej prostoty, stanie si" bardzo realne. Dodajmy do tego w&a$ciwo$ci obiektowe i &atwo$! wykorzystania w internecie, a zagro#enia stan% si" jeszcze wi"ksze. W kolejnych punktach przedstawimy niektóre zagro#enia zwi%zane z korzystaniem z relacyjnych baz danych, o których powinni pami"ta! zarówno u#ytkownicy, jak i projektanci.

Zagro3enia Podstawowym zagro#eniem podczas projektowania aplikacji wykorzystuj%cych relacyjne bazy danych jest… prostota tego zadania. Zrozumienie, czym s% tabele, kolumny i wiersze nie sprawia k&opotów. Zwi%zki pomi"dzy dwoma tabelami s% &atwe do uchwycenia. Nawet normalizacji — procesu analizy wewn"trznych „normalnych” relacji pomi"dzy poszczególnymi danymi — mo#na z &atwo$ci% si" nauczy!. W zwi%zku z tym cz"sto pojawiaj% si" „eksperci”, którzy s% bardzo pewni siebie, ale maj% niewielkie do$wiadczenie w tworzeniu rzeczywistych aplikacji o wysokiej jako$ci. Gdy w gr" wchodzi niewielka baza z danymi marketingowymi lub domowy indeks, nie ma to wielkiego znaczenia. Pope&nione b&"dy ujawni% si" po pewnym czasie. B"dzie to dobra lekcja pozwalaj%ca na unikni"cie b&"dów w przysz&o$ci. Jednak w przypadku wa#nej aplikacji droga ta w prostej linii prowadzi do katastrofy. Brak do$wiadczenia twórców aplikacji jest cz"sto podawany w artyku&ach prasowych jako przyczyna niepowodze' wa#nych projektów. Starsze metody projektowania generalnie s% wolniejsze, poniewa# zadania takie, jak kodowanie, kompilacja, konsolidacja i testowanie zajmuj% wi"cej czasu. Cykl powstawania aplikacji, w szczególno$ci dla komputerów typu mainframe, cz"sto jest tak #mudny, #e aby unikn%! opó2nie' zwi%zanych z powtarzaniem pe&nego cyklu z powodu b&"du w kodzie, programi$ci du#% cz"$! czasu po$wi"caj% na sprawdzanie kodu na papierze. Narz"dzia czwartej generacji kusz% projektantów, aby natychmiast przekazywa! kod do eksploatacji. Modyfikacje mo#na implementowa! tak szybko, #e testowanie bardzo cz"sto zajmuje niewiele czasu. Niemal ca&kowite wyeliminowanie etapu sprawdzania przy biurku stwarza problem. Kiedy znikn%& negatywny bodziec (d&ugotrwa&y cykl), który zach"ca& do sprawdzania przy biurku, znikn"&o tak#e samo sprawdzanie. Wielu programistów wyra#a nast"puj%cy pogl%d: „Je$li aplikacja nie dzia&a w&a$ciwie, b&%d szybko si" poprawi. Je$li dane ulegn% uszkodzeniu, mo#na je szybko zaktualizowa!. Je$li metoda oka#e si" niedostatecznie szybka, dostroi si" j% w locie. Zrealizujmy kolejny punkt harmonogramu i poka#my to, co zrobili$my”.


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia

65

Testowanie wa#nego projektu Oracle powinno trwa! d&u#ej ni# testowanie projektu tradycyjnego, niezale#nie od tego, czy zarz%dza nim do$wiadczony, czy pocz%tkuj%cy mened#er. Musi by! tak#e dok&adniejsze. Sprawdzi! nale#y przede wszystkim poprawno$! formularzy wykorzystywanych do wprowadzania danych, tworzenie raportów, &adowanie danych i uaktualnie', integralno$! i wspó&bie#no$! danych, rozmiary transakcji i pami"ci masowej w warunkach maksymalnych obci%#e'. Poniewa# tworzenie aplikacji za pomoc% narz"dzi systemu Oracle jest niezwykle proste, aplikacje powstaj% bardzo szybko. Si&% rzeczy czas przeznaczony na testowanie w fazie projektowania skraca si". Aby zachowa! równowag" i zapewni! odpowiedni% jako$! produktu, proces planowanego testowania nale#y $wiadomie wyd&u#y!. Cho! zazwyczaj problemu tego nie dostrzegaj% programi$ci, którzy rozpoczynaj% dopiero swoj% przygod" z systemem Oracle lub z narz"dziami czwartej generacji, w planie projektu nale#y przewidzie! czas i pieni%dze na dok&adne przetestowanie projektu.

Znaczenie nowego podej4cia Wielu z nas z niecierpliwo$ci% oczekuje dnia, kiedy b"dzie mo#na napisa! zapytanie w j"zyku naturalnym i w ci%gu kilku sekund uzyska! na ekranie odpowied2. Jeste$my o wiele bli#si osi%gni"cia tego celu, ni# wielu z nas sobie wyobra#a. Czynnikiem ograniczaj%cym nie jest ju# technika, ale raczej schematy stosowane w projektach aplikacji. Za pomoc% systemu Oracle mo#na w prosty sposób tworzy! aplikacje pisane w j"zyku zbli#onym do naturalnego j"zyka angielskiego, które z &atwo$ci% eksploatuj% niezbyt zaawansowani technicznie u#ytkownicy. W bazie danych Oracle i skojarzonych z ni% narz"dziach tkwi potencja&, cho! jeszcze stosunkowo niewielu programistów wykorzystuje go w pe&ni. Podstawowym celem projektanta Oracle powinno by! stworzenie aplikacji zrozumia&ej i &atwej w obs&udze tak, aby u#ytkownicy bez do$wiadczenia programistycznego potrafili pozyskiwa! informacje, stawiaj%c proste pytania w j"zyku zbli#onym do naturalnego. Jak? Po pierwsze, g&ównym celem projektowania jest opracowanie aplikacji, która jest &atwa do zrozumienia i prosta w u#yciu. Czasami oznacza to intensywniejsze wykorzystanie procesora lub wi"ksze zu#ycie miejsca na dysku. Nie mo#na jednak przesadza!. Je$li stworzymy aplikacj" niezwykle &atw% w u#yciu, ale tak skomplikowan% programistycznie, #e jej piel"gnacja lub usprawnianie oka#% si" niemo#liwe, pope&nimy równie powa#ny b&%d. Pami"tajmy tak#e, #e nigdy nie wolno tworzy! inteligentnych programów kosztem wygody u#ytkownika.

Zmiana !rodowisk Koszty u#ytkowania komputerów liczone jako cena miliona instrukcji na sekund" (MIPS) stale spadaj% w tempie 20% rocznie. Z kolei koszty si&y roboczej ci%gle wzrastaj%. Oznacza to, #e wsz"dzie tam, gdzie ludzi mo#na zast%pi! komputerami, uzyskuje si" oszcz"dno$ci finansowe. W jaki sposób cech" t" uwzgl"dniono w projektowaniu aplikacji? Odpowied2 brzmi: „W jaki$”, cho! na pewno nie jest to sposób zadowalaj%cy. Prawdziwy post"p przynios&o na przyk&ad


66

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

opracowanie /rodowiska graficznego przez instytut PARC firmy Xerox, a nast"pnie wykorzystanie go w komputerach Macintosh, w przegl%darkach internetowych oraz w innych systemach bazuj%cych na ikonach. 3rodowisko graficzne jest znacznie przyja2niejsze w obs&udze ni# starsze $rodowiska znakowe. Ludzie, którzy z niego korzystaj%, potrafi% stworzy! w ci%gu kilku minut to, co wcze$niej zajmowa&o im kilka dni. Post"p w niektórych przypadkach jest tak wielki, #e ca&kowicie utracili$my obraz tego, jak trudne by&y kiedy$ pewne zadania. Niestety, wielu projektantów aplikacji nie przyzwyczai&o si" do przyjaznych $rodowisk. Nawet je$li ich u#ywaj%, powielaj% niew&a$ciwe nawyki.

Kody, skróty i standardy nazw Problem starych przyzwyczaje' programistycznych staje si" najbardziej widoczny, gdy projektant musi przeanalizowa! kody, skróty i standardy nazewnictwa. Zwykle uwzgl"dnia wówczas jedynie potrzeby i konwencje stosowane przez programistów, zapominaj%c o u#ytkownikach. Mo#e si" wydawa!, #e jest to suchy i niezbyt interesuj%cy problem, któremu nie warto po$wi"ca! czasu, ale zaj"cie si" nim oznacza ró#nic" pomi"dzy wielkim sukcesem a rozwi%zaniem takim sobie; pomi"dzy popraw% wydajno$ci o rz%d wielko$ci a marginalnym zyskiem; pomi"dzy u#ytkownikami zainteresowanymi i zadowolonymi a zrz"dami n"kaj%cymi programistów nowymi #%daniami. Oto, co cz"sto si" zdarza. Dane biznesowe s% rejestrowane w ksi"gach i rejestrach. Wszystkie zdarzenia lub transakcje s% zapisywane wiersz po wierszu w j"zyku naturalnym. W miar" opracowywania aplikacji, zamiast czytelnych warto$ci wprowadza si" kody (np. 01 zamiast Konta przychodowe, 02 zamiast Konta rozchodowe itd.). Pracownicy musz% zna! te kody i wpisywa! je w odpowiednio oznaczonych polach formularzy ekranowych. Jest to skrajny przypadek, ale takie rozwi%zania stosuje si" w tysi%cach aplikacji, przez co trudno si" ich nauczy!. Problem ten najwyra2niej wyst"puje podczas projektowania aplikacji w du#ych, konwencjonalnych systemach typu mainframe. Poniewa# do tej grupy nale#% równie# relacyjne bazy danych, wykorzystuje si" je jako zamienniki starych metod wprowadzania-wyprowadzania danych takich, jak metoda VSAM (ang. Virtual Storage Access Method) oraz systemy IMS (ang. Information Management System). Wielkie mo#liwo$ci relacyjnych baz danych s% niemal ca&kowicie marnotrawione, je$li s% wykorzystywane w taki sposób.

Dlaczego zamiast j zyka naturalnego stosuje si kody? Po co w ogóle stosowa! kody? Z regu&y podaje si" dwa uzasadnienia: kategoria zawiera tak wiele elementów, #e nie mo#na ich sensownie przedstawi! lub zapami"ta! w j"zyku naturalnym, dla zaoszcz"dzenia miejsca w komputerze. Drugi powód to ju# anachronizm. Pami"! operacyjna i masowa by&y niegdy$ tak drogie, a procesory tak wolne (ich moc obliczeniowa nie dorównywa&a wspó&czesnym nowoczesnym kalkulatorom), #e programi$ci musieli stara! si" zapisywa! dane o jak najmniejszej obj"to$ci.


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia

67

Liczby przechowywane w postaci numerycznej zajmuj% w pami"ci o po&ow" mniej miejsca ni# liczby w postaci znakowej, a kody jeszcze bardziej zmniejszaj% wymagania w stosunku do komputerów. Poniewa# komputery by&y kiedy$ drogie, programi$ci wsz&dzie musieli stosowa! kody. Takie techniczne rozwi%zanie problemów ekonomicznych stanowi&o prawdziw% udr"k" dla u#ytkowników. Komputery by&y zbyt wolne i za drogie, aby sprosta! wymaganiom ludzi, a zatem szkolono ludzi, aby umieli sprosta! wymaganiom komputerów. To dziwactwo by&o konieczno$ci%. Ekonomiczne uzasadnienie stosowania kodów znik&o wiele lat temu. Komputery s% teraz wystarczaj%co dobre, aby mo#na je by&o przystosowa! do sposobu pracy ludzi, a zw&aszcza do u#ywania j"zyka naturalnego. Najwy#szy czas, aby tak si" sta&o. A jednak projektanci i programi$ci, nie zastanawiaj%c si" nad tym zbytnio, w dalszym ci%gu u#ywaj% kodów. Pierwszy powód mo#na uzna! za istotny, a poza tym cz"$ciej wyst"puje. Wprowadzanie kodów numerycznych zamiast ci%gów tekstowych (np. tytu&ów ksi%#ek) zwykle jest mniej pracoch&onne (o ile oczywi$cie pracownicy s% odpowiednio przeszkoleni), a co za tym idzie ta'sze. Ale w systemie Oracle stosowanie kodów oznacza po prostu niepe&ne wykorzystanie jego mo#liwo$ci. System Oracle potrafi pobra! kilka pierwszych znaków tytu&u i automatycznie uzupe&ni! pozosta&% jego cz"$!. To samo potrafi zrobi! z nazwami produktów, transakcji (litera „z” mo#e by! automatycznie zast%piona warto$ci% „zakup”, a litera „s” warto$ci% „sprzeda#”) i innymi danymi w aplikacji. Jest to mo#liwe dzi"ki bardzo rozbudowanemu mechanizmowi dopasowywania wzorców.

Korzy!ci z wprowadzania czytelnych danych Stosowanie j"zyka naturalnego przynosi jeszcze jedn% korzy$!: niemal ca&kowicie znikaj% b&"dy w kluczach, poniewa# u#ytkownicy natychmiast widz% wprowadzone przez siebie informacje. Cyfry nie s% przekszta&cane, nie trzeba wpisywa! #adnych kodów, zatem nie istnieje tu mo#liwo$! pope&nienia b&"du. Zmniejsza si" równie# ryzyko, #e u#ytkownicy aplikacji finansowych strac% pieni%dze z powodu b&"dnie wprowadzonych danych. Aplikacje staj% si" tak#e bardziej zrozumia&e. Ekrany i raporty zyskuj% czytelny format, który zast"puje ci%gi tajemniczych liczb i kodów. Odej$cie od kodów na rzecz j"zyka naturalnego ma olbrzymi i o#ywczy wp&yw na firm" i jej pracowników. Dla u#ytkowników, którzy musieli si" uczy! kodów, aplikacja bazuj%ca na j"zyku naturalnym oznacza chwil" wytchnienia.

Jak zmniejszy: zamieszanie? Zwolennicy kodów argumentuj% czasami, #e istnieje zbyt du#a liczba produktów, klientów, typów transakcji, aby mo#na by&o ka#dej pozycji nada! odr"bn% nazw". Dowodz% równie#, ile k&opotów sprawiaj% pozycje identyczne b%d2 bardzo podobne (np. trzydziestu klientów nazywaj%cych si" „Jan Kowalski”). Owszem, zdarza si", #e kategoria zawiera za du#o pozycji, aby mo#na je by&o &atwo zapami"ta! lub rozró#ni!, ale znacznie cz"$ciej jest to dowód nieodpowiedniego podzia&u informacji na kategorie: zbyt wiele niepodobnych do siebie obiektów umieszcza si" w zbyt obszernej kategorii. Tworzenie aplikacji zorientowanej na j"zyk naturalny wymaga czasu, w którym u#ytkownicy musz% komunikowa! si" z programistami — trzeba


68

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

zidentyfikowa! informacje biznesowe, zrozumie! naturalne relacje i kategorie, a nast"pnie uwa#nie skonstruowa! baz" danych i schemat nazw, które w prosty i dok&adny sposób odzwierciedl% rzeczywisto$!. S% trzy podstawowe etapy wykonywania tych dzia&a': 1) normalizacja danych, 2) wybór nazw dla tabel i kolumn w j"zyku naturalnym, 3) wybór nazw danych.

Ka#dy z tych etapów zostanie omówiony w dalszej cz"$ci rozdzia&u. Naszym celem jest projektowanie sensownie zorganizowanych aplikacji, zapisanych w tabelach i kolumnach, których nazwy brzmi% znajomo dla u#ytkownika, gdy# s% zaczerpni"te z codzienno$ci.

Normalizacja Bie#%ce relacje pomi"dzy krajami, wydzia&ami w firmie albo pomi"dzy u#ytkownikami i projektantami zazwyczaj s% wynikiem historycznych uwarunkowa'. Poniewa# okoliczno$ci historyczne dawno min"&y, w efekcie czasami powstaj% relacje, których nie mo#na uwa#a! za normalne. Mówi%c inaczej, s% one niefunkcjonalne. Zasz&o$ci historyczne równie cz"sto wywieraj% wp&yw na sposób zbierania, organizowania i raportowania danych, co oznacza, #e dane tak#e mog% by! nienormalne lub niefunkcjonalne. Normalizacja jest procesem tworzenia prawid&owego, normalnego stanu. Poj"cie pochodzi od &aci'skiego s&owa norma oznaczaj%cego przyrz%d u#ywany przez stolarzy do zapewnienia k%ta prostego. W geometrii normalna jest lini% prost% przebiegaj%c% pod k%tem prostym do innej linii prostej. W relacyjnych bazach danych norma tak#e ma specyficzne znaczenie, które dotyczy przydzielania ró#nych danych (np. nazwisk, adresów lub umiej"tno$ci) do niezale"nych grup i definiowania dla nich normalnych lub inaczej mówi%c „prawid&owych” relacji. Za chwil" zostan% omówione podstawowe zasady normalizacji, dzi"ki czemu u#ytkownicy b"d% mogli uczestniczy! w procesie projektowania aplikacji lub lepiej zrozumiej% aplikacj", która zosta&a stworzona wcze$niej. B&"dem by&oby jednak my$lenie, #e proces normalizacji dotyczy jedynie baz danych lub aplikacji komputerowych. Normalizacja to g&"boka analiza informacji wykorzystywanych w biznesie oraz relacji zachodz%cych pomi"dzy elementami tych informacji. Umiej"tno$! ta przydaje si" w ró#nych dziedzinach.

Model logiczny Jedn% z pierwszych czynno$ci w procesie analizy jest utworzenie modelu logicznego, czyli po prostu znormalizowanego diagramu danych. Wiedza na temat zasad klasyfikowania danych jest niezb"dna do zrozumienia modelu, a model jest niezb"dny do stworzenia funkcjonalnej aplikacji. W normalizacji wyró#nia si" kilka postaci: najpopularniejsze s% pierwsza, druga i trzecia posta! normalna, przy czym trzecia reprezentuje stan najbardziej znormalizowany. Istniej% tak#e postacie czwarta i pi%ta, ale wykraczaj% one poza zakres przedstawionego tu wyk&adu.


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia

69

Rozwa#my przypadek z bibliotek%. Ka#da ksi%#ka ma tytu&, wydawc", autora lub autorów oraz wiele innych charakterystycznych cech. Przyjmijmy, #e dane te pos&u#% do zaprojektowania dziesi"ciokolumnowej tabeli w systemie Oracle. Tabel" nazwali$my BIBLIOTECZKA, a kolumnom nadali$my nazwy Tytul, Wydawca, Autor1, Autor2, Autor3 oraz Kategoria1, Kategoria2, Kategoria3, Ocena i OpisOceny. U#ytkownicy tej tabeli ju# maj% problem: jednej ksi%#ce mo#na przypisa! tylko trzech autorów lub tylko trzy kategorie. Co si" stanie, kiedy zmieni si" lista dopuszczalnych kategorii? Kto$ b"dzie musia& przejrze! wszystkie wiersze tabeli BIBLIOTECZKA i poprawi! stare warto$ci. A co si" stanie, je$li jeden z autorów zmieni nazwisko? Ponownie b"dzie trzeba zmodyfikowa! wszystkie powi%zane rekordy. A co zrobi!, je$li ksi%#ka ma czterech autorów? Ka#dy projektant powa#nej bazy danych staje przed problemem sensownego i logicznego zorganizowania informacji. Nie jest to problem techniczny sensu stricto, wi"c w&a$ciwie nie powinni$my si" nim zajmowa!, ale przecie# projektant bazy danych musi si" z nim upora! — musi znormalizowa! dane. Normalizacj" wykonuje si" poprzez stopniow% reorganizacj" danych, tworz%c grupy podobnych danych, eliminuj%c niefunkcjonalne relacje i buduj%c relacje normalne.

Normalizacja danych Pierwszym etapem reorganizacji jest sprowadzenie danych do pierwszej postaci normalnej. Polega to na umieszczeniu danych podobnego typu w oddzielnych tabelach i wyznaczeniu w ka#dej z nich klucza gDównego — niepowtarzalnej etykiety lub identyfikatora. Proces ten eliminuje powtarzaj%ce si" grupy danych takie, jak autorzy ksi%#ek w tabeli BIBLIOTECZKA. Zamiast definiowa! tylko trzech autorów ksi%#ki, dane ka#dego autora s% przenoszone do tabeli, w której ka#demu autorowi odpowiada jeden wiersz (imi", nazwisko i opis). Dzi"ki temu w tabeli BIBLIOTECZKA nie trzeba definiowa! kolumn dla kilku autorów. Jest to lepsze rozwi%zanie projektowe, poniewa# umo#liwia przypisanie nieograniczonej liczby autorów do ksi%#ki. Nast"pn% czynno$ci% jest zdefiniowanie w ka#dej tabeli klucza g&ównego — informacji, która w niepowtarzalny sposób identyfikuje dane, uniemo#liwia dublowanie si" grup danych i pozwala na wybranie interesuj%cego nas wiersza. Dla uproszczenia za&ó#my, #e tytu&y ksi%#ek i nazwiska autorów s% niepowtarzalne, a zatem kluczem g&ównym w tabeli AUTOR jest kolumna NazwiskoAutora. Podzielili$my ju# tabel" BIBLIOTECZKA na dwie tabele: AUTOR zawieraj%c% kolumny Nazwisko Autora (klucz g&ówny) i Uwagi oraz BIBLIOTECZKA, z kluczem g&ównym Tytul i kolumnami Wydawca, Kategoria1, Kategoria2, Kategoria3, Ocena i OpisOceny. Trzecia tabela BIBLIOTECZKA_ AUTOR definiuje powi%zania. Jednej ksi%#ce mo#na przypisa! wielu autorów, a jeden autor mo#e napisa! wiele ksi%#ek — jest to zatem relacja wiele do wielu. Relacje i klucze g&ówne zaprezentowano na rysunku 4.8 Nast"pna czynno$! w procesie normalizacji — doprowadzenie danych do drugiej postaci normalnej — obejmuje wydzielenie danych, które zale#% tylko od cz"$ci klucza. Je$li istniej% atrybuty, które nie zale#% od ca&ego klucza, nale#y je przenie$! do nowej tabeli. W tym przypadku kolumna OpisOceny w istocie nie zale#y od kolumny Tytul, zale#y natomiast od kolumny Ocena i dlatego nale#y j% przenie$! do oddzielnej tabeli.


70

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

Rysunek 4.8. Tabele BIBLIOTECZKA, AUTOR i BIBLIOTECZKA_AUTOR

Aby osi%gn%! trzeci% posta! normaln%, nale#y pozby! si" z tabeli wszystkich atrybutów, które nie zale#% wy&%cznie od klucza g&ównego. W zaprezentowanym przyk&adzie pomi"dzy kategoriami zachodz% relacje wzajemne. Nie mo#na wymieni! ksi%#ki jednocze$nie w kategorii Fikcja i Fakty, a w kategoriach Doro*li i Dzieci mo#na wymieni! kilka podkategorii. Z tego powodu informacje o kategoriach nale#y przenie$! do oddzielnej tabeli. Tabele w trzeciej postaci normalnej przedstawia rysunek 4.9. Rysunek 4.9. Tabela BIBLIOTECZKA i tabele powi'zane

Dane, które osi%gn"&y trzeci% posta! normaln%, z definicji znajduj% si" tak#e w postaciach pierwszej i drugiej. W zwi%zku z tym nie trzeba #mudnie przekszta&ca! jednej postaci w drug%. Wystarczy tak zorganizowa! dane, aby wszystkie kolumny w ka#dej tabeli (oprócz klucza g&ównego) zale#a&y wy&%cznie od caDego klucza gDównego. Trzeci% posta! normaln% czasami opisuje si" fraz% „klucz, ca&y klucz i nic innego, tylko klucz”.

Poruszanie si w obr bie danych Baza danych BIBLIOTECZKA jest teraz w trzeciej postaci normalnej. Przyk&adow% zawarto$! tabel pokazano na rysunku 4.10. Z &atwo$ci% mo#na zauwa#y! relacje pomi"dzy tabelami. Aby uzyska! informacje o poszczególnych autorach, korzystamy z kluczy. Klucz g&ówny w ka#dej tabeli w sposób niepowtarzalny identyfikuje pojedynczy wiersz. Wybierzmy na przyk&ad autora o nazwisku Stephen Jay Gould, a natychmiast znajdziemy odpowiadaj%cy mu zapis w tabeli AUTOR, poniewa# pole NazwiskoAutora jest kluczem g&ównym.


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia

71

Rysunek 4.10. PrzykDadowe dane z bazy danych BIBLIOTECZKA

Odszukajmy autork" Harper Lee w kolumnie NazwiskoAutora w tabeli BIBLIOTECZKA_AUTOR, a zobaczymy, #e napisa&a ona powie$! ZabiJ drozda. Nast"pnie w tabeli BIBLIOTECZKA mo#emy sprawdzi! wydawc", kategori" i ocen" tej ksi%#ki, a w tabeli OCENA — opis oceny. Je$li szukamy tytu&u ZabiJ drozda w tabeli BIBLIOTECZKA, skorzystamy z klucza g&ównego w tabeli. Aby znale2! autora ksi%#ki, mo#na odwróci! wcze$niejsz% $cie#k" wyszukiwania, poszukuj%c w tabeli BIBLIOTECZKA_AUTOR rekordów, które w kolumnie Tytul maj% szukan% warto$! — kolumna Tytul jest kluczem obcym w tabeli BIBLIOTECZKA_AUTOR. Je$li klucz g&ówny tabeli BIBLIOTECZKA znajdzie si" w innej tabeli tak, jak to ma miejsce w przypadku tabeli BIBLIOTECZKA_AUTOR, nazywa si" go kluczem obcym tej tabeli.


72

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

Tabele te maj% bardzo prost% charakterystyk". Istniej% oceny i kategorie, które nie zosta&y jeszcze u#yte w ksi%#kach w biblioteczce. Poniewa# dane zorganizowano w sposób logiczny, mo#na przygotowa! kategorie i oceny, do których nie przypisano jeszcze #adnych ksi%#ek. Jest to sensowny i logiczny sposób organizowania informacji nawet wtedy, gdy „tabele” s% zapisane w ksi%#ce magazynowej lub na fiszkach przechowywanych w pude&kach. Oczywi$cie ci%gle czeka nas sporo pracy, aby dane zorganizowane w ten sposób przekszta&ci! w prawdziw% baz" danych. Na przyk&ad pole NazwiskoAutora mo#na podzieli! na Imie i Nazwisko. Przyda&aby si" te# mo#liwo$! wy$wietlenia informacji o tym, kto jest g&ównym autorem ksi%#ki, a kto na przyk&ad recenzentem. Ca&y ten proces nazywa si" normalizacj%. Naprawd" nie ma w tym nic specjalnego. Chocia# dobry projekt aplikacji bazodanowej uwzgl"dnia kilka dodatkowych zagadnie', podstawowe zasady analizowania „normalnych” relacji pomi"dzy ró#nymi danymi s% tak proste, jak w&a$nie opisali$my. Trzeba jednak pami"ta!, #e normalizacja jest cz"$ci% procesu analizy, a nie projektu. Uznanie, #e znormalizowane tabele modelu logicznego s% projektem rzeczywistej bazy danych to istotny b&%d. Mylenie procesów analizy i projektowania jest podstawow% przyczyn% niepowodze' powa#nych aplikacji wykorzystuj%cych relacyjne bazy danych, o których pó2niej mo#na przeczyta! w prasie. Zagadnienia te — z którymi dok&adnie powinni zapozna! si" programi$ci — zostan% opisane bardziej szczegó&owo w dalszej cz"$ci rozdzia&u.

Opisowe nazwy tabel i kolumn Po zidentyfikowaniu relacji zachodz%cych pomi"dzy ró#nymi elementami w bazie danych i odpowiednim posegregowaniu danych, nale#y po$wi"ci! sporo czasu na wybranie nazw dla tabel i kolumn, w których zostan% umieszczone dane. Zagadnieniu temu cz"sto po$wi"ca si" zbyt ma&o uwagi. Lekcewa#% je nawet ci, którzy powinni zdawa! sobie spraw" z jego donios&o$ci. Nazwy tabel i kolumn cz"sto s% wybierane bez konsultacji oraz odpowiedniej analizy. Nieodpowiedni dobór nazw tabel i kolumn ma powa#ne nast"pstwa podczas korzystania z aplikacji. Dla przyk&adu rozwa#my tabele pokazane na rysunku 4.10. Nazwy mówi% tu same za siebie. Nawet u#ytkownik, dla którego problematyka relacyjnych baz danych jest nowa, nie b"dzie mia& trudno$ci ze zrozumieniem zapytania nast"puj%cej postaci1: select Tytul, Wydawca from BIBLIOTECZKA order by Wydawca;

U#ytkownicy rozumiej% zapytanie, poniewa# wszystkie s&owa brzmi% znajomo. Nie s% to jakie$ tajemnicze zakl"cia. Kiedy trzeba zdefiniowa! tabele zawieraj%ce znacznie wi"cej kolumn, dobranie odpowiednich nazw jest trudniejsze. W takiej sytuacji wystarczy jednak konsekwent-

1

Mowa tu oczywi$cie o u#ytkownikach znaj%cych podstawy j"zyka angielskiego. Jednak nawet ci, którzy nie znaj% tego j"zyka, zrozumiej% zapytanie, je$li poznaj% znaczenie kilku s&ów: select — wybierz, from — z, where — gdzie, order by — uporz%dkuj wed&ug — przyp. tDum.


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia

73

nie stosowa! kilka regu&. Przeanalizujmy kilka problemów, które cz"sto powstaj% w przypadku braku odpowiedniej konwencji nazw. Zastanówmy si", co by si" sta&o, gdyby$my zastosowali takie oto nazwy: BIBLIOTECZKA -------------tytul wyd kat oc

B_A ----tytul naz_a

AUT -----------naz_a koment

KATEGORIE ---------kat p_kat s_kat

Nazwy zastosowane w tej tabeli, mimo #e dziwne, s% niestety do$! powszechne. Zosta&y dobrane zgodnie z konwencj% (lub brakiem konwencji) wykorzystywan% przez znanych producentów oprogramowania i programistów. Poni#ej wymieniono kilka bardziej znanych problemów wyst"puj%cych podczas dobierania nazw. Stosowanie skrótów bez powodu. W ten sposób zapami"tanie pisowni nazw staje si" niemal niemo#liwe. Nazwy mog&yby równie dobrze by! kodami, poniewa# u#ytkownicy i tak musz% ich szuka!. Niespójne stosowanie skrótów. Na podstawie nazwy nie mo"na w sposób jednoznaczny okre/liJ przeznaczenia tabeli lub kolumny. Skróty nie tylko powoduj%, #e zapami"tanie pisowni nazw staje si" trudne, ale równie# zaciemniaj% natur" danych zapisanych w kolumnie lub tabeli. Co to jest p_kat lub koment? Niespójne stosowanie znaków podkre/lenia. Znaków podkre$lenia czasami u#ywa si" do oddzielania s&ów w nazwie, ale innym razem nie u#ywa si" ich w ogóle. W jaki sposób zapami"ta! gdzie wstawiono znaki podkre$lenia, a gdzie nie? Niespójne stosowanie liczby mnogiej. KATEGORIA czy KATEGORIE? Komentarz czy Komentarze? Stosowane reguDy maj' ograniczenia. Je$li nazwa kolumny rozpoczyna si" od pierwszej litery nazwy tabeli (np. kolumna Anaz w tabeli, której nazwa rozpoczyna si" na liter" A), to co nale#y zrobi!, kiedy innej tabeli trzeba nada! nazw" na liter" A? Czy kolumn" w tej tabeli równie# nazwiemy Anaz? Je$li tak, to dlaczego nie nada! obu kolumnom nazwy Nazwisko? U#ytkownicy, którzy nadaj% tabelom i kolumnom niew&a$ciwe nazwy, nie s% w stanie w prosty sposób formu&owa! zapyta'. Zapytania nie maj% intuicyjnego charakteru i znajomego wygl%du tak, jak w przypadku zapytania do tabeli BIBLIOTECZKA, co w znacznym stopniu zmniejsza u#yteczno$! aplikacji. Dawniej od programistów wymagano tworzenia nazw sk&adaj%cych si" maksymalnie z o$miu znaków. W rezultacie nazwy by&y myl%cym zlepkiem liter, cyfr i niewiele mówi%cych skrótów. Obecnie podobne ograniczenia, wymuszane przez star% technologi", nie maj% ju# zastosowania. W systemie Oracle nazwy kolumn i tabel mog% mie! rozmiar do 30 znaków. Projektanci zyskali dzi"ki temu mo#liwo$! tworzenia nazw pe&nych, jednoznacznych i opisowych. Pami"tajmy zatem, aby w nazwach wystrzega! si" skrótów, liczby mnogiej i nie stosowa! znaków podkre$lenia (lub stosowa! je konsekwentnie). Unikniemy wówczas myl%cych nazw,


74

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

które obecnie zdarzaj% si" nader cz"sto. Jednocze$nie konwencje nazw musz% by! proste, zrozumia&e i &atwe do zapami"tania. W pewnym sensie potrzebna jest zatem normalizacja nazw. W podobny sposób, w jaki analizujemy dane, segregujemy je wed&ug przeznaczenia i w ten sposób normalizujemy, powinni$my przeanalizowa! standardy nazewnictwa. Bez tego zadanie utworzenia aplikacji zostanie wykonane niew&a$ciwie.

Dane w j zyku naturalnym Po przeanalizowaniu konwencji nazw dla tabel i kolumn, trzeba po$wi"ci! uwag" samym danym. Przecie# od czytelno$ci danych b"dzie zale#e! czytelno$! drukowanego raportu. W przyk&adzie z baz% danych BIBLIOTECZKA, warto$ci w kolumnie Ocena s% wyra#one za pomoc% kodu, a Kategoria to po&%czenie kilku warto$ci. Czy to dobrze? Je$li zapytamy kogo$ o ksi%#k", czy chcieliby$my us&ysze!, #e uzyska&a ona ocen" 4 w kategorii Doro*liFakty? Dlaczego mieliby$my pozwala! maszynie, aby wyra#a&a si" nie do$! jasno? Dzi"ki opisowym informacjom formu&owanie zapyta' staje si" &atwiejsze. Zapytanie powinno w maksymalny sposób przypomina! zdanie z j"zyka naturalnego: select Tutul, NazwiskoAutora from BIBLIOTECZKA_AUTOR;

Stosowanie wielkich liter w nazwach i danych Nazwy tabel i kolumn s% zapisywane w wewn"trznym s&owniku danych systemu Oracle za pomoc% wielkich liter. Gdy w zapytaniu nazwy wpiszemy ma&ymi literami, system natychmiast zmieni ich wielko$!, a nast"pnie przeszuka s&ownik danych. W niektórych systemach relacyjnych baz danych wielko$! liter ma znaczenie. Je$li u#ytkownik wpisze nazw" kolumny jako Zdolnosc, a w bazie danych kolumna ta wyst"puje jako zdolnosc lub ZDOLNOSC (w zale#no$ci od tego, w jaki sposób zdefiniowano kolumn" podczas tworzenia tabeli), system nie zrozumie zapytania. U$ytkownik mo$e wymusi/ na systemie Oracle obs ug6 nazw o mieszanej wielko8ci liter, ale wówczas tworzenie zapyta< i praca z danymi b6d= trudniejsze. Z tego powodu najlepiej wykorzystywa/ domy8ln= w a8ciwo8/ — stosowanie wielkich liter.

Rozró#nianie wielko$ci liter jest czasami promowane jako zaleta baz danych, dzi"ki której programi$ci mog% tworzy! ró#ne tabele o podobnych nazwach — jak cho!by pracownik, Pracownik i pRAcownik. Ale w jaki sposób zapami"ta! ró#nice? Taka w&a$ciwo$! jest w istocie wad%, a nie zalet%. Firma Oracle by&a wystarczaj%co rozs%dna, aby nie wpa$! w t" pu&apk". Podobnie rzecz si" ma w przypadku danych zapisanych w bazie. Skoro istnieje mo#liwo$! interakcji z systemem Oracle w taki sposób, #e wielko$! liter w zapytaniach nie ma znaczenia, to istniej% równie# sposoby wyszukiwania danych, niezale#nie od tego, czy zosta&y zapisane wielkimi, czy ma&ymi literami. Ale po co wykonywa! niepotrzebne dzia&ania? Poza kilkoma wyj%tkami, takimi jak teksty prawnicze lub formularze, o wiele &atwiej zapisywa! dane za pomoc% wielkich liter i tworzy! aplikacje, w których wybrano spójn% wielko$! liter dla danych.


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia

75

Dzi"ki temu formu&owanie zapyta' staje si" &atwiejsze, a dane otrzymuj% spójniejszy wygl%d w raportach. Je$li niektóre dane trzeba zapisa! mieszanymi literami (np. nazwisko i adres na kopercie), mo#na wywo&a! funkcj" systemu Oracle, która dokona odpowiedniej konwersji. Uwa#ni czytelnicy dostrzegli zapewne, #e autor ksi%#ki nie przestrzega& dotychczas tej zasady. Jej stosowanie opó2niano do czasu odpowiedniego wprowadzenia i umieszczenia jej we w&a$ciwym kontek$cie. Od tej pory, poza kilkoma uzasadnionymi wyj%tkami, dane w bazie danych b"d% zapisywane wielkimi literami.

Normalizacja nazw Na rynku pojawi&o si" kilka narz"dzi umo#liwiaj%cych stosowanie w zapytaniach s&ów j"zyka naturalnego zamiast dziwnych zestawie'. Dzia&anie tych produktów polega na utworzeniu logicznej mapy ze s&ów j"zyka naturalnego, trudnych do zapami"tania kodów oraz nazw kolumn i tabel. Przygotowanie takiego odwzorowania wymaga szczegó&owej analizy, ale po pomy$lnym wykonaniu tego zadania interakcja z aplikacj% staje si" o wiele &atwiejsza. Jednak dlaczegó# by nie zwróci! uwagi na ten problem od pocz%tku? Po co tworzy! dodatkowy produkt i wykonywa! dodatkow% prac", skoro mo#na unikn%! wi"kszo$ci zamieszania, od razu nadaj%c odpowiednie nazwy? Aby zapewni! odpowiedni% wydajno$! aplikacji, czasami niektóre dane s% zapisywane w bazie w postaci zakodowanej. Kody te nie powinny by! ujawniane u#ytkownikom ani podczas wprowadzania danych, ani podczas ich pobierania. System Oracle umo#liwia ich &atwe ukrywanie. Je$li przy wprowadzaniu danych trzeba zastosowa! kody, natychmiast wzrasta liczba b&"dów literowych. Je$li kody wyst"puj% w raportach zamiast powszechnie u#ywanych s&ów, pojawiaj% si" b&"dy interpretacji. A kiedy u#ytkownicy chc% utworzy! nowy raport, ich zdolno$! do szybkiego i dok&adnego wykonania tej czynno$ci jest znacznie ograniczona zarówno za spraw% kodów, jak i z powodu trudno$ci w zapami"taniu dziwnych nazw kolumn i tabel. System Oracle daje u#ytkownikom mo#liwo$! pos&ugiwania si" j"zykiem naturalnym w ca&ej aplikacji. Ignorowanie tej sposobno$ci jest marnotrawieniem mo#liwo$ci systemu Oracle. Je$li z niej nie skorzystamy, bezsprzecznie powstanie mniej zrozumia&a i ma&o wydajna aplikacja. Programi$ci maj% obowi%zek skorzystania z okazji. U#ytkownicy powinni si" tego domaga!. Obie grupy z ca&% pewno$ci% na tym skorzystaj%.

Czynnik ludzki U#ytkownicy, którzy dopiero rozpoczynaj% przygod" z systemem Oracle, by! mo#e poczuli ju# ochot", aby przej$! do konkretnych dzia&a'. Jednak sposoby pracy z u#yciem j"zyka SQL zostan% opisane dopiero w nast"pnym rozdziale. Teraz zajmiemy si" inn% problematyk%: spróbujemy przeanalizowa! projekt programistyczny, w którym zamiast skupia! si" na danych, wzi"to pod uwag" rzeczywiste zadania biznesowe wykonywane przez u#ytkowników docelowych.


76

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

Technologie normalizacji danych oraz wspomagana komputerowo in#ynieria oprogramowania (ang. Computer Aided Software Engineering — CASE) zyska&y tak wielkie znaczenie podczas projektowania aplikacji relacyjnych, #e koncentracja na danych, zagadnieniach referencyjnej integralno$ci, kluczach i diagramach tabel sta&a si" prawie obsesj%. Zagadnienia te cz"sto s% mylone z w&a$ciwym projektem. Przypomnienie, i# jest to tylko analiza, dla wielu stanowi spore zaskoczenie. Normalizacja jest analiz', a nie projektowaniem. A w&a$ciwie jest to jedynie cz"$! analizy, niezb"dna do zrozumienia zasad funkcjonowania danej firmy i stworzenia u#ytecznej aplikacji. Celem aplikacji jest przede wszystkim wspomaganie dzia&a' przedsi"biorstwa poprzez szybsze i wydajniejsze wykonywanie zada' biznesowych oraz usprawnienie $rodowiska pracy. Je$li pracownikom damy kontrol" nad informacjami oraz zapewnimy do nich prosty i intuicyjny dost"p, odpowiedz% wzrostem wydajno$ci. Je$li kontrol" powierzymy obcej grupie, ukryjemy informacje za wrogimi interfejsami — pracownicy b"d% niezadowoleni, a przez to mniej wydajni. Naszym celem jest zaprezentowanie filozofii dzia&ania, która prowadzi do powstania przyjaznych i wygodnych aplikacji. Do projektowania struktur danych oraz przep&ywu sterowania wystarcz% narz"dzia, które znamy i których u#ywamy w codziennej pracy.

Zadania aplikacji i dane aplikacji Twórcy oprogramowania cz"sto nie po$wi"caj% nale#ytej uwagi identyfikacji zada', których wykonywanie chc% upro$ci!. Jedn% z przyczyn tego stanu rzeczy jest wysoki poziom z&o#ono$ci niektórych projektów, drug% — znacznie cz"$ciej wyst"puj%c% — skupienie si" na danych. Podczas analizy programi$ci najcz"$ciej zadaj% nast"puj%ce pytania: Jaki jest rodzaj pobieranych danych? Jaki jest sposób ich przetwarzania? Jakie dane powinny by! przedstawiane w raportach? Pó2niej zadaj% szereg pyta' pomocniczych, poruszaj%c takie zagadnienia, jak formularze do wprowadzania danych, kody, projekty ekranów, obliczenia, komunikaty, poprawki, raport audytu, obj"to$! pami"ci masowej, cykl przetwarzania danych, formatowanie raportów, dystrybucja i piel"gnacja. S% to bardzo wa#ne zagadnienia. Problem polega na tym, #e wszystkie koncentruj% si" wy&%cznie na danych. Profesjonali$ci korzystaj' z danych, ale wykonuj' zadania. Ich wiedza i umiej"tno$ci s% nale#ycie zagospodarowane. Z kolei szeregowi urz"dnicy cz"sto jeszcze zajmuj% si" jedynie wpisywaniem danych do formularza wej$ciowego. Zatrudnianie ludzi tylko po to, by wprowadzali dane, w szczególno$ci dane o du#ej obj"to$ci, spójne co do formatu (tak, jak w przypadku formularzy) oraz z ograniczon% ró#norodno$ci%, jest drogie, przestarza&e, a przede wszystkim antyhumanitarne. Czasy takiego my$lenia ju# przemin"&y, podobnie jak czasy kodów minimalizuj%cych ograniczenia maszyn. Pami"tajmy ponadto, #e rzadko kiedy pracownik, rozpocz%wszy realizacj" zadania, zajmuje si" nim tak d&ugo, a# je uko'czy. Zwykle wykonuje ró#ne dodatkowe czynno$ci, mniej lub bardziej wa#ne, ale w jaki$ sposób powi%zane z zadaniem g&ównym. Bywa, #e realizuje je równolegle — wszystkie naraz.


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia

77

Wszystko to ma swoje konsekwencje praktyczne. Projektanci, którzy pracuj% w nowoczesny sposób, nie koncentruj% si" na danych tak, jak to by&o w przesz&o$ci. Dla nich najwa#niejsze s% zadania, które z pomoc% aplikacji b"dzie wykonywa! u#ytkownik. Dlaczego $rodowiska okienkowe odnios&y taki sukces? Poniewa# pozwalaj% u#ytkownikowi na szybk% zmian" realizowanego zadania, a kilka zada' mo#e oczekiwa! na swoj% kolej w stanie aktywno$ci. Takiej lekcji nie mo#na zmarnowa!. Nale#y wyci%gn%! z niej prawid&owe wnioski. Identyfikacja zada' aplikacji to przedsi"wzi"cie znacznie ambitniejsze ni# prosta identyfikacja i normalizacja danych lub zwyk&e zaprojektowanie ekranów, programów przetwarzaj%cych i narz"dzi raportuj%cych. Oznacza ona zrozumienie rzeczywistych potrzeb u#ytkownika i w efekcie opracowanie aplikacji, która interpretuje zadania, a nie tylko pobiera skojarzone z nimi dane. Je$li projektant skoncentruje si" na danych, aplikacja zniekszta&ci zadania u#ytkowników. Najwi"kszym problemem jest wi"c u$wiadomienie sobie, #e skoncentrowanie si" na zadaniach jest konieczno$ci%. W jaki sposób zaprojektowa! aplikacj" ukierunkowan% na zadania, a nie na dane? Najwi"kszym problemem jest zrozumienie, #e skupienie si" na zadaniach jest po prostu niezb"dne. Pozwala to spojrze! na analiz" z nowej perspektywy. Rozpoczynaj%c proces analizy, najpierw musimy okre$li!, do jakich zada' u#ytkownicy docelowi wykorzystuj% komputery. Jak% us&ug" lub produkt chc% wytworzy!? Jest to podstawowe i mo#e nawet nieco uproszczone pytanie, ale jak zaraz zobaczymy, zaskakuj%co wielu ludzi nie potrafi udzieli! na nie przekonuj%cej odpowiedzi. Przedstawiciele licznych bran#, pocz%wszy od ochrony zdrowia, a na bankach, firmach wysy&kowych i fabrykach sko'czywszy, uwa#aj%, #e istot% ich pracy jest przetwarzanie danych. Przecie# dane s% wprowadzane do komputerów i przetwarzane, po czym tworzy si" raporty — czy# nie? Z powodu tej deformacji, któr% nale#y uzna! za jeszcze jeden przejaw orientacji na dane w projektowaniu systemów, mnóstwo firm podj"&o prób" wprowadzenia na rynek wyimaginowanego produktu — przetwarzania danych — z katastrofalnymi, rzecz jasna, skutkami. Dlatego tak wa#na jest wiedza na temat przeznaczenia aplikacji. Aby projektant zrozumia&, czym naprawd" zajmuje si" dana dziedzina, do czego s&u#y wytworzony produkt i jakie zadania s% wykonywane w procesie produkcji, musi mie! otwart% g&ow" i cz"sto intuicyjnie wyczuwa! przedmiot biznesu. Równie wa#ne jest, aby u#ytkownicy aplikacji znali j"zyk SQL i orientowali si" w za&o#eniach modelu relacyjnego. Zespó& sk&adaj%cy si" z projektantów, którzy rozumiej% potrzeby u#ytkowników i doceniaj% warto$! zorientowanego na zadania, czytelnego $rodowiska aplikacji, oraz z u#ytkowników maj%cych odpowiednie przygotowanie techniczne (np. dzi"ki przeczytaniu niniejszej ksi%#ki) z pewno$ci% stworzy bardzo dobry system. Cz&onkowie takiego zespo&u wzajemnie sprawdzaj% si", mobilizuj% i pomagaj% w realizacji indywidualnych zada'. Punktem wyj$cia w pracach nad przygotowaniem profesjonalnej aplikacji b"dzie wi"c opracowanie dwóch zbie#nych z sob% dokumentów: jednego z opisem zada', drugiego z opisem danych. Przygotowuj%c opis zada', u$wiadamiamy sobie sens aplikacji. Opis danych pomaga w implementacji wizji i zapewnia uwzgl"dnienie wszystkich szczegó&ów i obowi%zuj%cych zasad.


78

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

Identyfikacja zada( Dokument, który opisuje zadania zwi%zane z prowadzon% dzia&alno$ci%, powstaje w wyniku wspólnej pracy u#ytkowników docelowych i projektantów aplikacji. Rozpoczyna si" od zwi"z&ego opisu tej dzia&alno$ci. Powinno to by! jedno proste zdanie, sk&adaj%ce si" z nie wi"cej ni# 10 s&ów, pisane w stronie czynnej, bez przecinków i z minimaln% liczb% przymiotników, na przyk&ad: Zajmujemy si" sprzeda#% ubezpiecze'. A nie: Firma Amalgamated Diversified jest wiod%cym mi"dzynarodowym dostawc% produktów finansowych w dziedzinie ubezpiecze' zdrowotnych i komunikacyjnych, prowadz%c w tym zakresie równie# szkolenia i $wiadcz%c us&ugi doradcze. Istnieje pokusa, aby w pierwszym zdaniu umie$ci! wszelkie szczegó&y dotycz%ce prowadzonej dzia&alno$ci. Nie nale#y tego robi!. Skrócenie rozwlek&ego opisu do prostego zdania umo#liwia skoncentrowanie si" na temacie. Je$li kto$ nie potrafi si" w ten sposób stre$ci!, oznacza to, #e jeszcze nie zrozumia& istoty prowadzonej dzia&alno$ci. U&o#enie tego zdania, które inicjuje proces tworzenia dokumentacji, jest wspólnym obowi%zkiem projektantów i u#ytkowników. Wspó&pracuj%c, &atwiej znajd% odpowied2 na pytania, czym zajmuje si" przedsi"biorstwo i w jaki sposób wykonywane s% jego zadania. Jest to cenna wiedza dla firmy, gdy# w procesie poszukiwania odpowiedzi zidentyfikowanych zostaje wiele zada' podrz"dnych, jak równie# procedur i regu&, które nie maj% znaczenia lub s% u#ywane marginalnie. Zazwyczaj s% to albo odpryski problemu, który ju# rozwi%zano, albo postulaty mened#erów, które dawno zosta&y za&atwione. Przekorni twierdz%, #e aby poradzi! sobie z nadmiarem raportów, nale#y zaprzesta! ich tworzenia i sprawdzi!, czy ktokolwiek to zauwa#y. W tym przesadnym stwierdzeniu tkwi ziarno prawdy — przecie# w podobny sposób rozwi%zano problem roku dwutysi"cznego w starszych komputerach! Okaza&o si", #e wiele programów nie wymaga&o wprowadzania poprawek z tego prostego powodu, #e zaprzestano ich u#ywania! Programista aplikacji, dokumentuj%c zadania firmy, ma prawo zadawa! dociekliwe pytania i wskazywa! marginalne obszary jej dzia&alno$ci. Nale#y jednak zdawa! sobie spraw", #e projektant nigdy nie b"dzie tak dobrze rozumia& zada' firmy, jak u#ytkownik docelowy. Istnieje ró#nica pomi"dzy wykorzystaniem prac projektowych do zracjonalizowania wykonywanych zada' i zrozumienia ich znaczenia a obra#aniem u#ytkowników poprzez prób" wmówienia im, #e znamy firm" lepiej ni# oni. Nale#y poprosi! u#ytkownika o w miar" szczegó&owe przedstawienie celów firmy, a tak#e zada', które zmierzaj% do ich realizacji. Je$li cele s% niezbyt dobrze umotywowane (np. „zawsze to robimy w ten sposób” lub „my$l", #e wykorzystuj% to do czego$”), powinna zapali! si" nam czerwona lampka. Powinni$my powiedzie!, #e nie rozumiemy, i poprosi! o ponowne wyja$nienia. Je$li odpowied2 w dalszym ci%gu nie jest zadowalaj%ca, nale#y umie$ci! takie zadanie na oddzielnej li$cie w celu pó2niejszej dok&adnej analizy. Na niektóre z takich pyta' odpowiedzi udziel% u#ytkownicy lepiej znaj%cy temat, z innymi b"dzie trzeba si" zwróci! do kierownictwa, a wiele zada' wyeliminujemy, poniewa# oka#% si" niepotrzebne. Jednym z dowo-


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia

79

dów na dobrze przeprowadzony proces analizy jest usprawnienie istniej%cych procedur. Jest to niezale#ne od nowej aplikacji komputerowej i generalnie powinno nast%pi! na d&ugo przed jej zaimplementowaniem.

Ogólny schemat dokumentu opisuj%cego zadania Dokument opisuj%cy zadania sk&ada si" z trzech sekcji: zdanie charakteryzuj%ce prowadzon% dzia&alno$! (trzy do dziesi"ciu s&ów), kilka krótkich zda' opisuj%cych w prostych s&owach g&ówne zadania firmy, opis zada' szczegó&owych. Po ka#dej sekcji mo#na umie$ci! krótki, opisowy akapit, je$li jest taka potrzeba, co oczywi$cie nie usprawiedliwia lenistwa w d%#eniu do jasno$ci i zwi"z&o$ci. G&ówne zadania zazwyczaj numeruje si" jako 1.0, 2.0, 3.0 itd. i opisuje jako zadania poziomu zero. Dla ni#szych poziomów wykorzystuje si" dodatkowe kropki, na przyk&ad 3.1 oraz 3.1.14. Ka#de zadanie g&ówne rozpisuje si" na szereg zada: niepodzielnych — takich, które albo trzeba wykona! do ko'ca, nie przerywaj%c ich realizacji, albo ca&kowicie anulowa!. Wypisanie czeku jest zadaniem niepodzielnym, ale wpisanie samej kwoty ju# nie. Odebranie telefonu w imieniu dzia&u obs&ugi klienta nie jest zadaniem niepodzielnym. Odebranie telefonu i spe&nienie #%da' klienta jest zadaniem niepodzielnym. Zadania niepodzielne musz% mie! znaczenie, a ich wykonanie musi przynosi! jakie$ rezultaty. Poziom, na którym zadanie staje si" niepodzielne, zale#y od tre$ci zadania g&ównego. Zadanie oznaczone jako 3.1.14 mo#e by! niepodzielne, ale równie dobrze mo#e zawiera! kilka dodatkowych poziomów podrz"dnych. Niepodzielne mo#e by! zadanie 3.2, ale tak#e 3.1.16.4. Wa#ny nie jest sam schemat numerowania (który jest po prostu metod% opisu hierarchii zada'), ale dekompozycja zada' do poziomu niepodzielnego. Dwa zadania w dalszym ci%gu mog% by! niepodzielne, nawet je$li oka#e si", #e jedno zale#y od drugiego, ale tylko wtedy, kiedy jedno mo#e zako'czy! si" niezale#nie od drugiego. Je$li dwa zadania zawsze zale#% od siebie, nie s% to zadania niepodzielne. Prawdziwe zadanie niepodzielne obejmuje oba te zadania. W przypadku wi"kszo$ci przedsi"wzi"! szybko si" zorientujemy, #e wiele zada' podrz"dnych mo#na przyporz%dkowa! do dwóch lub wi"kszej liczby zada' z poziomu zero, co niemal zawsze dowodzi, #e niew&a$ciwie zdefiniowano zadania g&ówne lub dokonano nieodpowiedniego ich podzia&u. Celem naszych dzia&a' jest przekszta&cenie ka#dego zadania w poj"ciowy „obiekt”, z dobrze zdefiniowanymi zadaniami i jasno okre$lonymi zasobami niezb"dnymi do osi%gni"cia celu.

Wnioski wynikaj%ce z dokumentu opisuj%cego zadania Wniosków jest kilka. Po pierwsze, poniewa# dokument ten jest bardziej zorientowany na zadania ni# na dane, istnieje prawdopodobie'stwo, #e pod wp&ywem zawartych w nim zapisów zmieni si" sposób projektowania ekranów u#ytkownika. Dokument ma tak#e wp&yw na zasady pobierania i prezentacji danych oraz na implementacj" systemu pomocy. Gwarantuje, #e prze&%czanie pomi"dzy zadaniami nie b"dzie wymaga&o od u#ytkownika zbytniego wysi&ku.


80

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

Po drugie, w miar" odkrywania konfliktów pomi"dzy zadaniami podrz"dnymi mo#e zmieni! si" opis zada' g&ównych. To z kolei wp&ywa na sposób rozumienia zada' przedsi"biorstwa zarówno przez u#ytkowników, jak i projektantów aplikacji. Po trzecie, nawet akapity ko'cz%ce sekcje prawdopodobnie ulegn% zmianie. Racjonalizacja, polegaj%ca w tym przypadku na definiowaniu niepodzielnych zada' i budowaniu wspomnianych przed chwil% poj"ciowych „obiektów”, wymusza usuni"cie niedomówie' i zale#no$ci, które niepotrzebnie wywieraj% wp&yw na dzia&alno$! firmy. Tworzenie tego dokumentu nie jest procesem bezproblemowym — trzeba szuka! odpowiedzi na niewygodne pytania, ponownie definiowa! niew&a$ciwe za&o#enia, #mudnie korygowa! b&"dy. Ostatecznie jednak jego opracowanie przynosi du#e korzy$ci. Lepiej rozumiemy sens dzia&alno$ci firmy, potrafimy okre$li! obowi%zuj%ce procedury, mo#emy zaplanowa! automatyzacj" zada'.

Identyfikacja danych Dokument opisuj%cy zadania oprócz dekompozycji i opisu zada' zawiera równie# omówienie zasobów koniecznych w ka#dym kroku, szczególnie w odniesieniu do wymaganych danych. Jest to realizowane metodycznie, krok po kroku, a wynikaj%ce z tej analizy wymagane dane s% zamieszczane w dokumencie opisu danych. Jest to koncepcyjnie inne podej$cie w porównaniu do klasycznego widoku danych. Nie zbieramy wy&%cznie formularzy i zawarto$ci ekranów u#ywanych przy realizacji zadania i nie zapisujemy tylko znajduj%cych si" tam danych. Zasadniczym mankamentem w takim podej$ciu jest nasza tendencja (cho! cz"sto si" do tego nie przyznajemy) do akceptowania i niepodwa#ania wszystkiego, co jest wydrukowane na papierze. Definiuj%c ka#de zadanie, okre$lamy zasoby potrzebne do jego realizacji, w tym przede wszystkim dane. Wymagania w zakresie danych uwzgl"dniamy w dokumencie opisu danych. Nie chodzi tu o opis pól w formularzach i zawartych w nich elementów. Chodzi o rejestr koniecznych danych. Poniewa# o tym, które dane s% konieczne, decyduje tre$! zadania, a nie istniej%ce formularze, niezb"dna staje si" dok&adna analiza tej tre$ci oraz okre$lenie rzeczywistych wymaga' w zakresie danych. Je$li osoba wykonuj%ca zadanie nie zna zastosowania pola, w które wprowadza dane, takie pole nale#y umie$ci! na li$cie problemów wymagaj%cych dok&adniejszej analizy. Pracuj%c w ten sposób, usuwamy mnóstwo niepotrzebnych danych. Po zidentyfikowaniu danych nale#y je uwa#nie przeanalizowa!. Szczególn% uwag" powinni$my zwróci! na kody numeryczne i literowe, które ukrywaj% rzeczywiste informacje za barier% nieintuicyjnych, niewiele mówi%cych symboli. Poniewa# zawsze budz% podejrzenia, nale#y do nich podchodzi! z dystansem. W ka#dym przypadku trzeba zada! sobie pytanie, czy okre$lony element powinien by! kodem, czy nie. Czasami u#ycie kodów jest por"czne — cho!by dlatego, #e u&atwia zapami"tywanie. Dla ich stosowania mo#na znale2! równie# inne racjonalne argumenty i sensowne powody. Jednak w gotowym projekcie takie przypadki nie mog% zdarza! si" cz"sto, a znaczenie kodów powinno by! oczywiste. W przeciwnym razie &atwo si" pogubimy. Proces konwersji kodów na warto$ci opisowe to zadanie do$! proste, ale stanowi dodatkow% prac". W dokumencie opisuj%cym dane kody nale#y poda! wraz z ich znaczeniem uzgodnionym i zatwierdzonym wspólnie przez u#ytkowników i projektantów.


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia

81

Projektanci i u#ytkownicy powinni równie# wybra! nazwy grup danych. Nazwy te zostan% u#yte jako nazwy kolumn w bazie danych i b"d% regularnie stosowane w zapytaniach, a zatem powinny to by! nazwy opisowe (w miar" mo#liwo$ci bez skrótów, poza powszechnie stosowanymi) i wyra#one w liczbie pojedynczej. Ze wzgl"du na bliski zwi%zek nazwy kolumny z zapisanymi w niej danymi, oba te elementy nale#y okre$li! jednocze$nie. Przemy$lane nazwy kolumn znacznie upraszczaj% identyfikacj" charakteru danych. Dane, które nie s% kodami, tak#e musz% zosta! dok&adnie przeanalizowane. W tym momencie mo#emy przyj%!, #e wszystkie zidentyfikowane elementy danych s% niezb"dne do wykonania zada' biznesowych, cho! niekoniecznie s% one dobrze zorganizowane. To, co wygl%da na jeden element danych w istniej%cym zadaniu, mo#e w istocie by! kilkoma elementami, które wymagaj% rozdzielenia. Dane osobowe, adresy, numery telefonów to popularne przyk&ady takich danych. Na przyk&ad w tabeli AUTOR imiona by&y po&%czone z nazwiskami. Kolumna NazwiskoAutora zawiera&a zarówno imiona, jak i nazwiska, pomimo #e tabela zosta&a doprowadzona do trzeciej postaci normalnej. By&by to niezwykle nieudolny sposób zaimplementowania aplikacji, cho! z technicznego punktu widzenia regu&y normalizacji zosta&y zachowane. Aby aplikacja pozwala&a na formu&owanie prostych zapyta', kolumn" NazwiskoAutora nale#y rozdzieli! na co najmniej dwie nowe kolumny: Imie i Nazwisko. Proces wydzielania nowych kategorii, który prowadzi do poprawy czytelno$ci i wi"kszej funkcjonalno$ci bazy danych, bardzo cz"sto jest niezale#ny od normalizacji. Stopie' dekompozycji zale#y od przewidywanego sposobu wykorzystania danych. Istnieje mo#liwo$!, #e posuniemy si" za daleko i wprowadzimy kategorie, które cho! sk&adaj% si" z oddzielnych elementów, w rzeczywisto$ci nie tworz% dodatkowej warto$ci w systemie. Sposób wykonywania dekompozycji zale#y od aplikacji i rodzaju danych. Nowym grupom danych, które stan% si" kolumnami, nale#y dobra! odpowiednie nazwy. Trzeba uwa#nie przeanalizowa! dane, które zostan% w tych kolumnach zapisane. Nazwy nale#y tak#e przypisa! danym tekstowym, dla których mo#na wyró#ni! sko'czon% liczb" warto$ci. Nazwy tych kolumn, ich warto$ci oraz same kody mo#na uzna! za tymczasowe.

Modele danych niepodzielnych Od tego momentu rozpoczyna si" proces normalizacji, a razem z nim rysowanie modeli danych niepodzielnych. Istnieje wiele dobrych artyku&ów na ten temat oraz mnóstwo narz"dzi analitycznych i projektowych, które pozwalaj% przyspieszy! proces normalizacji, a zatem w tej ksi%#ce nie proponujemy jednej metody. Taka propozycja mog&aby raczej zaszkodzi!, ni# pomóc. W modelu nale#y uwzgl"dni! ka#d% niepodzieln% transakcj" i oznaczy! numerem zadanie, którego ta transakcja dotyczy. Nale#y uwzgl"dni! nazwy tabel, klucze g&ówne i obce oraz najwa#niejsze kolumny. Ka#dej znormalizowanej relacji nale#y nada! opisow% nazw" oraz oszacowa! liczb" wierszy i transakcji. Ka#demu modelowi towarzyszy dodatkowy arkusz, w którym zapisano nazwy kolumn z typami danych, zakresem warto$ci oraz tymczasowymi nazwami tabel, kolumn oraz danych tekstowych w kolumnach.


82

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

Biznesowy model danych niepodzielnych Dokument opisuj%cy dane jest teraz po&%czony z dokumentem opisuj%cym zadania, co tworzy model biznesowy. Projektanci aplikacji i u#ytkownicy musz% wspólnie go przeanalizowa! w celu sprawdzenia jego dok&adno$ci i kompletno$ci.

Model biznesowy W tym momencie powinni posiada! ju# jasn% wizj" przedsi"wzi"cia, realizowanych w nim zada' i u#ywanych danych. Po wprowadzeniu poprawek oraz zatwierdzeniu modelu biznesowego rozpoczyna si" proces syntezy zada' i danych. W tej fazie nast"puje sortowanie danych, przydzielanie ich do zada', ostateczne zako'czenie normalizacji oraz przypisanie nazw wszystkim elementom, które ich wymagaj%. W przypadku rozbudowanych aplikacji zwykle powstaje do$! du#y rysunek. Do&%cza si" do niego dokumentacj" pomocnicz% uwzgl"dniaj%c% zadania, modele danych (z poprawionymi nazwami utworzonymi na podstawie kompletnego modelu), list" tabel, nazw kolumn, typów danych i zawarto$ci. Jedn% z ostatnich czynno$ci jest prze$ledzenie $cie#ek dost"pu do danych dla ka#dej transakcji w pe&nym modelu biznesowym w celu sprawdzenia, czy wszystkie dane wymagane przez transakcje mo#na pobiera! lub wprowadza! oraz czy nie przetrwa&y zadania wprowadzania danych z brakuj%cymi elementami, co mog&oby uniemo#liwi! zachowanie integralno$ci referencyjnej modelu. Z wyj%tkiem nadawania nazw poszczególnym tabelom, kolumnom i danym, wszystkie czynno$ci a# do tego momentu by&y elementami analizy, a nie fazami projektowania. Celem tego etapu by&o w&a$ciwe zrozumienie biznesu i jego komponentów.

Wprowadzanie danych Model biznesowy koncentruje si" raczej na zadaniach, a nie na tabelach danych. Ekrany aplikacji projektowanej w oparciu o model biznesowy wspomagaj% t" orientacj", umo#liwiaj%c sprawn% obs&ug" zada', a w razie potrzeby prze&%czanie si" mi"dzy nimi. Ekrany te wygl%daj% i dzia&aj% nieco inaczej ni# ekrany typowe, odwo&uj%ce si" do tabel i wyst"puj%ce w wielu aplikacjach, ale przyczyniaj% si" do wzrostu skuteczno$ci u#ytkowników oraz podnosz% jako$! ich pracy. W praktyce oznacza to mo#liwo$! formu&owania zapyta' o warto$ci umieszczone w tabeli g&ównej dla danego zadania oraz w innych tabelach, aktualizowanych w momencie, kiedy jest wykonywany dost"p do tabeli g&ównej. Bywa jednak i tak, #e gdy nie okre$lono tabeli g&ównej, dane mo#na pobra! z kilku powi%zanych z sob% tabel. Wszystkie one zwracaj% (a w razie potrzeby przyjmuj%) dane w czasie wykonywania zadania. Interakcja pomi"dzy u#ytkownikiem a komputerem ma znaczenie kluczowe. Ekrany do wprowadzania danych i tworzenia zapyta' powinny by! zorientowane na zadania i pisane w j"zyku


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia

83

naturalnym. Wa#n% rol" odgrywaj% tak#e ikony i interfejs graficzny. Ekrany musz% by! zorganizowane w taki sposób, aby komunikacja odbywa&a si" j"zyku, do jakiego s% przyzwyczajeni u#ytkownicy.

Zapytania i tworzenie raportów Jedn% z podstawowych cech, odró#niaj%cych aplikacje relacyjne i j"zyk SQL od aplikacji tradycyjnych, jest mo#liwo$! &atwego formu&owania indywidualnych zapyta' do obiektów bazy danych oraz tworzenia w&asnych raportów. Zapytania wpisywane z wiersza polece' i otrzymywane t% drog% raporty nie wchodz% w sk&ad podstawowego zestawu opracowanego przez programist" w kodzie aplikacji. Pozwala na to narz"dzie SQL*Plus. Dzi"ki temu u#ytkownicy i programi$ci systemu Oracle zyskuj% niezwyk&% kontrol" nad danymi. U#ytkownicy mog% analizowa! informacje, modyfikowa! zapytania i wykonywa! je w ci%gu kilku minut oraz tworzy! raporty. Programi$ci s% zwolnieni z niemi&ego obowi%zku tworzenia nowych raportów. U#ytkownicy maj% mo#liwo$! wgl%du w dane, przeprowadzenia szczegó&owej ich analizy i reagowania z szybko$ci% i dok&adno$ci%, jakie jeszcze kilka lat temu by&y nieosi%galne. Wydajno$! aplikacji znacznie wzrasta, je$li nazwy tabel, kolumn i warto$ci danych s% opisowe, spada natomiast, je$li w projekcie przyj"to z&% konwencj" nazw oraz u#yto kodów i skrótów. Czas po$wi"cony na spójne, opisowe nazwanie obiektów w fazie projektowania op&aci si". Z pewno$ci% u#ytkownicy szybko odczuj% korzy$ci z tego powodu. Niektórzy projektanci, szczególnie ci niemaj%cy do$wiadczenia w tworzeniu du#ych aplikacji z wykorzystaniem relacyjnych baz danych, obawiaj% si", #e kiepsko przygotowani u#ytkownicy b"d% pisa! nieefektywne zapytania zu#ywaj%ce olbrzymi% liczb" cykli procesora, co spowoduje spowolnienie pracy komputera. Do$wiadczenie pokazuje, #e z regu&y nie jest to prawda. U#ytkownicy szybko si" ucz%, jakie zapytania s% obs&ugiwane sprawnie, a jakie nie. Co wi"cej, wi"kszo$! dost"pnych dzi$ narz"dzi, s&u#%cych do wyszukiwania danych i tworzenia raportów, pozwala oszacowa! ilo$! czasu, jak% zajmie wykonanie zapytania, oraz ograniczy! dost"p (o okre$lonej porze dnia lub gdy na komputerze zaloguje si" okre$lony u#ytkownik) do tych zapyta', które spowodowa&yby zu#ycie nieproporcjonalnie du#ej ilo$ci zasobów. W praktyce #%dania, które u#ytkownicy wpisuj% do wiersza polece', tylko czasami wymykaj% si" spod kontroli, ale korzy$ci, jakie z nich wynikaj%, znacznie przekraczaj% koszty przetwarzania. Niemal za ka#dym razem, kiedy scedujemy na komputery zadania wykonywane dotychczas przez ludzi, osi%gamy oszcz"dno$ci finansowe. Rzeczywistym celem projektowania jest sprecyzowanie i spe&nienie wymaga' u#ytkowników biznesowych. Zawsze nale#y stara! si", aby aplikacja by&a jak naj&atwiejsza do zrozumienia i wykorzystania, nawet kosztem zu#ycia procesora lub miejsca na dysku. Nie mo#na jednak dopu$ci! do tego, aby wewn"trzna z&o#ono$! aplikacji by&a tak du#a, #e jej piel"gnacja i modyfikacja stan% si" trudne i czasoch&onne.


84

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

Normalizacja nazw obiektów Najlepsze nazwy to nazwy przyjazne w u#ytkowaniu: opisowe, czytelne, &atwe do zapami"tania, obja$nienia i zastosowania, bez skrótów i kodów. Je$li decydujemy si" w nazwach na znaki podkre$lenia, stosujmy je w sposób spójny i przemy$lany. W du#ych aplikacjach nazwy tabel, kolumn i danych cz"sto sk&adaj% si" z wielu s&ów, na przyk&ad OdwroconeKontoZawieszone lub Data_Ostatniego_Zamkniecia_KG. Na kilku nast"pnych stronach zostanie zaprezentowane nieco bardziej rygorystyczne podej$cie do nazewnictwa, którego celem jest opracowanie formalnego procesu normalizacji nazw obiektów.

Integralno!" poziom-nazwa W systemie relacyjnej bazy danych obiekty takie, jak bazy danych, w&a$ciciele tabel, tabele, kolumny i warto$ci danych, s% uporz%dkowane hierarchicznie. W przypadku bardzo du#ych systemów ró#ne bazy danych mog% zosta! rozmieszczone w ró#nych lokalizacjach. Dla potrzeb zwi"z&o$ci, wy#sze poziomy zostan% na razie zignorowane, ale to, co tutaj powiemy, ich tak#e dotyczy. Ka#dy poziom w hierarchii jest zdefiniowany w ramach poziomu znajduj%cego si" powy#ej. Obiektom nale#y przypisywa! nazwy odpowiednie dla danego poziomu i unika! stosowania nazw z innych poziomów. Na przyk&ad w tabeli nie mo#e by! dwóch kolumn o nazwie Nazwisko, a konto o nazwie Jerzy nie mo#e zawiera! dwóch tabel o nazwie AUTOR. Nie ma obowi%zku, aby wszystkie tabele konta Jerzy mia&y nazwy niepowtarzalne w ca&ej bazie danych. Inni w&a$ciciele tak#e mog% posiada! tabele AUTOR. Nawet je$li Jerzy ma do nich dost"p, nie ma mo#liwo$ci pomy&ki, poniewa# tabel" mo#na zidentyfikowa! w sposób niepowtarzalny, poprzedzaj%c nazw" tabeli prefiksem w postaci imienia jej w&a$ciciela, na przyk&ad Dariusz.AUTOR. Nie by&oby spójno$ci logicznej, gdyby cz"$ci% nazw wszystkich tabel nale#%cych do Jerzego by&o jego imi", jak na przyk&ad JERZYAUTOR, JERZYBIBLIOTECZKA itd. Stosowanie takich nazw jest myl%ce, a poza tym umieszczenie w nazwie cz"$ci nazwy nadrz"dnej niepotrzebnie komplikuje nazewnictwo tabel i w efekcie narusza integralno/J poziom-nazwa. Zwi"z&o$ci nigdy nie nale#y przedk&ada! nad czytelno$!. W&%czanie fragmentów nazw tabel do nazw kolumn jest z&% technik%, gdy# narusza logiczn% struktur" poziomów oraz wymagan% integralno$! poziom-nazwa. Jest to tak#e myl%ce, poniewa# wymaga od u#ytkowników wyszukiwania nazw kolumn niemal za ka#dym razem, kiedy pisz% zapytania. Nazwy obiektów musz% by! niepowtarzalne w obr"bie poziomu nadrz"dnego, ale u#ywanie nazw spoza w&asnego poziomu obiektu nie powinno by! dozwolone. Obs&uga abstrakcyjnych typów danych w systemie Oracle wzmacnia mo#liwo$ci tworzenia spójnych nazw atrybutów. Na przyk&ad typ danych o nazwie ADRES_TY b"dzie charakteryzowa& si" takimi samymi atrybutami za ka#dym razem, kiedy zostanie u#yty. Ka#dy atrybut ma zdefiniowan% nazw", typ danych i rozmiar, co powoduje, #e implementacja aplikacji w ca&ym przedsi"biorstwie stanie si" spójniejsza. Jednak wykorzystanie abstrakcyjnych typów danych w ten sposób wymaga:


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia

85

w&a$ciwego zdefiniowania typów danych na pocz%tku procesu projektowania, aby unikn%! konieczno$ci pó2niejszego ich modyfikowania, spe&nienia wymaga' sk&adniowych obowi%zuj%cych dla abstrakcyjnych typów danych.

Klucze obce Jedn% z przeszkód stoj%cych na drodze do stosowania zwi"z&ych nazw kolumn jest wyst"powanie obcych kluczy w tabeli. Czasem si" zdarza, #e kolumna w tabeli, w której wyst"puje klucz obcy, ma t" sam% nazw", co kolumna klucza obcego w swojej tabeli macierzystej. Nie by&oby problemu, gdyby mo#na by&o u#y! pe&nej nazwy klucza obcego wraz z nazw% tabeli macierzystej (np. BIBLIOTECZKA.Tytul). Aby rozwi%za! problem z takimi samymi nazwami, trzeba wykona! jedno z nast"puj%cych dzia&a': opracowa! nazw", która obejmuje nazw" tabeli 2ród&owej klucza obcego, bez wykorzystywania kropki (np. z u#yciem znaku podkre$lenia), opracowa! nazw", która obejmuje skrót nazwy tabeli 2ród&owej klucza obcego, opracowa! nazw", która ró#ni si" od nazwy w tabeli 2ród&owej, zmieni! nazw" kolumny powoduj%cej konflikt. ]adne z tych dzia&a' nie jest szczególnie atrakcyjne, ale je$li zetkniemy si" z tego typu dylematem dotycz%cym nazwy, nale#y wybra! jedno z nich.

Nazwy w liczbie pojedynczej Obszarem niespójno$ci powoduj%cym sporo zamieszania jest liczba gramatyczna nazw nadawanych obiektom. Czy tabela powinna nosi! nazw" AUTOR, czy AUTORZY? Kolumna ma mie! nazw" Nazwisko czy Nazwiska? Najpierw przeanalizujmy kolumny, które wyst"puj% niemal w ka#dej bazie danych: Nazwisko, Adres, Miasto, Wojewodztwo i KodPocztowy. Czy — nie licz%c pierwszej kolumny — kiedykolwiek zauwa#yli$my, aby kto$ u#ywa& tych nazw w liczbie mnogiej? Jest niemal oczywiste, #e nazwy te opisuj% zawarto$! pojedynczego wiersza — rekordu. Pomimo #e relacyjne bazy danych przetwarzaj% zbiory, podstawow% jednostk% zbioru jest wiersz, a zawarto$! wiersza dobrze opisuj% nazwy kolumn w liczbie pojedynczej. Czy formularz do wprowadzania danych osobowych powinien mie! tak% posta!, jak poni#ej? Nazwiska: ___________________________________________________________ Adresy: _____________________________________________________________ Miasta: _______________________ Województwa:_____ KodyPocztowe:__-___

Czy te# nazwy wy$wietlane na ekranie powinny mie! liczb" pojedyncz%, poniewa# w okre$lonym czasie pobieramy jedno nazwisko i jeden adres, ale podczas pisania zapyta' trzeba poinformowa! u#ytkowników, aby przekszta&cili te nazwy na liczb" mnog%? Konsekwentne stosowanie nazw kolumn w liczbie pojedynczej jest po prostu bardziej intuicyjne.


86

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

Je$li nazwy wszystkich obiektów maj% t" sam% liczb", ani programista, ani u#ytkownik nie musz% zapami"tywa! dodatkowych regu&. Korzy$ci s% oczywiste. Za&ó#my, #e zdecydowali$my o tym, #e wszystkim obiektom nadamy nazwy w liczbie mnogiej. W tym przypadku pojawi% si" ró#ne ko'cówki w nazwie niemal ka#dego obiektu. Z kolei w nazwie wielowyrazowej poszczególne s&owa otrzymaj% ró#ne ko'cówki. Jakie korzy$ci mieliby$my osi%gn%! z ci%g&ego wpisywania tych dodatkowych liter? Czy#by tak by&o &atwiej? Czy takie nazwy s% bardziej zrozumia&e? Czy takie nazwy &atwiej zapami"ta!? Oczywi$cie nie. Z tego powodu najlepiej stosowa! nast"puj%c% zasad": dla wszystkich nazw obiektów zawsze nale#y u#ywa! liczby pojedynczej. Wyj%tkami mog% by! terminy, które s% powszechnie stosowane w biznesie, takie jak na przyk&ad Aktywa.

Zwi z&o!" Jak wspomniano wcze$niej, zwi"z&o$ci nigdy nie nale#y przedk&ada! nad czytelno$!, ale w przypadku dwóch jednakowo tre$ciwych, równie &atwych do zapami"tania i opisowych nazw zawsze nale#y wybra! krótsz%. W czasie projektowania aplikacji warto zaproponowa! alternatywne nazwy kolumn i tabel grupie u#ytkowników i programistów i wykorzysta! ich rady w celu wybrania tych propozycji, które s% czytelniejsze. W jaki sposób tworzy! list" alternatyw? Mo#na skorzysta! z tezaurusa i s&ownika. W zespole projektowym, zajmuj%cym si" tworzeniem ró#nych aplikacji, ka#dego cz&onka zespo&u nale#y wyposa#y! w tezaurus i s&ownik, a nast"pnie przypomina! im o konieczno$ci uwa#nego nadawania nazw obiektom.

Obiekt o nazwie tezaurus Relacyjne bazy danych powinny zawiera! obiekt o nazwie tezaurus, podobnie jak zawieraj% s&ownik danych. Tezaurus wymusza korzystanie z firmowych standardów nazewniczych i zapewnia spójne stosowanie nazw i skrótów (je$li s% u#ywane). Takie standardy czasami wymagaj% u#ywania (równie# spójnego i konsekwentnego!) znaków podkre$lenia, co u&atwia identyfikacj" poszczególnych elementów z&o#onej nazwy. W agencjach rz%dowych lub du#ych firmach wprowadzono standardy nazewnictwa obiektów. Standardy obowi%zuj%ce w du#ych organizacjach w ci%gu lat przenikn"&y do pozosta&ej cz"$ci komercyjnego rynku i mo#e si" zdarzy!, #e tworz% podstaw" standardów nazewnictwa naszej firmy. Mog% one na przyk&ad zawiera! wskazówki dotycz%ce stosowania terminów Korporacja lub Firma. Je$li nie zaadaptowali$my takich standardów nazewnictwa, w celu zachowania spójno$ci nale#y opracowa! w&asne normy, które uwzgl"dniaj% zarówno standardy bazowe, jak i wskazówki nakre$lone w tym rozdziale.

Inteligentne klucze i warto4ci kolumn Nazwa inteligentne klucze jest niezwykle myl%ca, poniewa# sugeruje, #e mamy do czynienia z czym$ pozytywnym lub godnym uwagi. Trafniejszym okre$leniem móg&by by! termin klucze przeci'"one. Do tej kategorii cz"sto zalicza si" kody Ksi"gi G&ównej oraz kody produktów


Rozdzia& 4.

Planowanie aplikacji systemu Oracle — sposoby, standardy i zagro$enia

87

(dotycz% ich wszystkie trudno$ci charakterystyczne dla innych kodów). Trudno$ci typowe dla kluczy przeci%#onych dotycz% tak#e kolumn niekluczowych, które zawieraj% wi"cej ni# jeden element danych. Typowy przyk&ad przeci%#onego klucza opisano w nast"puj%cym fragmencie: „Pierwszy znak jest kodem regionu. Kolejne cztery znaki s% numerem katalogowym. Ostatnia cyfra to kod centrum kosztów, o ile nie mamy do czynienia z cz"$ci% importowan% — w takiej sytuacji na ko'cu liczby umieszcza si" znacznik /. Je$li nie jest to element wyst"puj%cy w du#ej ilo$ci, wtedy dla numeru katalogowego s% wykorzystywane tylko trzy cyfry, a kod regionu oznacza si" symbolem HD”. W dobrym projekcie relacyjnym wyeliminowanie przeci%#onych kluczy i warto$ci kolumn ma zasadnicze znaczenie. Zachowanie przeci%#onej struktury stwarza zagro#enie dla relacji tworzonych na jej podstawie (zazwyczaj dotyczy to obcych kluczy w innych tabelach). Niestety, w wielu firmach przeci%#one klucze s% wykorzystywane od lat i na trwa&e wros&y w jej zadania. Niektóre zosta&y wdro#one we wcze$niejszych etapach automatyzacji, kiedy u#ywano baz danych nieobs&uguj%cych kluczy wielokolumnowych. Inne maj% pod&o#e historyczne — stosowano je po to, aby krótkiemu kodowi nada! szersze znaczenie i obj%! nim wi"ksz% liczb" przypadków, ni# pierwotnie planowano. Z wyeliminowaniem przeci%#onych kluczy mog% by! trudno$ci natury praktycznej, które uniemo#liwiaj% natychmiastowe wykonanie tego zadania. Dlatego tworzenie nowej aplikacji relacyjnej staje si" wówczas trudniejsze. Rozwi%zaniem problemu jest utworzenie nowego zestawu kluczy — zarówno g&ównych, jak i obcych, które w prawid&owy sposób normalizuj% dane, a nast"pnie upewnienie si", #e dost"p do tabel jest mo#liwy wy&%cznie za pomoc% tych nowych kluczy. Przeci%#one klucze s% wówczas utrzymywane jako dodatkowe, niepowtarzalne kolumny tabeli. Dost"p do danych za pomoc% historycznych metod jest zachowany (np. poprzez wyszukanie przeci%#onego klucza w zapytaniu), ale jednocze$nie promuje si" klucze o poprawnej strukturze jako preferowan% metod" dost"pu. Z czasem, przy odpowiednim szkoleniu, u#ytkownicy przekonaj% si" do nowych kluczy. Na koniec przeci%#one klucze (lub inne przeci%#one warto$ci kolumn) mo#na po prostu zamieni! na warto$ci NULL lub usun%! z tabeli. Je$li nie uda si" wyeliminowa! przeci%#onych kluczy i warto$ci z bazy danych, kontrola poprawno$ci danych, zapewnienie integralno$ci danych oraz modyfikowanie struktury stan% si" bardzo trudne i kosztowne.

Przykazania Omówili$my wszystkie najwa#niejsze zagadnienia wydajnego projektowania. Warto teraz je podsumowa! w jednym miejscu, st%d tytu& Przykazania (cho! mo#e lepszy by&by tytu& Wskazówki). Znaj%c te zalecenia, u#ytkownik mo#e dokona! racjonalnej oceny projektu i skorzysta! z do$wiadcze' innych osób rozwi%zuj%cych podobne problemy. Celem tego podrozdzia&u nie jest opisanie cyklu tworzenia oprogramowania, który prawdopodobnie wszyscy dobrze znaj%, ale raczej udowodnienie twierdzenia, #e projektowanie z odpowiedni% orientacj% powoduje radykaln% zmian" wygl%du i sposobu korzystania z aplikacji. Uwa#ne post"powanie zgodnie z podanymi wskazówkami pozwala na znacz%c% popraw" wydajno$ci i poziomu zadowolenia u#ytkowników aplikacji.


88

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

Oto dziesi"! przykaza' w&a$ciwego projektu: 1. Nie zapominajmy o u#ytkownikach. W&%czajmy ich do zespo&u projektowego i uczmy

modelu relacyjnego i j"zyka SQL. 2. Nazwy tabel, kolumn, kluczy i danych nadawajmy wspólnie z u#ytkownikami.

Opracujmy tezaurus aplikacji w celu zapewnienia spójno$ci nazw. 3. Stosujmy opisowe nazwy w liczbie pojedynczej, które maj% znaczenie, s% &atwe

do zapami"tania i krótkie. Wykorzystujmy znaki podkre$lenia konsekwentnie lub wcale. 4. Nie mieszajmy poziomów nazw. 5. Unikajmy kodów i skrótów. 6. Wsz"dzie tam, gdzie to mo#liwe, u#ywajmy kluczy maj%cych znaczenie. 7. Przeprowad2my dekompozycj" kluczy przeci%#onych. 8. Podczas analizy i projektowania miejmy na uwadze zadania, a nie tylko dane.

Pami"tajmy, #e normalizacja nie jest cz"$ci% projektu. 9. Jak najwi"cej zada' zlecajmy komputerom. Op&aca si" po$wi"ci! cykle procesora

i miejsce w pami"ci, aby zyska! &atwo$! u#ytkowania. 10. Nie ulegajmy pokusie szybkiego projektowania. Po$wi"!my odpowiedni% ilo$! czasu

na analiz", projekt, testowanie i dostrajanie. Ten rozdzia& celowo poprzedza rozdzia&y opisuj%ce polecenia i funkcje — je$li projekt jest z&y, aplikacja równie# b"dzie dzia&a&a 2le, niezale#nie od tego, jakich polece' u#yjemy. Funkcjonalno$!, wydajno$!, mo#liwo$ci odtwarzania, bezpiecze'stwo oraz dost"pno$! trzeba odpowiednio zaplanowa!. Dobry plan to gwarancja sukcesu.


Oracle Database 11g. Kompendium administratora