Vous êtes sur la page 1sur 51

Oracle Database 11g.

Kompendium administratora
Autor: Kevin Loney
Tumaczenie: Pawe Gonera
ISBN: 978-83-246-2549-9
Tytu oryginau: Oracle Database 11g
The Complete Reference
Format: 168237, stron: 1504

Poznaj najbardziej efektywne funkcje najnowszej wersji bazy danych Oracle


Jak uywa nowych funkcji i narzdzi Oracle 11g?
Jak uruchamia efektywne zapytania SQL?
Jak tworzy instrukcje PL/SQL?
Baza danych Oracle 11g znaczco rni si od wczeniejszych wersji Oracle. Dziki
nowym funkcjom programici i administratorzy baz danych zyskali duo wiksz kontrol
nad przechowywaniem, przetwarzaniem oraz odczytywaniem danych. Jeli chcesz
zdoby najnowsz specjalistyczn wiedz z tego zakresu, skorzystaj z przewodnika
Kevina Loneya, wiatowej sawy eksperta w dziedzinie projektowania, tworzenia
i dostrajania baz danych Oracle oraz administrowania tymi bazami.
Ksika Oracle Database 11g. Kompendium administratora stanowi kompletny,
napisany klarownym jzykiem i bogaty w niebanalne przykady przewodnik po najnowszej
wersji Oracle. Korzystajc z tego podrcznika, nauczysz si wdraa aktualne
zabezpieczenia, dostraja wydajno bazy danych, tworzy instalacje przetwarzania
siatkowego oraz stosowa narzdzie flashback. Dowiesz si, jak wykorzystywa techniki
stosowane w relacyjnych systemach baz danych i aplikacjach. Poznasz take
zaawansowane opcje Oracle, takie jak technologia Data Pump, replikacja czy
indeksowanie.
Nieocenion zalet ksiki jest dodatek zawierajcy polecenia Oracle, sowa kluczowe i
funkcje.
Wybr architektury Oracle 11g
Planowanie aplikacji systemu Oracle
Tworzenie tabel, sekwencji, indeksw i kont uytkownikw
Optymalizacja bezpieczestwa
Importowanie i eksportowanie danych
Unikanie bdw ludzkich dziki technologii flashback
Optymalizacja dostpnoci i skalowalnoci Oracle Real Application Clusters
Wielkie obiekty LOB i zaawansowane funkcje obiektowe
Zarzdzanie zmianami oraz buforowanie wynikw
Tworzenie aplikacji baz danych z uyciem Java JDBC i XML
Skorzystaj z wiedzy ekspertw twrz efektywne relacyjne bazy danych!

Spis tre!ci

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
Wybr 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 komponentw systemu Oracle ......................................37

Rozdzia" 3. Aktualizacja do wersji Oracle 11g ............................................................. 45


Wybr 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 mechanizmw 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

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, skrty 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 raportw .............................................................................................83
Normalizacja nazw obiektw ......................................................................................................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*wkw 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"gw znakw ......................................................................................144
RPAD i LPAD .....................................................................................................................144
LTRIM, RTRIM i TRIM .....................................................................................................145
:"czenie dwch 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!zykw narodowych ............................................................................................163
Obs*uga wyra$e& regularnych .............................................................................................163
Podsumowanie ...........................................................................................................................163

Rozdzia" 8. Wyszukiwanie z wykorzystaniem wyra%e( regularnych ............................. 165


Wyszukiwanie w ci"gach znakw .............................................................................................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

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 typw danych .............................................................................227
Ostrze$enie przed automatyczn" konwersj" ........................................................................230
Specjalne funkcje konwersji ......................................................................................................230
Funkcje transformacji ................................................................................................................231
TRANSLATE .....................................................................................................................231
DECODE ............................................................................................................................232
Podsumowanie ...........................................................................................................................233

Spis tre!ci

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" aliasw .................................................................................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 testw 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 operatorw 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 wskazwki APPEND do poprawy wydajno%ci instrukcji insert ...................284
rollback, commit i autocommit ..................................................................................................285
Zastosowanie punktw 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*!dw .........................................................................................................................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, indeksw,


klastrw i sekwencji oraz zarz&dzanie nimi .............................................. 317
Tworzenie tabeli ........................................................................................................................317
Szeroko%+ ci"gw znakw 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 indeksw ...........................................................................................................339
Wymuszanie niepowtarzalno%ci ..........................................................................................340
Tworzenie indeksw niepowtarzalnych ..............................................................................340
Tworzenie indeksw bitmapowych .....................................................................................341
Kiedy nale$y tworzy+ indeksy .............................................................................................342
Tworzenie niewidocznych indeksw ...................................................................................342
R$norodno%+ danych w kolumnach indeksowanych .........................................................343
Ile indeksw wykorzystywa+ w tabeli .................................................................................344
Lokalizacja indeksw 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 rl ..................................................................................................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&, ktre nie zosta*y nadane ...........................................................372
Przekazywanie uprawnie& ...................................................................................................372
Tworzenie rl ......................................................................................................................374
Nadawanie uprawnie& do rl ...............................................................................................374
Przypisywanie rl do innych rl ..........................................................................................375
Nadawanie rl u$ytkownikom .............................................................................................375
Definiowanie hase* dla rl ...................................................................................................376
Usuwanie has*a z roli ..........................................................................................................377
W*"czanie i wy*"czanie rl ..................................................................................................377
Odbieranie uprawnie& nadanych rolom ...............................................................................378
Usuwanie roli ......................................................................................................................378
Nadawanie uprawnienia UPDATE do okre%lonych kolumn ...............................................378
Odbieranie uprawnie& do obiektw .....................................................................................379
Zabezpieczenia na poziomie u$ytkownika ..........................................................................379
Nadawanie uprawnie& publicznych .....................................................................................381
Nadawanie uprawnie& do ograniczonych zasobw ...................................................................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 indeksw od tabel ............................................................................................413
Oddzielenie du$ych od ma*ych obiektw ............................................................................413
Oddzielenie tabel aplikacji od obiektw 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 obiektw ..........................................................................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 synonimw lub perspektyw ..........................................................................449
Zdalne aktualizacje ..............................................................................................................450
Sk*adnia *"cza bazy danych .................................................................................................451
Zastosowanie synonimw w celu uzyskania przezroczystej lokalizacji obiektw .....................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 dziennikw ................................................480
Usuwanie zmaterializowanych perspektyw i dziennikw .........................................................480

