Bazy danych
architektura, obiekty bazy danych,
ogólne zasady projektowania,
kwerendy, formularze, raporty, strony,
makra, moduły
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).
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),
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
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).
Tabela (relacja)
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
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.
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.
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.
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
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).
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
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.
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).
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.
Operacje relacyjne
Selekcja
Projekcja
Produkt
Połączenie
Operacje mnogościowe
Unia
Przekrój
Różnica
Grupowanie
Selekcja (podzbiór poziomy)
umożliwia pobranie krotek (wierszy) spełniających określony
warunek.
SELECT * FROM osoby WHERE Wykształcenie = 'SO' ;
Projekcja (podzbiór pionowy)
umożliwia pobranie
wartości wybranych
atrybutów z
wszystkich krotek
tabeli.
SELECT Pesel,
Wykształcenie FROM
osoby ;
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;
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 ;
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 ;
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 ;
Róż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 ;
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 ;
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 ;
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.
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.
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.
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.
Nadmiarowość
Nadmiarowość (redundancja) – Te same dane
powtarzają się w wielu wierszach (Adres1).
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
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.
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.
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.
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.
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).
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
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
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