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:
roz2Delphi Kompendium Roz2roz2 7roz2ROZ2roz2roz2roz2 6roz2 3roz2!roz2 8roz2 9roz2 5roz2#roz2 1roz2roz2roz2roz2 4więcej podobnych podstron