Rozdzia" 27. Zastosowanie pakietu Oracle Text do wyszukiwania ci&gw znakw ........ 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, ktre s" blisko siebie .........................................................................492
Zastosowanie wzorcw 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 indeksw ....................................................................................................498
Zestawy indeksw .....................................................................................................................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 numerw 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 filtrw ...........................................................................................................539
Uruchamianie przechwytywania .........................................................................................540
Zatrzymywanie przechwytywania .......................................................................................541
Eksportowanie danych AWR ..............................................................................................541
Przetwarzanie polece& ...............................................................................................................541
Powtarzanie polece& ..................................................................................................................542
Uruchamianie klientw 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"tkw ...........................................................................................................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 sposb nieinwazyjny .................................................................577
Tworzenie kolumn wirtualnych ...........................................................................................577
Modyfikowanie aktywnie wykorzystywanych tabel ...........................................................578
Dodawanie kolumn NOT NULL .........................................................................................579
Reorganizacja obiektw 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*!dw 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*!dw do indywidualnych potrzeb .................................................618
Nazwy procedur i funkcji ....................................................................................................619
Sk*adnia polecenia create package ............................................................................................620
Przegl"danie kodu ]rd*owego obiektw proceduralnych .........................................................623
Kompilacja procedur, funkcji i pakietw ...................................................................................623
Zast!powanie procedur, funkcji i pakietw ...............................................................................624
Usuwanie procedur, funkcji i pakietw .....................................................................................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 problemw .............................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 typw, perspektyw obiektowych i metod ..................... 649


Zasady pracy z abstrakcyjnymi typami danych .........................................................................649
Abstrakcyjne typy danych a bezpiecze&stwo ......................................................................650
Indeksowanie atrybutw 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 rekordw 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 rekordw 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 kolektorw .........................................................678
Lokalizacja danych ..............................................................................................................679

Rozdzia" 40. Wielkie obiekty (LOB) ............................................................................ 681


Dost!pne typy ............................................................................................................................681
Definiowanie parametrw 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"gw znakw w typach LOB .................................................................690
Operowanie na warto%ciach LOB za pomoc" pakietu DBMS_LOB ...................................691
Usuwanie obiektw 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
Krtkie porwnanie j!zykw PL/SQL i Java ............................................................................730
Zaczynamy ................................................................................................................................731
Deklaracje ..................................................................................................................................731
Podstawowe polecenia ...............................................................................................................732
Instrukcje warunkowe .........................................................................................................733
P!tle .....................................................................................................................................737
Obs*uga wyj"tkw ...............................................................................................................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 klastrw 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 zasobw 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 planw 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 indeksw ............................................................................................841
Kiedy baza u$ywa indeksw ...............................................................................................843
Operacje na zbiorach danych ...............................................................................................849
Operacje wykonuj"ce z*"czenia ...........................................................................................856

Spis tre!ci

19
Z*"czenia wi!cej ni$ dwch tabel ........................................................................................856
Przetwarzanie rwnoleg*e i buforowanie ............................................................................863
Implementowanie zarysw sk*adowanych .................................................................................864
Podsumowanie ...........................................................................................................................866

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

