Professional Documents
Culture Documents
Relacyjne Bazy Danych
Relacyjne Bazy Danych
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. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
Przedmowa do drugiego wydania ........................................................ 9
Rozdzia 1. Wstp ............................................................................................. 11
Czym jest baza danych? ....................................................................................................11
Bazy danych a systemy zarzdzania nimi .........................................................................12
Systemy obsugi relacyjnych baz danych..........................................................................12
Cel powstania ksiki........................................................................................................13
Kto powinien przeczyta t ksik? ................................................................................15
Struktura ksiki................................................................................................................16
Dodatkowe uwagi..............................................................................................................17
Podzikowania ..................................................................................................................18
Cz I
Rozdzia 4. Formularze....................................................................................... 41
Wykorzystanie kilku formularzy obsugujcych pojedyncz tabel.................................44
Pola tekstowe udostpniane tylko do odczytu...................................................................44
Pola tekstowe zawierajce poczone dane z kilku pl.....................................................45
Nie wszystkie pola tabeli musz wystpowa w formularzu............................................46
Kontrola wprowadzanych danych.....................................................................................47
Wykorzystanie formularzy moe by kontrolowane ........................................................47
Formularze mog by stronami WWW ............................................................................47
Podsumowanie ..................................................................................................................48
Cz II
Spis treci
Rozdzia 15. Ponowna analiza czterech elementw baz danych ........................... 117
Tabele ..............................................................................................................................120
Zapytania.........................................................................................................................121
Formularze ......................................................................................................................127
Raporty ............................................................................................................................128
Spis treci
7
Dalsze postpowanie .......................................................................................................242
Przykad praktyczny..................................................................................................243
Normalizacja a usuwanie wszelkiej nadmiarowoci.......................................................245
Podsumowanie ................................................................................................................251
Dodatki .......................................................................................327
Dodatek A Sowniczek .................................................................................... 329
Skorowidz...................................................................................... 331
Rozdzia 14.
Modelowanie zwizkw
Udao nam si umieci klasy obiektw w tabelach bazy danych. Znamy rwnie sie
zalenoci, istniejcych pomidzy obiektami. Kolejnym zadaniem bdzie odwzorowanie tych zwizkw w bazie.
Do realizacji tego zadania bd nam potrzebne pewne narzdzia:
klucze gwne oraz obce;
zczenia.
Te dwa pojcia okrelaj dwa rne typy narzdzi, udostpnianych przez relacyjne bazy
danych, lecz najczciej oba s wykorzystywane jednoczenie. Na przykad: przed zdefiniowaniem zczenia naley utworzy jeden lub kilka kluczy gwnych, za dopiero
zbudowanie zczenia nadaje sens istnieniu klucza gwnego. Nie naley przejmowa
si tym, e nazwy tych mechanizmw brzmi dla nas niezrozumiale; w rzeczywistoci
s to do proste pojcia. Zrozumienie ich jest jednak bardzo wanym krokiem, bowiem
dziki nim wiele zagadnie relacyjnych baz danych nabiera gbszego sensu. Trudno
byoby wyobrazi sobie istnienie relacyjnych baz danych bez kluczy i zcze.
Zagadnienia dotyczce kluczy i zcze najprociej omawia na podstawie przykadu.
Jednym z najczciej stosowanych zwizkw s zwizki typu jeden do wielu, omwione w poprzednim rozdziale. Przedstawilimy tam zwizek pomidzy klientami
oraz zamwieniami. Wykorzystamy ten przykad take i tutaj.
Pamitajmy o stosowanej konwencji nazewnictwa: okrelaj nazwy
tabel, natomiast
okrelaj nazwy kolumn. Odwoania do kolumn
w tabeli s zapisywane jako nazwa tabeli, po ktrej widnieje kropka, a nastpnie
nazwa kolumny. Dlatego zapis okrela kolumn
tabeli .
92
!"##
$%&
'"##
'(!"##
)
%%
!#"##
*+,
$%&
'"##
%%
!#"##
*+,
!"##
( (-..
#(+ (---
&
/
(+(-00
#(###
1+
1
#(+ (-00
#( ##
12
# (-..
#( ##
2
3
( (-..
#( ##
4
&
#(+ (-.0
#(+ ##'
Tabele te odnale mona w pliku R14.MDB. W celu zwikszenia ich czytelnoci klucze
gwne zostay zapisane wytuszczon czcionk, natomiast klucze obce kursyw.
Zdaj sobie spraw z tego, e tabela
jest daleka od doskonaoci, poniewa nadal zawiera informacje nadmiarowe (dotyczce towarw). Zamiast tego
naleaoby zastosowa osobn tabel . Jest to jednak zabieg celowy chciaem unikn nadmiernej komplikacji. Udoskonaleniem tabeli
zajmiemy
si w dalszej czci niniejszego rozdziau.
92 (03-07-17)
93
W celu wyjanienia mechanizmu modelowania zwizkw moemy posuy si zarwno przykadowymi zwizkami pomidzy tabel
a tabel , jak
i zwizkami pomidzy tabel
a tabel , poniewa w obydwu
przypadkach zwizki te s tworzone i obsugiwane na identycznych zasadach. Na razie
zajmiemy si zwizkami pomidzy tabel
a tabel , lecz w odpowiednim czasie wrcimy jeszcze do tabeli .
Aby wykorzysta kolumny w charakterze mechanizmu definiujcego zwizki
pomidzy dwiema tabelami, kada z kolumn w o nazwie musi spenia
okrelone zaoenia. W skrcie mona powiedzie, e kolumna w tabeli
musi by kluczem gwnym, natomiast kolumna w tabeli
musi by kluczem obcym.
W celu utworzenia zwizku jeden do wielu pomidzy dwiema tabelami naley utworzy w jednej z nich klucz gwny, w drugiej natomiast klucz obcy. Klucz gwny okrela
stron zwizku okrelan przez jeden, natomiast klucz obcy definiuje stron zwizku
okrelan przez wiele. Wartoci kluczy s przez nas wykorzystywane do modelowania zwizkw pomidzy klientami i zamwieniami w wiecie rzeczywistym.
Pojcia kluczy gwnych i obcych s bardzo istotne. Powimy im wic nieco uwagi.
Klucze gwne
Wymagania dotyczce klucza gwnego s dosy jasne. Moglibymy wymieni je teraz po
kolei, lecz wydaje si, e wydedukowanie ich przyniesie nieco wicej satysfakcji, a przede
wszystkim bdzie miao lepszy skutek pedagogiczny. Wiele zagadnie w relacyjnej teorii
baz danych mona do atwo wywie za pomoc logicznego rozumowania.
Pamitamy o tym, e kolumna w tabeli zawiera klucze gwne tej
tabeli. Zawarto pl w tej kolumnie identyfikuje poszczeglnych klientw. Klucz o wartoci identyfikuje Edwarda Dzikiego, klucz o wartoci Alicj Kwiatkowsk, itd.
Co staoby si, gdyby klucz, identyfikujcy Alicj Kwiatkowsk, zosta zmieniony na
warto ? Tabele oraz
(patrz nastpna strona) wygldayby w tej
sytuacji nastpujco:
Poprzez zamian wartoci jednego pola w tabeli nie mona okreli tego, komu
naley przesa rachunek za zamwienia numer nie wiemy, czy krzeso kupia
Alicja, czy Edward. (Dodatkowy problem wystpuje z zamwieniami o numerach ,
94
!"##
$%&
'"##
'(!"## )
%%
!#"## *+,
$%&
'"##
%%
!#"## *+,
!"##
!"##
$%&
'"##
'(!"## )
%%
!#"## *+,
$%&
'"##
%%
!#"## *+,
!"##
W kolumnie brakuje wartoci dla klienta o nazwisku Henryk Bezbony. Czy w takim razie nie bdzie on musia paci za zamwienia nr !? Niewiele
lepsza bdzie sytuacja, gdy tabele bd wyglda tak:
94 (03-07-17)
95
!"##
$%&
'"##
%%
!#"## *+,
$%&
'"##
%%
!#"## *+,
!"##
'(!"## )
W tym przypadku odpowied nadal nie jest oczywista. Najlepszym sposobem na uniknicie takich niejasnoci jest zadbanie o to, by wszystkie pola w kluczu gwnym posiaday okrelon warto. Brak wartoci w bazie danych okrela si wartoci NULL
(zwan rwnie wartoci pust lub wartoci zerow). Jest to do specyficzna
warto, a jej obsuga w bazach danych wie si z do ciekawymi kwestiami. Rozdzia 31., umieszczony w czci IV, jest powicony w caoci wanie zagadnieniom
zwizanym z wartoci ".
W ten sposb udao nam si okreli drug zasad dotyczc kluczy gwnych. Klucze
gwne nie mog si powtarza oraz nie mog zawiera pustych wartoci.
Systemy zarzdzania bazami danych, takie jak MS Access, obsuguj klucze gwne
z uwzgldnieniem tych zasad. Naley tylko wskaza systemowi, ktre z kolumn zawieraj klucze gwne, a zastosuje on zabezpieczenia przed zamaniem tych regu. Mona
si zastanawia, czy rzeczywicie system jest w stanie sprawdzi, czy warto pola
bdcego kluczem gwnym, nie wystpuje ju w tabeli, szczeglnie w przypadku tabel
zawierajcych setki tysicy wierszy danych? W rzeczywistoci mechanizmy obsugi
kluczy gwnych w porzdnych relacyjnych systemach zarzdzania baz danych s
w stanie dokona takiego sprawdzenia w sposb tak szybki, e nie bdzie to miao
widocznego wpywu na czas, jaki zajmuje dopisanie wiersza do tabeli.
96
Naley oczywicie wzi pod uwag realia. Jeli zatrudnienie w firmie obcokrajowcw wchodzi w rachub,
zastosowanie numeru PESEL nie jest uzasadnione przyp. tum.
96 (03-07-17)
97
Generowanie naprawd unikalnych identyfikatorw nie jest zadaniem tak prostym, jakim si moe wydawa. Wicej informacji na ten temat mona znale w rozdziale 32.
Klucze obce
Pozostaniemy przy naszym przykadzie, wykorzystujcym tabele oraz
. Przejdmy teraz do omwienia kluczy obcych w modelowaniu zwizkw typu
jeden do wielu. Klucz obcy jest po prostu referencj pewnego klucza gwnego.
W naszym przypadku kluczem obcym jest kolumna
.
Ponownie zastosujemy regu intuicyjnego wyodrbniania zasad regulujcych istnienie
kluczy obcych. Wemy pod uwag wartoci z poniszych tabel.
98
!"##
$%&
'"##
'(!"## )
%%
!#"## *+,
$%&
'"##
%%
!#"## *+,
!"##
Czciowe podsumowanie
Zanim przejdziemy do kolejnych zagadnie, podsumujmy informacje, z ktrymi zapoznalimy si do tej pory. Ponownie prezentujemy znane nam ju tabele:
98 (03-07-17)
!"##
$%&
'"##
'(!"## )
%%
!#"## *+,
$%&
'"##
%%
!#"## *+,
!"##
99
Klucz gwny
Kada tabela w relacyjnej bazie danych musi posiada klucz gwny. Klucz taki skada
si z co najmniej jednego pola (kolumny). adna z wartoci klucza gwnego nie moe
by pusta. Kady z wierszy w tabeli musi posiada unikaln warto klucza gwnego.
Klucz gwny jest definiowany na etapie definicji tabeli.
Klucz obcy
Klucze obce nie s wymaganym elementem tabel. Innymi sowy, kada tabela musi
posiada zdefiniowany klucz gwny, lecz nie wszystkie musz definiowa klucze obce.
Jeli istnieje zwizek pomidzy dwiema tabelami, jedna z nich musi posiada klucz
obcy, na podstawie ktrego pobierane s odpowiednie dane z drugiej tabeli. W praktyce bywa tak, e wikszo tabel posiada klucze obce i zupenie dopuszczalne jest
wystpowanie wicej ni jednego klucza obcego w tabeli. Jeli tak jest w istocie, tabela
musi posiada zwizki z kilkoma innymi tabelami. Definicja klucza obcego nastpuje
podczas definicji zczenia.
Zczenia
Jak wspomnielimy na pocztku niniejszego rozdziau, narzdziami, sucymi do okrelania zwizkw w ramach baz danych, s:
klucze (gwne i obce),
zczenia.
Nadszed czas na omwienie drugiego z wymienionych narzdzi. W poprzednim rozdziale zostay wymienione trzy moliwe typy zwizkw, jakie mona modelowa
w bazie danych:
jeden do wielu,
wiele do wielu,
jeden do jednego.
Nasze rozwaania dotyczce zcze rozpoczniemy od najczciej spotykanych zwizkw typu jeden do wielu.
100
!"##
$%&
'"##
'(!"## )
%%
!#"## *+,
$%&
'"##
%%
!#"## *+,
!"##
Czy mona okreli typ zwizku pomidzy tymi tabelami na podstawie ich zawartoci?
Odpowied brzmi: tak i nie. Nie moemy by absolutnie pewni co do typu zwizku,
lecz moemy dokona pewnych, bardzo prawdopodobnych zaoe.
Moemy zaoy, e
#&$ jest kluczem gwnym. Pierwsz wskazwk, pozwalajc nam na takie zaoenie, jest nazwa kolumny; drug stanowi unikalne wartoci w ramach tej kolumny. Podobne zaoenie moemy przyj na temat
kolumny .
Mona zaobserwowa, e wartoci w kolumnie
odpowiadaj
wartociom w kolumnie , dlatego bardzo prawdopodobne jest, e
kolumna
jest kluczem obcym.
Czemu maj suy powysze dociekania? Nie namawiam czytelnika do tego, aby
oglda zawarto tabel w celu odgadnicia typw zwizkw pomidzy nimi. Celem
powyszego wiczenia jest uwiadomienie czytelnikowi szczeglnych wasnoci, ktre
pomagaj w procesie definiowania zwizkw pomidzy tabelami i zarzdzania nimi.
Moemy wic zaj si procesem modelowania zczenia typu jeden do wielu. Proces
ten skada si z nastpujcych krokw:
Podejmujemy decyzj umieszczenia w bazie danych dwch tabel,
100 (03-07-17)
101
praktyk jest nadawanie kolumnom tego typu takich samych nazw, jakie
posiadaj kolumny klucza gwnego, do ktrego si odnosz.
Do tabeli
dodajemy now kolumn o nazwie .
Wskazujemy systemowi bazy danych istnienie zwizku typu jeden do wielu
Rysunek 14.1.
102
102 (03-07-17)
103
( (-..
#(+ (---
&
/
(+(-00
#(###
1+
1
#(+ (-00
#( ##
12
# (-..
#( ##
2
3
( (-..
#( ##
4
&
#(+ (-.0
#(+ ##'
!
Kolumna (&$% jest kluczem gwnym, wic w jej przypadku nie s
dopuszczalne powtrzenia. Na kolumnie 0(&$% w trakcie projektowania
tabeli zosta zaoony unikalny indeks, wic rwnie w tym przypadku nie s dopuszczalne powtrzenia. Dodatkowo kolumna 0(&$% jest kluczem obcym, wic
wartoci pl tej kolumny musz odpowiada istniejcym wartociom pl kolumny
odpowiedniego klucza gwnego, to znaczy kolumny (&$%.
Z tego powodu ponisza tabela zawiera nieprawidow zawarto w kolumnie klucza obcego, poniewa warto 1 nie wystpuje w kolumnie klucza gwnego tabeli :
!
Take zawarto tabeli zaprezentowanej poniej jest niedopuszczalna, poniewa warto wystpuje dwukrotnie w kolumnie 0(&$%:
!
104
Rysunek 14.2.
104 (03-07-17)
105
widzenia naszej bazy danych. Jedynym wanym rodzajem kontaktw klientw z naszymi
pracownikami jest kontakt zwizany z realizacj zamwie. Za kadym razem, gdy kupowany jest towar, zostaje zoone zamwienie. Zatem moemy stwierdzi, e powizania
pomidzy klientami a pracownikami warunkowane s przez te zamwienia.
Zastanwmy si teraz nad powizaniami pomidzy klientami a zamwieniami. S to
zwizki typu jeden do wielu. Tego samego typu zwizki istniej pomidzy pracownikami a zamwieniami.
!"##
$%&
'"##
'(!"## )
%%
!#"## *+,
$%&
'"##
%%
!#"## *+,
!"##
( (-..
#(+ (---
&
/
(+(-00
#(###
1+
1
#(+ (-00
#( ##
12
# (-..
#( ##
2
3
( (-..
#( ##
4
&
#(+ (-.0
#(+ ##'
By moe wyda si to nieprawdopodobne, lecz dla utworzenia pary zwizkw typu jeden
do wielu w taki sposb, jaki opisalimy powyej, wystarczy, aby powsta zwizek
typu wiele do wielu. W naszym przypadku, niejako samoistnie, powsta zwizek typu
wiele do wielu pomidzy tabelami oraz . Tak naprawd nie istnieje w systemach relacyjnych baz danych aden dodatkowy mechanizm, definiujcy
zwizki wiele do wielu. Zawsze w przypadku koniecznoci utworzenia takiego zwizku
posugujemy si dwoma zwizkami typu jeden do wielu.
Istnieje jednak wymg utworzenia tych powiza w taki sposb, jak zostao to przedstawione na rysunku 14.3.
106
Rysunek 14.3.
Dowolne dwa zwizki typu jeden do wielu, obejmujce trzy tabele, nie oznaczaj
jeszcze zwizku wiele do wielu, czego przykadem moe by sytuacja przedstawiona
na rysunku 14.4.
Rysunek 14.4.
106 (03-07-17)
107
( (-..
#(+ (---
&
/
(+(-00
#(###
1+
1
#(+ (-00
#( ##
12
# (-..
#( ##
2
3
( (-..
#( ##
4
&
#(+ (-.0
#(+ ##'
!"##
%%
!#"## *+,
$%&
'"##
'(!"## )
108
'
'
'
'
'
'
108 (03-07-17)
109
Nieco lepszym, cho rwnie niewystarczajco dobrym pomysem, jest utworzenie nastpujcej struktury:
'
"
# $
(
(
'
'
%
(
(
'
W tym podejciu kady typ towaru jest reprezentowany przez jedn kolumn w tabeli,
a liczba, zapisana w polu kolumny okrela ilo sztuk danego towaru, znajdujc si
na zamwieniu. Henryk moe kupi cztery krzesa i st, a my wiemy dokadnie, gdzie
szuka informacji na temat krzese. Nie musimy rwnie martwi si o najwiksz ilo
sztuk towarw na zamwieniu, poniewa w kolumnach odpowiadajcych danemu typowi
towaru, moemy wpisa dowoln liczb naturaln. Doskonale. Co jednak stanie si,
gdy dodamy nowy typ towaru do naszego asortymentu? Bdziemy musieli doda now
kolumn do tabeli
. Wiele z firm posiada asortyment znacznie przekraczajcy
dopuszczaln liczb kolumn w wikszoci systemw baz danych (najczciej 255).
Z tego wzgldu takie rozwizanie stanowczo nie nadaje si do zastosowania.
Nadszed w kocu czas na zademonstrowanie waciwego rozwizania. Wszystkie umieszczone poniej tabele (a do koca rozdziau) pochodz z pliku R14C.MDB.
Najlepsze rozwizanie naszego problemu okae si bardzo proste, szczeglnie dla osb
przywykych ju do wykorzystywania wielu tabel. W przypadku zamwie i towarw
mamy ponownie do czynienia ze zwizkiem typu wiele do wielu. Skonstruujmy
zatem zwizek wiele do wielu za pomoc dwch zwizkw jeden do wielu pomidzy tabelami
, a dodatkow, trzeci tabel. Tabela ta powinna
znale si w strukturze zwizku pomidzy tabelami
oraz . Rozsdn
dla niej nazw moe by
. Odpowiednie tabele bd wyglday
nastpujco:
110
#& %
!"##
%%
!#"## *+,
$%&
'"##
'(!"## )
110 (03-07-17)
111
#& %
'
(
'
%
%
%
Niedopuszczalne jest jednak powtrzenie si par wartoci w obydwu kolumnach, poniewa stanowi to naruszenie zasady funkcjonowania klucza gwnego.
#& %
'
'
(
'
%
%
%
112
elementw bazy. Sytuacja, w ktrej zmiana w strukturze tabel pociga za sob konieczno wprowadzenia zmian w ktrym z pozostaych elementw bazy, jest bardzo
prawdopodobna. Mona wic wysnu wniosek, e kada konstrukcja bazy danych, ktra
wymusza czste dokonywanie zmian w strukturze tabel, jest bardzo mao funkcjonalna.
Problem nie tylko w tym, e aplikacja taka jest do kopotliwa w utrzymaniu, lecz
nasuwa bardzo prawdopodobne przypuszczenie, e popeniono jaki bd lub przeoczenie w trakcie definicji struktury bazy danych.
112 (03-07-17)
113
przykadowy formularz o nazwie #&$ w pliku R14C.MDB. Formularz ten demonstruje podstawowy sposb tworzenia interfejsu uytkownika, zbudowanego w oparciu
o kilka tabel, powizanych pomidzy sob za pomoc rnych zcze.
Nastpny rozdzia zawiera jednak kilka oglnych porad dotyczcych tworzenia takich
interfejsw, ktrych gwnym zadaniem jest odseparowanie uytkownika kocowego
od abstrakcji relacyjnego modelu danych.
Terminologia
Jak mielimy okazj si przekona, zczenia i klucze s proste w uyciu oraz niezwykle
uyteczne. Udao si nam zatem postawi kolejny krok w stron wiata specjalistw
baz danych. W tym wiecie bardzo wana jest umiejtno posugiwania si skomplikowan terminologi, akceptowan przez innych specjalistw baz danych. Jeli nie
zastosujemy si do tych zasad, zamiast nalenego nam szacunku napotkamy mur niechci
jako intruzi. Dlatego wana jest znajomo nastpujcych poj: rodzic, potomek, posiadanie, nadrzdny, podrzdny, zaleno czy te klucz obcy.
Na przykad tabela
jest w posiadaniu tabela , dlatego jest jej potomkiem. Tabela
jest podrzdna wobec tabeli , ktra jest jej rodzicem i rwnie posiada tabel
, wic jest nadrzdna w stosunku do niej.
Wszystkie tabele potomne posiadaj przynajmniej jeden klucz obcy. Poniewa tabela
posiada dwie tabele rodzicw, zawiera dwa klucze obce (&$%
oraz . Klucze obce ustalaj zaleno pomidzy rodzicem a potomkiem.
W tym przypadku mamy do czynienia z dwoma kluczami obcymi, wic istniej dwie
zalenoci.
Zwrmy uwag na to, e klucze obce tabeli
tworz zwizki z kluczami
gwnymi swoich rodzicw. Jest to wany wymg, poniewa tabele rodzicw zawsze
znajduj si po stronie jeden zwizku typu jeden do wielu.
Rysunek 14.6 prezentuje zwizki pomidzy tabelami z biecej wersji omawianej przez
nas bazy danych.
114
Rysunek 14.6.
( (-..
#(+ (---
&
/
(+(-00
#(###
1+
1
#(+ (-00
#( ##
12
# (-..
#( ##
2
3
( (-..
#( ##
4
&
#(+ (-.0
#(+ ##'
114 (03-07-17)
115
#& %
'
!"##
%%
!#"## *+,
$%&
'"##
'(!"## )
!
Czytelnikowi naley si mae wyjanienie. Nie powinienem robi sobie artw z terminologii stosowanej przez specjalistw baz danych. W wikszoci dziedzin ycia konieczna jest jaka forma werbalnego skrtu mylowego, uywanego w celu usprawnienia
komunikacji. Naley jednak zdawa sobie spraw z tego, e terminologia taka powinna by stosowana wycznie w celu usprawnienia komunikacji, nie za w celu zabawy
(z nowicjuszami) w kotka i myszk, polegajcej na niepotrzebnej komplikacji podstawowych zagadnie, ktre w gruncie rzeczy s proste i zrozumiae. Zrozumienie
podstaw jest tutaj kluczowe; po pokonaniu tego etapu caa skomplikowana terminologia jest wchaniana przez nowego adepta w sposb nieomale naturalny.
Zademonstrowane powyej tabele nadal nie stanowi idealnego rozwizania problemu, poniewa tabela wci zawiera nadmiarowe, powtarzajce si dane
(na przykad dotyczce dostawcw). Jest to zabieg celowy, poniewa te niedoskonaoci posu jako ilustracja zabiegu usuwania nadmiarowych danych, ktrym
zajmiemy si w rozdziale 15.