Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
O autorach ..................................................................................... 17
Wprowadzenie ................................................................................ 19
Cz I
Podstawy ..................................................................... 23
Spis treci
5
Podsumowanie ................................................................................................................. 86
Pytania i odpowiedzi ....................................................................................................... 86
Warsztaty ......................................................................................................................... 87
Test ............................................................................................................................ 87
Odpowiedzi ............................................................................................................... 87
wiczenia .................................................................................................................. 87
Cz II
Spis treci
7
Analizowanie cigw znakw ....................................................................................... 178
Uwaga na temat indeksowania cigw znakw ...................................................... 179
Sprawdzanie dugoci cigu za pomoc funkcji strlen() ......................................... 179
Znajdowanie podcigu za pomoc strstr() .............................................................. 179
Okrelanie pozycji podcigu za pomoc funkcji strpos() ....................................... 180
Pobieranie czci cigu za pomoc funkcji substr() ................................................ 181
Podzia cigu na sowa za pomoc funkcji strtok() ................................................. 181
Operacje na cigach znakw ......................................................................................... 183
Oczyszczanie cigu za pomoc funkcji trim(), ltrim(), rtrim() i strip_tags() .......... 183
Zmiana fragmentu cigu za pomoc funkcji substr_replace() ................................ 184
Zamiana podcigw za pomoc funkcji str_replace() ............................................. 185
Zmiana wielkoci liter ............................................................................................. 185
Zawijanie tekstu za pomoc funkcji wordwrap() i nl2br() ...................................... 187
Dzielenie cigw za pomoc funkcji explode() ...................................................... 188
Funkcje operujce na dacie i czasie ............................................................................... 189
Pobieranie biecej daty za pomoc funkcji time() ................................................ 189
Konwersja znacznika czasu za pomoc funkcji getdate() ....................................... 189
Formatowanie znacznika czasu za pomoc funkcji date() ...................................... 190
Tworzenie znacznika czasu za pomoc funkcji mktime() ....................................... 193
Weryfikacja daty za pomoc funkcji checkdate() ................................................... 194
Inne funkcje operujce na cigach znakw, datach i czasie .......................................... 194
Podsumowanie ............................................................................................................... 194
Warsztaty ....................................................................................................................... 195
Pytania i odpowiedzi ............................................................................................... 195
Test .......................................................................................................................... 195
Odpowiedzi ............................................................................................................. 196
wiczenia ................................................................................................................ 196
Spis treci
10
Spis treci
11
Cz V
12
Spis treci
13
Standardowy tryb odnotowywania bdw serwera Apache ......................................... 491
Odnotowywanie bdw w pliku ............................................................................. 491
Odnotowywanie bdw w programie .................................................................... 491
Demon syslog jako argument .................................................................................. 491
Dyrektywa LogLevel ............................................................................................... 492
Zarzdzanie dziennikami serwera Apache .................................................................... 492
Ustalanie nazw hostw ............................................................................................ 493
Rotacja dziennikw ................................................................................................. 493
czenie i podzia dziennikw ................................................................................ 494
Analiza dziennikw ................................................................................................. 494
Monitorowanie dziennikw bdw ........................................................................ 494
Odnotowywanie informacji w bazie danych ................................................................. 495
Tworzenie tabeli w bazie danych ............................................................................ 495
Tworzenie skryptu PHP odnotowujcego dane ...................................................... 495
Tworzenie przykadowych raportw ....................................................................... 496
Podsumowanie ............................................................................................................... 499
Pytania i odpowiedzi ..................................................................................................... 500
Warsztaty ....................................................................................................................... 500
Test .......................................................................................................................... 500
Odpowiedzi ............................................................................................................. 500
14
Spis treci
15
281
Rozdzia 15.
282
Poza wydajnoci istnieje jeszcze kwestia utrzymania nasza baza powinna by atwa
w utrzymaniu. Sprowadza si to do przechowywania jak najmniejszej iloci powtarzanych danych (albo cakowitej eliminacji powtrze). Jeeli mamy duo powtarzajcych si danych i nagle zachodzi zmiana w jednym z wystpie takich danych
(na przykad zmiana nazwiska), to trzeba zmieni wszystkie wystpienia tej danej. Aby
wyeliminowa powtarzanie i uatwi utrzymanie danych, mona stworzy tabel moliwych wartoci i odnosi si do tych wartoci poprzez klucz. W ten sposb, jeeli warto ulegnie zmianie, to zmian t wystarczy wprowadzi tylko raz w gwnej tabeli.
Odwoania wystpujce w innych tabelach pozostaj bez zmian.
Przypumy, e jestemy odpowiedzialni za utrzymanie bazy danych studentw oraz
przedmiotw, na ktre si zapisali. Jeeli 35 studentw zapisao si na ten sam przedmiot,
niech to bdzie wysza matematyka, to nazwa tego przedmiotu wystpi w tabeli
35 razy. Jeeli wykadowca stwierdzi, e trzeba zmieni nazw przedmiotu na matematyka zaawansowana, to musimy wprowadzi zmiany w 35 rekordach. Gdyby baza
zbudowana zostaa tak, e nazwy przedmiotw wystpowayby w jednej tabeli, a w rekordach studentw wystpowaby tylko identyfikator przedmiotu, to aby zmieni nazw
przedmiotu, wystarczyoby dokona modyfikacji w jednym rekordzie, a nie w 35.
Korzyci z posiadania dobrze zaplanowanej i zaprojektowanej bazy danych s niezliczone. Im wicej pracy woymy w baz na pocztku, tym mniej bdziemy mieli do
zrobienia pniej. Przeprojektowywanie bazy danych po publicznym wdroeniu aplikacji nie jest zbyt dobrym pomysem (chocia to si zdarza), a rezultaty s kosztowne.
Tak wic zanim w ogle zabierzemy si do pisania kodu aplikacji, powimy stosowny
czas na zaprojektowanie bazy danych. Reszta tego rozdziau powicona jest relacjom
i normalizacji dwm wanym elementom bazodanowej ukadanki.
Przypumy, e mamy tabel o nazwie pracownicy, ktra zawiera numer PESEL kadej
osoby, jej nazwisko oraz wydzia, w ktrym pracuje. Powiedzmy, e mamy te odrbn
tabel zwan wydzialy, ktra zawiera list wszystkich wydziaw skadajc si z identyfikatora wydziau i jego nazwy. Pole zawierajce identyfikator wydziau w tabeli
pracownicy odpowiada identyfikatorowi z tabeli wydzialy. Tego rodzaju relacj przedstawia rysunek 15.1. Oznaczenie KG tu przy nazwie pola oznacza klucz gwny.
W kolejnych punktach opisano dokadniej kady z typw relacji.
283
Rysunek 15.1.
Tabele
pracownicy
i wydzialy
powizane poprzez
klucz IDwydzialu
Tabele pracownicy i komputery w naszej bazie wygldayby tak, jak przedstawia to rysunek 15.3, ktry reprezentuje relacj jeden do jednego.
Rysunek 15.3.
Relacja jeden
do jednego
w modelu danych
284
Rysunek 15.4.
Jeden wydzia
zawiera wielu
pracownikw
Relacja jeden do wielu jest relacj najczciej wystpujc. Innym praktycznym przykadem jest zastosowanie skrtw nazw krajw. Kady kraj na wiecie ma swj niepowtarzalny identyfikator (Polska ma PL, Irlandia IE itd.).
Jeeli mamy omiu klientw w Polsce i piciu w Irlandii, to w tabeli uyjemy jedynie dwch rnych skrtw. Jeden skrt (PL) reprezentuje relacj jeden do omiu,
a drugi (IE), relacj jeden do piciu.
Jak wida, tego rodzaju relacja nie jest atw metod kojarzenia tabel. Nasze tabele
wygldaj tak jak na rysunku 15.6 na pozr nie s ze sob w relacji.
Rysunek 15.6.
Tabela studentw
i tabela
przedmiotw,
niepowizane
z sob
Aby stworzy teoretyczn relacj wiele do wielu, konieczne byoby stworzenie tabeli
przejciowej, ktra stanowi pomost midzy dwiema tabelami i opisuje ich wzajemne
odwzorowania. Moe ona wyglda tak jak na rysunku 15.7.
285
Rysunek 15.7.
Tabela studenci_
przedmioty_odwz
suy jako element
poredniczcy
Normalizacja
Normalizacja jest po prostu zbiorem regu, ktre ostatecznie maj uatwi nam ycie,
jeeli penimy funkcj administratora bazy. Jest to sztuka organizacji bazy danych
w taki sposb, by tabele byy powizane tam, gdzie jest to stosowne, i by bya moliwo ich atwej rozbudowy.
Zbiory regu stosowane w normalizacji s nazywane postaciami normalnymi. Jeeli nasz
projekt bazy jest zgodny z pierwszym zbiorem regu, jest uwaany za pierwsz posta
normaln bazy. Jeeli nasz projekt jest zgodny z pierwszymi trzema zbiorami regu
normalizacyjnych, to baz moemy uzna za trzeci posta normaln.
W tym rozdziale poznamy wszystkie reguy pierwszej, drugiej i trzeciej postaci normalnej,
aby mc si ich trzyma przy tworzeniu wasnych aplikacji. Zastosujemy przykadowy
zbir tabel z bazy studentw i przedmiotw i doprowadzimy go do trzeciej postaci
normalnej.
286
przez studenta.
OpisPrzedmiotu1 opis pierwszego przedmiotu wybranego przez studenta.
WykladowcaPrzedmiotu1 wykadowca pierwszego przedmiotu wybranego
przez studenta.
IDprzedmiotu2 identyfikator drugiego przedmiotu wybranego przez studenta.
OpisPrzedmiotu2 opis drugiego przedmiotu wybranego przez studenta.
WykladowcaPrzedmiotu2 wykadowca drugiego przedmiotu wybranego
przez studenta.
Kolumny IDPrzedmiotu, OpisPrzedmiotu i WykladowcaPrzedmiotu powtarzaj si
287
Rysunek 15.9.
Podzia
tabeli prostej
na dwie tabele
Dwie otrzymane tabele reprezentuj teraz relacj jeden do wielu jednego studenta z wieloma przedmiotami. Studenci mog wybiera tyle przedmiotw, ile chc, i nie s ograniczeni liczb grup kolumn IDPrzedmiotu, OpisPrzedmiotu i WykladowcaPrzedmiotu
wystpujcych w tabeli prostej.
Nastpny krok to doprowadzenie tabel do drugiej postaci normalnej.
Mwic prociej oznacza to, e jeeli pola naszej tabeli nie s w caoci powizane
z kluczem gwnym, to mamy jeszcze co do zrobienia. W przykadzie ze studentami
i przedmiotami musimy zebra przedmioty w oddzielnej tabeli i zmodyfikowa tabel
studenci_przedmioty.
Kolumny IDPrzedmiotu, OpisPrzedmiotu i WykladowcaPrzedmiotu mog sta si tabel
zwan przedmioty z kolumn IDprzedmiotu w roli klucza gwnego. Tabela studenci_
przedmioty powinna wwczas zawiera tylko dwa pola: IDStudenta i IDPrzedmiotu.
Now struktur przedstawiono na rysunku 15.10.
Rysunek 15.10.
Doprowadzenie
tabel do drugiej
postaci normalnej
288
Trzecia posta normalna zwykle wystarczy, by usun powtrzenia i zapewni elastyczno oraz atwo rozbudowy. W nastpnym podrozdziale otrzymamy kilka wskazwek
co do procesu mylowego prowadzcego do zaprojektowania struktury bazy oraz jego
powizania z procesem tworzenia caej aplikacji.
Postpowanie zgodnie
z procesem projektowania
Najwikszym problemem przy projektowaniu aplikacji jest brak jej wczeniejszego
przemylenia. W odniesieniu do aplikacji bazodanowych proces projektowania musi
uwzgldnia wnikliw analiz bazy danych co powinna przechowywa, jakie relacje
wystpuj midzy danymi i, co najwaniejsze, czy jest skalowalna.
Oglne kroki procesu projektowania to:
Definiowanie celw.
Projektowanie struktur danych (tabele, pola).
Rozpoznanie relacji.
Zdefiniowanie i implementacja regu obszaru zastosowania.
Stworzenie aplikacji.
Tworzenie aplikacji jest krokiem ostatnim, a nie pierwszym! Wielu programistw wymyla aplikacj, po czym pisze j, a nastpnie prbuje wpasowa w ni zbir pl bazy
danych. Takie podejcie to zaczynanie od koca, jest nieefektywne i bdzie nas kosztowa czas oraz pienidze.
289
Zanim zaczniemy jakikolwiek proces projektowania aplikacji, warto usi i go przedyskutowa. Jeeli nie potrafimy opisa tworzonej aplikacji pod ktem celw, odbiorcw i rynku docelowego, to znaczy, e nie jestemy gotowi do jej budowy, nie mwic
ju o modelowaniu bazy danych.
Po opisaniu innym, co bdzie robi nasza aplikacja, i uzyskaniu ich aprobaty moemy
zacz myle o tabelach, jakie chcemy stworzy. Zacznijmy od wielkich tabel prostych, poniewa kiedy ju je narysujemy, bdziemy mogli zastosowa wanie zdobyte umiejtnoci normalizacyjne. W ten sposb znajdziemy powtrzenia i zwizualizujemy relacje.
Nastpnym krokiem jest normalizacja. Przejdmy od tabeli prostej do pierwszej postaci
normalnej, i po kolei a do trzeciej, jeeli to moliwe. Posugujmy si kartkami papieru, owkiem, fiszkami samoprzylepnymi i czymkolwiek, co pomoe zwizualizowa
tabele i relacje midzy nimi. To aden wstyd modelowa dane z pomoc fiszek, zanim bdziemy gotowi do stworzenia samych tabel. Poza tym jest to o wiele tasze ni
kupowanie oprogramowania, ktre zrobi to za nas. Programy modelujce kosztuj od
piciuset do kilku tysicy zotych!
Kiedy ju mamy wstpny model danych, spjrzmy na niego z perspektywy aplikacji.
Albo spjrzmy na niego z perspektywy osoby, ktra bdzie z aplikacji korzysta. W tym
miejscu definiujemy reguy obszaru zastosowania i sprawdzamy, czy nasz model si
sprawdza. Przykadem takiej reguy dla aplikacji rejestracji internetowej moe by kady
uytkownik musi mie jeden adres e-mail, ktry nie moe nalee do adnego innego
uytkownika. Jeeli pole AdresEmail nie byo polem z niepowtarzalnymi wartociami
w naszym modelu, znaczy to, e model nie spenia regu obszaru zastosowania.
Dopiero po zastosowaniu wszystkich regu obszaru zastosowania na naszym modelu
danych moe si rozpocz programowanie aplikacji. Moemy by spokojni o to, e
nasz model danych jest spjny i e programujc, nie zamalujemy si w kcie pokoju.
A to zdarza si do czsto.
Podsumowanie
Trzymanie si prawidowego procesu projektowania bazy danych to jedyny sposb na
stworzenie efektywnej, elastycznej i atwej do utrzymania aplikacji. Wanym aspektem
projektowania bazy danych jest wykorzystanie relacji midzy tabelami zamiast wrzucania wszystkich danych do jednej prostej tabeli. Relacje mog by jeden do jednego,
jeden do wielu i wiele do wielu.
Stosowanie relacji w celu prawidowej organizacji danych jest nazywane normalizacj.
Istnieje wiele poziomw normalizacji, ale podstawowe to pierwsza, druga i trzecia posta
normalna. Z kadym poziomem wie si regua lub reguy, ktrym trzeba sprosta.
Trzymanie si tych regu pomaga w stworzeniu dobrze zorganizowanej i elastycznej bazy
danych.
290
Pytania i odpowiedzi
P: Czy istniej tylko trzy postaci normalne?
O: Nie. Postaci normalnych jest wicej. Dodatkowe postacie to posta normalna
Boyce-Codda, czwarta posta normalna, pita posta normalna, zwana te
postaci chronic zczenia. Do rzadko doprowadza si baz do tych postaci,
poniewa koszty pracy i utrata efektywnoci przewaaj nad ewentualnymi
korzyciami.
Warsztaty
Warsztaty maj na celu utrwalenie i sprawdzenie zdobytej wiedzy, powinny te pokaza,
jak zastosowa j w praktyce.
Test
1. Wymie trzy typy relacji midzy danymi.
2. Jak naley radzi sobie z trudnociami w reprezentacji relacji wiele do wielu
Odpowiedzi
1. Jeden do jednego, jeden do wielu, wiele do wielu.
2. Zbudowa szereg relacji jeden do wielu poprzez stworzenie poredniczcej
tabeli odwzorowujcej.
wiczenie
Objanij kad z trzech postaci normalnych osobie, ktra pracuje z arkuszami kalkulacyjnymi i tabelami prostymi.