background image

• 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

background image

• 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

background image

• 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

background image

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

background image

• 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

background image

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.

background image

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

background image

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

background image

Składniki systemu z bazą danych

• Kolekcje danych
• Użytkownicy:

– programiści
– projektanci
– administratorzy
– użytkownicy końcowi

• programy aplikacyjne 

background image

Database System 

Components

Provides programming 
language and interfaces 
to programming 
languages

background image

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

background image

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)

background image

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

background image

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)

background image

Podsumowanie charakterystyk 

bazy danych

• Trwałość 
• Bezpieczeństwo
• Jednolitość
• Oddzielenie danych od procedur

• Wzajemne powiązanie danych

• Współużytkowanie 

background image

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

background image

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.

background image

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, ...)

background image

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:

background image

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 

 

background image

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

background image

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

background image

Co to jest transakcyjny SQL

Najprościej:
Transakcyjny SQL = 

zdania języka dostępu do danych +
instrukcje sterujące

background image

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.

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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.

background image

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

background image

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


Document Outline