roz2 15







Własności relacyjnej bazy danych




Własności relacyjnej
bazy danych





Projektowanie
bazy danych może być procesem złożonym, szczególnie, jeśli
ma ona wiele tablic danych i uwzględnia dużą liczbę relacji
wiele-wiele. Wiele użytecznych baz danych ma jednak małą
liczbę prostych tablic danych z kilkoma tylko relacyjnymi
tablicami danych opisującymi powiązania. Jeśli zrozumiałe są
podstawowe zasady relacyjnej bazy danych, to rozumienie bardziej
złożonych baz danych przyjdzie samo wraz z doświadczeniem.


Niezależnie od
wielkości i złożoności relacyjnej bazy danych, musi ona
cechować się pewnymi własnościami. Implementacja tych
własności ma kluczowe znaczenie dla uniknięcia powtórzeń
elementów danych i poprawnego ich powiązania. Te istotne
własności mogą być sformułowane w następujący sposób:


-wszystkie
elementy danych muszą być zorganizowane w tablice;
-elementy danych w
pojedynczej tablicy muszą pozostawać w relacji jedno-jedno;

-w tablicy danych
nie mogą występować powtórzenia tych samych wierszy;

-w tablicy danych
nie mogą występować powtórzenia tych samych kolumn;

-w każdej komórce
danych może być przechowywany tylko jeden element danych.


Organizowanie
danych w tablice

Pierwszą i
podstawową cechą relacyjnej bazy danych jest to, że elementy
danych związane z unikalnym obiektem danych muszą być
zorganizowane w formie tablic, jak to miało miejsce we
wcześniejszych przykładach. Tablica danych jest podstawową
jednostką relacyjnej bazy danych. Każda tablica może zawierać
dowolną liczbę wierszy (rekordów) i kolumn (pól). Liczba i
kolejność kolumn, jak również wierszy, nie jest istotna.


Brak
powtarzających się wierszy

W poprawnie
zrestrukturalizowanej bazie danych nie może występować dwa lub
więcej wierszy z identycznymi elementami danych. Powtarzające
się wiersze nie tylko stanowią marnotrawstwo przestrzeni
przechowywania danych, lecz przede wszystkim zwalniają proces
przetwarzania danych poprzez nieuzasadnioną rozbudowę tablicy.
Co ważniejsze, dublujące się wiersze powodują błędne wyniki
(niepoprawna liczba wierszy) przy obliczeniach statystycznych w
tabeli. Powiedzmy, że w tabeli istnieją elementy danych
związane z tą samą osobą sprzedawcy w więcej niż jednym
wierszu tabeli Sprzedawcy. Nie uzyska się wtedy poprawnych sum
łącznych po zliczeniu liczby wierszy w tabeli. Nawet łączna
suma wypłat wynagrodzeń dla wszystkich pracowników w
przedsiębiorstwie nie będzie poprawna, jeśli zsumujemy
wszystkie kwoty wynagrodzeń w tabeli.



Wykorzystanie
pojedynczych komórek danych.



Skrzyżowanie
kolumny i wiersza w tabeli danych nazywane jest często komórką
danych. Inną istotną własnością relacyjnej bazy danych jest
to, że tylko jeden element danych może być przechowywany w
jednej komórce danych. Jako przykład dodajmy kolumnę Telefon
do tablicy Sprzedawcy (patrz rysunek 9). W tablicy tej komórki
danych na skrzyżowaniu tej kolumny i wierszy mogą przechowywać
jedynie pojedynczą wartość oznaczającą numer telefoniczny.


Przypuśćmy
jednak, że jakaś osoba ma więcej niż jeden numer telefonu.
Niech Adamski ma dwa numery telefoniczne: 123-4567 i 987-6543.
Teraz jest problem. Ponieważ nie można przechowywać obu tych
wartości w jednej komórce Telefon, trzeba je przechowywać w
dwu różnych komórkach. Jest kilka rozwiązań tego problemu.
Jedno to dodanie kolejnej kolumny na drugi numer telefoniczny.
Tablica taka wyglądałaby tak, jak na rysunku 10

