Dr inż. Ludmiła Rekuć p. 58 B4 www.ioz.pwr.wroc.pl, ludmila.rekuc@pwr.wroc.pl Dr inż. Witold Rekuć p. 57 B4 www.ioz.pwr.wroc.pl, witold.rekuc@pwr.wroc.pl - Przedmiot kończy się egzaminem - Egzamin ma formę testu teoretycznego Literatura. C. Date. Wprowadzenie do systemów baz danych. WNT,.. J. Ullman, J. Widom. Podstawowy wykład z systemów baz danych. WNT,.. Podręczniki systemu MS ACCESS. 4. Materiały do wykładu
Laboratorium IBM San Jose (California) A relational model for large shared data banks Communication of the ACM, :6,97. System R - prototyp oprogramowania SEQUEL prototyp języka Dziś: Oprogramowanie MS ACCESS, SQL Server, PostgreSQL, INGRES, ORACLE, DB, Informix, Progres, Język SQL Edgar Frank Codd (9 )
Baza danych jest zbiorem tabel (relacji) pamiętanych w jednym lub wielu plikach Firmy Nr Nazwa Nasza Firma Abeja Audi Pafawag Ulica Nasza Abejowska Audiego Wagonowa KodMjc Telefon 4 4 55 Miejscowości Kod Nazwa KodWoj Wrocław DL Opole OP Wałbrzych DL Firm.mdb Wojewodztwa Kod Nazwa DL Dolnośląskie OP Opolskie 4 Iase Energetyczna 56 5 Dolmed Dokumenty Medyczna PozycjeDokumentu Nr NrSprzerdawcy Np SmbTow CenaNetto Ilość Nr NrSprzerdawcy NrNabywcy Data /, /.. / 4,5 /.. / 4 7, 5 / /...4. / /,, / 7.. / 4 7,5 4/ 4.5. /, 45 Towary Smb Nazwa Pasztet Mortadela Chipsy 4 Kawa Jakobs Jm kg kg paczka 4g paczka g StawkaVat 7% 7% 7% 7% / / / / / 4/ 4 4 5 5 4,5 7,8,, 4,6,6 5 5 5 9 5 Makrela kons. puszka 5g 7%
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 Administrator bazy danych 4
Tabela (relacja) Nazwa tabeli (relacji) nazwa kolumny (atrybutu, pola) Firmy Nr Nazwa Ulica KodMjc Telefon nagłówek (schemat) Nasza Firma Nasza 4 Abeja Abejowska 4 55 4 Audi Pafawag Iase Audiego Wagonowa Energetyczna 56 Wiersz (rekord, krotka) 5 Dolmed Medyczna kolumna (atrybut, pole) 5
Wartości w kolumnach (wartości atrybutów) Firmy Nr Nazwa Ulica KodMjc Telefon Nasza Firma Nasza 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 56 5 Dolmed Medyczna 6 Dolmel Elektryczna 45 4 6 numerów firm Dolmel nazw firm Elektryczna nazw ulic kodów miejscowości 45 4 numerów telefonów 6
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 Nr Nazwa Ulica KodMjc Telefon Typ danych Liczba Tekst Tekst Liczba Tekst Właściwości Liczba całkowita >= i <=999 Długość znaków Długość znaków Liczba całkowita between and 99 Maska 999-99 7
Określoność wartości w kolumnach (wartości atrybutów) Firmy Nr Nazwa Ulica KodMjc Telefon Nasza Firma Nasza 4 Abeja Abejowska 4 55 Audi Audiego 4 5 Pafawag Iase Dolmed Wagonowa Energetyczna Medyczna 56 Wartość nieokreślona 6 Dolmel Elektryczna 6 numerów firm Dolmel nazw firm Elektryczna nazw ulic kodów miejscowości 45 4 numerów telefonów 8
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 Tekst niepusty Tekst nieokreślony lub pusty 45 4 - tekst określony niepusty - tekst określony pusty - tekst nieokreślony 9
Nieokreśloność wartości w kolumnach i logika trójwartościowa 6 Dolmel Elektryczna 45 4 Telefon = Telefon is Telefon is 45 4? NULL? not NULL? TRUE FALSE TRUE 6 Dolmel Elektryczna 4 9 FALSE FALSE TRUE 6 Dolmel Elektryczna UNKNOWN TRUE FALSE NULL Operacje na wartościach nieokreślonych X is NULL Y is not NULL lub is NULL X + Y is NULL
Wartości domyślne (default) Firmy Nr Nazwa Nasza Firma Abeja Audi Pafawag 4 Iase 5 Dolmed Ulica Nasza Abejowska Audiego Wagonowa Energetyczna Medyczna KodMjc Telefon 4 4 55 56 Wartością domyślną danego atrybutu nazywamy wartość z dziedziny tego atrybutu, która ma być wstawiona przez system do każdego dodawanego wiersza 6 numerów firm Dolmel nazw firm Elektryczna nazw ulic kodów miejscowości 45 4 numerów telefonów
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.. Kluczem w tabeli Dokumenty jest zbiór /.. / /...4. K = {Nr, NrSprzedawcy} / 7.. 4/ 4.5.
Inne przykłady: Osoba(Pesel, Nip, Nazwisko, Imię, DataUrodzenia) K={Pesel}, K={Nip} Egzamin(NrStudenta, KodPrzedmiotu, Data, Ocena) K={NrStudenta, KodPrzedmiotu, Data} PozycjeDokumentu(Nr, NrSprzedawcy, Np,SmbTow, CenaNetto, Ilość) K={Nr, NrSprzedawcy, Np}, K={Nr, NrSprzedawcy, SmbTow} ObrotyMiesięczne(Rok, Mc, Wartość) K={Rok, Mc}
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) K={Kod}, K={Nazwa} Kluczem podstawowy: K Określoność wartości kluczy atrybutów zawierający klucz nazywamy nadkluczem Przykład: Przedmiot (Kod, Nazwa, Opis) K={Kod}, K={Nazwa} Nadkluczem jest: {Kod, Opis} Każdy klucz tabeli musi mieć wartość określoną (NULL jest niedopuszczalne) 4
5
Przykład definicji tabeli w języku SQL (system PostgreSQL) create table "Firmy" ( Nr decimal(4) primary key check(nr>=), Nazwa varchar() not null, Ulica varchar() not null, KodMjc decimal() not null, Telefon varchar() ); 6
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ą 7
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 8
Więzy dziedziny i klucza Firmy Nr Nazwa Nasza Firma Ulica Nasza KodMjc Telefon 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 56 5 Dolmed Medyczna Dodaj wiersz - Makrosoft Informatyczna A NULL Naruszenie więzów dziedziny Dodaj wiersz NULL Makrosoft Informatyczna NULL Naruszenie więzów klucza Dodaj wiersz Makrosoft Informatyczna NULL 9
Więzy integralności referencyjnej Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj Nasza Firma Nasza 4 Wrocław DL Abeja Audi Pafawag Abejowska Audiego Wagonowa 4 55 Opole Wałbrzych OP DL 4 Iase Energetyczna 56 5 Dolmed Medyczna Dodaj do tabeli Firmy wiersz: 6 TP SA Telewizyjna 4 45 9 Usuń z tabeli Miejscowości wiersz: Opole OP Pytanie do bazy danych: w jakich województwach mają siedziby firmy, z którymi handlujemy?
Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj Nasza Firma Nasza 4 Wrocław DL Abeja Abejowska 4 55 Opole OP Audi Audiego Wałbrzych DL Pafawag Wagonowa 4 Iase Energetyczna 56 5 Dolmed Medyczna 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
Firmy Nr Nazwa Ulica KodMjc Telefon Miejscowości Kod Nazwa KodWoj Nasza Firma Nasza 4 Wrocław DL Abeja Abejowska 4 55 Opole OP Audi Audiego Wałbrzych DL 4 Pafawag Iase Wagonowa Energetyczna 56 Klucz = {Kod} 5 Dolmed Medyczna 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.
Przykład: Student (Nr, Nazwisko, Adres) Klucz={Nr} Egzamin (NrStudenta, KodPrzedmiotu, Data, Ocena) Klucz={NrStudenta, KodPrzedmiotu, Data} KluczObcy do tabeli Student KO={NrStudenta} KluczObcy do tabeli Przedmiot KO={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!
Jm 4
Przykład definicji tabeli w języku SQL (system PostgreSQL) create domain "NumeryFirm" decimal(4) not null; -- create table "Miejscowosci" ( Kod decimal() primary key check(kod>), Nazwa varchar() not null ); -- create table "Firmy" ( ); Nr "NumeryFirm" primary key check(nr>=), Nazwa varchar() not null, Ulica varchar() not null, KodMjc decimal() not null references "Miejscowosci"(Kod), Telefon varchar() 5
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:. Data dostawy nie może być wcześniejsza od daty zamówienia tej dostawy.. Dla każdego promotora liczba dyplomatów nie może być większa od 5.. Nie może być wykonane wypożyczenie książki czytelnikowi, który zalega ze zwrotem innych książek. 6