Rozdzia" 48. Analiza przypadkw 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$ytkownikw ..........................................................................................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 parametrw ..................................................................................................................920
Zarz"dzanie przestrzeni" dla obiektw ......................................................................................920
Znaczenie klauzuli storage ..................................................................................................921
Segmenty tabel ....................................................................................................................923
Segmenty indeksw .............................................................................................................924
Systemowe zarz"dzanie segmentami wycofania .................................................................924
Segmenty tymczasowe ........................................................................................................925
Wolna przestrze& .................................................................................................................927
Okre%lanie rozmiaru obiektw ............................................................................................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" wsplnym j"zykiem, a tak#e posiada! g&"bok% wiedz"
zarwno na temat aplikacji biznesowych, jak i narz"dzi systemu Oracle. W poprzednich rozdzia&ach zaprezentowano oglny 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#erw i personelu
technicznego.
Dawniej analitycy systemowi szczeg&owo badali wymagania klienta, a nast"pnie programi$ci tworzyli aplikacje, ktre spe&nia&y te wymagania. Klient dostarcza& jedynie opis procesu,
ktry 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#ytkownikw. Jest to jednak mo#liwe tylko
w przypadku w&a$ciwego rozumienia zagadnie' biznesowych.
Zarwno 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, ktrej nie posiada programista. Programista rozumie dzia&anie wewn"trznych
funkcji i w&asno$ci systemu Oracle i $rodowiska komputerw, ktre 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" szczegln% 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. Mwi%c szczerze, te zjawiska nie s% wy&%cznie domen% osb zajmuj%cych si" przetwarzaniem danych. Podobne problemy dotycz% na
przyk&ad pracownikw dzia&u ksi"gowo$ci, ktrzy 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, ktre jeszcze bardziej pot"guj% syndrom izolacji.
Mo#na by powiedzie!, #e to, co zosta&o napisane powy#ej, jest interesuj%ce dla socjologw.
Dlaczego wi"c przypominamy te informacje przy okazji systemu Oracle?
Poniewa" wdro"enie tego systemu fundamentalnie zmienia natur& zwi'zkw zachodz'cych
pomi&dzy pracownikami merytorycznymi a technicznymi. W systemie Oracle nie u"ywa si&
specyficznego j&zyka, ktry 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 administratorw, s% teraz dost"pne dla mened#erw, ktrzy 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 (ktry
wkrtce zostanie szczeg&owo omwiony). Osoby, ktre nie s% programistami, nie maj% problemw ze zrozumieniem zada' wykonywanych przez system Oracle. Dzi"ki temu jest on
dost"pny w stopniu praktycznie nieograniczonym.
Niektre 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 projektantw 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. Niektre techniki (i ograniczenia), ktre by&y
sta&ym elementem systemw 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 nawykw 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 sposb jasny i prosty z wykorzystaniem poj"!, ktre s% zrozumia&e zarwno dla u#ytkownikw, jak i programistw. 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 sposb 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! zarwno jako relacyjny system zarz%dzania baz% danych (RDBMS), jak te# skorzysta! z jego w&asno$ci obiektowych.
Niestety, jedyni ludzie, ktrym przydaje si" relacyjna baza danych u#ytkownicy biznesowi z regu&y najmniej j% rozumiej%. Projektanci aplikacji tworz%cy systemy dla u#ytkownikw biznesowych cz"sto nie potrafi% obja$ni! poj"! modelu relacyjnego w prosty sposb.
Aby by&a mo#liwa wsp&praca, potrzebny jest wsplny j"zyk.
Za chwil" wyja$nimy, czym s% relacyjne bazy danych i w jaki sposb wykorzystuje si" je
w biznesie. Mo#e si" wydawa!, #e materia& ten zainteresuje wy&%cznie u#ytkownikw. Do$wiadczony projektant aplikacji relacyjnych odczuje zapewne pokus" pomini"cia tych fragmentw, a ksi%#k" wykorzysta jako dokumentacj" systemu Oracle. Chocia# wi"kszo$! materia&u z pierwszych rozdzia&w to zagadnienia elementarne, to jednak projektanci, ktrzy
po$wi"c% im czas, poznaj% jasn%, spjn% i funkcjonaln% terminologi", u&atwiaj%c% komunikacj"
z u#ytkownikami oraz precyzyjniejsze ustalenie ich wymaga'. Wa#ne jest rwnie# 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 projektw nierelacyjnych.
Gdy u#ytkownik docelowy rozumie podstawowe poj"cia obiektowo-relacyjnych baz danych, mo#e
w spjny sposb 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, ktry rozumie
funkcjonowanie aplikacji, z &atwo$ci% zorientuje si&, czy osi%gn"&a ona maksymaln% wydajno$!.
System Oracle uwalnia tak#e programistw od najmniej lubianego przez nich obowi%zku: tworzenia raportw. W du#ych firmach niemal 95 % wszystkich prac programistycznych to #%dania
tworzenia nowych raportw. 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
meczw, 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 mwi%, #e dane pozostaj% danymi, dopki 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 ktrej 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 rwnie#, 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 sposb zrozumia&y
dla u#ytkownika i stosunkowo nieskomplikowany. Mwi%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 sposb 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 raportw.

J7zyk systemu Oracle


Informacje zapisane w systemie Oracle s% przechowywane w tabelach. W podobny sposb 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 poszczeglnych 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 oglnego. Firma Oracle stosuje oglny j"zyk, a zatem mog% go rwnie# 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 fachowcw, 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 rwnie# 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, ktrego nazw" wymawia si" jako sequel lub es-ku-el, oferuje, jak wkrtce 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 19C, wymieniliby$my
Chicago i Manchester.
System Oracle jest w stanie odpowiada! na takie pytania niemal rwnie &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 wskazwki dla systemu
Oracle, ktre 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 sposb:


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 sposb:


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 ktrych 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 ktrych


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 sposb:


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 niektrych pa'stw w tabeli znajduje si" wi"cej ni# jedno miasto. Przypu$!my, #e interesuje nas, w ktrym 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" rwnie# w tabeli LOKALIZACJA. Wystarczy znale2!
interesuj%c% nas nazw" w kolumnie Miasto, a wwczas 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"$! wspln%: kolumn" Miasto. Dla
ka#dej nazwy miasta w tabeli POGODA istnieje identyczna nazwa miasta w tabeli LOKALIZACJA.
Sprbujmy na przyk&ad dowiedzie! si", jakie temperatury, wilgotno$! i warunki atmosferyczne
panuj% w miastach australijskich. Spjrzmy na obie tabele i odczytajmy z nich te informacje.
W jaki sposb 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 pl 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 mwi si" te# o relacyjnym modelu danych).
Rysunek 4.5.
Relacje pomi&dzy
tabelami POGODA
i LOKALIZACJA

Dane zapisuje si" w tabelach, na ktre 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 sposb. W systemie Oracle mo#na zapisa!
wiele tabel i wykorzysta! je do szybkiego uzyskania odpowiedzi na pytania.
Typowy raport kursw akcji w postaci papierowej mo#e wygl%da! tak, jak ten, ktry 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? Ktre akcje odnotowa&y najwy#szy procentowy wzrost, a ktre 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 kursw 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 ktrymi 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 sposb wprowadza si" i pobiera dane.
Przyk&ady bazuj% na spotykanych na co dzie' 2rd&ach danych.
Podobnie jak w przypadku ka#dej nowej technologii, nie wolno dostrzega! tylko jej zalet, trzeba
rwnie# 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 niektre zagro#enia zwi%zane z korzystaniem z relacyjnych baz danych,
o ktrych powinni pami"ta! zarwno 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&opotw. Zwi%zki pomi"dzy dwoma tabelami s% &atwe do uchwycenia. Nawet normalizacji procesu analizy wewn"trznych normalnych relacji pomi"dzy poszczeglnymi
danymi mo#na z &atwo$ci% si" nauczy!.
W zwi%zku z tym cz"sto pojawiaj% si" eksperci, ktrzy 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&"dw w przysz&o$ci. Jednak w przypadku wa#nej aplikacji droga ta w prostej linii prowadzi do katastrofy. Brak do$wiadczenia twrcw aplikacji jest cz"sto podawany
w artyku&ach prasowych jako przyczyna niepowodze' wa#nych projektw.
Starsze metody projektowania generalnie s% wolniejsze, poniewa# zadania takie, jak kodowanie, kompilacja, konsolidacja i testowanie zajmuj% wi"cej czasu. Cykl powstawania aplikacji,
w szczeglno$ci dla komputerw typu mainframe, cz"sto jest tak #mudny, #e aby unikn%!
op2nie' 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% projektantw, 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), ktry zach"ca& do sprawdzania przy biurku, znikn"&o tak#e samo sprawdzanie. Wielu programistw 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 raportw, &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! rwnowag" i zapewni! odpowiedni% jako$! produktu,
proces planowanego testowania nale#y $wiadomie wyd&u#y!. Cho! zazwyczaj problemu tego
nie dostrzegaj% programi$ci, ktrzy 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 sposb tworzy! aplikacje pisane w j"zyku zbli#onym do naturalnego j"zyka angielskiego, ktre 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 programistw 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, ktra 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 rwnie powa#ny b&%d. Pami"tajmy tak#e,
#e nigdy nie wolno tworzy! inteligentnych programw kosztem wygody u#ytkownika.

