Laboratorium 2 – Podstawy relacyjnych baz danych

Transkrypt

Laboratorium 2 – Podstawy relacyjnych baz danych
Laboratorium 2 – Podstawy relacyjnych baz danych
RDBMS (ang. Relational Database Management System) – system zarządzania relacyjnymi bazami danych. W polskiej
terminologii używa się skrótu SZBD (System Zarządzania Bazą Danych).
Baza danych jest faktycznie zbiorem struktur danych służących do organizowania i przechowywania danych. W każdym
modelu danych, i w konsekwencji w każdym SZBD, musimy mieć do dyspozycji zbiór reguł określających wykorzystanie
takich struktur danych w aplikacjach baz danych. Tworząc definicję danych używamy wewnętrznych struktur danych modelu
danych z myślą o konkretnym zadaniu.
Relacje
Jest tylko jedna struktura danych w relacyjnym modelu danych - relacja. W związku z tym, że pojęcie relacji jest
matematyczną konstrukcją, relacja jest tabelą, dla której jest spełniony następujący zbiór zasad:
• Każda relacja w bazie danych ma jednoznaczną nazwę. Dwuwymiarowa tabela jest matematycznym zbiorem,
a matematycznie zbiory muszą być nazywane jednoznacznie.
• Każda kolumna w relacji ma jednoznaczną nazwę w ramach jednej relacji. Każda kolumna relacji jest również zbiorem
i dlatego powinna być jednoznacznie nazwana.
• Wszystkie wartości w kolumnie muszą być tego samego typu (co wynika z podpunktu 2).
• Porządek kolumn w relacji nie jest istotny. Schemat relacji - lista nazw jej kolumn - jest również matematycznym
zbiorem, a elementy zbioru nie są uporządkowane.
• Każdy wiersz w relacji musi być różny. Innymi słowy, powtórzenia wierszy nie są dozwolone w relacji.
• Porządek wierszy nie jest istotny. Skoro zawartość relacji jest zbiorem, to nie powinno być określonego porządku
wierszy relacji.
• Każde pole leżące na przecięciu kolumny/wiersza w relacji powinno zawierać wartość atomową. To znaczy, zbiór
wartości nie jest dozwolony na jednym polu relacji.
W terminologii baz danych używa się następującej terminów: kolumny tabeli to atrybuty, wiersze tabeli to krotki lub encje,
liczba kolumn w tabeli to stopień tabeli, liczba wierszy to liczebność tabeli. Na przecięciu wiersza i kolumny jest pole,
w którym jest określona wartość.
Klucze główne (podstawowe)
Każda relacja musi mieć klucz główny. Dzięki temu możemy zapewnić, aby wiersze nie powtarzały się w relacji. Klucz
główny to jedna lub więcej kolumn tabeli, w których wartości jednoznacznie identyfikują każdy wiersz tabeli. W każdej tabeli
może istnieć wiele kluczy kandydujących. Klucz kandydujący to kolumna lub zbiór kolumn, które mogą występować jako
jednoznaczny identyfikator wierszy w tabeli. Klucz główny jest wybierany ze zbioru kluczy kandydujących.
Uwaga: jeżeli tabela nie posiada odpowiedniej kolumny, lub zbioru kolumn, dla utworzenia klucza głównego można dodać
nową kolumnę zawierającą numer wiersza, co gwarantuje jednoznaczność.
Każdy klucz kandydujący, a więc także każdy klucz główny, musi mieć dwie właściwości. Musi być jednoznaczny i nie może
mieć wartości NULL (oznaczającej brak wartości).
Dziedziny
Podstawową jednostką danych w relacyjnym modelu danych jest element danych (np.: numer pracownika, nazwisko
wykładowcy, data urodzenia). Takie elementy danych są nierozkładalne lub atomowe. Zbiór takich elementów danych tego
samego typu nazywamy dziedziną. Na przykład dziedziną numerów pracowników jest zbiór wszystkich możliwych numerów
pracowników. Dziedzinami są więc zbiory wartości, z których pochodzą elementy pojawiające się w kolumnach tabeli.
Klucze obce
Klucze obce są sposobem łączenia danych przechowywanych w różnych tabelach. Klucz obcy 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.
Wartość NULL
W systemach relacyjnych wprowadzamy specjalną wartość, aby wskazać niepełną lub nieznaną informację - wartość NULL.
Ta wartość, różna od zera i spacji, jest szczególnie użyteczna przy powiązaniu klucza głównego i obcego. Pojęcie wartości
NULL nie jest do końca akceptowane (choćby przez autora relacyjnych baz danych Codda), ponieważ zaburza logikę
dwuwartościową (prawda, fałsz) wprowadzając wartość trzecią: nieznane. W praktyce jednak wartość ta jest stosowana.
Ćwiczenie 1
Otwórz plik przyklad1.mbd (oceny z egzaminów końcowych). Zapoznaj się z jego zawartością i odpowiedz na pytania:
a) Co należy zrobić, aby studentowi x217589 wpisać ocenę 4,5 z Logiki? Z jakim zjawiskiem mamy wówczas do czynienia?
b) Załóżmy, że studentka Magda Zwad (x202469) zmieniła miejsce zamieszkania, i mieszka teraz we Wrocławiu na ulicy
Mokrej 16/8. Co się stanie jeśli nie poprawimy wszystkich rekordów?
c) Ta sama studentka zdecydowała się podać swój adres email. Z jakiego rodzaju anomalią tutaj możemy się spotykać?
d) Załóżmy, że studentowi x217550 anulowano ocenę (kasujemy cały rekord). Co się wtedy dzieje?
e) Czy można wprowadzić dane o studencie, nie mają informacji o przynajmniej jednej jego ocenie?
Zaproponuj rozwiązanie. Uzasadnij swój wybór.
Relacje między tabelami
Gdy definiujesz klucze główne i klucze obce, masz do czynienia z relacjami. Przez relacje rozumiemy zasady obsługiwane na
poziomie silnika bazy danych.
Wyróżnia trzy różne typy relacji:
relacja jeden-do-jednego
Dwie tabele łączy relacja jeden-do-jednego, gdy każdemu wierszowi z jednej tabeli przyporządkowany jest co najwyżej
jeden wiersz z drugiej tabeli.
relacja jeden-do-wielu
Najpopularniejszy typ relacji, relacja jeden-do-wielu, występuje wtedy, gdy tabela ma wiele (lub nie ma w ogóle)
powiązanych rekordów w drugiej tabeli.
relacja wiele-do-wielu
O relacji wiele-do-wielu mówimy wówczas, gdy każdemu wierszowi z jednej tabeli odpowiada wiele wierszy w drugiej
tabeli, a każdemu wierszowi z drugiej tabeli odpowiada wiele wierszy w pierwszej. Jedynym sposobem na
przedstawienie w Accessie relacji wiele-do-wielu jest użycie tabeli „łączącej”, w której jako klucze obce znajdują się
klucze główne obu tabel.
Integralność danych
Integralność danych zapewniają reguły integralności. W relacyjnym modelu danych istnieją dwa rodzaje wewnętrznych reguł
integralności:
• integralność encji dotyczy kluczy głównych. Jest reguła integralności, która mówi, że każda tabela musi mieć klucz
główny, i że kolumna lub kolumny wybrane jako klucz główny powinny być jednoznaczne i nie zawierać wartości NULL
oraz, co jest bezpośrednią konsekwencją reguły integralności encji, zabronione są powtórzenia wierszy
• integralność referencyjna dotycz kluczy obcych. Reguła integralności referencyjnej mówi, że każda wartość klucza
obcego może znajdować się tylko w jednym z dwóch stanów. Zazwyczaj stan rzeczy jest taki, że wartość klucza obcego
odwołuje się do wartości klucza głównego w tabeli bazy danych. Czasami i ten fakt zależy od zasad związanych z
organizacją, wartość klucza obcego może być NULL. W tym wypadku jawnie stwierdzamy, że nie ma związku między
reprezentowanymi obiektami w bazie danych albo, że ten związek jest nieznany
Utrzymanie integralności referencyjnej w relacyjnej bazie danych nie ogranicza się tylko do określenia, czy klucz obcy może
być NULL, czy nie. Obejmuje również określanie więzów propagacji, które określają, co powinno się stać z powiązaną tabelą,
gdy modyfikujemy wiersz lub wiersze w docelowej tabeli. Wówczas powinno określić się, jak mamy postępować z usuwaniem
docelowych i powiązanych krotek dla każdego związku między tabelami w naszej bazie danych.
Istnieją trzy możliwości:
• Ograniczone usuwanie (Restricted).
• Kaskadowe usuwanie (Cascades).
• Wstaw NULL przy usuwaniu (Nullifies).
Ćwiczenie 2
Otwórz plik przyklad2.mbd. Zapoznaj się z jego zawartością i odpowiedz na pytania:
a) Które kolumny w poszczególnych tabelach są kluczami głównymi, a które kluczami obcymi?
b) Jakie czynności należy zrobić, aby móc wprowadzić dane o studencie zamieszkałym w Oleśnicy?
c) Jakie są relacje między poszczególnymi tabelami? Jak można je zmienić?
d) W których kolumnach poszczególnych tabel dopuszcza się wartości NULL?
e) Jakiego typu są poszczególne kolumny? Czy można coś tu zmienić?
f) Czy możesz usunąć z tabeli ‘miasto’ rekord z Wrocławiem? Uzasadnij odpowiedź.
g) Kto ma największa średnią na 3 roku studiów?
h) Jak jest średnia ocen dla Ekonomii?
Ćwiczenie 3
W pliku przykład2.mdb wykonaj następujące operacje:
a) wprowadź dane o nowej studentce: x102550; Anna Nowak (2 rok); Oleśnica; ul. Krótka 7a; [email protected]
b) wykasuj dane o studencie: x215550 (Grzegorz Mrófka) – jakie czynności należy wykonać?
c) dopisz (jeśli nie jest to możliwe, to wyjaśnij dlaczego) studentce Sylwii Grutka oceny: Algebra (3,5), Analiza (5,0),
Logika (3,0), Ekonomia (5,0)
Zadanie domowe
Korzystając z pliku pojazdy.mdb określ schemat bazy i relacje miedzy tabelami. Wskaż klucze główne i klucze obce.
Odpowiedz na następujące pytania:
a)
Ilu jest właścicieli samochodów mieszkających we Wrocławiu?
b)
Ile jest samochodów zarejestrowanych między 5 stycznia 1997, a 20 marca 1998?
c)
Ile jest samochodów koloru białego, których właściciele mieszkają w Głogowie?
d)
Kto jest właścicielem najstarszego samochodu?
e)
Jaka jest suma strat powstała w wypadkach w 1992 roku?
f)
Podaj imię i nazwisko osoby, która 1 września 1989 miała wypadek.