Relacyjny model danych Wprowadzenie do systemów baz danych
Podstawowe wymagania stawiane modelowi danych Unikanie nadmiarowości danych (redundancji) – jedna informacja powinna być wpisana do bazy danych tylko jeden raz Problem powtarzających się grup Wypisując wiele faktur dla jednego odbiorcy, na każdej fakturze należy umieścić dane tego odbiorcy, w bazie danych dane odbiorcy powinny być zapisane tylko w jeden raz
Relacyjny model danych Opublikowany przez E.F. Codda w 1969 Wywodzi się z teorii zbiorów Jedyną strukturą danych jest RELACJA Relacja zapisywana jest w formie tabeli Relacja (tabela) spełnia zbiór zasad
Relacja w języku potocznym sprawozdanie z ... stosunek między (dwoma lub więcej) przedmiotami, pojęciami wielkościami itp., zależność między nimi droga pociągu ... Popularny słownik języka polskiego
Relacja (matematyka) Relacją n-argumentową nazywamy podzbiór iloczynu kartezjańskiego n zbiorów Relacja jest zwykle takim podzbiorem iloczynu kartezjańskiego, którego elementy spełniają pewien warunek, np. formułę zdaniową n zmiennych Intuicyjnie relacja oznacza związek pomiędzy elementami zbiorów Elementami n-argumentowej relacji są n-elementowe uporządkowane zbiory zwane n-elementowymi krotkami
Reguły, które musi spełniać relacja Każda relacja w bazie danych ma jednoznaczną nazwę Każda kolumna w relacji ma jednoznaczną nazwę w ramach jednej relacji Wszystkie wartości w kolumnie muszą być tego samego typu Kolejność kolumn w relacji nie jest istotna Każdy wiersz w relacji musi być różny Porządek wierszy nie jest istotny Każde pole leżące na przecięciu kolumny i wiersza powinno zawierać wartość atomową (w jednym polu relacji nie jest dozwolony zbiór wartości)
Terminologia Oryginalna dla modelu Powszechnie stosowana (podręcznikowa) Żargon informatyczny Obiektowa Relacja Tabela Tablica (Plik) Klasa Krotka Wiersz Rekord Obiekt (encja) Atrybut Kolumna Pole Właściwość
Tabela Tabela składa się z nagłówka (heading) i treści (body) – w tej formie jest najczęściej zapisywana jako plik Nagłówek tabeli – nazwy kolumn tabeli Treść tabeli – wiersze danych Liczba kolumn – stopień tabeli Liczba wierszy – liczebność tabeli
Dziedzina Dziedzina (domain) to zbiór wartości, z których pochodzą elementy pojawiające się w kolumnach tabeli Integralność dziedziny oznacza, że wartości atrybutów przyjmują tylko poprawne wartości Aby wymusić poprawne modyfikacje można użyć (w języku SQL) klauzuli CHECK
Klucz główny Klucz główny (primary key)to jedna lub więcej kolumn tabeli, w których wartości jednoznacznie identyfikują każdy wiersz w tabeli Klucz główny wymusza integralność encji Przykłady kluczy głównych (podstawowych) Imię + nazwisko + imię ojca + data urodzenia PESEL NIP Numer dowodu osobistego Numer paszportu Numer albumu
Właściwości klucza głównego Wartość klucza głównego musi być zawsze określona – nie może zawierać NULL Wartości klucza głównego muszą być unikatowe w obrębie klucza Poszczególne wiersze (krotki) rozpoznajemy po zawartości klucza głównego
Klucze obce Klucze obce są sposobem łączenia danych przechowywanych w różnych tabelach Klucz obcy (foreign key) jest kolumną lub grupą kolumn tabeli, która czerpie swoje wartości z tej samej dziedziny co klucz główny tabeli powiązanej z nią w bazie danych Klucz obcy identyfikuje wiersz w powiązanej tabeli
Przykład klucza obcego oceny studenci PID Przedmiot Ocena 2 J. angielski 5 J. rosyjski J. francuski J. hiszpański 4 3 J. niemiecki J. węgierski Nazwisko Imię PID Papkin Jan 1 Drozd Andrzej 2 Kowalski 3 Marek 4
Klucz obcy – związek jeden do wiele Diagram standardu Integration DEFinition (IDEF1X) MS Access Diagram MS SQL Server
Właściwości klucza obcego Wartość klucza obcego powinna wskazywać na istniejący wiersz w powiązanej tabeli albo być nieokreślona (NULL) Jeśli wartość klucza obcego różna od NULL nie wskazuje na istniejący wiersz w powiązanej tabeli mówimy, że naruszona jest integralność referencyjna bazy danych Klucz obcy odnosi się zwykle do klucza podstawowego innej tabeli, i identyfikuje jeden wiersz w tej tabeli
Symbol NULL NULL stosujemy wtedy, kiedy wartość atrybutu jest nieokreślona (nieznana) NULL nie porównuje żadnej informacji niezależnie od jej wartości NULL nie dobiera NULL – NULL nie jest ani równe, ani różne NULL NULL nie ma żadnej wartości Istnienie NULL zmienia logikę z dwuwartościowej (prawda, fałsz) na trójwartościową (prawda, fałsz, nieznane (NULL))
Tabela prawdy AND (i) – koniunkcja TRUE FALSE NULL
Tabela prawdy OR (lub) – alternatywa TRUE FALSE NULL
Integralność bazy danych Integralność encji – relacja musi mieć unikalny klucz główny, który powinien być unikatowy i nie zawierać wartości NULL – klucz główny uniemożliwia wystąpienie powtórzeń wierszy Integralność referencyjna – wszystkie wartości kluczy obcych odnoszą się do istniejącej krotki albo są NULL Integralność dziedziny - wymuszanie poprawnych wartości dziedziny – niektóre atrybuty nie są ze sobą powiązane logicznie, ale są powiązane w rzeczywistości
Kryteria relacyjności bazy danych Codd 1985 0. Każdy system, który pretenduje do miana systemu zarządzania relacyjnymi bazami danych, musi być w stanie zarządzać danymi wyłącznie dzięki swoim funkcjom relacyjnym Baza danych gromadzi wszystkie informacje wewnątrz krotek Każda wartość może być dostępna przez kombinację nazwy relacji, nazwy atrybutu i wartości klucza podstawowego tej krotki Wartości NULL wprowadzane są systematycznie Katalog bazy danych jest przechowywany wewnątrz jednej lub wielu relacji, które mogą być czytane przez autoryzowanych użytkowników System wdraża język zapytań System musi być zdolny do uaktualniania przez perspektywę System musi być zdolny do wstawiania, aktualizowania i usuwania grup krotek, nie tylko jednej krotki na raz
Kryteria relacyjności bazy danych Codd 1985 Programy, za pomocą których manipuluje się bazą danych, są niezależne od tego, jak baza jest fizycznie zorganizowana Programy, za pomocą których baza danych jest przetwarzana, są niezależne od tego, jak baza jest logicznie zorganizowana wewnętrznie Zasady integralności danych powinny być możliwe do zdefiniowania wewnątrz języka zapytań i przechowywane w katalogu, a nie w aplikacji Baza danych powinna działać tak samo, niezależnie od tego, czy pracuje na pojedynczej maszynie, czy jest rozproszona przez sieć Nie można użyć języka niższego rzędu do obalenia jedności zasad bazy danych Żaden z istniejących SZBD nie spełnia wszystkich kryteriów