#49 3. Terminologia Gdy ja używam jakiego słowa - powiedział Humpty Dumpty z przekšsem - oznacza ono dokładnie to, co mu każę oznaczać... ni mniej, ni więcej Lewis Carroll O tym, co Alicja odkryła po drugiej stronie lustra" (przekład Macieja Słomczyńskiego) ============================== Dlaczego terminologia jest ważna? Projektowanie relacyjnych baz danych, tak samo jak każda inna dziedzina wiedzy, posiada swój własny zbiór pojęć. Opanowanie tej terminologii jest ważne, ponieważ: używa się jej do wyrażania i definiowania pomysłów oraz technik zwišzanych z relacyjnym modelem logicznym. Duża jej częć jest bezporednim zapożyczeniem z matematyki, a cilej - z teorii mnogoci oraz z rachunku predykatów pierwszego rzędu, które to dziedziny stanowiš podstawę relacyjnego modelu baz danych. używa się jej do opisu procesu projektowania baz danych. Przy wyjanianiu pewnych kroków procesu projektowania wykorzystuje się pojęcia, których przyswojenie jest konieczne do zrozumienia tego procesu. używa się jej wszędzie tam, gdzie omawiane sš relacyjne bazy danych lub SZRBD. Terminologia projektowania baz danych jest wpleciona w takie publikacje, jak: materiały naukowe, artykuły w prasie specjalistycznej, podręczniki użytkownika SZRBD czy ksišżki powięcone relacyjnym bazom danych. Znajduje ona również zastosowanie w ustnych wymianach zdań między projektantami tych baz. Każdemu pojęciu przedstawionemu w niniejszym rozdziale towarzyszy omówienie. Dalsze szczegóły sš wyjaniane w miarę opisywania technik wykorzystujšcych dane pojęcie. #50 Znajdziesz tu zatem większoć terminów opisujšcych metody procesu projektowania. Istniejš jednak również takie, które wprowadzimy póniej, w dalszych rozdziałach ksišżki; łatwiej je bowiem zrozumieć w kontekcie procedur, do których się odnoszš. Na potrzeby tego rozdziału zdefiniujemy cztery kategorie pojęć zwišzanych z: wartociami, strukturami, relacjami i integralnociš. Pojęcia zwišzane z wartociami Dane Dane sš wartociami przechowywanymi w bazie danych. Dane sš statyczne w tym sensie, że zachowujš swój stan aż do zmodyfikowania ich ręcznie lub przez jaki automatyczny proces. Przykładowe dane znajdziesz na rysunku 3.1. George Edelman 92883 05/16/98 95.00 Rysunek 3.1. Przykładowe dane Same w sobie dane te sš niezrozumiałe. Nie wiadomo, na przykład, co oznacza 92883". Kod pocztowy? Numer ewidencyjny? Nawet gdybymy wiedzieli, że jest to identyfikator usługi, można by zadać kolejne pytanie: czy jest to identyfikator zwišzany z George'em Edelmanem? Na te pytania nie można udzielić odpowiedzi aż do momentu zinterpretowania danych. Informacje Informacje to dane przetworzone w sposób, który uwidacznia ich znaczenie i tym samym czyni je użytecznymi dla osoby majšcej z nimi stycznoć. Informacje sš dynamiczne w tym sensie, że podlegajš cišgłym zmianom w stosunku do danych przechowywanych w bazie i że można je przetwarzać na nieograniczonš iloć sposobów. Rysunek 3.2 pokazuje dane z poprzedniego przykładu, przetworzone jednak w sposób, który czyni z nich informacje. Dane - w tym wypadku zapisane na rachunku pacjenta - sš teraz zrozumiałe dla każdego, kto je odczyta. Informacje można przedstawiać na wiele różnych sposobów. Możemy wywietlać je na ekranie, jako rezultat zapytania lub jako formularz, bšd też przedstawiać je w formie wydruku na papierze, jako raport. Powiniene jednak zapamiętać, że dane muszš zostać poddane obróbce, aby stały się informacjami. Zrozumienie różnicy między danymi i informacjami jest bardzo ważne. Baza danych powinna dostarczać użytkownikom informacje. Informacje można uzyskiwać tylko wtedy, jeżeli dostępne sš odpowiednie dane, a baza danych jest skonstruowana #51 w sposób, który umożliwi odpowiednie przekształcenie tychże danych. To stwierdzenie znakomicie oddaje logikę stojšcš za projektowaniem baz danych. Oznaczenia: |- na rysunku kreska pionowa cišgła tabeli; ______ -linie poziome tabeli. ()- w tabeli zaznaczone obwódkš __________________________________________________________________________ |Klinika Medyczna Eastside; |Imię i nazwisko pacjenta:|(George Edelmar) | |7743 Kingman Dr. Seattle, |Identyfikator pacjenta: |10884 | |WA 98032 (206) |Data wizyty: |(/16/9(058)| |555-9982; |Lekarz: |Daniel Chavez| _____________________________________________________________ ||-w ten posób oznaczę kratkę pustš,jeżeli będzie zaznaczona usługa to w niej x _____________________________________________________________________________ |usługa lekarska kod usługi opłata |usługa lekarska kod usługi opłata| |_____________________________________________________________________________| | |x| Konsultacja (92883) 119.00 | || Tomografia 89327 | | || EKG 92773 (95.00) | || Akcesoria 82372 | | || Badanie ogólne 98337 | || Obsługa pielęgniarska 88332 | | || USG 97399 | || Raport ubezpieczeniowy 81368 | ________________________________________________________________________________ (Obydwie tabele na jednej karcie szpitalnej) Rysunek 3.2. Przykład danych przekształconych w informacje ================================================= Uwaga: Na nieszczęcie dane i informacje sš bardzo często ze sobš mylone i używane zamiennie. Ten błšd można znaleć w wielu artykułach prasowych, a nawet w specjalistycznych ksišżkach, których autorzy teoretycznie nie powinni go popełniać. ========================================== Null (wartoć zerowa) Kiedy dana wartoć nie jest znana, bšd też nie ma jej w ogóle, mówimy, że jest ona zerowa (lub że jest równa Null). Wartoć zerowa nie oznacza zera (w przypadku danych numerycznych) czy też spacji (w przypadku danych tekstowych). Zero i spacja sš rzeczywistymi wartociami i mogš mieć w pewnych okolicznociach znaczenie. Przykładowo, zero może oznaczać aktualny Stan konta", a spacja w polu Drugi inicjał" - że dany pracownik nie posiada drugiego imienia. Na rysunku 3.3 zerowa wartoć pola Hrabstwo" zwišzana jest z faktem, iż miasto Waszyngton nie leży w żadnym hrabstwie. #52 KLIENCI ID klienta; Imię klienta; Nazwisko klienta; Miasto zamieszkania; Hrabstwo; Stan;... 9001; Stewart; Jameson; Seattle; King; WA; ... 9002; Shannon; McLain; Poulsbo; puste; WA; ... 9003; Estela; Pundt; Fremont; Alameda; CA; ... 9004; Timothy; Ennis; Bellevue; King; WA; ... 9005; Marvin; Russo Waszyngton; puste; DC; ... 9006; Kendra; Bonnicksen; Portland; puste; OR; ... Rysunek 3.3. Przykład wartoci zerowych Wartoć zerowa jest zazwyczaj wykorzystywana do reprezentacji pewnego nieznanego elementu. Na rysunku 3.3 widać wartoci zerowe w polu Hrabstwo". Shannon McLain nie wiedziała, w jakim hrabstwie mieszka w momencie wprowadzania jej danych do bazy, wiec nie wpisano tu żadnej wartoci. Otrzymalimy wiec pole zawierajšce wartoć zerowš. Wartoć te można jednak zmienić, jeli Shannon dostarczy odpowiednich danych. Wartoć zerowa może również oznaczać brakujšcy element. Gdyby osoba wprowadzajšca dane Shannon do bazy zapomniała zapytać jš o nazwę hrabstwa, w którym mieszka, wówczas dane te uważane byłyby za brakujšce, gdyż brak wartoci w polu Hrabstwo" byłby wynikiem błędu operatora. Kiedy błšd ten zostanie zauważony, będzie go można naprawić, proszšc paniš McLain o podanie odpowiedniej nazwy hrabstwa. PRODUKTY ID produktu; Opis prod.; Kategoria; Cena detaliczna; Iloć na stanie; Całkowita wartoć 70001; Zamek Shur-Lok; Akcesoria; 75.00; 70002; Komputer SpeedRite; puste; 65.00; 20; 1300.00 70003; Kask SteelHead Microshetl; Akcesoria; 36.00; 33; 1118.00 70004; Hamulce SureStop 133-MB; Częci; 23.50; 16; 376.00 70005; Rower Diablo ATM; Rowery; 1200.00; 70006; Lusterko UltraVision; puste; 7.45; 10; 74.50 Rysunek 3.4. Wartoci zerowe w wyrażeniach matematycznych Wadš wartoci zerowych jest to, że nie mogš być zinterpretowane przez wyrażenia matematyczne i funkcje. Jeli w jakim wyrażeniu użyjemy wartoci zerowej, całe wyrażenie również zwróci Null. Na rysunku 3.4 Całkowita wartoć" jest wyliczana #53 z wyrażenia [Cena detaliczna] * [Iloć na stanie]". Zauważ jednak, że w polu Całkowita wartoć" brakuje liczby, jeli wartoć odpowiadajšcego mu pola Iloć na stanie" również jest zerowa. Jest to logiczne jeżeli nie znamy iloci, nie możemy wyliczyć wartoci. Zachodzi tu jednak możliwoć wystšpienia trudnego do wykrycia błędu: jeli zsumujemy wszystkie wartoci w polu Całkowita wartoć", wówczas otrzymany wynik nie będzie reprezentował całkowitej wartoci wszystkich posiadanych produktów. Jedynym sposobem na naprawienie tego błędu jest wpisanie brakujšcych wartoci w polu Iloć na stanie". Wynik funkcji agregujšcej, takiej jak Count}" (policz elementy), będzie zawsze równy Null, jeli w analizowanym polu znajduje się wartoć zerowa. Rysunek 3.5 pokazuje wyniki zapytania obliczajšcego liczbę wystšpień każdej z kategorii w przedstawionej powyżej tabeli Produkty". Wartoć pola Iloć wszystkich wystšpień" w tym zapytaniu jest wynikiem zwracanym przez wyrażenie Count ([Kategoria])". Zauważ, że pole to zawiera wartoć O wystšpień kategorii pustej, co sugeruje, że każdemu produktowi przyporzšdkowano jakš kategorie. Jest to oczywicie nieprawda, ponieważ niektóre produkty w tabeli Produkty" nie majš przypisanej kategorii. WYKAZ KATEGORII Kategoria; Wszystkich wystšpień -; 0 Akcesoria; 2 Rowery; 1 Częci; 1 Rysunek 3.5. Wartoci zerowe w funkcji agregujšcej Kwestie brakujšcych czy nieznanych wartoci oraz pytanie o to, czy dana wartoć będzie wykorzystywana w wyrażeniu matematycznym lub funkcji agregujšcej, sš brane pod uwagę przy projektowaniu bazy danych i tematem tym będziemy się zajmować w dalszych rozdziałach. Pojęcia zwišzane ze strukturami ...
sliwak