15247 skanuj0249 (3)

15247 skanuj0249 (3)



262 PHP i MySQL dla każdego

Rysunek 9.25.

Nieprawidłowa struktura tabeli Książki

Książki_

Książkald

Tytuł

Nazwa Wydawnictwa Adres Wydawnictwa

Rysunek 9.26.

Tabela Książki po wypełnieniu przykładowymi danymi

Książkald

Tytuł

Nazwa Wydawnictwa

Adres Wydawnictwa

1

2

3

PHP 101 praktycznych skiyptów Java Praktyczny kurs Java Leksykon kieszonkowy

Helion SA. Helion SA. Helion SA.

Chopina 6, Gliwice Chopina 6, Gliwice Chopina 6, Gliwice

Choć na pierwszy rzut oka takie rozwiązanie może wydawać się bardzo czytelne, w praktyce sprawi wyłącznie problemy. Po pierwsze marnujemy ogromne ilości miejsca w bazie, gdyż dopisanie każdej nowej książki wymaga powtórzenia nazwy i adresu wydawnictwa. Jeśli więc mamy w bazie dane dotyczące 1000 książek wydawnictwa Helion, to mamy również 999 zupełnie niepotrzebnych powtórzonych wpisów dotyczących nazwy i adresu. Po drugie, jeśli przy wprowadzaniu nowych książek do bazy pomylimy się choć o jeden znak w nazwie lub adresie wydawnictwa, a przy dużej liczbie wpisów o taką pomyłkę nietrudno, dane w bazie będą niespójne. Po trzecie, jeśli wydawnictwo zmieni nazwę lub adres, trzeba będzie wprowadzić zmiany w 1000 wierszy tabeli, co naraża nas na ryzyko pomyłki. Można by wymienić jeszcze kilka problemów, ale nie ulega już chyba wątpliwości, że duplikowanie danych w tabelach jest błędem wręcz fatalnym.

Jeśli zatem podczas projektowanie zdarzy się nam utworzyć taką tabelę, należy ją rozbić na dwie tabele związane odpowiednią relacją (lub jeśli trzeba — na więcej tabel). W powyższym przykładzie byłyby to tabele: Książki, zawierająca pole Książkald (jako klucz podstawowy), Tytuł, Wydawnictwold (jako klucz obcy) oraz Wydawnictwa, zawierająca pole Wydawnictwold (jako klucz podstawowy), NazwaWydawnictwa i Adres Wydawnictwa, tak jak zostało to pokazane na rysunku 9.27.

Książki

Wydawnictwa

Książkald

Tytuł

Wydawnictwold

Wydawnictwold Nazwa Wydawnictwa Adres Wydawnictwa


Rysunek 9.27.

Prawidłowa struktura tabel: Książki i Wydawnictwa

Informacje atomowe

O ile to tylko możliwe, w każdym polu bazy danych należałoby zapisywać pojedyncze, atomowe informacje. Co należy uznać za informację atomową? — to zależy od konkretnego przypadku i naszego zdrowego rozsądku. Spójrzmy jednak na poprzedni przykład i strukturę widoczną na rysunku 9.26. Cały adres wydawnictwa był tam zapisywany w jednym wierszu. Czy jest to dobre rozwiązanie? Raczej nie, aczkolwiek w niektórych sytuacjach w pełni dopuszczalne (zobaczymy to w przykładach w dalszej części książki). Dlaczego nie najlepsze? Dlatego, że jeśli zechcemy odnaleźć np. wydawnictwa z danego miasta, czy nawet znajdujące się w danym mieście przy jednej


Wyszukiwarka

Podobne podstrony:
skanuj0227 (3) 240 PHP i MySQL dla każdego Rysunek 8.8. Główna część witryny dostępna po
skanuj0253 (3) 266 PHP i MySQL dla każdego Rysunek 9.33. Nawiązanie połączenia serwerem MySQL Plik E
skanuj0286 (3) 300 PHP i MySQL dla każdego Rysunek 10.9. 3S5.::ir Imi s Mi as lilio . Na sto fron
skanuj0300 (2) 314 PHP i MySQL dla każdego Rysunek 11.5. mysql> SELECT tytuł, imię, nazwisko, isb
skanuj0473 490 PHP i MySQL dla każdeg: Rysunek 19.1. Strona główna po zalogowaniu użytkownika niepos
skanuj0204 (4) 216 PHP i MySQL dla każdego Rysunek 7.11. Tabela zawierająca e». Edycia WifcŁ Pr a*
37508 skanuj0445 462 PHP i MySQL dla każdego Rysunek 17.4. Ekran listy wiadomości Wynik tego działan
37896 skanuj0481 (2) 498 PHP i MySQL dla każdego Rysunek 19.5. Lista adresów subskrybentów będąca wy

więcej podobnych podstron