Dr inż. Ludmiła Rekuć p. 518 B4 www.ioz.pwr.wroc.pl, ludmila.rekuc

Transkrypt

Dr inż. Ludmiła Rekuć p. 518 B4 www.ioz.pwr.wroc.pl, ludmila.rekuc
Dr inż. Ludmiła Rekuć p. 518 B4
www.ioz.pwr.wroc.pl, [email protected]
Dr inż. Witold Rekuć p. 517 B4
www.ioz.pwr.wroc.pl, [email protected]
- Przedmiot kończy się egzaminem
- Egzamin ma formę testu teoretycznego
Literatura
1. C. Date. Wprowadzenie do systemów baz danych. WNT, 2000.
2. J. Ullman, J. Widom. Podstawowy wykład z systemów baz danych. WNT, 2000.
3. Podręczniki systemu MS ACCESS.
4. Materiały do wykładu
© Ludmiła Rekuć, Witold Rekuć
11
Laboratorium IBM San Jose
(California)
”A relational model for large
shared data banks”
Communication of the ACM,
13:6,1970.
System R - prototyp
oprogramowania
SEQUEL2 – prototyp języka
Dziś:
Oprogramowanie
MS ACCESS, SQL Server,
PostgreSQL, INGRES,
ORACLE, DB2, Informix,
Progres, …
Język SQL
Edgar Frank Codd (1923 – 2003)
© Ludmiła Rekuć, Witold Rekuć
21
Baza danych jest zbiorem tabel (relacji) pamiętanych w jednym lub wielu plikach
Firmy
Firm2000.mdb
Miejscowości
Nr
Nazwa
Ulica
KodMjc
Telefon
0
Nasza Firma
Kod
Nasza
1
234 23
1
Wrocław
DL
1
Abeja
Abejowska
3
234 55
2
Opole
OP
2
Audi
Audiego
2
3
Wałbrzych
DL
3
Pafawag
Wagonowa
2
4
Iase
Energetyczna
3
5
Dolmed
Medyczna
1
Nazwa
Wojewodztwa
KodWoj
Kod
Nazwa
DL
Dolnośląskie
OP
Opolskie
256 12
PozycjeDokumentu
Dokumenty
Nr
NrSprzerdawcy
Np
SmbTow
CenaNetto
Ilość
Nr
NrSprzerdawcy
NrNabywcy
Data
1/02
0
1
001
12,00
20
1/02
0
2
13.02.02
1/02
0
2
003
4,50
200
2/02
0
3
21.03.02
2/02
0
1
004
7,00
150
1/02
1
0
03.01.02
1/02
1
1
002
13,00
300
3/02
0
1
31.04.02
1/02
1
2
001
12,00
120
2/02
3
0
17.02.02
1/02
1
3
004
7,50
220
4/02
0
4
13.05.02
3/02
0
1
001
11,00
45
3/02
0
2
003
4,50
125
Towary
3/02
0
3
004
7,80
35
Smb
Nazwa
Jm
StawkaVat
3/02
0
4
005
3,20
200
001
Pasztet
kg
7%
2/02
3
1
001
12,00
30
002
Mortadela
kg
7%
2/02
3
2
003
4,60
50
003
Chipsy
paczka 400g
7%
4/02
0
1
005
3,60
90
004
Kawa Jakobs
paczka 100g
7%
005
Makrela kons.
puszka 250g
7%
© Ludmiła Rekuć, Witold Rekuć
31
System zarządzania bazą danych
Baza
danych
System zarządzania
bazą danych
Język użytkowników
bazy danych
Język administratora
bazy danych
...
Użytkownicy bazy danych
© Ludmiła Rekuć, Witold Rekuć
Administrator
bazy danych
41
Tabela (relacja)
Nazwa
tabeli
(relacji)
nazwa kolumny (atrybutu, pola)
Firmy
Nr
Nazwa
Ulica
KodMjc
Telefon
0
Nasza Firma
Nasza
1
234 23
1
Abeja
Abejowska
3
234 55
2
Audi
Audiego
2
3
Pafawag
Wagonowa
2
4
Iase
Energetyczna
3
5
Dolmed
Medyczna
1
256 12
nagłówek (schemat)
Wiersz (rekord,
krotka)
kolumna
(atrybut, pole)
© Ludmiła Rekuć, Witold Rekuć
51
Wartości w kolumnach (wartości atrybutów)
Firmy
Nr
Nazwa
Ulica
KodMjc
Telefon
0
Nasza Firma
Nasza
1
234 23
1
Abeja
Abejowska
3
234 55
2
Audi
Audiego
2
3
Pafawag
Wagonowa
2
4
Iase
Energetyczna
3
5
Dolmed
Medyczna
1
6
Dolmel
256 12
Elektryczna
3
452 34
6
Zbiór
dopuszczalnych
numerów firm
452 34
Dolmel
Elektryczna
3
Zbiór
dopuszczalnych
nazw firm
© Ludmiła Rekuć, Witold Rekuć
Zbiór
dopuszczalnych
nazw ulic
Zbiór
dopuszczalnych
kodów miejscowości
Zbiór
dopuszczalnych
numerów telefonów
61
Dziedzina
Dziedzina wartości jest to zbiór wartości,
które potencjalnie mogą pojawić się w kolumnie tabeli
(które może przyjmować atrybut).
Różne dziedziny wartości nie muszą być rozłączne
Dziedzinę określa się przez podanie typu danych oraz dodatkowych ograniczeń
(więzów) lub właściwości
MS ACCESS:
Nazwa pola
Typ danych
Nr
Liczba
Liczba całkowita >=0 i <=999
Nazwa
Tekst
Długość 30 znaków
Ulica
Tekst
Długość 20 znaków
KodMjc
Liczba
Liczba całkowita between 1 and 99
Telefon
Tekst
Maska 999-99
© Ludmiła Rekuć, Witold Rekuć
Właściwości
71
Określoność wartości w kolumnach (wartości atrybutów)
Firmy
Nr
Nazwa
Ulica
KodMjc
Telefon
0
Nasza Firma
Nasza
1
234 23
1
Abeja
Abejowska
3
234 55
2
Audi
Audiego
2
3
Pafawag
Wagonowa
2
4
Iase
Energetyczna
3
5
Dolmed
Medyczna
1
6
Dolmel
Wartość nieokreślona
256 12
Elektryczna
3
6
Zbiór
dopuszczalnych
numerów firm
452 34
Dolmel
Elektryczna
3
Zbiór
dopuszczalnych
nazw firm
© Ludmiła Rekuć, Witold Rekuć
Zbiór
dopuszczalnych
nazw ulic
Zbiór
dopuszczalnych
kodów miejscowości
Zbiór
dopuszczalnych
numerów telefonów
81
Projektując tabelę dla pewnego zastosowania możemy rozstrzygnąć dla każdej
kolumny:
- czy wartość w kolumnie musi być zawsze określona,
- czy wartość w kolumnie może być nieokreślona.
Do oznaczenia wartości nieokreślonych stosuje się słowo NULL
Telefon is NULL
– telefon jest nieokreślony
Telefon is not NULL
– telefon jest określony
Nieokreśloność wartości typu Tekst
6
Dolmel
Elektryczna
3
Tekst niepusty
Tekst nieokreślony
lub pusty
“452 34” - tekst określony niepusty
“”
- tekst określony pusty
- tekst nieokreślony
© Ludmiła Rekuć, Witold Rekuć
91
Nieokreśloność wartości w kolumnach i logika trójwartościowa
6
Dolmel
Elektryczna
3
452 34
6
Dolmel
Elektryczna
3
234 09
6
Dolmel
Elektryczna
3
Telefon =
“452 34” ?
TRUE
Telefon is Telefon is
NULL?
not NULL?
FALSE
TRUE
FALSE
FALSE
TRUE
UNKNOWN
TRUE
FALSE
NULL
Operacje na wartościach nieokreślonych
X is NULL
Y is not NULL lub is NULL
X + Y is NULL
© Ludmiła Rekuć, Witold Rekuć
101
Wartości domyślne (default)
Firmy
Nr
Nazwa
Ulica
KodMjc
Telefon
0
Nasza Firma
Nasza
1
234 23
1
Abeja
Abejowska
3
234 55
2
Audi
Audiego
2
3
Pafawag
Wagonowa
2
4
Iase
Energetyczna
3
5
Dolmed
Medyczna
1
Wartością domyślną danego
atrybutu nazywamy wartość z
dziedziny tego atrybutu, która
ma być wstawiona przez
system do każdego
dodawanego wiersza
256 12
3
6
Zbiór
dopuszczalnych
numerów firm
452 34
Dolmel
Elektryczna
3
Zbiór
dopuszczalnych
nazw firm
© Ludmiła Rekuć, Witold Rekuć
Zbiór
dopuszczalnych
nazw ulic
Zbiór
dopuszczalnych
kodów miejscowości
Zbiór
dopuszczalnych
numerów telefonów
111
Klucze tabeli
Kluczem tabeli nazywamy zbiór atrybutów tabeli,
które identyfikują wiersz tabeli i żaden jego podzbiór
właściwy tej własności nie ma
Dokumenty
Nr
NrSprzerdawcy
NrNabywcy
Data
1/02
0
2
13.02.02
2/02
0
3
21.03.02
1/02
1
0
03.01.02
3/02
0
1
31.04.02
2/02
3
0
17.02.02
4/02
0
4
13.05.02
© Ludmiła Rekuć, Witold Rekuć
Kluczem w tabeli Dokumenty jest zbiór
K = {Nr, NrSprzedawcy}
121
Inne przykłady:
Osoba(Pesel, Nip, Nazwisko, Imię, DataUrodzenia)
K1={Pesel}, K2={Nip}
Egzamin(NrStudenta, KodPrzedmiotu, Data, Ocena)
K={NrStudenta, KodPrzedmiotu, Data}
PozycjeDokumentu(Nr, NrSprzedawcy, Np,SmbTow, CenaNetto, Ilość)
K1={Nr, NrSprzedawcy, Np}, K2={Nr, NrSprzedawcy, SmbTow}
ObrotyMiesięczne(Rok, Mc, Wartość)
K={Rok, Mc}
© Ludmiła Rekuć, Witold Rekuć
13 1
Kluczem podstawowym tabeli nazywamy klucz,
który ze względu na pewne cechy praktyczne zostaje
arbitralnie wybrany spośród kluczy tabeli
Przykład:
Przedmiot (Kod, Nazwa, Opis) K1={Kod}, K2={Nazwa}
Kluczem podstawowy: K1
Zbiór atrybutów zawierający klucz nazywamy
nadkluczem
Przykład:
Przedmiot (Kod, Nazwa, Opis) K1={Kod}, K2={Nazwa}
Nadkluczem jest: {Kod, Opis}
Określoność wartości kluczy
Każdy klucz tabeli musi mieć wartość określoną
(NULL jest niedopuszczalne)
© Ludmiła Rekuć, Witold Rekuć
141
© Ludmiła Rekuć, Witold Rekuć
151
Przykład definicji tabeli w języku SQL (system PostgreSQL)
create table "Firmy"
(
Nr
decimal(4)
Nazwa varchar(30)
Ulica
varchar(30)
KodMjc decimal(3)
Telefon varchar(20)
);
primary key check(Nr>=0),
not null,
not null,
not null,
16
© Ludmiła Rekuć, Witold Rekuć
1
Operacje aktualizacji
- dodaj nowy wiersz do tabel
- usuń istniejący wiersz z tabeli
- zmień wartości w istniejącym wierszu tabeli
W aktualizacji bazy danych musimy zapewnić poprawność bazy danych:
Poprawność formalna – zgodność bazy danych z regułami formalnymi
Poprawność merytoryczna – zgodność bazy danych z rzeczywistością
© Ludmiła Rekuć, Witold Rekuć
171
Poprawność formalna – więzy integralnościowe:
więzy dziedziny – wartość atrybutu w tabeli musi należeć do dziedziny tego
atrybutu lub jeżeli jest to dopuszczalne może być nieokreślona (NULL)
więzy klucza – w tabeli nie mogą występować dwa lub więcej wierszy
o tej samej wartości klucza; klucz musi mieć wartość określoną
więzy integralności referencyjnej – patrz niżej
inne więzy – patrz niżej
© Ludmiła Rekuć, Witold Rekuć
181
Więzy dziedziny i klucza
Firmy
Dodaj wiersz
Nr
Nazwa
Ulica
KodMjc
Telefon
0
Nasza Firma
Nasza
1
234 23
1
Abeja
Abejowska
3
234 55
2
Audi
Audiego
2
3
Pafawag
Wagonowa
2
4
Iase
Energetyczna
3
5
Dolmed
Medyczna
1
Informatyczna
A1
-3
Makrosoft
256 12
NULL
Naruszenie więzów dziedziny
Dodaj wiersz
NULL
Makrosoft
Informatyczna
1
NULL
Naruszenie więzów
klucza
Dodaj wiersz
© Ludmiła Rekuć, Witold Rekuć
2
Makrosoft
Informatyczna
1
NULL
191
Więzy integralności referencyjnej
Firmy
Miejscowości
Nr
Nazwa
Ulica
KodMjc
Telefon
Kod
0
Nasza Firma
Nasza
1
234 23
1
Wrocław
DL
1
Abeja
Abejowska
3
234 55
2
Opole
OP
2
Audi
Audiego
2
3
Pafawag
Wagonowa
2
3
Wałbrzych
DL
4
Iase
Energetyczna
3
5
Dolmed
Medyczna
1
Nazwa
KodWoj
256 12
Dodaj do tabeli Firmy wiersz:
6
TP SA
Telewizyjna
4
345 90
Usuń z tabeli Miejscowości wiersz:
2
Opole
OP
Pytanie do bazy danych: w jakich województwach mają siedziby firmy,
z którymi handlujemy?
© Ludmiła Rekuć, Witold Rekuć
201
Firmy
Miejscowości
Nr
Nazwa
Ulica
KodMjc
Telefon
Kod
0
Nasza Firma
Nasza
1
234 23
1
Wrocław
DL
1
Abeja
Abejowska
3
234 55
2
Opole
OP
2
Audi
Audiego
2
3
Wałbrzych
DL
3
Pafawag
Wagonowa
2
4
Iase
Energetyczna
3
5
Dolmed
Medyczna
1
Nazwa
KodWoj
256 12
Dla każdego wiersza tabeli Firmy musi występować wiersz w tabeli
Miejscowości taki, że:
Firmy.KodMjc=Miejscowości.Kod
Dla każdego wiersza tabeli Miejscowości może występować wiersz w tabeli
Firmy taki, że:
Firmy.KodMjc=Miejscowości.Kod
© Ludmiła Rekuć, Witold Rekuć
21 1
Firmy
Miejscowości
Nr
Nazwa
Ulica
KodMjc
Telefon
Kod
0
Nasza Firma
Nasza
1
234 23
1
Wrocław
DL
1
Abeja
Abejowska
3
234 55
2
Opole
OP
2
Audi
Audiego
2
3
Wałbrzych
DL
3
Pafawag
Wagonowa
2
4
Iase
Energetyczna
3
5
Dolmed
Medyczna
1
256 12
Nazwa
KodWoj
Klucz = {Kod}
Klucz = {Nr}
Klucz obcy = {KodMjc}
Dane są dwie tabele:
To – zwana tabelą odwołania
Td – zwana tabelą docelową
Kluczem obcym tabeli To do tabeli Td nazywamy taki zbiór
atrybutów To, którego wartości są wartościami klucza tabeli Td
Więzy integralności referencyjnej
Dla każdej wartości klucza obcego w tabeli odwołania musi istnieć wiersz
w tabeli docelowej zawierający wartość tego klucza.
22 1
© Ludmiła Rekuć, Witold Rekuć
Przykład:
Student (Nr, Nazwisko, Adres)
Klucz={Nr}
Egzamin (NrStudenta, KodPrzedmiotu, Data, Ocena)
Klucz={NrStudenta, KodPrzedmiotu, Data}
KluczObcy do tabeli Student KO1={NrStudenta}
KluczObcy do tabeli Przedmiot KO2={KodPrzedmiotu}
Przedmiot (Kod, Nazwa)
Klucz={Kod}
Przykład:
Dostawca (Kod, Nazwa, Ulica, KodMjc)
Miejscowość (Kod, Nazwa)
Dostawa (KodDostawcy, SmbTowaru, Data, Ilość)
Towar (Symbol, Nazwa, Cena, Jm)
Wskazać klucze i klucze obce!
© Ludmiła Rekuć, Witold Rekuć
231
Jm
© Ludmiła Rekuć, Witold Rekuć
241
Przykład definicji tabeli w języku SQL (system PostgreSQL)
create domain "NumeryFirm"
decimal(4) not null;
-create table "Miejscowosci" (
Kod
decimal(3)
Nazwa varchar(30)
);
-create table "Firmy" (
Nr
"NumeryFirm"
Nazwa varchar(30)
Ulica
varchar(30)
KodMjc decimal(3)
Telefon varchar(20)
);
© Ludmiła Rekuć, Witold Rekuć
primary key check(Kod>0),
not null
primary key check(Nr>=0),
not null,
not null,
not null
references "Miejscowosci"(Kod),
251
Inne więzy integralnościowe
Więzy inne są specyficzne dla dziedziny zastosowań. Są one określone przez
warunki, których niespełnienie byłoby świadectwem błędu w danych lub
świadectwem naruszenia reguł organizacji, w której baza danych jest
użytkowana.
Przykłady:
1. Data dostawy nie może być wcześniejsza od daty zamówienia tej dostawy.
2. Dla każdego promotora liczba dyplomatów nie może być większa od 5.
3. Nie może być wykonane wypożyczenie książki czytelnikowi, który zalega ze
zwrotem innych książek.
© Ludmiła Rekuć, Witold Rekuć
261