background image

Bazy danych

architektura, obiekty bazy danych, 

ogólne zasady projektowania, 

kwerendy, formularze, raporty, strony, 

makra, moduły

background image

Baza danych

to zbiór danych zapisanych w ściśle 
określony sposób w strukturach 
odpowiadających założonemu modelowi 
danych.

Zbiór danych zarządzany jest przez system 
DBMS. (ang. Data Base Management
System, DBMS - Systemem zarządzania 
bazą danych).

background image

Podstawowe funkcje DBMS

gromadzenie, utrzymywanie i administrowanie trwałymi 

i masowymi zbiorami danych, 

zapewnianie spójności i bezpieczeństwa danych, 

sprawny dostęp do danych (zwykle poprzez język zapytań, np. 

SQL), 

ś

rodki programistyczne służące do aktualizacji 

i przetwarzania danych,

jednoczesny dostęp do danych dla wielu użytkowników,

regulacja dostępu do danych (autoryzacja), 

przywracanie zawartości bazy danych po awarii, 

ś

rodki optymalizujące zajętość pamięci oraz czas dostępu (np. 

indeksy), 

background image

Rodzaje baz danych 

Bazy danych można podzielić według struktur danych, których 

używają:

bazy proste: 

bazy kartotekowe 

sieciowe bazy danych 

hierarchiczne bazy danych 

bazy złożone: 

bazy relacyjne 

bazy obiektowe 

bazy relacyjno-obiektowe 

strumieniowe bazy danych 

temporalne bazy danych 

inne

background image

Relacyjna baza danych

zbiór danych zapisanych w formie tabel 
(relacji).

Każda tabela (relacja) zawiera zero lub 
więcej wierszy (krotek) i jedną lub więcej 
kolumn (atrybutów). 

Wiele tabel danych może współpracować ze 
sobą (są między sobą powiązane).  

Twórca: Edgar F. Codd (1970).

background image

Tabela (relacja)

background image

Cechy tabeli

krotki (wiersze) są unikalne 

atrybuty (kolumny) są unikalne 

kolejność krotek (wierszy) nie ma znaczenia 

kolejność atrybutów (kolumn) nie ma 
znaczenia 

wartości atrybutów (pól) są atomowe 

background image

Klucze

Każda tabela posiada przynajmniej jeden 
klucz, dzięki któremu wiersze w tabeli nie 
powtarzają się i możliwe jest powiązanie ze 
sobą danych przechowywanych w różnych 
tabelach.

Kluczem może być jedna lub wiele kolumn, 
których wartości jednoznacznie identyfikują
wiersz tabeli. 

background image

Klucze kandydujące i główne

W każdej tabeli może istnieć wiele kluczy, które 
jednoznacznie identyfikują jej wiersze. Nazywane są
one kluczami kandydującymi. 

Każdy klucz kandydujący 

musi posiadać różne wartości dla wszystkich wierszy

nie może przyjmować wartości nieokreślonej (null)

Ze zbioru kluczy kandydujących wybierany jest klucz 
główny.

background image

Klucze obce

Klucze obce wiążą ze sobą dane 
przechowywane w różnych tabelach. 

Klucz obcy to kolumna w tabeli, która 
przyjmuje wartości z tej samej dziedziny, co 
klucz główny powiązanej tabeli.

background image

Powiązania tabel

ZAMÓWIENIA

12.11.2004

1

99

08.11.2004

2

98

04.11.2004

1

97

Data_zamówienia

Nr_klienta

Nr_zamówienia

1

1

2

99

2

4

1

99

3

4

2

98

2

3

1

98

10

2

2

97

5

1

1

97

Liczba

Nr_artykułu

Nr_pozycji

Nr_zamówienia

POZYCJE ZAMÓWIEŃ

100

200

12

10

Cena

Imadło

4

Wiertarka

3

Wkrętak

2

Młotek

1

Artykuł

Nr_artykułu

ARTYKUŁY

KLIENCI

Klonowa 11 K-ce

Adam Nowak

2

Wiązów 4 K-ce

Jan Kowalski

1

Adres_klienta

Nazwa_klienta

Nr_klienta

Legenda:

KLUCZ OBCY

