Wykład 1
Prowadzący: dr Paweł Drozda
Konsultacje
wtorek 12:30 – 14:00
Dyżur
wtorek 11:00 – 12:30
Zaliczenie ćwiczeń
Projekt bazy danych (MySQL lub Oracle)
dr P. Drozda
Wprowadzenie
Relacyjny model danych
Modelowanie baz danych (diagramy związków encji)
Przekształcanie modelu związków encji do modelu relacyjnego
Normalizacja
Język baz danych SQL
Transakcje, Indeksy
Zarządzanie uprawnieniami
Wyzwalacze
dr P. Drozda
J. Ullman, J. Widom „Podstawowy wykład z systemów baz danych”
http://wazniak.mimuw.edu.pl
P. Beynon-Davies „Systemy baz danych”
L. Banachowski „Bazy Danych – Tworzenie Aplikacji”
Conolly, Begg „Systemy Baz Danych”
Date „Wprowadzenie do Systemów Baz Danych”
Wykłady Stanford University – www.coursera.org
dr P. Drozda
Podstawowe pojęcia
System zarządzania bazami danych (DBMS)
Właściwości baz danych
Modele danych
dr P. Drozda
Baza danych – zbiór informacji opisujący wybrany fragment
rzeczywistości. Np. Dla sklepu: dane dotyczące sprzedawanych towarów w
sklepie, klientów sklepu, pracowników, zamówień
Schemat baz danych – określa w jaka powinna być struktura danych oraz
w jaki sposób dane są powiązane
System zarządzania bazą danych (DBMS) – zbiór narzędzi pozwalający
na dostęp oraz na zarządzanie jedną lub wieloma bazami danych
System baz danych – baza danych + DBMS
Model danych – zbiór ogólnych zasad posługiwania się danymi
dr P. Drozda
System Baz Danych
Aplikacja
System
Bazy danych
DBMS
Aplikacja
Aplikacja
Schemat
Baza
danych
dr P. Drozda
Modyfikacja
schematu
Zapytania
Aktualizacje
Procesor
zapytań
Moduł zarządzania
transakcjami
Moduł zarządzania
pamięcią
Dane
Metadane
dr P. Drozda
Moduł zarządzania pamięcią
o
o
przechowuje dane o miejscu zapisania plików bazy
danych na dysku
Obsługuje pamięć operacyjną (obsługiwane bloki z
dysku przydzielane do pamięci operacyjnej)
dr P. Drozda
Procesor zapytań
o
Przekształca zapytanie lub operację na bazie danych
(wyrażone np. w SQL) w ciąg poleceń żądających
określonych danych
Moduł zarządzania transakcjami
o
Gwarantuje poprawność i kompletność wykonania
wszystkich transakcji (jedno lub więcej zapytań
stanowiące grupę zadań do wykonania w jednym
ciągu)
dr P. Drozda
Masywny – możliwość przechowywania TBs
Trwały – dane nie znikają
Bezpieczny – odporny na awarię
Wielu użytkowników – kontrola wielodostępu
dr P. Drozda
Wygodny – niezależny od danych, wysokopoziomowy
język dostępu do danych
Efektywny – nawet tysiące zapytań na sekundę
Niezawodny – ponad 99% dostępności
dr P. Drozda
Współdzielenie danych – wielu użytkowników tej
samej bazy
Integracja danych – baza nie powinna mieć
powtarzających się bądź zbędnych danych
Integralność danych – dokładne odzwierciedlenie
obszaru analizy
Trwałość danych – dane przechowywane przez pewien
czas
dr P. Drozda
Bezpieczeństwo danych – dostęp do bazy lub jej części
przez upoważnionych użytkowników
Abstrakcja danych – dane opisują tylko istotne aspekty
obiektów świata rzeczywistego
Niezależność danych – dane niezależnie od aplikacji
wykorzystujących te dane
dr P. Drozda
Dla każdego modelu należy określić
Definicja danych
Operowanie danymi
Integralność danych
dr P. Drozda
Modele historyczne (klasyczne)
o Sieciowy
o Hierarchiczny
Relacyjny model danych
Obiektowy model danych
dr P. Drozda
Relacja – dwuwymiarowa tabela, jedyna struktura
danych w modelu relacyjnym
Każda relacja posiada atrybuty – kolumny. Opisują
dane umieszczane w relacji
Schemat relacji – nazwa relacji wraz z atrybutami
Przykład schematu: Miasto (id, nazwa, id_regionu)
Krotki – wiersze relacji zawierające dane. Każdy
atrybut ma swój odpowiednik w krotce
dr P. Drozda
jednoznaczna nazwa relacji
jednoznaczne nazwy kolumn (atrybutów) relacji
ten sam typ wartości w jednej kolumnie
porządek kolumn w relacji nieistotny
niedozwolone powtórzenia wierszy
nieistotny porządek wierszy (krotek)
wartości atomowe w polach relacji
dr P. Drozda
STUDENCI
Nr_indeksu
Nazwisko
Imię
Adres
1234
Kowalski
Jan
Akacjowa 8
2134
Nowak
Piotr
Dębowa 4
4321
Maliniak
Stefan
Bukowa 4
3298
Grabowska
Janina
Brzozowa 1
spełnia reguły
ZALICZENIA
Id_indeksu Id_indeksu
Ocena
Przedmiot
1234
(1234), (3214)
5
Bazy danych
3211
(3211), (4327)
b. dobry
Bazy danych
3211
(3211), (4327)
b. dobry
Bazy danych
dr P. Drozda
nie spełnia reguł
każda relacja musi posiadać klucz główny
jedna lub więcej kolumn identyfikujących jednoznacznie
każdy wiersz tabeli
Klucz kandydujący – atrybut lub zbiór atrybutów
identyfikujących wiersze tabeli (musi być jednoznaczny i
nie zawierać wartości null)
Klucz główny wybierany spośród kluczy kandydujących
dr P. Drozda
Dziedzina – zbiór wszystkich możliwych wystąpień
atrybutu (np. ocena_z_egzaminu wartości od 2 do 5 –
dziedzina 2-5) – każdy atrybut posiada dziedzinę
Klucz obcy – kolumna bądź kolumny będące kluczem
głównym w innej tabeli, sposób łączenia tabel (np.
numer studenta w tabeli Studenci i w tabeli
Zaliczenia)
Wartość null – nieznana informacja (np. brak numeru
telefonu)
dr P. Drozda
STUDENCI
Nr_indeksu
Nazwisko
Imię
Adres
Klucz
1234
Kowalski
Jan
Akacjowa 8
główny
2134
Nowak
Piotr
Dębowa 4
4321
Maliniak
Stefan
Bukowa 4
3298
Grabowska
Janina
Brzozowa 1
Klucz główny
ZALICZENIA
Id_indeksu Ocena
Przedmiot
Klucz
1234
5
Bazy danych
obcy
3211
4
Bazy danych
3211
3
Matematyka
dr P. Drozda
Nr_indeksu
Nazwisko
Imię
Adres
1234
Kowalski
Jan
Akacjowa 8
2134
Nowak
Piotr
Dębowa 4
4321
Maliniak
Stefan
Bukowa 4
3298
Grabowska
Janina
Brzozowa 1
Dla
danej relacji określ:
Atrybuty
Krotki
Składowe jednej krotki
Schemat relacji
Dziedzina dla każdego atrybutu
Inny równoważny sposób przedstawienia relacji
dr P. Drozda
Algebra relacyjna – zbiór sześciu operatorów do
wyszukiwania danych (selekcja, rzut, złączenie, suma,
przecięcie, różnica)
Operacje dynamiczne na relacjach
INSERT – wstawianie
DELETE – usuwanie
UPDATE – modyfikowanie
dr P. Drozda
Wydobywa wszystkie informacje z relacji z interesującymi
użytkownika danymi – nie bierze pod uwagę wszystkich
krotek
Przykład:
SQL: SELECT * FROM STUDENCI where imię=‘Jan’;
Wynikiem powyższych zapytań jest relacja
Nr_indeksu
Nazwisko
Imię
Adres
1234
Kowalski
Jan
Akacjowa 8
dr P. Drozda
ogranicza liczbę
atrybutów
Przykład:
PRACOWNICY
Pracownik
Nazwisko
Imię
Płaca
1
Stefanek
Michał
3000 zł
2
Dębek
Jarosław
2340 zł
3
Kowalski
Jan
4600 zł
dr P. Drozda
Wynik zapytania:
SELECT Nazwisko, Płaca from Pracownicy
jest następujący:
Nazwisko
Płaca
Stefanek
3000 zł
Dębek
2340 zł
Kowalski
4600 zł
dr P. Drozda
Złączenia – oparte na relacyjnym operatorze iloczynu
kartezjańskiego
Typy złączeń
Iloczyn kartezjański
Równozłączenie
Złączenie naturalne
Złączenia zewnętrzne
Lewostronne złączenie zewnętrzne
Prawostronne złączenie zewnętrzne
Obustronne złączenie zewnętrzne
dr P. Drozda
Powstaje poprzez połączenie dwóch relacji w jedną
zawierającą wszystkie możliwe kombinacje wierszy
tabel wejściowych
Przykład
Nr_indeksu
Nazwisko
Imię
nr_indeksu
Ocena
1234
Kowalski
Jan
3214
2
6587
Małek
Michał
1234
5
1243
Nowak
Piotr
dr P. Drozda
Cd przykładu: relacja wynikowa
Nr_indeksu
Nazwisko
Imię
nr_indeksu
Ocena
1234
Kowalski
Jan
3214
2
6587
Małek
Michał
3214
2
1243
Nowak
Piotr
3214
2
1234
Kowalski
Jan
1234
5
6587
Małek
Michał
1234
5
1243
Nowak
Piotr
1234
5
dr P. Drozda
Iloczyn kartezjański dla którego dokonana jest
selekcja poprzez wybór wierszy dla których wartość
kluczy podstawowego i obcego są takie same
Przykład
Nr_indeksu
Nazwisko
Imię
nr_indeksu
Przedmiot
Ocena
1234
Kowalski
Jan
6587
Bazy danych
2
6587
Małek
Michał
1243
Filozofia
4
1243
Nowak
Piotr
1243
Bazy danych
3
1234
Statystyka
5
dr P. Drozda
cd przykładu: tabela wynikowa
Nr_indeksu
Nazwisko
Imię
nr_indeksu
Przedmiot
Ocena
1234
Kowalski
Jan
1234
Statystyka
5
6587
Małek
Michał
6587
Bazy danych
2
1243
Nowak
Piotr
1243
Filozofia
4
1243
Nowak
Piotr
1243
Bazy danych
3
dr P. Drozda
Podobne do równozłączenia – usuwa jedną z kolumn
po której relacje są łączone
Dla poprzedniego przykładu tabel wynikowa
Nr_indeksu
Nazwisko
Imię
Przedmiot
Ocena
1234
Kowalski
Jan
Statystyka
5
6587
Małek
Micha
ł
Bazy danych
2
1243
Nowak
Piotr
Filozofia
4
1243
Nowak
Piotr
Bazy danych
3
dr P. Drozda
Stosowane gdy zachowane mają zostać wszystkie
wiersze jednej lub drugiej relacji (nawet gdy nie
występują odpowiedniki w obu relacjach)
Nr_prac
Nazwisko
Imię
1
Golał
Jan
6
Resko
Paweł
3
Janik
Tadeusz
4
Ferel
Michał
IdPrzed
Przedmiot
Prowadząc
y
2
Bazy danych
null
5
Filozofia
4
6
Analiza matematyczna
3
3
Statystyka
3
dr P. Drozda
Zachowuje nie pasujące wiersze z relacji będącej
pierwszym argumentem złączenia
Wynik złączenia dla przykładu z poprzedniego slajdu
Nr_prac
Nazwisko
Imię
IdPrzed
Przedmiot
Prowadząc
y
1
Golał
Jan
null
null
null
6
Resko
Paweł
null
null
null
3
Janik
Tadeusz
6
Analiza matematyczna
3
3
Janik
Tadeusz
3
Statystyka
3
4
Ferel
Michał
5
Filozofia
4
dr P. Drozda
Zachowuje nie pasujące wiersze z relacji będącej
drugim argumentem złączenia
Wynik złączenia
Nr_prac
Nazwisko
Imię
IdPrzed
Przedmiot
Prowadząc
y
null
null
null
2
Bazy danych
null
3
Janik
Tadeusz
6
Analiza matematyczna
3
3
Janik
Tadeusz
3
Statystyka
3
4
Ferel
Michał
5
Filozofia
4
dr P. Drozda
Zachowuje nie pasujące wiersze z obydwu relacji
Wynik złączenia
Nr_prac
Nazwisko
Imię
IdPrzed
Przedmiot
Prowadząc
y
null
null
null
2
Bazy danych
null
3
Janik
Tadeusz
6
Analiza matematyczna
3
3
Janik
Tadeusz
3
Statystyka
3
4
Ferel
Michał
5
Filozofia
4
1
Golał
Jan
null
null
1
6
Resko
Paweł
null
null
6
dr P. Drozda
stosowane dla zgodnych relacji
- ta sama liczba argumentów w relacjach, ta sama
dziedzina dla odpowiadających argumentów
analogicznie do algebry zbiorów
dr P. Drozda
Przykład
PRACOWNICY
KIEROWNICY
Nr_prac
Nazwisko
Imię
Nr_prac
Nazwisko
Imię
1
Golał
Jan
1
Golał
Jan
2
Maser
Paweł
6
Resko
Regina
3
Jawosz
Magda
7
Janik
Tadeusz
4
Ferel
Michał
9
Rewak
Piotr
dr P. Drozda
Przecięcie
Suma
Nr_prac
Nazwisko
Imię
Nr_prac
Nazwisko
Imię
1
Golał
Jan
1
Golał
Jan
2
Maser
Paweł
3
Jawosz
Magda
4
Ferel
Michał
6
Resko
Regina
7
Rewak
Piotr
9
Janik
Tadeusz
dr P. Drozda
Różnica A-B
Różnica A-B
Nr_prac
Nazwisko
Imię
Nr_prac
Nazwisko
Imię
2
Maser
Paweł
6
Resko
Regina
3
Jawosz
Magda
7
Rewak
Piotr
4
Ferel
Michał
9
Janik
Tadeusz
dr P. Drozda
składanie operatorów w celu wydobycia informacji z
bazy danych
Przykład – znaleźć wszystkie przedmioty prowadzone
przez Janika
PRACOWNICY
PRZEDMIOTY
Nr_prac
Nazwisko
Imię
IdPrzed
Przedmiot
Prowadząc
y
1
Golał
Jan
2
Bazy danych
null
6
Resko
Paweł
5
Filozofia
4
3
Janik
Tadeusz
6
Analiza matematyczna
3
4
Ferel
Michał
3
Statystyka
3
dr P. Drozda
SQL
select Przedmiot from PRACOWNICY inner join PRZEDMIOTY
on PRACOWNICY.Nr_prac = PRZEDMIOTY.Prowadzacy where
Nazwisko=‘Janik’;
dr P. Drozda
INSERT INTO tabela VALUES (wart1, wart2, …) –
wstawia do tabeli wartości wart1, wart2, …
Przykład
INSERT INTO PRACOWNICY VALUES (10, ‘Banach’, ‘Jacek’)
spowoduje dodanie wiersza do relacji PRACOWNICY
DELETE FROM tabela WHERE warunek – usuwa z
tabeli krotki określone w warunku
Przykład
DELETE FROM PRZEDMIOTY WHERE Prowadzący = 3 –
usunie krotki dotyczące analizy matematycznej i statystyki
dr P. Drozda
UPDATE tabela SET nazwaKolumny = wartosc
WHERE warunek – zmienia w krotkach określonych w
warunku kolumnę nazwaKolumny na podaną wartość
Przykład
UPDATE PRZEDMIOTY SET prowadzący=1 WHERE
prowadzący=3– zmienia prowadzącego przedmiotów
analiza matematyczna i statystyka
dr P. Drozda
Integralność danych zapewnia dokładne odbicie
rzeczywistości w bazie danych
W modelu relacyjnym istnieją dwa rodzaje
integralności wewnętrznej
integralność encji
integralność referencyjna
dr P. Drozda
Dotyczy kluczy głównych
Każda relacja musi mieć klucz główny
Klucz główny musi być jednoznaczny i nie może zawierać wartości null (co skutkuje
jednoznacznością krotek w relacji)
Przykład
kluczem głównym w
tej relacji może być
Nr_prac, nazwisko lub imię
PRACOWNICY
Nr_prac
Nazwisko
Imię
1
Golał
Jan
2
Resko
Paweł
3
Janik
Tadeusz
4
Ferel
Michał
dr P. Drozda
Dotyczy kluczy obcych
dwie możliwości (w zależności od konkretnej bazy
danych)
- Wartość klucza obcego musi odwoływać się do
wartości klucza głównego w tabeli w bazie danych
- Wartość klucza obcego może być null
- Wymuszenie istnienia odniesienia każdego
wiersza – parametr not null
dr P. Drozda
Przykład
Nr_prac
Nazwisko
Imię
IdPrzed
Przedmiot
Prowadząc
y
1
Golał
Jan
2
Bazy danych
null
6
Resko
Paweł
5
Filozofia
4
3
Janik
Tadeusz
6
Analiza matematyczna
3
4
Ferel
Michał
3
Statystyka
3
Integralność referencyjna zachowana, jeśli są dopuszczane
wartości null klucza obcego (klucze obce mogą należeć do zbioru
{1,3,4,6})
dr P. Drozda
Określenie więzów propagacji – określają co ma się
stać z tabelą przy modyfikacji powiązanej tabeli
Ograniczone usuwanie – usunięcie krotki z kluczem głównym
możliwe w momencie, gdy klucz główny nie ma wystąpień
jako klucz obcy
Dla poprzedniego przykładu – z tabeli pracownicy można
usunąć pracowników o numerach 1 i 6. Pozostali mogą zostać
usunięci dopiero w momencie gdy zostaną usunięte
odpowiednie krotki w powiązanej tabeli
dr P. Drozda
Kaskadowe usuwanie
Przy usunięciu wiersza z kluczem głównym zostają usunięte
wszystkie wiersze z tym kluczem z relacji powiązanej
Jeśli usuniemy z tabeli PRACOWNICY pracownika o numerze 3
– zostaną usunięte Przedmioty o numerach 6 i 3 z tabeli
PRZEDMIOTY
Wstaw null – przy usunięciu krotki z kluczem głównym
zostają wstawione wartości null zamiast klucza obcego
Wstaw default – przy usuwaniu wstawia wartość domyślną
dr P. Drozda
Definiowana przez użytkownika – specyficzna dla każdej
bazy danych
Przykład
Możemy wymusić, że każdy pracownik musi prowadzić jakieś
zajęcia
dr P. Drozda