Loading AI tools
Z Wikipedii, wolnej encyklopedii
Model relacyjny – model organizacji danych bazujący na matematycznej teorii mnogości, w szczególności na pojęciu relacji. Na modelu relacyjnym oparta jest relacyjna baza danych (ang. Relational Database) – baza danych, w której dane są przedstawione w postaci relacyjnej.
W najprostszym ujęciu w modelu relacyjnym dane grupowane są w relacje, które reprezentowane są przez tabele. Relacje są pewnym zbiorem rekordów o identycznej strukturze wewnętrznie powiązanych za pomocą związków zachodzących pomiędzy danymi. Relacje zgrupowane są w tzw. schematy bazy danych. Relacją może być tabela zawierająca dane teleadresowe pracowników, zaś schemat może zawierać wszystkie dane dotyczące firmy. Takie podejście w porównaniu do innych modeli danych ułatwia wprowadzanie zmian, zmniejsza możliwość pomyłek, ale dzieje się to kosztem wydajności.
Twórcą teorii relacyjnych baz danych jest Edgar Frank Codd. Postulaty te zostały opublikowane po raz pierwszy w 1970 roku w pracy A Relational Model of Data for Large Shared Data Banks[1]. Praca ta opisuje podstawowe zależności jakie mogą występować pomiędzy danymi trwałymi, oraz wprowadza główne założenia dotyczące modelu relacyjnego dla danych wraz z propozycją formalnych operatorów przeszukiwania danych. W 1972 roku, w pracy pt. Relational Completeness of Data Base Sublanguages Codd uszczegółowił opis modelu oraz przedstawił dwa modele formalne odpytywania (przeszukiwania) danych. Tu właśnie po raz pierwszy pojawiły się terminy algebra relacji oraz rachunek relacyjny[2]. Codd pokazał, że oba modele są równoważne.
W czasie kiedy Codd publikował swoje propozycje rozwijały się dwa inne modele danych: model sieciowy oraz model hierarchiczny. Na rynku baz danych dominowały głównie hierarchiczne bazy danych (m.in. IMS/360). Lata 70. XX wieku przypadają na rozkwit zarówno modelu sieciowego, jak i relacyjnego. W 1971 roku grupa CODASYL przygotowała standard dla modelu sieciowego, zaś w 1973 roku firma IBM przygotowała System R będący pierwszą implementacją zarówno modelu relacyjnego, jak i języka SEQUEL (później SQL). Z upływem czasu model relacyjny stawał się coraz bardziej popularny wśród osób zajmujących się badaniami nad przechowywaniem danych.
W roku 1979 firma Relational Software (później Oracle) wypuściła na rynek pierwszy komercyjny relacyjny system zarządzania bazą danych (RDBMS ang. Relational Database Management Systems). Od tego momentu model relacyjny stał się dominującym podejściem do przechowywania trwałych danych zaś ilość badań i opracowań wokół tego tematu wzrosła lawinowo.
Jednym z kluczowych problemów rozwijającego się modelu relacyjnego było podejście do brakującej informacji (np. nieznany numer telefonu, brak numeru mieszkania itp.). Początkowo proponowano kilka specjalnych wartości, które użytkownik mógłby wykorzystać do zaznaczenia takich informacji. Jednak w ostateczności, w 1979 roku, Codd wprowadził do modelu pojedynczą specjalną wartość NULL. Wprowadzenie tej wartości wiązało się m.in. z rozszerzeniem logiki dwuwartościowej operatorów porównania do logiki trójwartościowej (na każde pytanie o równość można odpowiedzieć „Tak”, „Nie”, „Nieznane”)
W dzisiejszym czasie funkcjonuje wiele spojrzeń na model relacyjny. Dwa główne podejścia to podejście formalne – opis modelu poprzez reguły matematyczne można opisywać na wiele różnych sposobów – oraz podejście intuicyjne – spojrzenie na model od strony czysto użytkowej.
W modelu relacyjnym każda relacja (prezentowana w postaci np. tabeli) posiada unikatową nazwę, nagłówek i zawartość. Nagłówek relacji to zbiór atrybutów, gdzie atrybut jest parą nazwa_atrybutu:nazwa_typu, zawartość natomiast jest zbiorem krotek (reprezentowanych najczęściej w postaci wiersza w tabeli). W związku z tym, że nagłówek jest zbiorem atrybutów nie jest ważna ich kolejność. Atrybuty zazwyczaj utożsamiane są z kolumnami tabeli. Każda krotka (wiersz) wyznacza zależność pomiędzy danymi w poszczególnych komórkach (np. osoba o danym numerze PESEL posiada podane nazwisko i imię oraz adres)
Każda relacja (tabela) posiada tzw. klucz główny (ang. primary key)[3]. Klucz ten jest unikatowym identyfikatorem w relacji i może być kombinacją kilku kolumn, często jednak obejmuje jedną kolumnę (jeden atrybut). Klucz ma za zadanie jednoznacznie identyfikować każdą krotkę (wiersz) – wartości w wyznaczonych kolumnach są jako zestaw niepowtarzalne w danej tabeli.
Innym rodzajem klucza jest tzw. klucz obcy (ang. foreign key). Jest to zbiór atrybutów jednej tabeli (relacji) wskazujący wartości klucza kandydującego innej tabeli. Służy do wskazywania zależności pomiędzy danymi składowanymi w różnych tabelach. Klucze w modelu relacyjnym służą m.in. do sprawdzania spójności danych w bazie. Głównie dotyczy to kluczy obcych, na które nałożony jest wymóg, że w tabeli wskazywanej musi istnieć wartość klucza wskazującego.
Dodatkowym elementem modelu relacyjnego jest zbiór operacji służących do przeszukiwania i manipulacji danymi. Od strony formalnej takie zbiory operacji kojarzone są z tzw. algebrą relacji oraz z rachunkiem relacyjnym. Od strony praktycznej najbardziej popularnym językiem zapytań dla modelu relacyjnego jest język SQL
Przedstawienie relacji w postaci tabeli jest jedynie pewną reprezentacją graficzną. Relację można również przedstawić w postaci zbioru punktów w przestrzeni n-wymiarowej, gdzie punkt reprezentuje krotkę w relacji składającej się z n atrybutów.
Cały model relacyjny jest oparty na matematycznym pojęciu relacji. W skrócie relacją n-członową (-arną) nazywamy dowolny podzbiór iloczynu kartezjańskiego pewnych zbiorów
W podejściu formalnym schematem R relacji nazywamy niepusty zbiór nazw atrybutów (w skrócie atrybutów) Każdemu atrybutowi przypisany jest zbiór wartości zwany dziedziną (domeną, typem danych) atrybutu Jest to nazwany i skończony zbiór wartości, jakie może przyjmować dany atrybut. Wartość określana jest mianem stopnia relacji R bądź arnością relacji R.
Instancja schematu relacji to relacja na zbiorze dziedzin atrybutów
Ponieważ każda relacja jest nierozłącznie związana ze swoim schematem relacji często można spotkać oznaczenie czytane jako „relacja typu ”. Może istnieć wiele relacji przyporządkowanych do danego schematu.
Krotką (n-tką) typu nazywamy uporządkowany ciąg wartości taki że
Zatem relacja typu to nic innego jak skończony zbiór krotek typu W konsekwencji w modelu relacyjnym krotki w danej relacji nie mogą się powtarzać, oraz ich kolejność nie ma znaczenia.
Schematem bazy danych jest skończony zbiór wszystkich schematów relacji Instancją schematu bazy (w skrócie bazą danych) jest zbiór wszystkich relacji
Klucz kandydujący w relacji jest podzbiorem zbioru atrybutów jednoznacznie identyfikującym każdą krotkę w Dodatkową własnością tego klucza jest jego minimalność – żaden podzbiór zbioru nie jest unikatowy dla wszystkich krotek w Klucz kandydujący zawierający więcej niż jeden atrybut nazywa się kluczem złożonym, zaś zawierający dokładnie jeden atrybut – kluczem prostym. Dla każdej relacji musi zostać wybrany dokładnie jeden z kluczy kandydujących na tzw. klucz główny.
Dla danej relacji podzbiór atrybutów zbioru określany jest mianem klucza obcego jeżeli spełnia następujące warunki:
W modelu relacyjnym wyróżniona jest specjalna ustalona wartość należąca do każdej dziedziny atrybutów. Służy ona do oznaczania brakującej (nieznanej, nieistniejącej) informacji.
Innym, nieco mniej powszechnym, podejściem jest traktowanie modelu relacyjnego jako modelu logiki pierwszego rzędu.
Niech będzie schematem relacji o arności Faktem nad nazywamy wyrażenie gdzie Relacją (instancją schematu) nad jest skończony zbiór faktów nad
Dla danego schematu bazy instancją bazy jest skończony zbiór będący sumą wszystkich relacji nad gdzie
Oprócz struktury danych na model relacyjny składają się również integralność i manipulacja.
Integralność to ograniczenie nakładane na bazę danych przez model relacyjny. Dwie podstawowe reguły integralności to integralność encji (wartość klucza głównego nie może być wartością NULL) oraz integralność odwołań (nie mogą istnieć niedopasowane wartości klucza obcego).
Ograniczenie redundancji danych dokonuje się w procesie przejścia do kolejnych postaci normalnych.
Na elementy manipulacyjne modelu składają się: zbiór operatorów relacyjnych (zwykle reprezentowany przez algebrę relacji bądź rachunek relacyjny) oraz relacyjny operator przypisania, pozwalający na przypisanie relacji wyniku powstałego z wyrażenia relacyjnego.
Algebra relacji to zbiór operatorów, które służą do manipulacji relacjami. Rezultatem działania, jak również argumentami tych operatorów są relacje. Operatory te można podzielić na dwie grupy: operacje na zbiorach oraz operatory zaprojektowane dla modelu relacyjnego
Operacje na zbiorach:
Operacje dla konkretnego modelu:
Obecnie istnieje wiele spojrzeń na algebrę relacji. W niektórych definiowane są dodatkowe operatory, które można wyprowadzić przez złożenie operatorów wspomnianych wyżej. W innych rodziny operatorów selekcji, projekcji i przemianowania są w uproszczeniu traktowane jako pojedyncze operatory.
Rachunek relacyjny został zaproponowany przez Codda jako deklaratywny sposób wyszukiwania informacji, podczas gdy algebra relacji jest podejściem bardziej proceduralnym. Rachunek relacyjny jest oparty na logicznym rachunku predykatów (funkcji zdaniowych). Na rachunek relacyjny składa się alfabet oraz zbiór reguł tworzenia zapytań.
Alfabet
Reguły tworzenia wyrażeń – poniższe konstrukcje są poprawnymi wyrażeniami rachunku relacyjnego
Przykład: Dla relacji Filmy(Tytuł, Reżyser, Aktor) przykładowym zapytaniem może być:
Przedstawiony powyżej rachunek to tzw. relacyjny rachunek krotek Codda wprowadzony w 1972. Stał się on podstawą do zbudowania języka SQL. Oprócz rachunku krotek istnieje również wprowadzony później relacyjny rachunek dziedzin będący wzorcem dla języka QBE. Wprowadzając rachunek relacyjny i algebrę relacji Codd pokazał, że są one wzajemnie równoważne[2].
Większość współczesnych relacyjnych baz danych korzysta z jakiejś wersji języka SQL pozwalającego wprowadzać zmiany w strukturze bazy danych, jak również zmiany danych w bazie i wybieranie informacji z bazy danych. Język ten opiera się na silniku bazy danych, który pozwala zadawać w języku SQL pewnego rodzaju pytania (kwerendy) i wyświetlać dane, które spełniają warunki zapytania. Zapytania SQL mogą także wykonywać operacje wstawiania danych, usuwania danych i ich aktualizacji. Język SQL zapewnia również zarządzanie bazą danych. Informacja o samej bazie przechowywana jest w postaci relacji (tabel) wewnątrz bazy danych.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.