Transcript
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
Żargon informatyczny
Obiektowa
(podręcznikowa)
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 Nazwisko
Imię
PID
Papkin
Jan
1
Drozd
Andrzej
PID
Przedmiot
Ocena
2
J. angielski
5
2
J. rosyjski
5
2
J. francuski
5
2
J. hiszpański
4
3
J. angielski
3
3
J. niemiecki
4
4
J. węgierski
5
2
Kowalski
Jan
3
Papkin
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
TRUE
TRUE
FALSE
NULL
FALSE
FALSE
FALSE
FALSE
NULL
NULL
FALSE
NULL
Tabela prawdy OR (lub) – alternatywa TRUE
FALSE
NULL
TRUE
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
NULL
NULL
TRUE
NULL
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.
1. 2.
3. 4.
5. 6. 7.
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 9. Programy, za pomocą których baza danych jest przetwarzana, są niezależne od tego, jak baza jest logicznie zorganizowana wewnętrznie 10. Zasady integralności danych powinny być możliwe do zdefiniowania wewnątrz języka zapytań i przechowywane w katalogu, a nie w aplikacji 11. Baza danych powinna działać tak samo, niezależnie od tego, czy pracuje na pojedynczej maszynie, czy jest rozproszona przez sieć 12. Nie można użyć języka niższego rzędu do obalenia jedności zasad bazy danych 8.
Żaden z istniejących SZBD nie spełnia wszystkich kryteriów