Projektowanie bazy danych

advertisement
RELACYJNE BAZY DANYCH, SCHEMAT
RELACJI, SELEKCJA, PROJEKCJA
CEL NAUCZANIA:
Wykonywać obliczenia i opracowania graficzne z
wykorzystaniem programów komputerowych
Osiągnięcia:
Rozróżnić selekcję od projekcji. Wymienić typy
pól.
Ogólne zagadnienia relacyjnych baz danych
• Relacyjna baza danych oparta jest zwykle o
kilka tablic danych, które powiązane są ze
sobą przez pole o wspólnej nazwie.
Przykładem może być baza hurtowni,
zawierająca dane o klientach, towarach i
wystawionych fakturach.
Wszystkie te tabele pozwalają na
wprowadzanie danych, przechowywanie w
pamięci masowej, sortowanie, wyszukiwanie,
wydruk.
Relacyjne bazy danych
• Bazy relacyjne - prawie najpopularniejsze bazy danych.
W relacyjnych bazach danych wykorzystano teorię
algebry relacji.
Tabele składają się z rekordów, zaś rekordy z pól
ale różnica w stosunku do baz kartotekowych polega na tym,
że baza może zawierać kilka tabel (lub plików)
które to różnią się strukturą rekordów.
Pomiędzy rekordami jest określona pewna
relacja porządkująca.
Możliwe jest łączenie rekordów z różnych tabel,
jeśli rekordy takie mają przynajmniej jedno pole wspólne.
Relacja
• Relacja - podstawowowa forma organizacji danych w bazie
- zbiór rekordów (krotek)
Relacja - skończony zbiór krotek (rekordów)
r(A1,...,An) = {<a1,..,an>: a1 (- dom(A1), .. an (- dom(An)}
gdzie: r(A1,..,An) jest relacją
określoną na schemacie relacji R(A1,...,An)
A1, A1, …An – atrybuty (pola relacji)
Przykładową relacją jest
{<Kowalski, Jan, 35, 1200>, <Nowak, Piotr, 36,
2000>, <Zielińska, Anna, 25, 1400>}
Krotki relacji nie są uporządkowane,
można zmieniać ich kolejność.
Relacyjna bazą danych
• Relacyjną bazą danych nazywamy bazę danych w postaci
tabel połączonych relacjami.
Dane przechowywane w wielu tabelach, pomiędzy tabelami
tworzone są specjalne powiązania zwane relacjami.
• Relacje powiązania tworzone są pomiędzy odpowiednimi
polami rekordów różnych tabel.
Relacje tworzy się pomiędzy tabelami baz danych za pomocą
klucza podstawowego jednej tabeli i odpowiedniego
klucza obcego drugiej tabeli.
• Relacja - powiązanie miedzy tabelami Bazy Danych
za pomocą klucza podstawowego jednej tabeli
i klucza obcego drugiej tabeli
Baza danych: DANE i SCHEMAT
• Dane opisują cechy obiektu.
• Schemat jest opisem struktury przechowywanych danych oraz
powiązań wzajemnych między nimi.
• Przykładowe struktura informacji dot. grup studenckich:
1) Studenci
Tabela STUDENT (Nazwisko, NrIndeksu, Rok, Kierunek)
- schemat
Dane: Nowak, 18175, I, informatyka
Kowalik, 33573, II, telekomunikacja
2) Prowadzone wykłady
Tabela: WYKŁAD (Nazwa, Nr, Godziny, Prowadzący)
Dane: Języki programowania, CS201, 8, Misiak
Bazy danych, C8100, 8, Pilecki
3) Grupy studenckie
Tabela: GRUPA (NrGrupy, NrWykładu, Semestr, Rok)
Dane: 85, CS201, letni, 96
92, CS445, zimowy, 96
4) Oceny z zaliczeń modułów dydaktycznych
Tabela: OCENY (NrIndeksu, NrGrupy, NrWykładu, Ocena)
Dane: 18175, 92, CS100, 4
19551, 101, CS445, 5
Model relacyjny
• Bazy relacyjne
Prawie najpopularniejsza grupa baz danych.
Model wykorzystywany najczęściej przy projektowaniu baz danych.
Dane przechowywane w wielu tabelach, pomiędzy tabelami
tworzone są specjalne powiązania zwane relacjami.
• Przykład: Tabele: Pracownik, Zespół, Etat
Tabele i rekordy
• Dane przechowywane są w formie
strukturalnej.
• Każda informacja zapisywana jest w
podstawowym elemencie jakim jest rekord.
Rekordy są podzielone na pola.
• Każde pole ma swoją nazwę, wielkość oraz
definicję typu danych, jakie będą umieszczone.
• Główne typy pól: znakowe, numeryczne,
datownikowe, logiczne, notatnikowe.
Tabela, rekord, pole
• Tabelą w bazie danych nazywamy zbiór
rekordów opisujących obiekty
np. pracownicy zawierających informacje o
tych obiektach w sposób ujednolicony.
• Rekord – pojedynczy wiersz w tabeli.
• Pole - najmniejszą część rekordu, która
przechowuje jedną daną.
Tabela
• Tabela to zbiór powiązanych ze sobą danych.
Jest to układ poziomych wierszy
zwanych rekordami
i pionowych kolumn zwanych polami rekordu.
• Tabela jest identyfikowana przez nazwę.
• Przecięcie kolumny i wiersza tworzy pole.
Nazwa kolumny jest jednocześnie nazwą pola.
Baza danych
• Baza danych składa się z tabel,
tabele składają się z rekordów,
rekordy składają się z pól.
• Pola mogą przechowywać elementarne dane,
które są niepodzielne,
czyli zakładamy, że mniejszych jednostek
danych nie ma.
Typ danej (ang. data type)
•
•
•
•
•
•
•
•
•
•
•
znakowy (ang. character) – dana może przybierać tylko wartości znaków pisarskich
liczbowy (ang. number) – dana może przechowywać tylko liczby
logiczny (ang. logical) – dana może przybierać tylko dwie wartości: prawda, fałsz
(tak, nie)
data (ang. date) – dana może przyjmować postać daty i czasu
np. rok.miesiąc.dzień; godz:min:sek
alfanumeryczny (ang. alphanumeric) – dana może przybierać wartości znaków ASCII
oraz cyfry
numeryczny (ang. numeric) – wartościami danej mogą być tylko cyfry
i znaki: + (plus), - (minus).
walutowy (ang. currency) – dana może przyjmować wartości liczbowe
razem z symbolem waluty
notatnikowy (ang. memo) – dana może być oddzielnym zbiorem tekstowym
służącym do przechowywania dowolnych opisów.
binarny (ang. binary) – dana może być np. plikiem dźwiękowym lub filmowym.
graficzny (ang. graphic) – dana przechowuje grafikę np. rysunki.
obiektowy (ang. OLE) – dana przechowuje obiekty do których dostęp dokonuje się
za pomocą techniki OLE (ang. object linking and embeding), czyli obiektów
tworzonych przez inne aplikacje
Klucz relacji
• Klucz relacji - taki zbiór identyfikujący relacji, którego
żaden podzbiór nie jest zbiorem identyfikującym
relacji .
• Wyróżnia się klucze proste i złożone.
• Klucz jest kluczem prostym, jeśli zbiór identyfikujący
relacji jest zbiorem jednoelementowym,
w przeciwnym razie klucz jest złożony.
• W ogólności, w relacji można wyróżnić wiele kluczy,
które nazywamy kluczami potencjalnymi.
• Wybrany klucz spośród kluczy potencjalnych
nazywamy kluczem głównym.
Klucz podstawowy – primary key
• Aby w bazie możliwe było szybkie wyszukiwanie
i łączenie danych z tabel,
każdy rekord tabeli powinien zawierać pole
za pomocą którego byłby jednoznacznie
identyfikowany w bazie.
Pole tego typu nazywamy kluczem podstawowym.
• Rekord może być też identyfikowany na podstawie
kombinacji kilku pól
- klucz podstawowy wielopolowy
Klucz podstawowy - główny, klucz obcy
• Klucz podstawowy (ang. primary key) zwany też
kluczem głównym to jedno lub więcej pól,
których wartość jednoznacznie identyfikuje każdy
rekord w tabeli.
Taka cecha klucza nazywana jest unikatowością.
• Klucz podstawowy służy do powiązania rekordów w
jednej tabeli z rekordami z innej tabeli.
• Klucz podstawowy jest nazywany kluczem obcym,
jeśli odwołuje się do innej tabeli.
Na przykład, w bazie pracowników kluczem
podstawowym może być numer ewidencyjny
pracownika.
Klucz podstawowy jednopolowy, klucz obcy, klucz złożony
• Jeśli istnieje pole zawierające dane unikatowe, jak na przykład numer
katalogowy czy numer identyfikacyjny, można je zadeklarować jako klucz
podstawowy - single primary key
Jeśli jednak w polu tym powtarzają się wartości, klucz podstawowy nie
zostanie ustawiony. Aby znaleźć rekordy zawierające te same dane, należy
usunąć rekordy o powtarzających się wartościach bądź zdefiniować
wielopolowy klucz. podstawowy.
• Klucz podstawowy wielopolowy zwany też kluczem złożonym
(ang.composed key)
W sytuacji, gdy żadne z pól nie gwarantuje unikatowości wartości w nim
zawartych, należy rozważyć możliwość utworzenia klucza podstawowego
złożonego z kilku pól.
• Klucz obcy to nazwa pola, które w jednej tabeli jest kluczem
podstawowym a w drugiej jest polem łączącym te tabele.
Np. NRUcznia jest kluczem podstawowym w tabeli Uczniowie a w tabeli
Oceny jest kluczem obcym
Relacja - relation, typy relacji
• Po podzieleniu danych na tabele i zdefiniowaniu pól kluczy
podstawowych trzeba wprowadzić do systemu bazy danych
informacje na temat sposobu poprawnego łączenia
powiązanych danych w logiczną całość.
W tym celu definiuje się relacje między tabelami.
• Relacja - powiązanie miedzy parą tabel za pomocą klucza
podstawowego jednej tabeli i odpowiadającego mu klucza
obcego drugiej tabeli.
• Typy relacji:
– Relacja jeden – do - jednego
– Relacja jeden –do - wielu
– Relacja wiele – do - wielu
Relacja jeden – do - jednego
• W relacji jeden – do - jednego każdy rekord w tabeli A może
mieć tylko jeden dopasowany rekord z tabeli B,
i tak samo każdy rekord w tabeli B może mieć tylko jeden
dopasowany rekord z tabeli A.
• Ten typ relacji spotyka się rzadko, ponieważ większość
informacji powiązanych w ten sposób byłoby zawartych
w jednej tabeli.
• Relacji jeden – do - jednego można używać do podziału tabeli
z wieloma polami, do odizolowania części tabeli ze względów
bezpieczeństwa,
albo do przechowania informacji odnoszącej się tylko do
podzbioru tabeli głównej.
Relacja jeden – do - wielu
• Relacja jeden – do - wielu jest najbardziej
powszechnym typem relacji.
W relacji jeden – do - wielu
rekord w tabeli A może mieć wiele
dopasowanych do niego rekordów z tabeli B,
ale rekord w tabeli B ma tylko jeden
dopasowany rekord w tabeli A.
Relacja wiele – do - wielu
• W relacji wiele – do - wielu, rekord w tabeli A może mieć
wiele dopasowanych do niego rekordów z tabeli B
i tak samo rekord w tabeli B może mieć wiele dopasowanych
do niego rekordów z tabeli A.
• Jest to możliwe tylko przez zdefiniowanie trzeciej tabeli
(nazywanej tabelą łącza), której klucz podstawowy składa się
z dwóch pól z kluczy obcych z tabel A i B.
• Relacja wiele – do - wielu jest w istocie dwiema relacjami
jeden – do - wielu z trzecią tabelą.
Na przykład, tabele "Zamówienia" i "Produkty" są powiązane
relacją wiele – do - wielu zdefiniowaną przez utworzenie
dwóch relacji jeden – do - wielu z tabelą "Opisy zamówień".
Algebra relacji
• Relacyjny model BD został opracowany w oparciu o dziedzinę
matematyki zwanej algebrą relacyjną.
Twórcą modelu był amerykański matematyk E. F. Codd.
Dane są przechowywane w strukturach zwanych tabelami.
Tabele są podstawowymi obiektami BD.
Przechowują one dane wykorzystywane przez inne obiekty jak
np. zapytania, formularze czy raporty.
Tabela (table) - zbiór powiązanych ze sobą danych w BD,
przedstawiony w postaci poziomych wierszy zwanych
rekordami (krotki) i pionowych kolumn zwanych polami
rekordu.
Każde pole posiada unikatową nazwę w obrębie tabeli oraz
określony typ danych, np.
Nr, Imie, Nazwisko, Data_urodz, NrTelefon
Model baz danych relacyjnych charakteryzuje się
3 podstawowymi składowymi:
– relacyjnymi strukturami danych
– dostępnością operatorów algebry relacyjnej (do tworzenia,
poszukiwania i modyfikowania danych)
– ograniczeniami integralnościowymi
• Podstawową strukturą danych modelu relacyjnego jest
relacja - podzbiór iloczynu kartezjańskiego wybranych dziedzin
(tj. zbiorów dopuszczalnych danych),
przedstawiona w postaci 2-wymiarowej tablicy.
• Relacja - skończony zbiór krotek - typles,
posiadających taką samą strukturę danych i różne wartości,
przedstawionych w postaci wierszy tablicy.
• Każda krotka zawiera wartość co najmniej jednego atrybutu
o określonej dziedzinie,
przedstawionego w postaci kolumny tablicy.
Własności relacji:
•
•
•
•
•
wszystkie krotki są różne
atrybuty różne
kolejność krotek nie ma znaczenia
kolejność atrybutów nie ma znaczenia
wartości atrybutów są atomowe.
Język deklaratywny: DDL, DML
• Do operowania na danych relacyjnej bazy używa się
zwykle języka deklaratywnego (nieproceduralnego),
który składa się z 2 komponentów:
• języka definicji danych (DDL) - tworzenie,
modyfikacja i usuwanie relacji, struktur na bazie
relacji
• języka manipulowania danymi (DML) wyszukiwanie informacji, na podstawie warunków
selekcji, wstawianie nowych krotek do relacji,
modyfikowanie i usuwanie
Perspektywa view
• Strukturą pochodną do relacji jest
perspektywa - view - okno przez które
odczytujemy lub modyfikujemy dane w relacji
lub zbiorze relacji.
• Perspektywy stosujemy w celu:
– ograniczenia dostępu do relacji bazy danych
– uproszczenia zapytania
– zapewnienia niezależności danych w stosunku do
aplikacji i zapytań ad hoc.
Operacje na relacjach
• Operatory relacyjne:
– selekcji - wybór krotek spełniających
określone warunki - podzbiór poziomy
– projekcji - określenie relacji do wybranych
atrybutów - podzbiór pionowy
– połączenia - łączenie krotek wielu relacji
– klasyczne operatory teorii mnogości:
suma mnogościowa,
iloczyn kartezjański itp.
Operacja projekcji - podzbiór pionowy
• Operacją projekcji relacji r(A1,...,An)
na zbiorze atrybutów X=(Ai,..,Aj),
co zapisujemy Px r(A1,...,An),
nazywamy przekształcenie relacji r(A1,...,An)
w relację wynikową postaci:
Px r(A1,...,An) = {t[X] : t(- r(A1,...,An)}
• Operacja projekcji umożliwia utworzenie
"pionowego” podzbioru relacji
przez wybór określonych atrybutów (pól).
Przykład projekcji
Operacja selekcji
• Operacja selekcji - wybór krotek spełniających
określone warunki - podzbiór poziomy
• Operacją selekcji relacji r(A1,...,An)
względem kryterium selekcji E,
co zapisujemy sEr(A1,...,An),
nazywamy przekształcenie relacji r(A1,...,An)
w relację wynikową postaci
sEr(A1,...,An) = {t : t(- r(A1,...,An) i E(t) = prawda}
• Operacja selekcji umożliwia utworzenie "poziomego"
podzbioru relacji przez wybór krotek (rekordów)
spełniających określony warunek.
Przykład selekcji
"Z
relacji KIEROWNICY_DZIALOW
wybierz informacje o kierownikach tych działów,
których identyfikatory Id_Dzialu są mniejsze lub równe 3
i zarobki są większe lub równe 2000".
Operacja połączenia, iloczyn kartezjański
• Operacja połączenia polega na scaleniu odpowiednich
krotek (rekordów) 2 różnych relacji,
pod warunkiem spełnienia warunku logicznego q
nałożonego na atrybuty połączeniowe.
• Warunkiem połączenia - równość atrybutów w obu relacjach
Np. może być operacja połączenia PRACOWNICY - WYDZIALY,
gdzie : Id_Wydzialu = Id_Wydzialu
• Iloczyn kartezjański
Umożliwia konkatenację krotek 2 relacji lub więcej,
w taki sposób, że każda krotka pierwszej relacji jest łączona
z każdą krotka drugiej relacji
Projektowanie bazy danych - etapy
Dobry projekt jest podstawą utworzenia bazy danych.
Etapy projektowania bazy danych:
1. Określenie celu, któremu ma służyć BD - na tej podstawie jakie
zagadnienia będą w bazie - tabele i jakie informacje - pola
2. Określenie tabel - najtrudniejsze w procesie projektowania BD
Podstawowe zasady projektowania:
– ta sama informacja nie może być wprowadzana wielokrotnie do
jednej lub kilku tabel
– każda tabela powinna mieć informacje tylko na jeden temat
3. Określenie pól w tabelach
4. Przypisanie polom jednoznacznych wartości
5. Określenie relacji między tabelami
6. Wprowadzenie danych i utworzenie i innych obiektów bazy danych
Projektowanie bazy danych
• Punktem wyjścia projektowania są relacje wymagane przez
użytkowników a właściwie informacje zebrane przez projektanta
o wymaganych atrybutach bazy danych,
celem jest natomiast zdefiniowanie schematów relacji, które mają
być przechowywane w bazie danych.
• Trzeba tak zaprojektować rozdział zbioru atrybutów na schematy
relacji, aby uzyskać pewne pożądane właściwości bazy danych.
Niewłaściwe zaprojektowanie schematów relacji może być
przyczyną dublowania się danych, ich niespójności i anomalii
podczas ich aktualizowania.
• W ramach projektowania schematów baz danych,
najistotniejszą czynnością jest normalizacja relacji,
czyli doprowadzenie relacji do odpowiedniej postaci normalnej.
Normalizacja. Pierwsza postać normalna
• Pierwsza postać normalna jest immanentną cechą relacji,
gdyż wymagania tej postaci są zawarte w definicji relacji.
Postać normalizacji polega w tym przypadku na
doprowadzeniu określonego zbioru danych do postaci relacji.
• Mając bazę danych złożoną z relacji w pierwszej postaci
normalnej, jest się narażonym na wszystkie niekorzystne
zjawiska wymienione wyżej,
dlatego należy doprowadzić relacje do kolejnych postaci
normalnych.
• Proces normalizacji polega na odpowiednim podziale relacji
na mniejsze, w wyższej postaci normalnej.
Pierwsza postać normalna relacji
• Relacja jest w pierwszej postaci normalnej, jeżeli każda wartość atrybutu w
każdej krotce tej relacji jest wartością elementarną, czyli nierozkładalną.
Z definicji pierwszej postaci normalnej relacji wynika,
że każdemu elementowi relacji znajdującemu się na przecięciu dowolnej krotki i
dowolnego atrybutu odpowiada pojedyncza wartość, a nie zbiór wartości.
Druga i trzecia postać normalna
• Druga postać normalna:
Dana relacja jest w drugiej postaci normalnej, jeśli każdy
atrybut tej relacji nie wchodzący w skład żadnego klucza
potencjalnego jest w pełni funkcjonalnie zależny od wszystkich
kluczy potencjalnych.
W celu uzyskania drugiej postaci normalnej należy podzielić relację na
zbiór takich relacji, których wszystkie atrybuty będą w pełni funkcjonalnie
zależne od kluczy.
• Trzecia postać normalna relacji
Dana relacja jest w trzeciej postaci normalnej,
jeśli jest ona w drugiej postaci normalnej i każdy jej atrybut
nie wchodzący w skład żadnego klucza potencjalnego nie jest
przechodnio funkcjonalnie zależny od żadnego klucza
potencjalnego tej relacji.
Aby uzyskać trzecią postać normalną relacji, której atrybuty pozostają w
przechodniej zależności funkcjonalnej, należy podzielić ją na 2 relacje.
Podział danych na tabele i klucze w relacyjnych
bazach danych – normalizacja baz danych
• W modelu relacyjnym dane wewnątrz bazy są
dzielone między tabele.
Podział nazywamy normalizacją baz danych.
W najprostszym przypadku baza danych może
sie składać tylko z jednej tabeli.
Przy złożonych danych mogą wystąpić
niepożądane zjawiska utrudniające lub
uniemożliwiające poprawne funkcjonowanie
bazy.
Przykład normalizacji
• Baza danych z jedną tabelą:
Uczen_Wypozyczenia (Imie_Ucznia, Nazwisko_Ucznia, Klasa
ImieAutora, NazwAutora, Tytuł, Wydawnictwo DataWypozycz,
DataOddania)
• W takiej prostej bazie danych z jedną tabelą można zauważyć
zjawisko redundendancji, czyli wielokrotnego powtarzania sie
pewnych danych w bazie.
• Np. jeśli ten sam uczeń wypożyczy kilka książek, to w każdym
rekordzie pojawią się te same dane ucznia.
Gdy np. popełnimy błąd w nazwisku to musimy poprawić
osobno w każdym rekordzie dot. tego ucznia.
Gdy uczeń odda wszystkie książki to usuwając rekordy tracimy
dane o uczniu. Później trzeba od nowa wprowadzić.
Baza danych po normalizacji
• Baza danych z wieloma tabelami.
Model tej samej Bazy Danych, ale dane zostały
podzielone na 3 tabele:
– Uczniowie (IDUcznia, IMUcznia, NazwUcznia,
Klasa)
– Ksiazki (IDKsiazki, ImAutor, NazwAutor, Tytiul,
Wydawn)
– Wypozyczenia (IDwypoz, IDUcznia, IDKsiazki,
DataWypoz, DataZwrotu)
Systemy relacyjnych baz danych
• Do najczęściej spotykanych profesjonalnych
systemów relacyjnych baz danych należą:
– ORACLE Universal Server
– DB2 Universal Database firmy IBM
– Informix Dynamic Server IBM
– PostgreSQL
– SQL Anywhere Studio (Sybase)
– Microsoft SQL Server
W komputerach osobistych popularne systemy to:
Access (Microsoft), FoxPro, Paradox i dBase (dBase Inc.)
oraz MySQL (firmy MySQL AB)
Download