Wykład 1
Prowadzący: dr Paweł Drozda
Kontakt:
- pdrozda@matman.uwm.edu.pl
- wmii.uwm.edu.pl/~pdrozda
- Słoneczna 54, pokój E 0/5
Zaliczenie przedmiotu:
- Projekt podczas ostatnich zajęć
dr P. Drozda
Wprowadzenie
Relacyjny model danych
Modelowanie baz danych (diagramy związków
encji)
Zarządzanie uprawnieniami
Język baz danych SQL
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
Masywny – możliwość przechowywania TBs
Trwały – dane nie znikają
Bezpieczny – odporny na awarię
Wielu użytkowników – kontrola wielodostępu
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
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
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