Zmiana !rodowisk
Koszty u#ytkowania komputerw 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 sposb cech" t" uwzgl"dniono w projektowaniu aplikacji? Odpowied2 brzmi: W jaki$,
cho! na pewno nie jest to sposb 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, ktrzy z niego korzystaj%, potrafi% stworzy! w ci%gu
kilku minut to, co wcze$niej zajmowa&o im kilka dni. Post"p w niektrych przypadkach jest
tak wielki, #e ca&kowicie utracili$my obraz tego, jak trudne by&y kiedy$ pewne zadania.
Niestety, wielu projektantw aplikacji nie przyzwyczai&o si" do przyjaznych $rodowisk. Nawet
je$li ich u#ywaj%, powielaj% niew&a$ciwe nawyki.

Kody, skrty i standardy nazw


Problem starych przyzwyczaje' programistycznych staje si" najbardziej widoczny, gdy projektant musi przeanalizowa! kody, skrty i standardy nazewnictwa. Zwykle uwzgl"dnia
wwczas jedynie potrzeby i konwencje stosowane przez programistw, zapominaj%c o u#ytkownikach. Mo#e si" wydawa!, #e jest to suchy i niezbyt interesuj%cy problem, ktremu 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
programistw 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#% rwnie# 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 sposb.

Dlaczego zamiast j zyka naturalnego stosuje si kody?


Po co w ogle stosowa! kody? Z regu&y podaje si" dwa uzasadnienia:
kategoria zawiera tak wiele elementw, #e nie mo#na ich sensownie przedstawi!
lub zapami"ta! w j"zyku naturalnym,
dla zaoszcz"dzenia miejsca w komputerze.
Drugi powd to ju# anachronizm. Pami"! operacyjna i masowa by&y niegdy$ tak drogie, a procesory tak wolne (ich moc obliczeniowa nie dorwnywa&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
komputerw.
Poniewa# komputery by&y kiedy$ drogie, programi$ci wsz&dzie musieli stosowa! kody. Takie
techniczne rozwi%zanie problemw ekonomicznych stanowi&o prawdziw% udr"k" dla u#ytkownikw. Komputery by&y zbyt wolne i za drogie, aby sprosta! wymaganiom ludzi, a zatem szkolono ludzi, aby umieli sprosta! wymaganiom komputerw. To dziwactwo by&o konieczno$ci%.
Ekonomiczne uzasadnienie stosowania kodw 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% kodw.
Pierwszy powd mo#na uzna! za istotny, a poza tym cz"$ciej wyst"puje. Wprowadzanie kodw
numerycznych zamiast ci%gw 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 kodw oznacza po prostu niepe&ne wykorzystanie jego
mo#liwo$ci. System Oracle potrafi pobra! kilka pierwszych znakw tytu&u i automatycznie
uzupe&ni! pozosta&% jego cz"$!. To samo potrafi zrobi! z nazwami produktw, 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 wzorcw.

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 kodw, zatem nie istnieje tu mo#liwo$! pope&nienia b&"du. Zmniejsza si" rwnie# 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, ktry
zast"puje ci%gi tajemniczych liczb i kodw. Odej$cie od kodw na rzecz j"zyka naturalnego ma
olbrzymi i o#ywczy wp&yw na firm" i jej pracownikw. Dla u#ytkownikw, ktrzy musieli
si" uczy! kodw, aplikacja bazuj%ca na j"zyku naturalnym oznacza chwil" wytchnienia.

Jak zmniejszy: zamieszanie?


Zwolennicy kodw argumentuj% czasami, #e istnieje zbyt du#a liczba produktw, klientw,
typw transakcji, aby mo#na by&o ka#dej pozycji nada! odr"bn% nazw". Dowodz% rwnie#,
ile k&opotw sprawiaj% pozycje identyczne b%d2 bardzo podobne (np. trzydziestu klientw
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 dowd nieodpowiedniego podzia&u informacji na kategorie: zbyt wiele niepodobnych do siebie obiektw
umieszcza si" w zbyt obszernej kategorii. Tworzenie aplikacji zorientowanej na j"zyk naturalny
wymaga czasu, w ktrym 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, ktre w prosty i dok&adny sposb odzwierciedl% rzeczywisto$!.
S% trzy podstawowe etapy wykonywania tych dzia&a':
1) normalizacja danych,
2) wybr nazw dla tabel i kolumn w j"zyku naturalnym,
3) wybr nazw danych.

