Bazy Danych
Europejska Wyższa Szkoła Informatyczno-
Ekonomiczna
Mgr inż. Piotr Greniewski
Wykład 2: Geneza relacyjnych baz danych
Copyright by Piotr Greniewski
2
Spis treści
Bazy danych wstęp
Geneza relacyjnych baz danych
Podstawy relacyjnych baz danych
Podstawy-SQL-1
Podstawy-SQL-2
Podstawy-SQL-3
Operacje na danych
Transakcje i blokady
Normalizacja
Copyright by Piotr Greniewski
3
Relacyjny model bazy danych
W 1970 r. publikacja E.F. Codda „Relacyjny
model danych dla dużych, współdzielonych
banków danych” stała się początkiem nowego
podejścia do przechowywania danych.
Dokument ten przedstawił ideę relacji pokazał
sposób wykorzystania tabel do
reprezentowania faktów, które są powiązane z
obiektami świata rzeczywistego.
Relacyjny model bazy danych kładzie duży
większy nacisk niż inne modele na
integralność danych.
Copyright by Piotr Greniewski
4
Relacyjny model bazy danych
RDBMS (ang. Relational Data Base Management)
System jest zdefiniowany przez kilka ważnych reguł:
rekordy w tabeli określa się terminem
krotka
(ang. tuple). Krotka to uporządkowana grupa
elementów lub atrybutów z których każda posiada
zdefiniowany typ,
wszystkie krotki w tabeli, mają ten sam wzorzec tzn.
posiadają tą samą liczbę komponentów o
identycznych typach,
w dowolnej tabeli złożonej z krotek nie może być
duplikatów, czyli nie mogą wystąpić identyczne
wiersze (rekordy),
każdy atrybut w rekordzie musi być niepodzielny,
Copyright by Piotr Greniewski
5
Relacyjny model bazy danych
RDBMS ciąg dalszy ...
atrybut służący do rozróżniania rekordów, które
niczym innym się nie różnią nazywa się kluczem,
jako klucz może być stosowana kombinacja więcej
niż jednego atrybutu,
atrybut czyniący rekord unikalnym nazywa się
kluczem podstawowym,
w relacyjnej bazie danych każda relacja (tabela)
musi posiadać klucz podstawowy,
reguła integralności odwołań (ang. referential
integrity) czyli dążenie do sytuacji, kiedy wszystkie
rekordy w bazie danych zawsze mają sens.
Copyright by Piotr Greniewski
6
Relacyjny model bazy danych
{Francja, FRF, 6.56}
{Belgia, BEF, 40.51}
Każda z krotek posiada trzy atrybuty:
- nazwę kraju (łańcuch znaków)
- walutę (łańcuch znaków)
- kurs (liczba zmiennoprzecinkowa)
W relacyjnej bazie danych wszystkie rekordy z
tej samej tabeli muszą mieć taki sam format.
Wszystkie krotki w tabeli, mają ten sam
ten sam
wzorzec
wzorzec
tzn. posiadają tą samą liczbę
komponentów o identycznych typach.
Copyright by Piotr Greniewski
7
Relacyjny model bazy danych
Łatwo sprawdzić ilość i poprawność
atrybutów.
{Niemcy, DEM }
- za mało atrybutów
{Szwajcaria, CHF, 1.25, francuski, niemiecki,
włoski}
- za dużo atrybutów
{1936.27, ITL, Włochy}
- niepoprawne typy atrybutów (zła kolejność)
Copyright by Piotr Greniewski
8
Relacyjny model bazy danych
Atrybuty muszą pochodzić z tego samego
z tego samego
zbioru wartości
zbioru wartości
lub z tej samej dziedziny.
-
łańcuchy znaków - ‘Francja’
- liczby całkowite – 1234
- liczby zmiennoprzecinkowe – 123.34
- data – 12 stycznia 2003
- wartości logiczne – true lub false
- ... i wiele innych typów...
Copyright by Piotr Greniewski
9
Relacyjny model bazy danych
Ostatnią regułą która określa strukturę relacyjnej bazy
danych jest integralność odwołań
integralność odwołań
. Jest to dążenie do
sytuacji w której wszystkie rekordy w bazie danych
mają sens.
Programista bazy danych musi uważać aby
stworzony przez niego kod nie łamał
integralności bazy!!!. Np. mamy tabelę
klientów i powiązaną z nią tabelę zamówień.
Jeśli usuniemy z tabeli konkretnego klienta, to
musimy usunąć związane z nim zamówienia.
Jeśli tego nie uczynimy w bazie pozostaną
zamówienia nie przypisane do klienta.
Copyright by Piotr Greniewski
10
Języki zapytań
Relacyjne bazy danych oferują sposoby
dodawania i aktualizacji danych, ale ich
potęga leży w możliwościach wyszukiwania
danych w formie zapytań.
Stworzony przez Codda model relacyjny
wykorzystuje fakt, że relacje definiują zbiory a
zbiory można przetwarzać matematycznie.
Zasugerował on że zapytanie może korzystać
gałęzi logiki teoretycznej zwanej teorią
predykatów.
Copyright by Piotr Greniewski
11
Języki zapytań
Implementacje języków zapytań:
QUEL w bazie Ingres
QBE (Query by example)
SQL (Standard Query Language – Standardowy
język zapytań) opracowany przez firmę IBM
Copyright by Piotr Greniewski
12
Język zapytań SQL
Język SQL składa się z trzech rodzajów
poleceń:
Język manipulowania danymi (DML)
Język definicji danych (DDL)
Język sterowania danymi (DCL)
Copyright by Piotr Greniewski
13
Język zapytań SQL
Jest to część SQL, z której korzystamy w 90%
przypadków. Składa się z poleceń wstawiania,
usuwania i aktualizacji oraz co najważniejsze
wybierania danych z bazy.
Język manipulowania danymi
(DML)
Copyright by Piotr Greniewski
14
Język zapytań SQL
Zawiera polecenia tworzenia tabel oraz
polecenia mające wpływ na inne aspekty
dotyczące struktury bazy danych
Język definicji danych (DDL)
Copyright by Piotr Greniewski
15
Język zapytań SQL
Jest to zbiór poleceń służący do określania
uprawnień, jak na przykład definiowania praw
dostępu do danych. Wielu użytkowników baz
danych nigdy nie skorzysta z tych poleceń,
ponieważ wykorzystuje się je w środowiskach
większych firm gdzie pracuje jeden lub kilku
administratorów bazy danych. Zarządzanie
uprawnieniami to zazwyczaj jedno z ich zadań.
Język sterowania danymi (DCL)
Copyright by Piotr Greniewski
16
Języki SQL
PostgreSQL
Microsoft SQL Serwer
Oracle SQl
MySQL
wiele innych ...
Copyright by Piotr Greniewski
17
Definicja tablicy w SQL
CREATE TABLE Student
(
Student_id serial,
Nazwisko char(50)
not null,
Imię
char(50)
not null,
Imię_ojca char(10),
Wpisowe numeric(7.2)
);
Copyright by Piotr Greniewski
18
Wypełnienie tabeli danymi
INSERT INTO
Student(Nazwisko,Imię,Imię_ojca,wpisowe)
Values(‘Kowalski’,’Jan’,’Maciej’,350.00);
INSERT INTO
Student(Nazwisko,Imię,Imię_ojca,wpisowe)
Values(‘Malinowski’,’Krzysztof’,’Stefan’,350.00);
Copyright by Piotr Greniewski
19
Dostęp do danych
SELECT * FROM Student WHERE Nazwisko =
‘Kowalski’;
-----------------------------------------------------------------------
1 Kowalski
Jan
Marek
350.00
2 Kowalski
Stefan
Jan
350.00
3 Kowalski
Zenon
Jan
350.00
Copyright by Piotr Greniewski
20
Dostęp do danych w języku PostgreSQL
Skorzystać z aplikacji wiersza poleceń w celu
wykonania instrukcji SQL.
Wstawić kod SQL bezpośrednio do aplikacji (za
pomocą wbudowanego SQL).
Wykorzystać wywołanie funkcji (API) w celu
przygotowania i wykonania instrukcji SQL,
skanowania zbioru wyników oraz wykonania
aktualizacji z poziomu większości popularnych
języków programowania.
Uzyskać dostęp do bazy za pomocą sterownika
np. ODBC (otwarte połączenie z bazą danych),
bądź standardowej biblioteki jak DBI języka Perl.
Copyright by Piotr Greniewski
21
Systemy zarządzania bazą danych
(DBMS)
System zarządzania bazą danych (DBMS) to
zestaw programów umożliwiających
skonstruowanie bazy danych i aplikacji które z
nich korzystają
Funkcje jakie spełnia DBMS obejmują:
tworzenie bazy danych,
funkcje tworzenia zapytań i aktualizowania danych,
wielozadaniowość,
utrzymywanie dzienników systemowych,
zarządzanie bezpieczeństwem bazy danych,
utrzymanie integralności odwołań.
Copyright by Piotr Greniewski
22
Tworzenie bazy danych
Niektóre systemy zarządzają jednym wielkim
plikiem i tworzą w nim co najmniej jedną bazę
danych.
Inne posiadają możliwość korzystania z plików
pochodzących z wielu systemów operacyjnych,
albo korzystają z danych zapisanych
bezpośrednio w obrębie partycji dysku.
Użytkownicy nie muszą przejmować się
niskopoziomowymi strukturami tych plików, a
system DBMS dostarcza dostęp potrzebny
użytkownikom i programistom.
Copyright by Piotr Greniewski
23
Funkcje tworzenia zapytań i
aktualizowania danych
Systemy DBMS zawierają metody tworzenia
zapytań o dane, które spełniają określone
kryteria, jak np. wszystkie zamówienia złożone
przez określonego klienta, których jeszcze nie
zrealizowano. Przed powszechnym
wprowadzeniem standardu SQL sposób
tworzenia tych zapytań był inny dla różnych
systemów.
Copyright by Piotr Greniewski
24
Wielozadaniowość
Jeżeli baza danych jest wykorzystywana przez
kilka aplikacji lub o dostęp do niej w tym
samym czasie rywalizuje kilku użytkowników
system DBMS zapewnia przetwarzanie
każdego żądania użytkownika bez ujemnego
wpływu na możliwości korzystania z bazy
przez kogoś innego. Oznacza to że użytkownik
musi oczekiwać w kolejce gdy ktoś inny
modyfikuje ten rekord który użytkownik chce
zapisać
Copyright by Piotr Greniewski
25
Utrzymywanie dzienników systemowych
System DBMS przechowuje dzienniki
wszystkich zmian danych dokonanych w ciągu
pewnego okresu czasu. Funkcję tę można
wykorzystać do śledzenia błędów. Jej ważną
cechą jest możliwość rekonstrukcji danych w
przypadku awarii systemu. Zazwyczaj
utrzymywanie dzienników systemowych
wykorzystuje się do tworzenia rejestru
transakcji oraz kopii zapasowej danych.
Copyright by Piotr Greniewski
26
Zarządzanie bezpieczeństwem bazy
danych
DBMS zapewnia kontrolę dostępu do danych.
Dzięki temu zapewnia bezpieczny dostęp do
danych (odczyt, zapis, edycja, kasowanie) jak też
modyfikacji struktury danych (atrybuty, tabele,
indeksy). Dla konkretnej bazy danych definiuje się
hierarchię użytkowników – począwszy od super
użytkownika, któremu wolno wykonywać dowolne
zmiany w systemie, poprzez użytkowników
mogących dodawać i usuwać dane aż do takich
użytkowników którzy mogą je czytać. System
DBMS zawiera mechanizmy dodawania i usuwania
użytkowników oraz określania funkcji systemu
które są dla nich dozwolone.
Copyright by Piotr Greniewski
27
Utrzymanie integralności odwołań
Wiele systemów DBMS zawiera mechanizmy
utrzymania integralności odwołań które
decydują o poprawności danych. System
zarządzania bazą danych zgłasza błąd jeśli
aktualizacja złamie zasady modelu relacyjnego
Copyright by Piotr Greniewski
28
Co to jest PostgreSQL?
PostgreSQL jest to system zarządzania bazą
danych, który implementuje relacyjny model
bazy danych i obsługuje język zapytań SQL.
System obsługuje prawie wszystkie platformy
systemowe:
UNIX (np. SCO)
Linux (np. Red Hat)
Windows NT
Windows 2003 Server
Windows ME (stacja robocza!!!)
inne
Copyright by Piotr Greniewski
29
Co to jest PostgreSQL?
Zalety PostgreSQL:
jego główną zaletą, oprócz jakości jest to że jest
darmowy i oferuje dostęp do kodu źródłowego;
zawiera niemal wszystkie funkcje, które można
odnaleźć w innych bazach danych, zarówno
komercyjnych, jak i Open Source;
posiada również kilka funkcji dodatkowych,
właściwych tylko dla niego.
Copyright by Piotr Greniewski
30
Co to jest PostgreSQL?
Funkcje PostgreSQL obejmują:
transakcje;
zagnieżdżanie zapytań;
perspektywy;
integralność odwołań dla kluczy zewnętrznych;
zaawansowane mechanizmy blokowania;
typy definiowane przez użytkownika;
dziedziczenie;
reguły;
kontrolę współzawodnictwa dla wielu wierszy.
Copyright by Piotr Greniewski
31
Architektura PostgreSQL
Tak jak komercyjne bazy danych pracuje w
środowisku klient-serwer.
Sercem instalacji PostgrSQL jest proces bazy
danych zwany czasami silnikiem (ang. engine )
Aplikacje, które chcą uzyskać dostęp do
danych muszą wykonywać operacje przez
proces bazy danych. Nie mają dostępu do
danych bezpośrednio nawet gdy pracują na
tym samym komputerze co proces serwera.
Rozdzielenie klienta od serwera umożliwia
dystrybucję aplikacji (UNIX, Windows, ...)
Copyright by Piotr Greniewski
32
Architektura PostgreSQL
BAZA
DANYCH
KLIENT
O
D
B
C
KLIENT
POSTMASTER
POSTMASTER
POSTMASTER
Połączenie
Dostę
p
Linu
x
UNI
X
KLIENT
Połączenie
Window
s
SERWER
Wiele operacji dostępu
jednocześnie
Wielu
klientów