• potrzeba powstała bardzo dawno
• informacja jako zasób była
gromadzona od zawsze
• technologia informacyjna dostarcza
narzędzi ułatwiających
przetwarzanie informacji
• Biblioteki
• Katalogi
• Spisy
• Archiwa policyjne ...
Zbiory danych - historycznie
• Zgodność z rzeczywistością
• Dostępność w wymaganym czasie
• Forma sprzyjająca zrozumieniu
• Niewielki koszt przechowania
informacji
• Niewielki koszt uzyskania
informacji
• Dostępność tylko dla
uprawnionych
• Trwałość
• Mobilność
• Niewielkie rozmiary ...
CECHY DOBREJ INFORMACJI
• Systemy ewidencyjne (sprzedaży,
wypożyczeń, kadry, płace, ZUS, ...)
• Systemy kontroli
• Systemy rezerwacji zasobów
• Archiwa – przechowalnie
informacji historycznej
• Systemy wyszukiwania informacji
• Systemy analizy informacji
• Krótko mówiąc wszędzie ...
GDZIE JEST POTRZEBNA DOBRA
INFORMACJA
Era
Generacja Orientacja na
Główne cechy
1960
Pierwsza
Zbiory
Struktury plikowe dostęp
sekwencyjny
1970
Druga
Sieci i struktury
sieciowe
Informacje powiązane
sieciowo lub
hierarchicznie, dostęp
bezpośredni
1980
Trzecia
Relacje
Języki nieproceduralne
(co, a nie jak),
optymalizacja,
przetwarzanie
transakcyjne
1990
Czwarta
Obiekty
Multi-media, aktywne
bazy danych,
rozproszenie,
przetwarzanie danych
biznesowych
Generacje systemów gromadzenia danych
• Trwałość danych
– Bazy danych trwają w czasie przez długi czas
• Związki z określonymi dziedzinami
– BD obejmuje jakąś określona dziedzinę życia
(biblioteka, magazyn, ewidencja kadr)
• Związki pomiędzy elementami z tej
dziedziny
– Osobami, rzeczami
• Ograniczenia obowiązujące w tej
dziedzinie
• Dostępność
– Wielu użytkowników pracujących równolegle
– Wielokrotność użycia – tysiące dostępów
Charakterystyka bazy danych
Jakie problemy rozwiązują BD?
Niespójność i redundancja danych
•
Niektóre informacje mogą być obecna w wielu miejscach.
• rózne kopie danych mogą przechowywać różne informacje.
Które sa prawdziwe?
Trudności w dostępie do danych
• Dane zostają udostępnione w jednolitej postaci dla każdej
aplikacji,
• Wydobywanie złożonych informacji w relatywnie prosty
sposób.
Integracja danych
•
Ujednolicenie danych z różnych formatów.
• Ujednolicenie danych z różnych źródeł.
• Ujednolicenie danych o różnym rozumieniu.
Jednoczesny dostęp do danych
• Szybka i rownoległa obsługa wielu użytkowników.
• zapewnienie spójności danych podczas tych dostępów.
Jakie problemy rozwiązują BD?
Właściwa ochrona danych
• Dostęp do danych tylko przez uprawnionych
użytkowników.
• Fizyczna ochrona danych – tworzenie archiwów,
kopii zapasowych
•Odtwarzanie danych po awariach
Uwzględnianie ograniczeń
• Zapewnianie przestrzegania nałożonych
ograniczeń na dane.
Zapewnienie rozwiązania tych problemów
przerzucono na systemy zarządzania bazą
danych
Rynek oprogramowania baz danych
• Korporacyjne SZBD (Enterprise
DBMS)
– Oracle: dominuje w środowisku UNIX;
poważny dostawca dla NT
– SQL Server: dominuje w środowisku NT
– Informix: poważny dostawca dla
środowiska UNIX
– DB2: poważny dostawca dla środowiska
mainframe
• Biurowe SZBD (Desktop DBMS)
– Access: dominuje w środowisku Windows
– FoxPro, Paradox, Approach, FileMaker
Pro
Składniki systemu z bazą danych
• Kolekcje danych
• Użytkownicy:
– programiści
– projektanci
– administratorzy
– użytkownicy końcowi
• programy aplikacyjne
Database System
Components
Provides programming
language and interfaces
to programming
languages
Zawartość kolekcji danych
• Dane użytkowników (książki,
pracownicy, materiały, rachunki, ...)
• Metadane
– dane opisujące strukturę bazy, formaty
danych
• Dane aplikacji
– procedury przechowywane, zapytania
(widoki), schematy raportów, formatki, ...
• Indeksy
Baza danych
• metoda strukturalizacji zarządzania
informacją
• dotyczy fragmentu rzeczywistości i
stanowi kolekcję danych
• część systemu informacyjnego
- aplikacja bazy danych
(oprogramowanie)
- system informatyczny (sprzęt)
Cechy bazy danych
• trwałość (aplikacja powinna
działać przez długi okres czasu –
dane przechowywane „latami”)
• zgodność z rzeczywistością
zmiana rzeczywistości musi być
uwzględniona w bazie danych
W bazie danych, musimy
• kontrolować redundancję
(powtarzanie się danych)
• jeden fakt powinien być
reprezentowany na jeden sposób
– problem dostępności i dokładności
poszukiwanych danych (czas dostępu
oraz nadmiar danych)
Podsumowanie charakterystyk
bazy danych
• Trwałość
• Bezpieczeństwo
• Jednolitość
• Oddzielenie danych od procedur
• Wzajemne powiązanie danych
• Współużytkowanie
Składniki systemA Closer
Look at a Database
System
• The four basic elements of a database
are:
– Users
• input, modify or delete data
– Database Applications
• Forms, reports, queries
– Database Management System (DBMS)
• Structured Query Language (SQL)
reads and
writes requests for the DBMS, to generate forms,
reports, queries
– Database
Motywy powstania technologii
baz danych
Powtarzalność (redundancja) danych
Jedna informacja występuje w kilku miejscach
Niespójność danych
Nie wszystkie kopie zawierają tą samą informację
Trudności z dostępem do danych
Dane występują w różnej postaci, w różnych plikach,
Brak zunifikowanego podejścia utrudnia budowanie aplikacji
z bazą danych,
Trudności w obsłudze wielu użytkowników
jednocześnie
Zapewnienie równoległości w dostępie do danych,
zapewnienie odpowiedniego działania dla równoległych
operacji (zapewnienie spójności danych).
Trudności w zapewnieniu autoryzowanego
dostępu do danych
Kontrola nad dostępem
Zarządzanie użytkownikami i prawami dostępu.
Model relacyjny - przegląd
Model wprowadzony przez E. Coddaw roku 1970
operty o teorię zbiorów
relacyjna baza danych składająca się z kolekcji
powiązanych tabel, z których każda ma unikalną
nazwę.
Każdą informację można zapisac w postaci
dwuwymiarowej tablicy
Nazwy kolumn odpowiadają atrybutom obiektów,
W wierszach zapisywane są informacje o
poszczególnych obiektach.
teoria obejmuje:
• algebrę relacji
• teorię normalizacji
•inne teorie (rachunek predykatów, obsługę wartości
NULL, ...)
Attribute
value
IDName
s1
s2
s3
s4
s5
Toan
Alice
Tom
Sue
Steve
STUDENT
GPA
3.7
4.0
3.0
2.9
3.5
. . .
Relation
(Entity Set/Table) Name
Attribute Name
Tuples
(Rows or
Entities)
Attributes/Columns
Relations (Entity
Sets/Tables)
An attribute name must be unique
An attribute of a tuple cannot be multi-valued
An attribute value cannot be complex
An attribute value cannot be a pointer
Values in a column have same type
There are no two identical tuples
The order of tuples is inessential
Constraints:
Database Technology
Evolution
Era
Generation
Orientation
Major Features
1960s
1
st
Generation
File
File structures and
proprietary program
interfaces
1970s
2
nd
Generation
Network
Navigation
Networks and hierarchies
of related records,
standard program
interfaces
1980s
3
rd
Generation
Relational
Non-procedural
languages, optimization,
transaction processing
1990s
4
th
Generation
Object
Multi-media, active,
distributed processing,
more powerful operators
Rynek SZBD
• Korporacyjne SZBD
– Oracle: dominuje na UNIXie
– SQL Server: dominuje na NT
– Informix: duży udział Unix
– DB2: dominuje na maszynach mainfraime
• Biurowe SZBD
– Access: dominuje w systemach Windows
– FoxPro, Paradox, Approach, FileMaker Pro
Zarys SZBD
• Relational model basics
– Tabele
– relacje
• Reguły poprawności
– na atrybutach
– na wierszach
– na tabelach
• Reguły na tabelach powiązanych
• Języki oparte o algebrę relacji
Co to jest transakcyjny SQL
Najprościej:
Transakcyjny SQL =
zdania języka dostępu do danych +
instrukcje sterujące
Po co transakcyjny SQL
Umożliwia przechowywanie w bazie
danych nie tylko danych ale również:
1. Reguł biznesowych,
2. Reguł integralności niemożliwych do
zapisana innymi sposobami,
3. Scentralizowanych procedur
przetwarzania danych,
4. Funkcji.
Cechy transakcyjnego SQL
1. W pełni funkcjonalny język programowania,
2. Brak interfejsu graficznego,
3. Polecenia specyficzne dla obsługi baz danych,
4. Brak narzędzi programistycznych
(specjalizowany edytor, debugger),
5. Służy do programowania działań po stronie
serwera,
6. Optymalizowany na szybkość wykonania kodu,
7. Niezbędny do zaprogramowania niektórych
operacji
8. Wykorzystywany do kodowania funkcji
użytkowników, procedur przechowywanych,
triggerów
Cechy transakcyjnego SQL
1. W pełni funkcjonalny język programowania,
2. Brak interfejsu graficznego,
3. Polecenia specyficzne dla obsługi baz danych,
4. Brak narzędzi programistycznych
(specjalizowany edytor, debugger),
5. Służy do programowania działań po stronie
serwera,
6. Optymalizowany na szybkość wykonania kodu,
7. Niezbędny do zaprogramowania niektórych
operacji
8. Wykorzystywany do kodowania funkcji
użytkowników, procedur przechowywanych,
triggerów
Elementy transakcyjnego SQL
1.
Zmienne takich samych typów jak pola
w bazie danych
2.
Instrukcje sterujące: IF, FOR, WHILE
3.
Nawiasy logiczne BEGIN..END
4.
Możliwość deklarowania funkcji –
funkcje zwracają wartość ale nie
można wewnątrz nich wykonywać
działań na bazie,
5.
Możliwość deklarowania procedur
6.
Deklarowanie triggerów – procedur
wykonywanych w reakcji na określone
zdarzenia w bazie danych
Przykład prostej funkcji
CREATE FUNCTION pierwsza_duza (@tekst varchar(50))
RETURNS varchar(50)
as
BEGIN
declare @pierwszy_znak
varchar(1)
declare @reszta
varchar(49)
set @pierwszy_znak = upper(left(@tekst,1))
set @reszta = substring(@tekst, 2, len(@tekst)-1)
return @pierwszy_znak+ lower(@reszta)
END
Wywołanie:
select dbo.pierwsza_duza('ALABASTER')
WYNIK:
Alabaster
Przykład prostej funkcji 2
create function aa(@x int,@y int) returns int
as
begin
declare @wynik int
if @x > @y
begin
set @wynik = @x+@y
end
else
begin
set @wynik = @x-@y
end
return(@wynik)
end
Przykład prostej procedury
create PROCEDURE generuj
@ile int = 100
AS
DECLARE
@i integer
DECLARE
@los varchar(20)
DECLARE
@znak varchar(1)
set @i =1
while @i<@ile
begin
set @los = replicate(char(rand()*65+33),round(rand()*20,0))
insert into probna values(@los , null, null)
set @i=@i+1
end
Wywołanie:
exec generuj 400
Sprawdzenie:
select * from probna
create table probna (
id_rek integer
identity (1000,1),
tekst varchar(20),
liczba numeric (8,2),
random float
)
Co to jest kursor?
Kursor można rozumieć jako połączenie
dwóch elementów:
• Wybranego (zwykle niepustego) podzbioru
wierzy danej tabeli lub widoku
• Wskaźnika pokazującego tzw. bieżący
rekord
Kursory umożliwiają przetwarzanie informacji
w trybie rekord-po-rekordzie. W
przeciwieństwie do przetwarzania całych
tabel tak jak w poleceniach UPDATE SQL-
a.
Jak używać kursora?
1.
Kursor należy zadeklarować – do kursora
wybieramy te wiersze i pola, które
zamierzamy jakoś przetwarzać
DECLARE nazwa_kursora CURSOR
FOR SELECT zdanie _select
[FOR UPDATE OF lista_pol]
2.
Kursor należy otworzyć
OPEN nazwa_kursora
3.
Pobierać kolejne rekordy
FETCH nazwa_kursora INTO list_pol
4. Po użyciu kursor zamknąć i zniszczyć
CLOSE nazwa_kursor
DEALLOCATE nazwa_kursora
Przykład użycia kursora
ALTER procedure wyp_liczby
@od_ilu int, @co_ile int
AS
BEGIN
declare @pom_liczba numeric
declare all_rec cursor for select liczba from probna for update of
liczba
open all_rec
fetch all_rec into @pom_liczba
while @@FETCH_STATUS =0
begin
update probna set liczba = @od_ilu where current of all_rec
set @od_ilu = @od_ilu + @co_ile
print @od_ilu
fetch all_rec into @pom_liczba
end
close all_rec
deallocate all_rec
print '>>>>>>KONIEC<<<<<<'
end
create table probna (
id_rek integer
identity (1000,1),
tekst varchar(20),
liczba numeric (8,2),
random float
)