Ka#dy z tych etapw zostanie omwiony w dalszej cz"$ci rozdzia&u. Naszym celem jest projektowanie sensownie zorganizowanych aplikacji, zapisanych w tabelach i kolumnach, ktrych
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, ktrych nie mo#na uwa#a! za
normalne. Mwi%c inaczej, s% one niefunkcjonalne. Zasz&o$ci historyczne rwnie cz"sto wywieraj% wp&yw na sposb 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, ktre
dotyczy przydzielania r#nych danych (np. nazwisk, adresw lub umiej"tno$ci) do niezale"nych grup i definiowania dla nich normalnych lub inaczej mwi%c prawid&owych relacji.
Za chwil" zostan% omwione podstawowe zasady normalizacji, dzi"ki czemu u#ytkownicy
b"d% mogli uczestniczy! w procesie projektowania aplikacji lub lepiej zrozumiej% aplikacj",
ktra 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 autorw 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 autorw 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 autorw zmieni nazwisko? Ponownie b"dzie trzeba zmodyfikowa! wszystkie powi%zane
rekordy. A co zrobi!, je$li ksi%#ka ma czterech autorw?
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 gDwnego niepowtarzalnej etykiety lub identyfikatora. Proces ten
eliminuje powtarzaj%ce si" grupy danych takie, jak autorzy ksi%#ek w tabeli BIBLIOTECZKA.
Zamiast definiowa! tylko trzech autorw ksi%#ki, dane ka#dego autora s% przenoszone do tabeli,
w ktrej ka#demu autorowi odpowiada jeden wiersz (imi", nazwisko i opis). Dzi"ki temu
w tabeli BIBLIOTECZKA nie trzeba definiowa! kolumn dla kilku autorw. Jest to lepsze rozwi%zanie projektowe, poniewa# umo#liwia przypisanie nieograniczonej liczby autorw do ksi%#ki.
Nast"pn% czynno$ci% jest zdefiniowanie w ka#dej tabeli klucza g&wnego informacji, ktra
w niepowtarzalny sposb 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 autorw 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 autorw, 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, ktre zale#% tylko od cz"$ci klucza. Je$li istniej%
atrybuty, ktre 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 atrybutw, ktre
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, ktre 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 (oprcz klucza
g&wnego) zale#a&y wy&%cznie od caDego klucza gDwnego. 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 poszczeglnych autorach, korzystamy z kluczy. Klucz g&wny w ka#dej tabeli w sposb 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 odwrci! wcze$niejsz% $cie#k" wyszukiwania,
poszukuj%c w tabeli BIBLIOTECZKA_AUTOR rekordw, ktre 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, ktre nie zosta&y
jeszcze u#yte w ksi%#kach w biblioteczce. Poniewa# dane zorganizowano w sposb logiczny,
mo#na przygotowa! kategorie i oceny, do ktrych nie przypisano jeszcze #adnych ksi%#ek.
Jest to sensowny i logiczny sposb 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 sposb 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 procesw analizy i projektowania jest podstawow% przyczyn% niepowodze' powa#nych aplikacji wykorzystuj%cych relacyjne bazy danych, o ktrych p2niej
mo#na przeczyta! w prasie. Zagadnienia te z ktrymi 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 ktrych zostan% umieszczone dane. Zagadnieniu temu cz"sto po$wi"ca si"
zbyt ma&o uwagi. Lekcewa#% je nawet ci, ktrzy powinni zdawa! sobie spraw" z jego donios&o$ci. Nazwy tabel i kolumn cz"sto s% wybierane bez konsultacji oraz odpowiedniej analizy.
Nieodpowiedni dobr 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 mwi% tu same za siebie.
Nawet u#ytkownik, dla ktrego 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-

Mowa tu oczywi$cie o u#ytkownikach znaj%cych podstawy j"zyka angielskiego. Jednak nawet ci, ktrzy
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 problemw, ktre cz"sto powstaj% w przypadku braku odpowiedniej konwencji nazw. Zastanwmy 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 producentw
oprogramowania i programistw.
Poni#ej wymieniono kilka bardziej znanych problemw wyst"puj%cych podczas dobierania nazw.
Stosowanie skrtw bez powodu. W ten sposb zapami"tanie pisowni nazw staje si"
niemal niemo#liwe. Nazwy mog&yby rwnie dobrze by! kodami, poniewa# u#ytkownicy
i tak musz% ich szuka!.
Niespjne stosowanie skrtw.
Na podstawie nazwy nie mo"na w sposb jednoznaczny okre/liJ przeznaczenia tabeli
lub kolumny. Skrty nie tylko powoduj%, #e zapami"tanie pisowni nazw staje si" trudne,
ale rwnie# zaciemniaj% natur" danych zapisanych w kolumnie lub tabeli. Co to jest
p_kat lub koment?
Niespjne stosowanie znakw podkre/lenia. Znakw podkre$lenia czasami u#ywa si"
do oddzielania s&w w nazwie, ale innym razem nie u#ywa si" ich w ogle. W jaki
sposb zapami"ta! gdzie wstawiono znaki podkre$lenia, a gdzie nie?
Niespjne 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, ktrej 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 rwnie# nazwiemy Anaz? Je$li tak, to dlaczego nie nada! obu kolumnom
nazwy Nazwisko?
U#ytkownicy, ktrzy nadaj% tabelom i kolumnom niew&a$ciwe nazwy, nie s% w stanie w prosty
sposb 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 programistw wymagano tworzenia nazw sk&adaj%cych si" maksymalnie z o$miu
znakw. W rezultacie nazwy by&y myl%cym zlepkiem liter, cyfr i niewiele mwi%cych skrtw.
Obecnie podobne ograniczenia, wymuszane przez star% technologi", nie maj% ju# zastosowania. W systemie Oracle nazwy kolumn i tabel mog% mie! rozmiar do 30 znakw. Projektanci
zyskali dzi"ki temu mo#liwo$! tworzenia nazw pe&nych, jednoznacznych i opisowych.
Pami"tajmy zatem, aby w nazwach wystrzega! si" skrtw, liczby mnogiej i nie stosowa!
znakw podkre$lenia (lub stosowa! je konsekwentnie). Unikniemy wwczas myl%cych nazw,

74

Cz !" I

Najwa$niejsze poj cia dotycz%ce bazy danych

