#273 12. Perspektywy Nie ma na Ziemi nic, czemu nie można by się przyjrzeć z kosmicznej perspektywy Fiodor Michaiłowicz Dostojewski ========================================= Czym sš perspektywy? Jak wynika z rozdziału 3, perspektywa jest tabelš wirtualnš, składajšcš się z pól pochodzšcych z kilku różnych tabel rzeczywistych; może jednak również zawierać pola z innych perspektyw. Powodem, dla którego perspektywę okrela się mianem tabeli wirtualnej jest to, że nie przechowuje ona danych, a jedynie odczytuje je z tabel, na których jest oparta. Ponieważ perspektywy same w sobie nie przechowujš danych, w bazie zostajš zapisane jedynie ich struktury, a ich zawartoć jest odtwarzana za każdym razem, kiedy następuje odwołanie do danej perspektywy. ================================== Uwaga: Sposób implementacji perspektyw zależy od programu SZRBD i wykracza poza zakres tej ksišżki. ======================================== Perspektywy sš ważne z następujšcych powodów: Można je wykorzystywać do jednoczesnego odczytywania danych z dwóch lub większej liczby tabel. Dwie tabele sš w relacji, jeli ich tematy majš ze sobš co wspólnego. Perspektywa stanowi mechanizm umożliwiajšcy jednoczesnš pracę z obydwiema powišzanymi tabelami. Liczba tabel, z których można jednoczenie korzystać za porednictwem perspektywy, nie jest ograniczona do dwóch; perspektywę można na przykład zastosować do pracy nad relacjš zawierajšcš tabelę łšczšcš. Zawsze dostarczajš wieżych informacji. Perspektywa sama w sobie nie przechowuje żadnych danych - jej zawartoć odtwarza się przy każdej potrzebie. #274 Oznacza to, że perspektywy zawsze odzwierciedlajš aktualny stan danych zawartych w bazie. Można je dostosować do indywidualnych potrzeb użytkowników. Perspektywy mogš zostać dostosowane do konkretnych potrzeb, na przykład w celu zestawienia pewnego raportu lub zgrupowania danych służšcych okrelonym pracownikom. Pomagajš w zapewnieniu integralnoci danych. Istnieje odmiana perspektywy, nazywana perspektywš walidacji, pełnišca rolę podobnš do tabeli walidacji - okrelajšca dozwolone wartoci dla jednego z pól w bazie danych. Można je wykorzystywać do zapewnienia bezpieczeństwa i poufnoci danych. Możesz okrelić, do których pól dany użytkownik nie powinien mieć dostępu, definiujšc perspektywę nie zawierajšcš tych pól. Poprawnie zdefiniowane perspektywy stanowiš niezwykle ważny element gotowej aplikacji bazodanowej. Umożliwiajš one kontrolę sposobu wprowadzania, modyfikowania, odczytywania i wywietlania danych. Przekrój przez perspektywę Perspektywy mogš być oparte na pojedynczej tabeli, na wielu tabelach, na innych perspektywach albo na połšczeniu perspektyw i tabel. Każda perspektywa składa się z pól należšcych do struktur, które wchodzš w jej skład. Struktury, z których perspektywy czerpiš dane, okrelamy mianem tabel bazowych" lub perspektyw bazowych". ======================== Uwaga: W celu uniknięcia zamieszania od tej pory zarówno tabele, jak i perspektywy stanowišce podstawę do zdefiniowania nowej perspektywy będziemy okrelać łšcznie jako tabele bazowe". Diagramy ilustrujšce struktury perspektyw korzystajš ze specjalnych symboli umożliwiajšcych odróżnienie tabeli od perspektywy. ======================== Istniejš trzy kategorie perspektyw: perspektywy danych, perspektywy agregujšce oraz perspektywy walidacji. Perspektywy danych Perspektywy danych wykorzystuje się do przeglšdania i wykonywania operacji na danych zawartych w bazie. W zależnoci od przeznaczenia danej perspektywy, w jej skład wchodzš pola z różnych tabel bazowych. Załóżmy przykładowo, że potrzebna Ci jest lista imion, nazwisk oraz numerów telefonów wszystkich pracowników #275 organizacji. Możesz utworzyć perspektywę Lista telefonów pracowników" na podstawie tabeli Pracownicy", wykorzystujšc pola ID pracownika", Imię prac.", Nazwisko prac." oraz Telefon domowy prac.". Rysunek 12.1 przedstawia diagram takiej perspektywy. (Zwróć uwagę na ramkę symbolizujšcš perspektywę). [Pracownicy --------------- ID pracownika KP Imię prac. Nazwisko prac. Adres miejski prac. Miasto prac. Stan prac. Kod pocztowy prac. elefon domowy prac.] {(klamra w dół) [[Lista telefonów pracowników ------------------------- ID pracownika Imię prac. Nazwisko prac. Telefon domowy prac.]] Rysunek 12.1. Perspektywa Lista telefonów pracowników" Za każdym razem, kiedy będziemy chcieli odczytać informacje z perspektywy Lista telefonów pracowników", zostanie ona utworzona na nowo i będzie odzwierciedlać aktualny stan tabeli Pracownicy". Rysunek 12.2 przedstawia typowš listę. Dane w perspektywie opartej na pojedynczej tabeli mogš być w każdej chwili zmodyfikowane; modyfikacje te zostanš wówczas wprowadzone do tabeli bazowej. Nie można jednak wprowadzać zmian naruszajšcych który z atrybutów modyfikowanego pola lub którš z reguł integralnoci. Przykładowo, nie można usunšć z perspektywy którego z nazwisk, jeli atrybut Wartoci zerowe" pola Nazwisko prac." w tabeli Pracownicy" ma wartoć zabronione". #276 Lista telefonów pracowników ID pracownika Imię prac. Nazwisko prac. Telefon domowy prac. 100 Zachary Erlich 553-3992 101 Susan McLain 790-3992 102 Joe Rosales 551-4993 103 Alistair Black 227-4992 104 Teresa Ford 525-2993 105 Stuart Lockhart 248-4953 Rysunek 12.2. Dane wywietlone przez perspektywę Lista telefonów pracowników" Można utworzyć perspektywę opartš na dwóch lub większej liczbie tabel. Jedynym ograniczeniem jest koniecznoć istnienia relacji między tabelami bazowymi. Załóżmy, że chcesz utworzyć perspektywę o nazwie Rozkład zajęć", zawierajšcš nazwy wszystkich wykładów oraz personalia studentów uczęszczajšcych na te wykłady. Wykorzystamy w tym celu tabele przedstawione na rysunku 12.3. 1.[Studenci ---------- ID studenta KP--|-|-do2 Imię stud. Nazwisko stud. Adres miejski stud. Miasto stud. Stan stud. Kod pocztowy stud. Telefon domowy stud.] 2.{Studenci/wykłady ------------------ -<-ID studenta ZKP/KO ID wykładu ZKP/KO}->-do3 3.(Wykłady ------------- --|-|-ID wykładu KP Nazwa wykładu Opis wykładu ID prowadzšcego KO Kategoria) Rysunek 12.3. Tabele potrzebne do utworzenia perspektywy Rozkład zajęć" Tabele przedstawione na rysunku 12.3 zawierajš pola konieczne do utworzenia perspektywy Rozkład zajęć", a ponadto spełniajš wspomniane wczeniej wymaganie, zgodnie z którym między tabelami bazowymi muszš istnieć relacje. Nowš perspektywę tworzymy, bioršc pole Nazwa wykładu" z tabeli Wykłady" oraz pola Imię stud." i Nazwisko stud." z tabeli Studenci". Imiona i nazwiska studentów zostanš poprawnie przypisane poszczególnym wykładom, ponieważ tabele Wykłady" i Studenci" sš powišzane przez tabelę łšczšcš Studenci/wykłady". Rysunek 12.4 przedstawia diagram perspektywy Rozkład zajęć". Zauważ, że do tabel bazowych nie wprowadzono żadnych zmian. #277 1.[Studenci ---------- ID studenta KP--|-|-do2 Imię stud. Nazwisko stud. Adres miejski stud. Miasto stud. Stan stud. Kod pocztowy stud. Telefon domowy stud.] 2.{Studenci/wykłady ------------------ -<-ID studenta ZKP/KO ID wykładu ZKP/KO}->-do3 3.(Wykłady ------------- --|-|-ID wykładu KP Nazwa wykładu Opis wykładu ID prowadzšcego KO Kategoria) {(klamra w dół) 4.[[Rozkład zajęć ------------------ Nazwa wykładu Imię stud. Nazwisko stud.]] Rysunek 12.4. Diagram perspektywy Rozkład zajęć" Za każdym razem, kiedy będziemy chcieli odczytać informacje z perspektywy Rozkład zajęć", perspektywa ta zostanie odtworzona na podstawie aktualnych danych w jej tabelach ba/owych. Przykład danych dostarczonych przez perspektywę Rozkład zajęć" znajduje się na rysunku 12.5. Pomimo iż możesz modyfikować zawartoć większoci pól w perspektywie wielotabelowej, nie wolno Ci zmieniać w ten sposób wartoci klucza podstawowego żadnej z tabel bazowych. Tak jak w przypadku perspektywy jednotabelowej, zmiany wprowadzane do poszczególnych pól nie mogš być sprzeczne z ich atrybutami ani z regułami integralnoci. Prawdopodobnie zauważyłe, że w perspektywie Rozkład zajęć" znajdujš się nadmiarowe dane. Sš one skutkiem połšczenia rekordów z tabeli Wykłady" z rekordami z tabeli Studenci"; liczba wystšpień każdej z wartoci pola Nazwa wykładu" jest równa liczbie studentów, którzy uczęszczajš na dany wykład. Ta rzekoma nad-miarowoć jest dopuszczalna, ponieważ przedstawione dane nie sš fizycznie przechowywane w bazie, a jedynie pobierane z tabel bazowych, które same w sobie muszš spełniać odpowiednie kryteria poprawnoci. Dane w perspektywie wielotabelowej sš często wywietlane w ten włanie sposób. #278 Rozkład zajęć Nazwa wykładu Imię stud. Nazwisko stud. Algebra Martin Applebee Algebra Ginš Carter Algebra Joe Rosales Algebra Sara Ulrich Teoria muzyki Mikę Hernandez Teoria muzyki Susan McLain Teoria muzyki Lee Turner Historia USA Ginš Carter Historia USA Susan McLain Historia USA Gregory Piercy Historia USA Joe Rosales Rysunek 12.5. Dane wywietlone przez perspektywę Rozkład zajęć" Kolejnš kwestiš, na którš być może zwróciłe uwagę, jest brak w perspektywie klucza podstawowego. Perspektywa nie wymaga takiego klucza, ponieważ nie jest rzeczywistš tabelš. Tylko prawdziwe tabele, fizycznie przechowujšce dane, potrzebujš klucza, który służyłby do identyfikacji poszczególnych rekordów. Klucze podstawowe tabel bazowych mogš jednak pojawić się w perspektywach, gdzie nadal zachowujš wszystkie swoje własnoci. Jeli wiec zdecydujesz się wykorzystać w jakiej perspektywie klucz podstawowy której z tabel, musisz go traktować tak, jak gdyby nadal był on kluczem podstawowym w tejże perspektywie - jego wartoci nie mogš być zerowe i muszš być unikatowe. Pamiętaj, że na diagramie perspektywy nie umieszcza się oznacz...
sliwak