Jedno
spojrzenie na tę nową tabelę wystarcza, aby zauważyć
niepożądane zjawisko w nowej kolumnie. Jest w niej wiele
pustych miejsc, i będzie tak dopóty, dopóki większość
sprzedawców nie będzie miała dwóch telefonów. Z tymi pustymi
komórkami wiążą się dwa duże problemy. Ponieważ każda z
komórek zajmuje pewną ilość miejsca na dysku, puste komórki
oznaczają marnotrawstwo miejsca. Dodatkowo, aby znaleźć
określoną osobę na podstawie numeru telefonicznego trzeba
przeszukać dwie kolumny. W efekcie, dłużej trwa wyszukiwanie
informacji.




Tabela: Sprzedawcy















Id sprzedawcy
Nazwisko
Imię
Tel.
Data zatrudnienia
Wynagrodzenie










S0
Adamski
Paweł
123-4567
07/01/86
2,800


S1
Bednarski
Bartek
234-3456
10/12/88
2,400


S2
Czajkowski
Jack
456-9023
05/14/87
2,550


S3
Dziedzic
Edward
234-5645
06/04/90
1,500


S4
Frankowski
Henryk
635-2345
03/08/88
2,000


S5
Ford
Ida
345-2345
11/22/87
2,600


S6
Nowak
Franek
234-4576
04/15/87
2,300


S7
Jankowski
Katarzyna
555-2323
12/01/89
2,450


S8
Idzikowski
Albert
123-3333
10/25/88
2,200


S9
Kowalski
Beata
342-4567
09/26/89
2,500











Rys.
9 Dodanie kolumny numeru telefonu do tablicy Sprzedawcy.








Tabela: Sprzedawcy

















Id sprzedawcy
Nazwisko
Imię
Tel. #1
Tel. #2
Data zatrudnienia
Wynagrodzenie











S0
Adamski
Paweł
123-2345
750-6543
07/01/86
2,800


S1
Bednarski
Bartek
234-2456

10/12/86
2,400


S2
Czajkowski
Jacek
456-9876

05/14/88
2,550


S3
Dziedzic
Edward
645-9352

06/04/87
1,500


S4
Frankowski
Henryk
645-1234

03/08/90
2,000


S5
Ford
Ida
643-5982

11/22/88
2,600


S6
Nowak
Franek
745-7489

04/15/87
2,300


S7
Jankowski
Katarzyna
987-6543

12/01/87
2,450


S8
Idzikowski
Albert
123-5674

10/25/88
2,200


S9
Kowalski
Beata
945-2314

09/06/89
2,500



Rys.
10 Dodanie kolejnej kolumny do tablicy Sprzedawcy




Innym
rozwiązaniem jest użycie dwóch wierszy do przechowywania
informacji na temat Adamskiego W tym celu należy powtórzyć
wszystkie informacje związane z Andersenom poza jego pierwszym
numerem telefonu w nowym wierszu, a następnie podać w nim drugi
numer telefonu. Poprawiona w ten sposób tablica pokazana jest na
rysunku 11

Tablica
Sprzedawcy z rysunku 2.11. po poprawce pokazuje, że Adamski ma
przypisane dwa numery identyfikacyjne: S0 i S1. Jest to
konieczne, ponieważ każdy wiersz musi mieć niepowtarzalny
numer identyfikacyjny, jeśli tablica ma być wykorzystywana jako
tablica główna dołączana do innych tablic, jak to będzie
miało miejsce dalej w tym rozdziale. Lecz poprzez przypisanie
Andersenowi dwóch numerów identyfikacyjnych w istocie traktuje
się go jak dwie różne osoby. Jest to mylące. Co więcej,
użycie dwóch wierszy do przechowywania elementów danych o
jednej osobie może powodować problemy innego typu, na
przykład, jeśli trzeba określić liczbę osób poprzez
zliczenie wierszy w tabeli. Uzyska się oczywiście błędny
wynik.

Jak widać, oba
te rozwiązania prowadzą do nowych problemów. Nie popadajmy
jednak w rozpacz. Istnieje rozwiązanie wszystkich tych
problemów. Polega ono na wydzieleniu numerów telefonicznych z
tablicy Sprzedawcy i umieszczeniu ich w innej tablicy. Jako
przykład, rozbijemy poprzednią tablicę Sprzedawcy na dwie
tablice: Sprzedawcy i Telefony jak to pokazano na rysunku 12.
Teraz możemy je łączyć razem, gdy potrzebny jest numer
któregokolwiek ze sprzedawców.




Tabela: Sprzedawcy















Id sprzedawcy
Nazwisko
Imię
Tel.
Data zatrudnienia
Wynagrodzenie










S0
Adamski
Paweł
123-4567
07/01/86
2,800