ktre 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 sposb, w jaki analizujemy dane, segregujemy je wed&ug przeznaczenia i w ten
sposb 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 sposb 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 niektrych 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 sposb 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
wwczas 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 ktrej
programi$ci mog% tworzy! r#ne tabele o podobnych nazwach jak cho!by pracownik,
Pracownik i pRAcownik. Ale w jaki sposb 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 sposb, #e wielko$! liter w zapytaniach nie ma znaczenia,
to istniej% rwnie# 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 ktrych wybrano spjn% 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% spjniejszy wygl%d
w raportach. Je$li niektre dane trzeba zapisa! mieszanymi literami (np. nazwisko i adres na
kopercie), mo#na wywo&a! funkcj" systemu Oracle, ktra dokona odpowiedniej konwersji.
Uwa#ni czytelnicy dostrzegli zapewne, #e autor ksi%#ki nie przestrzega& dotychczas tej zasady.
Jej stosowanie op2niano 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 produktw polega na utworzeniu
logicznej mapy ze s&w j"zyka naturalnego, trudnych do zapami"tania kodw 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 zwrci! 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 niektre 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&"dw
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 zarwno za
spraw% kodw, 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, ktrzy 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%: sprbujemy przeanalizowa! projekt programistyczny, w ktrym zamiast skupia! si" na danych,
wzi"to pod uwag" rzeczywiste zadania biznesowe wykonywane przez u#ytkownikw 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, ktra prowadzi do powstania przyjaznych i wygodnych aplikacji. Do projektowania struktur danych oraz przep&ywu sterowania
wystarcz% narz"dzia, ktre znamy i ktrych u#ywamy w codziennej pracy.

Zadania aplikacji i dane aplikacji


Twrcy oprogramowania cz"sto nie po$wi"caj% nale#ytej uwagi identyfikacji zada', ktrych
wykonywanie chc% upro$ci!. Jedn% z przyczyn tego stanu rzeczy jest wysoki poziom z&o#ono$ci niektrych projektw, 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 sposb ich przetwarzania?
Jakie dane powinny by! przedstawiane w raportach?
P2niej zadaj% szereg pyta' pomocniczych, poruszaj%c takie zagadnienia, jak formularze do
wprowadzania danych, kody, projekty ekranw, obliczenia, komunikaty, poprawki, raport
audytu, obj"to$! pami"ci masowej, cykl przetwarzania danych, formatowanie raportw, 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 szczeglno$ci dane o du#ej obj"to$ci, spjne 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 kodw 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$ sposb powi%zane z zadaniem g&wnym. Bywa, #e realizuje je rwnolegle wszystkie naraz.

Rozdzia& 4.

Planowanie aplikacji systemu Oracle sposoby, standardy i zagro$enia

77

Wszystko to ma swoje konsekwencje praktyczne. Projektanci, ktrzy pracuj% w nowoczesny


sposb, nie koncentruj% si" na danych tak, jak to by&o w przesz&o$ci. Dla nich najwa#niejsze
s% zadania, ktre 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 ekranw, programw przetwarzaj%cych i narz"dzi raportuj%cych. Oznacza ona zrozumienie rzeczywistych potrzeb u#ytkownika
i w efekcie opracowanie aplikacji, ktra interpretuje zadania, a nie tylko pobiera skojarzone
z nimi dane. Je$li projektant skoncentruje si" na danych, aplikacja zniekszta&ci zadania u#ytkownikw. Najwi"kszym problemem jest wi"c u$wiadomienie sobie, #e skoncentrowanie si"
na zadaniach jest konieczno$ci%.
W jaki sposb 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 komputerw
i przetwarzane, po czym tworzy si" raporty czy# nie? Z powodu tej deformacji, ktr% nale#y
uzna! za jeszcze jeden przejaw orientacji na dane w projektowaniu systemw, mnstwo firm
podj"&o prb" 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.
Rwnie 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 projektantw, ktrzy rozumiej% potrzeby
u#ytkownikw i doceniaj% warto$! zorientowanego na zadania, czytelnego $rodowiska aplikacji, oraz z u#ytkownikw 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 dwch zbie#nych z sob% dokumentw: 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, ktry opisuje zadania zwi%zane z prowadzon% dzia&alno$ci%, powstaje w wyniku
wsplnej pracy u#ytkownikw docelowych i projektantw 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 przecinkw i z minimaln% liczb% przymiotnikw, na
przyk&ad:
Zajmujemy si" sprzeda#% ubezpiecze'.
A nie:
Firma Amalgamated Diversified jest wiod%cym mi"dzynarodowym dostawc% produktw
finansowych w dziedzinie ubezpiecze' zdrowotnych i komunikacyjnych, prowadz%c
w tym zakresie rwnie# 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!. Skrcenie rozwlek&ego opisu do prostego zdania umo#liwia skoncentrowanie si" na temacie. Je$li kto$ nie potrafi si" w ten sposb stre$ci!, oznacza
to, #e jeszcze nie zrozumia& istoty prowadzonej dzia&alno$ci.
U&o#enie tego zdania, ktre inicjuje proces tworzenia dokumentacji, jest wsplnym obowi%zkiem projektantw i u#ytkownikw. Wsp&pracuj%c, &atwiej znajd% odpowied2 na pytania, czym
zajmuje si" przedsi"biorstwo i w jaki sposb wykonywane s% jego zadania. Jest to cenna wiedza
dla firmy, gdy# w procesie poszukiwania odpowiedzi zidentyfikowanych zostaje wiele zada'
podrz"dnych, jak rwnie# procedur i regu&, ktre nie maj% znaczenia lub s% u#ywane marginalnie. Zazwyczaj s% to albo odpryski problemu, ktry ju# rozwi%zano, albo postulaty mened#erw, ktre dawno zosta&y za&atwione.
Przekorni twierdz%, #e aby poradzi! sobie z nadmiarem raportw, nale#y zaprzesta! ich tworzenia i sprawdzi!, czy ktokolwiek to zauwa#y. W tym przesadnym stwierdzeniu tkwi ziarno
prawdy przecie# w podobny sposb rozwi%zano problem roku dwutysi"cznego w starszych komputerach! Okaza&o si", #e wiele programw 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#ytkownikw poprzez prb" wmwienia im,
#e znamy firm" lepiej ni# oni.
Nale#y poprosi! u#ytkownika o w miar" szczeg&owe przedstawienie celw firmy, a tak#e
zada', ktre zmierzaj% do ich realizacji. Je$li cele s% niezbyt dobrze umotywowane (np. zawsze
to robimy w ten sposb 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 p2niejszej dok&adnej analizy. Na niektre z takich pyta'
odpowiedzi udziel% u#ytkownicy lepiej znaj%cy temat, z innymi b"dzie trzeba si" zwrci! 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