KLUCZ GŁÓWNY

background image

SQL

SQL (ang. Structured Query Language) to strukturalny język 

zapytań używany do tworzenia, modyfikowania baz danych oraz 

do umieszczania i pobierania danych z baz danych.

Użytkownik serwera baz danych (program lub osoba) wysyła do 

niego odpowiednio skonstruowane zapytanie w języku SQL, na 

które serwer odpowiada przesyłając oczekiwane dane, czyli 
wynik zapytania.

Zapytania umożliwiają operacje na danych – zarówno ich 

pobieranie (tzw. zapytania wybierające), jak i ich usuwanie, 

dodawanie czy modyfikację (tzw. zapytania funkcjonalne).

background image

Rodzaje zapytań

SQL DML (ang. Data Manipulation
Language
) – Język Manipulacji Danymi

SQL DDL (ang. Data Definition Language) –
Język Definicji Danych 

SQL DCL (ang. Data Control Language) –
Język Kontroli nad Danymi

background image

Zapytania DML

DML służy do operacji na danych - do ich 
umieszczania w bazie, kasowania, 
przeglądania, zmiany. 

Najważniejsze polecenia z tego zbioru to:

SELECT - pobranie z bazy danych, 

INSERT - umieszczenie danych w bazie, 

UPDATE - zmiana danych, 

DELETE - usunięcie danych z bazy. 

background image

Zapytania DDL

Za pomocą DDL można operować na strukturach, w 

których dane są przechowywane np. dodawać, 

zmieniać i kasować tabele lub bazy. 

Najważniejsze polecenia tej grupy to:

CREATE (np. CREATE TABLE, CREATE DATABASE, ...) 

- utworzenie struktury (bazy, tabeli, indeksu, itp.), 

DROP (np. DROP TABLE, DROP DATABASE, ...) -

całkowite usunięcie struktury, 

ALTER (np. ALTER TABLE ADD COLUMN ...) - zmiana 

struktury (dodanie kolumny do tabeli, zmiana typu danych 

w kolumnie tabeli). 

background image

Zapytania DCL

DCL ma zastosowanie do nadawania uprawnień
dostępu do obiektów bazodanowych.

Najważniejsze polecenie w tej grupie to

GRANT (np. GRANT ALL PRIVILEGES ON 
PRACOWNICY TO PIOTR WITH GRANT OPTION) 
- przyznanie wszystkich praw do tabeli 
PRACOWNICY użytkownikowi PIOTR z opcją
pozwalającą Piotrowi nadawać prawa do tego 
obiektu.

background image

Operacje relacyjne

Selekcja 

Projekcja 

Produkt 

Połączenie 

Operacje mnogościowe 

Unia

Przekrój

Różnica

Grupowanie 

background image

Selekcja (podzbiór poziomy)

umożliwia pobranie krotek (wierszy) spełniających określony 
warunek. 

SELECT * FROM osoby WHERE Wykształcenie = 'SO' ; 

background image

Projekcja (podzbiór pionowy)

umożliwia pobranie 

wartości wybranych 

atrybutów z 

wszystkich krotek 

tabeli.

SELECT Pesel, 

Wykształcenie FROM 

osoby ; 

background image

Produkt (iloczyn kartezjański) 

umożliwia łączenie dwóch 
lub więcej tabel w taki 
sposób, że każda krotka 
pierwszej tabeli, jest 
łączona z każdą krotką
drugiej tabeli.

SELECT * FROM R1, R2;

background image

Połączenie

polega na łączeniu krotek dwóch lub więcej relacji z 
zastosowaniem określonego warunku łączenia. Wynikiem 
połączenia jest podzbiór produktu relacji.

SELECT imie, nazwisko, tytul FROM autorzy, ksiazki WHERE 

autorzy.nazwisko = 'Mickiewicz' and autorzy.nr = ksiazki.autor ;

background image

Unia 

pozwala na sumowanie zbiorów krotek dwóch lub 

więcej tabel (bez powtórzeń). Warunkiem 

poprawności tej operacji jest zgodność liczby i typów 

atrybutów (kolumn) sumowanych tabel. 

Przykład sumuje zbiory danych pracowników i 