S1
Adamski
Paweł
984-4536
07/01/86
2,800


S2
Bednarski
Bartek
234-3456
10/12/88
2,400


S3
Czajkowski
Jacek
456-9023
05/14/87
2,550


S4
Dziedzic
Edward
234-5645
06/04/90
1,500


S5
Frankowski
Henryk
635-2345
03/08/88
2,000


S6
Ford
Ida
345-2345
11/22/87
2,600


S7
Nowak
Franek
234-4576
04/15/87
2,300


S8
Jankowski
Katarzyna
555-2323
12/01/89
2,450


S9
Idzikowski
Albert
123-3333
10/25/88
2,200


S10
Kowalski
Beata
342-4567
09/26/89
2,500











Rys.
11 Dodanie kolejnego wiersza do tablicy Sprzedawcy.






Tabela: Sprzedawcy













Id sprzedawcy
Nazwisko
Imię
Data zatrudnienia
Wynagrodzenie









S0
Adamski
Paweł
07/01/86
2,800


S1
Bednarski
Bartek
10/12/88
2,400


S2
Czajkowski
Jacek
05/14/87
2,550


S3
Dziedzic
Edward
06/04/90
1,500


S4
Frankowski
Henryk
03/08/88
2,000


S5
Ford
Ida
11/22/87
2,600


S6
Nowak
Franek
04/15/87
2,300


S7
Jankowski
Katarzyna
12/01/89
2,450


S8
Idzikowski
Albert
10/25/88
2,200


S9
Kowalski
Beata
09/26/89
2,500


Tabela: Telefony






Id sprzedawcy
Tel.












S0
123-8484





S1
845-8342





S2
623-1234





S3
987-7654





S4
345-2345





S5
456-4321





S6
342-7654





S7
386-8712





S8
654-3214





S9
543-4321













Rys.
12 Rozdzielenie tablicy Sprzedawcy na dwie tablice.


Po rozbiciu
Tablicy Sprzedawcy, traktujemy pierwszą z nich jako tablicę
główną, a drugą jako tablicę pomocniczą, łączoną w
miarę potrzeb z tablicą główną. Wszystkie elementy danych
związane ze sprzedawcą Adamskim, poza jego numerami telefonów,
znajdują się w głównej tablicy Sprzedawcy. Aby wyszukać jego
numer telefonu, najpierw znajdujemy jego numer identyfikacyjny w
głównej tablicy, a następnie przechodzimy do tablicy Telefony,
aby odnaleźć numer telefoniczny związany z tym numerem
identyfikacyjnym. Lecz jeśli potrzeba odtworzyć wszystkie
elementy danych związane z daną osobą, to można połączyć
obie tablice, wykorzystując jako klucz łączenia numer
identyfikacyjny. Operacja ta zostanie omówiona w dalszej
części tego rozdziału.


Inne
pożądane cechy



Wspomnieliśmy
o kilku podstawowych wymogach, jakie muszą zostać spełnione
przy poprawnym projektowaniu relacyjnej bazy danych. Można je
podsumować następująco:

-planuj potrzeby
związane z danymi dobrze i wyprzedzeniem;
-wyprzedzaj potrzeby
informacyjne i przechowuj jedynie niezbędne dane;
-grupuj elementy
danych logicznie w kolumny;
-wykorzystuj tablice
do przechowywania elementów danych i relacji pomiędzy nimi;

-nie pozwalaj na
dublowanie się wierszy w żądnej z tablic;
-umieszczaj tylko
jedną wartość danych w jednej komórce;
-unikaj pustych
komórek, jeśli to tylko możliwe.
Dodatkowo,
istnieją jeszcze inne pożądane cechy, które dobrze jest
wbudować w swoją bazę danych. Można je ująć następująco:

-twórz elastyczne
struktury baz danych, aby móc wprowadzać zmiany;
-utrzymuj minimalną
liczbę powtórzeń w danych;
-utrzymuj tablice w
stanie logicznie poindeksowanym;
-utrzymuj tablice
danych w stanie maksymalnej prostoty.







Wyszukiwarka

Podobne podstrony:
roz2
Delphi Kompendium Roz2
roz2 7
roz2
ROZ2
roz2
roz2
roz2 6
roz2 3
roz2!
roz2 8
roz2 9
roz2 5
roz2#
roz2 1
roz2
roz2
roz2
roz2 4

więcej podobnych podstron