Modele logiczne baz danych Modele logiczne baz danych Trzy najważniejsze modele danych używane w większości systemów baz danych to modele: relacyjny, sieciowy i hierarchiczny. Są pod wieloma względami podobne do modelu związków encji. Mają jednak pewne właściwości, dzięki którym są lepiej dopasowane do fizycznych struktór używanych przy implementacji baz danych. Relacyjny model baz danych Model ten został stworzony na początku lat siedemdziesiątych przez Codda. Do reprezentacji danych wykorzystuje się dwuwymiarowe tabele inaczej zwane relacjami. Każda tabela opatrzona jest nazwą i posiada określoną liczbę kolumn. Z kolei każda kolumna ma swój nagłówek czyli atrybut. Atrybut danej kolumny charakteryzuje się określonym typem. Przykłady typów: liczbowe, tekstowe, typ czasu, daty, waluty, typ wyliczeniowy, logiczny itd. Zatem w każdej kolumnie dopuszczalne są tylko ściśle określone wartości zgodne z jej typem. Nazwa Atrybut_1 Atrybut_2 Atrybut_3 ... Atrybut_n 1 Modele logiczne baz danych Pierwszy etap projektowania relacyjnej BD polega na określeniu liczby atrybutów w wierszu. Każdy wiersz tabeli może składać się z wielu pól dlatego inaczej wiersz nazywamy rekordem. Tabela przedstawia więc sobą zbiór rekordów. Poniżej stworzona została tabela o nazwie „student”. Zawiera ona następujące atrybuty: „nazwisko”, „inię”, „rok_urodzenia”, „miejsce_urodzenia”. Student Nazwisko Imie rok_urodzenia miejsce_urodzenia ... ... ... Kowalski Jan 1980 Warszawa ... ... ... ... ... 2 Modele logiczne baz danych Patrząc na taką tabelę można wypowiadać pewne zdania np. „Pan Kowalski ma na imię Jan, urodził się w Warszawie” Baza taka zawiera więc najbardziej zwięzłe informacje, pomija się w niej czasowniki niezbędne do wypowiedzenia zdania. Rekord możemy interpretować jako encję, wynika z tego, że tabela to zbiór encji. W relacyjnych BD stosuje się też inne określenia w miejsce rekordów: krotki, entki. Zatem rzeczywisty świat widziany jest w postaci tabelek, ale pomimo zwięzłości mamy tu pewien nadmiar informacji. Aby tabelki można było powiązać ze sobą to nie można ustrzec się powielania niektórych atrybutów w różnych tabelkach. Z jednej strony jest to niekorzystne bo informacje się powtarzają, ale z drugiej daje nam to łatwość powiązania, sklejenia ze sobą różnych zbiorów danych bez używania wskaźników. Inną zaletą relacyjnej BD jest to, że potrafimy wyciągnąć z niej każdą informację. Nie ma tu „czarnych dziur” tzn informację wprowadzoną bez problemu możemy odzyskać. Podobnych twierdzeń nie można sformułować już chociażby dla modelu sieciowych BD. Ważnym pojęciem w modelach relacyjnych jest klucz. Wyróżniamy dwa rodzaje kluczy: główny i obcy. Klucz główny jest atrybutem lub zestawem atrybutów, który w sposób jednoznaczny identyfikuje rekordy w tabeli. Jest niezbędny do jednoznaczności nawigowania po BD. Przykładowo w powyższej tabeli „student” dla uzyskania jednoznaczności klucz musi składać się z wielu atrybutów gdyż może istnieć kilku studentów o tym samym nazwisku. Pamiętać należy jednak, że klucz powinien być jak najmniejszym zestawem atrybutów. Rozwiązaniem byłoby tu zastosowanie dodatkowej kolumny „numer indeksu”, która jednoznacznie określiłaby studenta w danej uczelni. Na skalę kraju lepiej aby kluczem był numer dowodu osobistego, gdyż istnieje szansa, że na innej uczelni inny student ma ten sam numer indeksu. Zate klucz główny musi mieć unikalne, niepowtarzalne wartości, a jednocześnie nie może mieć wartości nieokreślonych (jak nieskończonośc). Poza tym musi zostać zapewniona łatwość w wyznaczaniu jego wartości, a także powinien być łatwo przewidywalny. W BD cechy te spełnia specjalny typ – wyliczeniowy. Kolejne liczby naturalne są najlepszym kluczem. Klucz obcy służy do robienia powiązań między tabelkami. Zastosowano tu rozwiązania wachlarzowe: 3 Modele logiczne baz danych Model relacyjny ma solidne podstawy matematyczne. Zaczerpnięty jest z teorii mnogości i opiera się na pojęciu relacji. Relacja jest to pewien podzbiór iloczynu kartezjańskiego dla pewnych dziedzin. Dziedziną może być zbiór liczb całkowitych, zbiór studentów itd. Załóżmy, że mamy dziedziny: D1,D2,...,Dk. Wówczas iloczyn kartezjański to: D1D2...Dk. Taki iloczyn kartezjański jest zbiorem wszystkich k-krotek (v1,v2,...,vk) takich, że: v1D1, v2D2,...,vkDk. Przykład: Przyjmijmy, że k=2 (dwukrotka) i D1={0,1}, D2={a,b,c}. Wówczas iloczyn kartezjański jest zbiorem: D1D2={ (0,a) , (0,b) , (0,c) , (1,a) , (1,b) , (1,c) } Jeżeli z tego iloczynu wybierzemy podzbiór np.: { (0,a) , (1,b) } to będzie to pewna relacja. Zatem relacja jest dowolnym podzbiorem iloczynu kartezjańskiego jednej lub więcej dziedzin. Elementy relacji nazywamy krotkami. Każda krotka składa się z wartości atrybutów. Stąd widzimy, że relacje łatwo wyobrazić sobie jako tabelkę, w której wiersze to krotki, a kolumny (czyli atrybuty) to dziedzina. Zbiór nazw atrybutów relacji nazywa się schematem relacji. Jeżeli relacje nazywają się REL, a jej schemat zawiera atrybuty A1,A2,..,Ak to taki schemat określimy: REL(A1,A2,...,Ak). Dane diagramów związków encji reprezentują dwa rodzaje tabelek: Zbiór encji reprezentuje relacje, której schemat składa się ze wszystkich atrybutów tego zbioru. Każda krotka to jedna encja w zbiorze encji. Związek między zbiorami encji reprezentuje relacja (tabela), której schemat składa się z atrybutów kluczy do każdego zbioru encji. Model sieciowy 4 Modele logiczne baz danych Cechy: struktura danych przypomina graf wierzchołki grafu – typy obiektów łuki w grafie – wiązania między typami opis obiektu zbudowany z pól zawierających dane opisujące obiekt reprezentacja wiązań (wskaźniki): odesłanie bezpośrednie, odesłanie inwersyjne, wiązania codasylowe Sieciowy model danych jest w pewnym uproszczeniu reprezentacją diagramów związków encji, w którym wszystkie związki muszą być binarne oraz jednoznaczne co pozwala na tworzenie stosunkowo prostego grafu. Binarne tzn każdy związek jest między dwoma rekordami. Jednoznaczne tzn związki są w jedną stronę, informacja przechodzi w jednym kierunku. W modelu sieciowym zamiast o zbiorach encji mówi się o typach rekordów logicznych. Pojęcie krotki z modelu relacyjnego zastąpiono rekordem logicznym, a zamiast schematu relacji mamy format rekordu logicznego. Podstawową różnicą między modelem relacyjnym a sieciowym jest to, że w tym drugim istnieją wskaźniki. Związki binarne nazywamy powiązaniami (links). Do reprezentowania rekordów czyli sieci służy graf, który jest uproszczonym diagramem związków encji. Wierzchołki odpowiadają typom rekordów, krawędzie reprezentują powiązania. Wierzchołki i krawędzie są oznaczane nazwami odpowiadającymi typom powiązań. Zatem model ten ma bardziej naturalną reprezejtacje rzeczywistości, ale za to jest trudniejszy w implementacji. Manipulowanie na takiej bazie jest bardziej skomplikowane, gdyż podczas poszukiwania informacji trzeba „chodzić” po rekordach, a to może doprowadzić do zapętlenia. Modele hierarchiczne Hierarchia jest to pewne uporządkowanie przypominające drzewo. Jeżeli przyjmiemy węzeł głównykorzeń to będziemy mieli jego następniki, które będą się rozgałęziać aż dojdziemy do liści (rozwidlenia nie muszą być binarne). Wszystkie powiązania wyznaczają kierunek od poprzednika do następnika. Sprawia to, że nawigacja po takiej bazie jest stosunkowo prosta. Za pomocą modelu hierarchicznego można przedstawić każdy diagram związków encji, który reprezentowany jest tu przez zbiory drzew, czyli las. KORZEŃ 5 Modele logiczne baz danych Drzewo składa się z dwóch elementów: łuków i węzłów. Łuki reprezentują związki typy ojciecsyn, węzły natomiast są typami opisywanych obiektów. Drzewo ma uporządkowaną strukture tj. na każdym poziomie kolejność węzłów jest określona. Terminologia jest podobna jak w modelu sieciowym bo i są to właściwie bazy sieciowe, które mają specyficzne grafy. Istnieją tu pewne ograniczenia: nie ma związków n-m związki realizowane są jako wskaźniki tylko jeden rodzaj związku między dwoma typami obiektów dodawanie związków wymusz tworzenie z dodatkowych drzew hierarchii lub odsyłaczy do rekordów oryginału. 6 Modele logiczne baz danych 7