właścicieli ograniczone do imienia i nazwiska (za 

pomocą projekcji), w celu uzyskania informacji o 

wszystkich osobach powiązanych z firmą:
SELECT imie, nazwisko FROM pracownicy UNION 

SELECT imie, nazwisko FROM wlasciciele ; 

background image

Przekrój 

pozwala wyznaczyć iloczyn dwóch lub więcej 

zbiorów krotek tzn. takich, które występują zarówno 

w jednej jak i w drugiej relacji. Podobnie jak w 

przypadku unii, warunkiem poprawności tej operacji 

jest zgodność liczby i typów atrybutów tabel. 

Przykład znajduje wszystkie nazwiska, które 

występują zarówno w relacji pracownicy jak i w 

relacji właściciele:
SELECT nazwisko FROM pracownicy INTERSECT 

SELECT nazwisko FROM wlasciciele ; 

background image

żnica

Operacja obliczania różnicy dwóch relacji polega na 

znalezieniu wszystkich krotek, które występują w 

pierwszej tabeli, ale nie występują w drugiej. 

Przykład znajduje wszystkie osoby, które są

współwłaścicielami spółki, ale nie są w niej 

zatrudnieni: 
SELECT imie, nazwisko FROM wlasciciele MINUS 

SELECT imie, nazwisko FROM pracownicy ;

background image

Grupowanie

pozwala dzielić tabelę wynikową na grupy, wybierać

niektóre z tych grup i na każdej z nich z osobna 

wykonywać operacje.

Klauzula GROUP BY służy do dzielenia krotek tabeli 

na mniejsze grupy. 

Przykład wyznacza średnią płacę dla grup 

pracowników odpowiadających stanowiskom:
SELECT stanowisko, avg(placa_podstawowa) 

FROM pracownicy GROUP BY stanowisko ;

background image

Grupowanie C.D.

Klauzula HAVING ogranicza wyświetlanie grup do 

tych, które spełniają określony warunek. 

Przykład wyświetla tylko te grupy (stanowiska), w 

których minimalna płaca podstawowa jest większa 

od 3000:
SELECT stanowisko, min(placa_podstawowa) 

FROM pracownicy GROUP BY stanowisko HAVING 

min(placa_podstawowa) > 3000 ;

background image

Indeksy

Indeks jest specjalną strukturą, wprowadzoną w celu 

przyspieszenia dostępu do danych. Indeks w bazie 

danych jest odzwierciedleniem spisu treści w 

książce.

Wykorzystuje się przy zapytaniach SQL (SELECT), 

które maja na celu wyszukiwanie odpowiednich 

wartości w bazie danych. Optymalizator zapytań

najpierw przeszukuje indeks, który jest 

uporządkowany a następnie na podstawie indeksu 

odczytuje odpowiednie rekordy. 

background image

Procedury wbudowane

Procedury wbudowane (procedury przechowywane, 
ang. stored procedures) są to polecenia, które są
zapisane na serwerze baz danych i które zostały 
napisane specjalnie dla danego typu bazy danych. 

Dzięki procedurom wbudowanym różne aplikacje 
mogą się odwoływać do zasobów bazy danych i 
modyfikować jej zawartość bez podawania składni 
SQL.

background image

Wyzwalacze

Wyzwalacz (ang. trigger) – procedura wykonywana 
na serwerze bazodanowym (najczęściej relacyjna 
baza danych) w określonym momencie, na przykład 
dopisania nowego rekordu do tabeli, edycji rekordu 
w tabeli, skasowanie rekordu z tabeli.

Zastosowanie:

do sprawdzania integralności bazy danych, 

do wykonywania czynności porządkowych w bazie danych. 

background image

Widok

Widok (perspektywa) to wirtualna tabela, 

umożliwia dostęp do podzbioru kolumn i wierszy 

tabeli lub tabel,

określony przez zapytanie SQL:

CREATE VIEW nazwa_perspektywy [(kolumna1, 

kolumna2,  ..., kolumnaN )] AS zapytanie ...

przy pobieraniu danych do widoku odwołujemy się

identycznie jak do tabeli, 

w przypadku niektórych DBMS widok służy tylko i 

wyłącznie do pobierania wyników 