dw 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.

Oglny 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 krtkich zda' opisuj%cych w prostych s&owach g&wne zadania firmy,
opis zada' szczeg&owych.
Po ka#dej sekcji mo#na umie$ci! krtki, 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
poziomw 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, ktre 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 ktrym zadanie staje si" niepodzielne, zale#y od tre$ci zadania g&wnego. Zadanie
oznaczone jako 3.1.14 mo#e by! niepodzielne, ale rwnie dobrze mo#e zawiera! kilka dodatkowych poziomw podrz"dnych. Niepodzielne mo#e by! zadanie 3.2, ale tak#e 3.1.16.4. Wa#ny
nie jest sam schemat numerowania (ktry 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 dwch 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


Wnioskw 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 zapisw
zmieni si" sposb projektowania ekranw 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 konfliktw pomi"dzy zadaniami podrz"dnymi mo#e zmieni! si"
opis zada' g&wnych. To z kolei wp&ywa na sposb rozumienia zada' przedsi"biorstwa zarwno
przez u#ytkownikw, jak i projektantw 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 obiektw, wymusza usuni"cie niedomwie' i zale#no$ci,
ktre 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 oprcz dekompozycji i opisu zada' zawiera rwnie# omwienie
zasobw koniecznych w ka#dym kroku, szczeglnie 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 porwnaniu do klasycznego widoku danych. Nie zbieramy wy&%cznie formularzy i zawarto$ci ekranw
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 pl w formularzach i zawartych w nich elementw. Chodzi o rejestr koniecznych danych. Poniewa# o tym, ktre 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 ktre
wprowadza dane, takie pole nale#y umie$ci! na li$cie problemw wymagaj%cych dok&adniejszej analizy. Pracuj%c w ten sposb, usuwamy mnstwo niepotrzebnych danych.
Po zidentyfikowaniu danych nale#y je uwa#nie przeanalizowa!. Szczegln% uwag" powinni$my
zwrci! na kody numeryczne i literowe, ktre ukrywaj% rzeczywiste informacje za barier%
nieintuicyjnych, niewiele mwi%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 kodw jest por"czne cho!by
dlatego, #e u&atwia zapami"tywanie. Dla ich stosowania mo#na znale2! rwnie# inne racjonalne argumenty i sensowne powody. Jednak w gotowym projekcie takie przypadki nie mog%
zdarza! si" cz"sto, a znaczenie kodw powinno by! oczywiste. W przeciwnym razie &atwo si"
pogubimy.
Proces konwersji kodw 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 wsplnie przez u#ytkownikw i projektantw.

Rozdzia& 4.

Planowanie aplikacji systemu Oracle sposoby, standardy i zagro$enia

81

Projektanci i u#ytkownicy powinni rwnie# 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 skrtw, 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, ktre 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, ktre
wymagaj% rozdzielenia. Dane osobowe, adresy, numery telefonw to popularne przyk&ady
takich danych.
Na przyk&ad w tabeli AUTOR imiona by&y po&%czone z nazwiskami. Kolumna NazwiskoAutora
zawiera&a zarwno imiona, jak i nazwiska, pomimo #e tabela zosta&a doprowadzona do trzeciej postaci normalnej. By&by to niezwykle nieudolny sposb 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, ktry
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, ktre cho! sk&adaj% si" z oddzielnych elementw, w rzeczywisto$ci nie tworz% dodatkowej warto$ci w systemie. Sposb wykonywania dekompozycji zale#y od aplikacji i rodzaju danych. Nowym grupom danych, ktre
stan% si" kolumnami, nale#y dobra! odpowiednie nazwy. Trzeba uwa#nie przeanalizowa!
dane, ktre zostan% w tych kolumnach zapisane. Nazwy nale#y tak#e przypisa! danym tekstowym, dla ktrych 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 mnstwo narz"dzi analitycznych i projektowych, ktre pozwalaj% przyspieszy! proces normalizacji, a zatem w tej
ksi%#ce nie proponujemy jednej metody. Taka propozycja mog&aby raczej zaszkodzi!, ni#
pomc.
W modelu nale#y uwzgl"dni! ka#d% niepodzieln% transakcj" i oznaczy! numerem zadanie,
ktrego 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 ktrym
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% wsplnie 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, ktre 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, typw
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 poszczeglnym 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 komponentw.

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#ytkownikw 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 sposb, aby komunikacja odbywa&a si" j"zyku, do jakiego s% przyzwyczajeni u#ytkownicy.

Zapytania i tworzenie raportw


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 obiektw
bazy danych oraz tworzenia w&asnych raportw. 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 raportw.
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 kodw i skrtw.
Czas po$wi"cony na spjne, opisowe nazwanie obiektw w fazie projektowania op&aci si".
Z pewno$ci% u#ytkownicy szybko odczuj% korzy$ci z tego powodu.
Niektrzy projektanci, szczeglnie 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 raportw, 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', ktre spowodowa&yby zu#ycie nieproporcjonalnie du#ej ilo$ci zasobw.
W praktyce #%dania, ktre 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#ytkownikw 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 obiektw


Najlepsze nazwy to nazwy przyjazne w u#ytkowaniu: opisowe, czytelne, &atwe do zapami"tania, obja$nienia i zastosowania, bez skrtw i kodw. Je$li decydujemy si" w nazwach na
znaki podkre$lenia, stosujmy je w sposb spjny 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, ktrego celem jest opracowanie formalnego procesu normalizacji nazw obiektw.

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
systemw 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 poziomw. Na przyk&ad w tabeli nie mo#e by! dwch kolumn o nazwie
Nazwisko, a konto o nazwie Jerzy nie mo#e zawiera! dwch 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 sposb
niepowtarzalny, poprzedzaj%c nazw" tabeli prefiksem w postaci imienia jej w&a$ciciela, na
przyk&ad Dariusz.AUTOR. Nie by&oby spjno$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 fragmentw nazw tabel
do nazw kolumn jest z&% technik%, gdy# narusza logiczn% struktur" poziomw oraz wymagan%
integralno$! poziom-nazwa. Jest to tak#e myl%ce, poniewa# wymaga od u#ytkownikw wyszukiwania nazw kolumn niemal za ka#dym razem, kiedy pisz% zapytania. Nazwy obiektw 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 typw danych w systemie Oracle wzmacnia mo#liwo$ci tworzenia
spjnych nazw atrybutw. 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" spjniejsza. Jednak wykorzystanie abstrakcyjnych typw danych
w ten sposb wymaga:

Rozdzia& 4.

Planowanie aplikacji systemu Oracle sposoby, standardy i zagro$enia

85

w&a$ciwego zdefiniowania typw danych na pocz%tku procesu projektowania,


aby unikn%! konieczno$ci p2niejszego ich modyfikowania,
spe&nienia wymaga' sk&adniowych obowi%zuj%cych dla abstrakcyjnych typw danych.

Klucze obce
Jedn% z przeszkd 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 ktrej 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", ktra obejmuje nazw" tabeli 2rd&owej klucza obcego,
bez wykorzystywania kropki (np. z u#yciem znaku podkre$lenia),
opracowa! nazw", ktra obejmuje skrt nazwy tabeli 2rd&owej klucza obcego,
opracowa! nazw", ktra r#ni si" od nazwy w tabeli 2rd&owej,
zmieni! nazw" kolumny powoduj%cej konflikt.
]adne z tych dzia&a' nie jest szczeglnie atrakcyjne, ale je$li zetkniemy si" z tego typu dylematem dotycz%cym nazwy, nale#y wybra! jedno z nich.

Nazwy w liczbie pojedynczej


Obszarem niespjno$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, ktre 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: _______________________ Wojewdztwa:_____ 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#ytkownikw, 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 obiektw 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'cwki w nazwie niemal ka#dego obiektu. Z kolei w nazwie wielowyrazowej poszczeglne s&owa otrzymaj% r#ne ko'cwki. 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 obiektw zawsze
nale#y u#ywa! liczby pojedynczej. Wyj%tkami mog% by! terminy, ktre 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 dwch jednakowo tre$ciwych, rwnie &atwych do zapami"tania i opisowych
nazw zawsze nale#y wybra! krtsz%. W czasie projektowania aplikacji warto zaproponowa!
alternatywne nazwy kolumn i tabel grupie u#ytkownikw i programistw i wykorzysta! ich
rady w celu wybrania tych propozycji, ktre s% czytelniejsze. W jaki sposb 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 standardw nazewniczych
i zapewnia spjne stosowanie nazw i skrtw (je$li s% u#ywane).
Takie standardy czasami wymagaj% u#ywania (rwnie# spjnego i konsekwentnego!) znakw
podkre$lenia, co u&atwia identyfikacj" poszczeglnych elementw z&o#onej nazwy.
W agencjach rz%dowych lub du#ych firmach wprowadzono standardy nazewnictwa obiektw.
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" standardw nazewnictwa naszej
firmy. Mog% one na przyk&ad zawiera! wskazwki dotycz%ce stosowania terminw Korporacja
lub Firma. Je$li nie zaadaptowali$my takich standardw nazewnictwa, w celu zachowania
spjno$ci nale#y opracowa! w&asne normy, ktre uwzgl"dniaj% zarwno standardy bazowe,
jak i wskazwki 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 mg&by by! termin klucze
przeci'"one. Do tej kategorii cz"sto zalicza si" kody Ksi"gi G&wnej oraz kody produktw

Rozdzia& 4.

Planowanie aplikacji systemu Oracle sposoby, standardy i zagro$enia

87

(dotycz% ich wszystkie trudno$ci charakterystyczne dla innych kodw). Trudno$ci typowe dla
kluczy przeci%#onych dotycz% tak#e kolumn niekluczowych, ktre 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 kosztw, 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. Niektre 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 krtkiemu kodowi nada! szersze znaczenie i obj%! nim
wi"ksz% liczb" przypadkw, ni# pierwotnie planowano. Z wyeliminowaniem przeci%#onych
kluczy mog% by! trudno$ci natury praktycznej, ktre uniemo#liwiaj% natychmiastowe wykonanie tego zadania. Dlatego tworzenie nowej aplikacji relacyjnej staje si" wwczas trudniejsze.
Rozwi%zaniem problemu jest utworzenie nowego zestawu kluczy zarwno g&wnych, jak
i obcych, ktre w prawid&owy sposb 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% wwczas
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
Omwili$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& Wskazwki). Znaj%c te zalecenia, u#ytkownik mo#e dokona! racjonalnej oceny projektu i skorzysta! z do$wiadcze' innych osb rozwi%zuj%cych podobne problemy. Celem tego podrozdzia&u nie jest opisanie cyklu tworzenia oprogramowania, ktry 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 wskazwkami pozwala na znacz%c% popraw" wydajno$ci i poziomu
zadowolenia u#ytkownikw 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 wsplnie z u#ytkownikami.

Opracujmy tezaurus aplikacji w celu zapewnienia spjno$ci nazw.


3. Stosujmy opisowe nazwy w liczbie pojedynczej, ktre maj% znaczenie, s% &atwe

do zapami"tania i krtkie. Wykorzystujmy znaki podkre$lenia konsekwentnie lub wcale.


4. Nie mieszajmy poziomw nazw.
5. Unikajmy kodw i skrtw.
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 rwnie# 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.

Vous aimerez peut-être aussi