Wykład nr 2 z Baz Danych część internetowa

Transkrypt

Wykład nr 2 z Baz Danych część internetowa
Wykład nr 2 z Baz Danych
część internetowa
Michał Bernardelli
28 marca 2008
Baza danych to zbiór danych zapisany na zewnętrznym nośniku informacji, który może zaspokoić potrzeby wielu użytkowników korzystających z niego selektywnie i w dogodnym dla siebie czasie.
Przykładowo książka nie jest bazą danych, bo nie można z niej korzystać selektywnie.
Zajmować się będziemy relacyjnymi bazami danych, to jest bazami danych opartych na skończonych
podzbiorach iloczynu kartezjańskiego (relacjach). Graficznie relacje możemy interpretować przy pomocy tabelek, których wiersze nazywane są często krotkami lub rekordami.
Przykład 1 Rozważmy następującą bazę danych złożoną z jednej tabelki:
indeks
111111
222222
333333
111111
333333
nazwisko
Kowalski
Malinowski
Wiśniewska
Kowalski
Wiśniewska
Tabela Studenci
imię
przedmiot
Jan
Programowanie
Rafał Analiza Matematyczna
Beata
Bazy Danych
Jan
Bazy Danych
Beata
Programowanie
ocena
5
4
4,5
5
3
Jest ona źle zaprojektowana, gdyż mogą wystąpić:
• redundancja (nadmiarowość) – jeżeli chcemy wstawić ocenę z kolejnego przedmiotu, to musimy
wpisać za każdym razem imię, nazwisko i numer indeksu.
• anomalia przy modyfikacji – jeżeli Pani Wiśniewska zmieni nazwisko, to musimy zmienić je w
każdym wierszu, w którym mamy zapisaną jej ocenę. Jest to bardzo kosztowna operacja.
• anomalia przy usuwaniu – usunięcie oceny z Analizy Matematycznej Pana Malinowskiego, powoduje, że wymazujemy wszystkie informacje o nim samym, a nie tylko o uzyskanej przez niego
ocenie.
Podajmy kilka definicji.
Zależność funkcyjna A1 , A2 , . . . , An → B1 , B2 , . . . , Bm oznacza, że jeśli atrybuty (kolumny)
A1 , A2 , . . . , An są zgodne, to zgodne są również B1 , B2 , . . . , Bm . Przykładowo z numeru PESEL (A1 )
wynika imię (B1 ), nazwisko (B2 ) i data urodzin (B3 ).
Nadklucz to taki zbiór atrybutów {A1 , A2 , . . . , An }, że wszystkie pozostałe atrybuty relacji są
zależne funkcyjnie od tych atrybutów. Nie może się zatem zdarzyć, że dwie różne krotki relacji były
zgodne dla wszystkich atrybutów Ai . Przykładowo nadkluczem w tabeli Studenci jest numer indeksu,
nazwisko i przedmiot, albo tylko numer indeksu, imię i przedmiot.
Klucz to minimalny (w sensie inkluzji) nadklucz. Przykładowo kluczem w tabeli Studenci nie jest
numer indeksu, nazwisko i przedmiot, ale jest numer indeksu i przedmiot. Klucze są często spotykane
1
w życiu codziennym: numer PESEL, INDEKSU, NIP czy numerki w kolejce do lekarza. Czasami
składają się z więcej niż jednego atrybutu. Często w takich sytuacjach warto jest dodać do naszej
relacji sztuczny klucz.
Przykład 2 Rozważmy relację {A, B, C, D} (tabelę o kolumnach A, B, C, D) z następującymi zależnościami funkcyjnymi między nimi:
F = {AB → C, C → AB, AB → D}.
Kluczem jest zbiór {A, B} lub {C} – nie jest on zatem wyznaczony jednoznacznie.
Przejdźmy do przedstawiania normalizacji bazy danych, czyli procesu mający na celu eliminację
anomalii wspomnianych w przykładzie 1. Sposoby ustalenia stopnia normalizacji bazy danych nazywane są postaciami normalnymi (ang. Normal Forms). Normalizacja zmienia tylko schemat
bazy danych. Twórca normalizacji – Edgar Frank Codd, wymyślił trzy postacie normalne: 1NF, 2NF
i 3NF. Obecnie istnieją jeszcze inne postacie, ale 3NF jest powszechnie uznawana za wystarczającą.
Większość baz danych w 3NF równocześnie jest postaci BCNF (ang. Boyce-Codd Normal Form).
Pierwsza postać normalna 1NF wymaga, aby atrybuty były niepodzielne. Przykładowo atrybut Adres można podzielić (i z reguły chcemy, aby był tak podzielony) na Ulicę, Numer_lokalu,
Kod_pocztowy i Miejscowość. To czy dany atrybut uznajemy za niepodzielny zależy od konkretnej
bazy danych i jej przeznaczenia.
Druga postać normalna 2NF oznacza, że relacja jest w pierwszej postaci normalnej oraz nie ma
zależności częściowych, przy czym z zależnością częściową X → A, gdzie A jest nazwą kolumny,
mamy do czynienia, gdy
(1) A 6∈ X, czyli A jest nietrywialna,
(2) X ⊂ klucz, czyli X zawiera się w kluczu, ale nie jest kluczem.
Przykład 3 Daną mamy relację R = {Z, M, P } i zbiór zależności funkcyjnych F = {Z → M }.
Kluczem jest zbiór atrybutów {Z, P }. Relacja ta nie jest w 2NF, gdyż mamy zależność częściową.
Wystarczy sprawdzić bezpośrednio, że warunki (1) i (2) są spełnione dla zależności Z → M .
Trzecia postać normalna 3NF oznacza, że relacja jest w pierwszej postaci normalnej oraz nie
ma przechodniości zależności atrybutów niekluczowych, czyli dla zależności funkcyjnej X → A nie
mogą zachodzić wszystkie poniższe warunki:
(1) A 6∈ X,
(2) A nie należy do żadnego klucza,
(3) X nie jest nadkluczem.
Przykład 4 Mamy daną relację R = {Z, M, P } i zbiór zależności funkcyjnych
F = {M → P, Z → M }.
Kluczem jest zbiór {Z}, a nadkluczami zbiory:
{Z}, {Z, P }, {Z, M }, {Z, M, P }.
Relacja ta jest w 2NF, ale nie jest w 3NF. Bezpośrednie sprawdzenie pokazuje, że warunki (1)-(3) są
spełnione dla zależności M → P .
2
Postać normalna Boyce’a-Codda BCNF oznacza, że relacja jest w pierwszej postaci normalnej
oraz nie ma zależności przechodnich, czyli dla zależności funkcyjnej X → A nie mogą zachodzić
wszystkie poniższe warunki:
(1) A 6∈ X,
(2) X nie jest nadkluczem.
Innymi słowy lewa strona każdej zależności nietrywialnej musi być nadkluczem.
Przykład 5 Mamy daną relację
R = {Kino, Miasto, Tytuł}
i zbiór zależności funkcyjnych
F = {Kino → Miasto; Tytuł, Miasto → Kino}.
Kluczem są zbiory
{Tytuł, Miasto}, {Tytuł, Kino}.
Relacja ta jest w 3NF, ale nie jest w BCNF ze względu na zależność Kino → Miasto.
Jako podsumowanie można przytoczyć wiersz:
Bez powtórzeń (1NF)
Dane zależą od klucza
Od całego klucza (2NF)
I tylko od klucza (3NF/BCNF)
Tak mi dopomóż Codd!
3

Podobne dokumenty