i ograniczania dostępu do danych.

background image

Nadmiarowość

Nadmiarowość (redundancja) – Te same dane 

powtarzają się w wielu wierszach (Adres1). 

background image

Anomalie modyfikacji – przykład:

W przypadku gdy Firma1 zmieni swój adres trzeba zmienić
wiele wierszy w tabeli.

Gdy nie zostanie zmieniony choćby jeden wiersz dotyczący 
Firmy1 to baza utraci spójność danych. 

Potrzeba zmiany wielu wierszy w dużych bazach powoduje 
znaczące obciążenie.

Anomalie

background image

Anomalie

Anomalie usunięć – przykład:

Usunięcie danych Firmy2 z tabeli spowoduje usunięcie 
również informacji o części zamówień (bilans się nie będzie 
zgadzał), a dodatkowo informacja że Firma2 dokonywała 
zakupów będzie również niedostępna.

background image

Postacie normalne

Możliwość uniknięcia przedstawionych 
problemów zapewniają postacie normalne, 
które gwarantują że anomalie w bazie danych 
nie będą występowały.

background image

Pierwsza postać normalna 
(1NF)

Tabela jest w pierwszej postaci normalnej, 
jeśli wartości atrybutów są elementarne 
(atomowe, niepodzielne) 
- są to pojedyncze wartości określonego typu, 
a nie zbiory wartości.

background image

Druga postać normalna (2NF)

Tabela jest w drugiej postaci normalnej wtedy i tylko 
wtedy, gdy jest w pierwszej postaci normalnej i 
każda kolumna zależy funkcyjnie od całego klucza 
głównego (a nie od części klucza).

Zależność funkcyjna oznacza, że znając wartość jednego 
atrybutu, zawsze możemy określić wartość innego. Gdy 
znamy PESEL pracownika, możemy określić jego 
nazwisko; jeśli znamy numer części, możemy określić jej 
masę i barwę itd. 

background image

Trzecia postać normalna (3NF)

Tabela jest w trzeciej postaci normalnej 
wtedy i tylko wtedy, gdy jest w drugiej postaci 
normalnej i wszystkie kolumny są w 
zależności funkcyjnej jedynie od klucza 
głównego, nie ma takiej zależności między 
innymi kolumnami. Oznacza to, że nie istnieją
ż

adne zależności przechodnie (nietrywialne). 

background image

Transformacja do 1NF

08.11.2004

2 wiertarki, 3 imadła

Klonowa 11 K-ce

Adam Nowak

98

04.11.2004

5 młotków, 10 gwoździ

Wiązów 4 K-ce

Jan Kowalski

97

Data_zamówienia

Treść_zamówienia

Adres_klienta

Nazwa_klienta

Nr_zamówienia

08.11.2004

2

Wiertarka

Klonowa 11 K-ce

Adam Nowak

98

04.11.2004

10

Wkrętak

Wiązów 4 K-ce

Jan Kowalski

97

3

5

Liczba

08.11.2004

Imadła

Klonowa 11 K-ce

Adam Nowak

98

04.11.2004

Młotek

Wiązów 4 K-ce

Jan Kowalski

97

Data_zamówienia

Artykuł

Adres_klienta

Nazwa_klienta

Nr_zamówienia

background image

Transformacja do 2NF

2

Wiertarka

98

10

Wkrętak

97

3

5

Liczba

Imadła

98

Młotek

97

Artykuł

Nr_zamówienia

Klonowa 11 K-ce

Wiązów 4 K-ce

Adres_klienta

Adam Nowak

Jan Kowalski

Nazwa_klienta

08.11.2004

98

04.11.2004

97

Data_zamówienia

Nr_zamówienia

background image

Transformacja do 3NF

2

Wiertarka

98

10

Wkrętak

97

3

5

Liczba

Imadła

98

Młotek

97

Artykuł

Nr_zamówienia

Adam Nowak

Jan Kowalski

Nazwa_klienta

08.11.2004

98

04.11.2004

97

Data_zamówienia

Nr_zamówienia

Klonowa 11 K-ce

Wiązów 4 K-ce

Adres_klienta

Adam Nowak

Jan Kowalski

Nazwa_klienta