Bazy Danych
wykład IV
Jan Aleksander Wierzbicki
Właściwości sprzężenia (typ złączania wierszy)
Uwzględnienie tylko rekordów, dla których
połączone pola z obu tabel są równe
(złączenie wewnętrzne).
Np. pracownicy, którzy obsługiwali
wypożyczenia;
oraz wypożyczenia tylko obsługiwane
przez pracowników.
Uwzględnienie wszystkich rekordów z
tabeli nadrzędnej i tylko tych rekordów z
tabeli podrzędnej, dla których istnieje
powiązany z nimi rekord w tabeli
nadrzędnej (lewostronne złączenie
zewnętrzne).
Np. obejmuje również pracowników, którzy
nie obsługiwali wypożyczeń, ale nie
obejmuje wypożyczeń, które nie były
obsługiwane przez pracowników.
Uwzględnienie wszystkich rekordów z
tabeli podrzędnej i tylko tych rekordów z
tabeli nadrzędnej, dla których istnieje
powiązany z nimi rekord w tabeli
podrzędnej (prawostronne złączenie
zewnętrzne).
Np. obejmuje również wypożyczenia nie
będące obsługiwane przez pracowników
(ale już nie obejmuje pracowników, którzy
nie obsługiwali wypożyczeń).
Indeksy
Indeks służy do przyśpieszenia wyszukiwania
rekordów mając dane wartości w jednym lub więcej
pól. Dostęp do listy indeksów jest albo z menu
"Widok -> Indeksy" albo przez przycisk "Indeksy" z
paska narzędzi.
Każdy fakt przechowywany w bazie danych powinien
być wyrażalny w niej tylko na jeden sposób.
Normalizacja
– postacie normalne
Informacja o przedmiocie powinna być zapisana
tylko
w jednym miejscu, a nie przy każdym uczniu, który
uczy się danego przedmiotu.
Jeśli mamy informację o rodzicach każdej osoby, nie
potrzeba zapisywać informacji o dziadkach, bo ta
informacja daje się wyprowadzić z informacji
rodzicach.
Niektóre schematy
tabel są złe!
Pierwsza postać normalna
Każdy element tabeli musi być niepodzielny.
Wartość atrybutu jest niepodzielna – atomowa.
biologia, chemia
Lis
5n
geografia, chemia
Kot
4n
wf, przysposobienie
obronne
Sowa
3n
j.polski, historia
Kiwalsk
i
2n
matematyka, fizyka,
informat
Banach
1n
Nazwa przedmiotu
Nazwis
ko
Id_nau
cz
Lis
5n
Kot
4n
Sowa
3n
Kiwalsk
i
2n
Banach
1n
Nazwis
ko
Id_nauc
z
Biologia
biol
Historia
hist
Geografia
geog
chem
pol
inf
fiz
mat
Id_prz
ed
Chemia
J.polski
Informaty
ka
Fizyka
Matematy
ka
Nazwa
przed
biol
5n
chem
4n
geog
4n
hist
2n
pol
2n
mat
1n
inf
1n
fiz
1n
mat
1n
Prze
d
Nauc
z
KLUCZ = {Naucz, Przed}
8
8
Zbiór atrybutów A = {a
1
, a
2
,..,a
n
}
Nadklucz
- dowolny podzbiór atrybutów B z A taki,
że zachodzi zależność funkcyjna
B -> A
.
Wartość każdego atrybutu jest jednoznacznie
zdeterminowana przez wartości atrybutów zbioru B.
Jednym z nadkluczy jest zawsze zbiór wszystkich
atrybutów A.
Nadklucz
Kluczem
- nazywamy każdy minimalny
nadklucz
(nie zawierający w sobie żadnego innego
nadklucza).
Zależności funkcyjne
Id_naucz -> Nazwisko Id_przed -> Nazwa przedmiotu
Schematy tabel,
które są złe
Książki = {ISBN, Tytuł, Id_wydaw, Nazwa, Adres}
Klucz główny = {ISBN, Id_wydaw}
Kępy
Nasze
2n
Topolog
ia
89x48
Polna
Nauko
we
1n
Analiza
23s45
Polna
Nauko
we
1n
Algebra
3x45
Adres
Nazwa
Id_wyda
w
Tytuł
ISBN
Polna
Nauko
we
1n
Zadania
6865z
Zbory
Fizyczn
e
3n
Geomet
ria
456d
Kępy
Nasze
2n
Topolog
ia
89x48
Polna
Nauko
we
1n
Analiza
23s45
Polna
Nauko
we
1n
Algebra
3x45
Adres
Nazwa
Id_wyda
w
Tytuł
ISBN
Redundancja!
Problem
z aktualizacją!
Nie można wstawić wydawnictwa bez książki – klucz!
Adres zależy od
części
klucza – od atrybutu
Id_wydaw.
Zależności
częściowa
między atrybutami
tabeli
Książki = {ISBN, Tytuł, Id_wydaw, Nazwa, Adres}
Klucz główny = {ISBN, Id_wydaw}
Id_wydaw -> Adres
Problem:
próba umieszczenia w jednej encji dwóch różnych
rodzajów encji:
Książki = {ISBN, Tytuł}
Wydawnictwa = {id_wydaw, Nazwa, Adres}
Rozwiązanie – rozbicie schematu na dwie tabele
każda reprezentująca osobny typ obiektów – Książki,
Wydawnictwa.
Zadania
Analiza
Algebra
Tytuł
1n
6865z
1n
23s45
1n
3x45
Wydaw
ISBN
Zbor
y
Fizyczn
e
3n
Kępy
Nasze
2n
Poln
a
Nauko
we
1n
Adre
s
Nazwa
Id_wyda
w
Druga postać normalna
Schemat jest w pierwszej postaci normalnej.
Każdy atrybut (niekluczowy) zależy
funkcyjnie od całego klucza głównego
(a nie od części klucza).
Nauczyciele = {Id_naucz, Nazwisko, Nazwa_szkoły, Adres}
Brzozowa
Liceum nr 5
Lis
5n
Kwiatowa
Gimnazjum
nr 2
Kot
4n
Brzozowa
Liceum nr 5
Sowa
3n
Kwiatowa
Gimnazjum
nr 2
Kiwalski
2n
Kwiatowa
Gimnazjum
nr 2
Banach
1n
Adres
Nazwa
szkoły
Nazwisk
o
Id_nau
cz
Redundancja!
Problem
z aktualizacją!
Nie można wstawić szkoły bez nauczyciela – klucz!
Adres zależy od atrybutu Nazwa_szkoły, który nie jest
kluczem.
Wartość atrybutu Adres zależy przechodnio od
klucza:
Nauczyciele = {Id_naucz, Nazwisko, Nazwa_szkoły, Adres}
Zależność
przechodnia
między atrybutami tabeli
Nazwa_szkoły -> Adres
Kluczem jest atrybut Id_naucz.
Problem:
próba umieszczenia w jednej encji dwóch różnych
rodzajów encji:
Nauczyciel = {Id_naucz, nazwisko, id_szkoły}
Szkoła = {Id_szkoły, Nazwa, Adres}
Rozwiązanie – rozbicie schematu na dwie tabele
każda reprezentująca osobny typ obiektów –
Nauczyciele, Szkoła
Sowa
Kiwalski
Banach
Nazwis
ko
2s
3n
1s
2n
1s
1n
Id_szko
ły
Id_nau
cz
Brzozow
a
Liceum nr
5
2s
Kwiatow
a
Gimnazju
m nr 2
1s
Adres
Nazwa
Id
_szkoł
y
Id_szkoły -> Adres
Trzecia postać normalna
Atrybuty są w zależności funkcyjnej
jedynie od klucza głównego, nie ma
takiej zależności między innymi
kolumnami.
Schemat jest w drugiej postaci normalnej.
Nie ma zależności częściowych (chyba, że atrybut jest kluczowy*)
i przechodnich.
* Nie dotyczy - postać normalna Boyce’a-Codda
Interfejs użytkownika
• proste, intuicyjne posługiwanie
się bazą danych
• użytkownik - nie zna teorii bazy
danych
podstawowe elementy
• formularze
• raporty
Formularz
umożliwia:
• „graficzne” przedstawienie
wybranych danych
• ułatwiony wpis danych do tabel
• „jednoczesny” wpis danych do
wielu tabel
Formularz
pobiera dane z:
• tabeli (tabel)
• kwerendy
wybieramy pola
do sekcji szczegóły
etykieta
pole
prawy przycisk myszy
na elemencie
+ właściwości
Formularz
elementy formularza:
• pola
• etykiety
• sekcja szczegóły
• obszar formularza
• itp.
Ćwiczenia za 15
minut!!!
Hurra!!!!