AS
I I
I".I __.
I"'f..
S "P I S T`i"{`i'Ĺ S (il
_
¬. _¬.-I _ _-_ ______'-I- _15-I. ¿-, .-
._
_ _
___
¬
I-_.I I I '-I I _,J ,I
__-_-_ _-._____ ._-T--______-_--..,..._
__._-_-.__.____.___- -__ __
_
_
__
_
I
I' I' ______ ._________._-___________._..__-____':,-I_,'.{_;;_I__-..._-_-_-;.-_I. I .I _I .I | I
_
' :
' I I
I I' I
' I
I'
I
Od Autora . _ _ _ _ _ _ _ _ _ . _ . _ _ _ _ . _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ . . _ _ _ _ _ _ . _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _
5
I
I:
I | | |
,' I I I
Wstęp _ _ _ . _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
6
I
I
I.
_I
.'
|
.I
I----___-__-. I- -._ _ I
I. Podstawy baz danych
I '
Pojęcie bazy danych - podstawowe definicje_ Właściwości baz danych _ _ _ _ _ _ _ . _ _ _ _ . _ _ _ _ _ H Modele danych _ _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ . _ . _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ . _ _ . _ . _ _ _ _ H Integralność danych _ _ _ _ _ _ _ _ _ _ . _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ . _ . _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ Funkcje Systemu Zarządzania Baza Danych [SZBD) _ _ _ . . . _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ H Charakterystyka elementow bazy danych _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ E Sieciowe serwery baz danych _ _ _ _ _ . _ _ _ _ _ _ _ _ _ . _ _ _ _ _ . _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ . _ _ _ _ _ _ _ _ Tabele baz danych _ _ _ _ _ _ _ _ _ _ _ _ _ . _ . . _ _ _ _ _ _ _ . _ _ _ _ . _ _ _ _ _ _ . _ _ _ . _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ . _ _ H Projektowanie konceptualne, logiczne i fizyczne _ _ _ _ _ _ _ _ _ _ . _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Normalizowanie baz danych _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ . _ _ _ _ _ _ . _ _ _ . _ . _ _ . _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ [Ii] Związki pomiędzy tabelarni bazy danych _ _ _ . _ . _ _ . _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ Formularze do przetwarzania danych _ _ _ . _ _ . _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ . _ _ _ . _ _ . _ _ _ . _ _ _ _ Rodzaje kwerend wykorzystywanych do przetwarzania danych _ . _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ,_
_________-_-_-¬.-_____.___.
.__.__.._____.__________
._
.
_-___
__.......____
._.__
.---_-__
..-___
._____
__
--
8 11 15 17
19
|
I I I
I ¦ |
I
I'
23 25 29 33 53 59 61
_
I
.' I'| I I
I I'_I I' I
I | I | | I'
I I I I I
.`
I
' : ' I _ | | ,
I
,'
_ I I I
j .
I
, I' |I |
I I _II' I
I i
I
. I
.
I
' : | .
I I
I I .I I
I I I' I ,'
.
.
.__
II. Podstawy języka SQL I .'
I I'
I
I'
' ;I I I
ŠŜ [El E-Š [E EH EE
Strukturalny język zapytań SQL _ _ _ _ _ . _ _ _ . _ _ . _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ Strukturalny język zapytań - charakterystyka składni _ _ _ _ _ . _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ Klauzule strukturalnego języka zapytań _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ . _ . . _ _ _ _ _ Funkcje w bazach danych _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ . _ _ . . _ _ . _ _ _ _ _ _ _ . _ _ _ _ . . _ _ . . _ _ _ _ _ _ _ _ Instrukcje sterowania dostępem do danych _ _ _ _ . _ _ _ _ _ . _ _ _ _ . _ _ _ _ _ _ _ _ _ . _ _ _ _ _ . _ _ _ _ _ _ _ _ Rozkazy języka SQL, tworzenie tabel i operacje na tabelach, wyszukiwanie informacji iich zmiana _ _ _ _ . _ _ _ _ . _ _ _ _ _ _ _ _ _ _ . . . _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ Zapytania zagnieżdzone (podzapytania) _ _ _ _ _ . _ _ _ _ . _ _ _ _ . _ . _ _ _ _ _ _ _ _ _ . _ _ _ _ . _ _ _ _ _ _ _ _ __ HE Złączenia i widoki _ _ _ _ _ . _ _ _ _ . _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ W Wyzwa1acze(Triggers) . _ _ _ _ _ _ . _ _ _ _ _ _ . _ _ _ _ _ _ _ _ . _ . _ _ _ _ _ _ _ _ _ _ . _ _ . _ _ _ _ _ . . _ _ _ _ . _ _ _ __ E Transakcje, blokadyizakleszczenia _ _ _ _ _ _ _ _ _ _ . _ . _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ . _ _ _ _ __
I
I
_____.___._¬_-______,___
_
_____._____._.
.._________
.___________..
__
__._______
.__________._______
_
._
_____
___.________„,.______._
-___
_
|
I
I
I
I' I
I ,'
I |
.' I
| |
64 69 80 81 88
I I
. .'
92 136 142 150 153
I I
I'
I
.' I I
I ,' .I
I |
I
| |
I I
'I
I
I
I
I
I I'
I I
I
,_
I'
I
I I I I I I I .' I I
,' -' .I I I I I I I r
...-.______ _ _ _ _ „ - _ _-____
Ill. Tworzenie relacyjnej bazy danych -_ş__-Ż - _-_-1
Ê EE] W E
I
Modyfikacja tabel i operacje na tabelach _ _ _ _ . _ _ _ _ . _ . _ _ _ _ _ _ _ _ _ _ . Tworzenie nowej instancji bazy danych w MySQL i PostgreSQL . _ _ Organizacja pracy związanej z realizacją projektu informatycznego _ Zasady zarządzania projektem tworzenia bazy danych _ _ _ _ _ _ _ _ _ _ _ _
_______._---._______._-__---____.___
-..____.____
_--_._____
_
---__-____-_.
____._.____
--------_-___.‹-----..--._..--
_ _ _ _
_ _ _ _
. _ . _
_ _ _ _
_ _ _ _
---_____-_-.----__.___-_------____-J
__ __ _ _ ._
_ . _ .
_ _ . _
_ . _ _
_ _ _ _
. _ _ _
_ _ _ _
_ _ _ _
_ _ _ _
. _ _ _
_ _ _ _
_ _ _ _
_ _ _ _
160 166 171 173
---:_
.'
I
I I |
I I' II
._ ': I: |I
I |I I'I
III' _'I' IJ |l I
_
IV. Struktura bazy danych w programie Microsoft Access i rozbudowa bazy danych | |' I' I' I'
I I I I I
|
. ,| '
I
| |
I I
I
Bazy danych w programie Microsoft Access _ _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ 178
El Tworzenie wielu tabel w programie Microsoft Access . _ _ _ _ _ _ . _ _ _ _ _ . _ _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ 211
I' f
I I
I
,'
I |
-' I
¬-' I_I
_
____
_
- - - -Ÿ
___ _-__
_
I_-
-I
I
I' I
_.__
_ _I |
I' I
_
,'
I
¬-_ I-
_-I-
BAZY DANYCH I SYSTEMY BAZ DANYCH I
¬-'I ¬.I -._ I- ¬.I_,¬ __-_---__I_'_.___ ___-__- _ ____
¦
___ __________ _________ _ _ _ _ _ _ _
_
_
II---------------------- ---- - -_-_____.____________________________ ______ .______._._¬_¬_._.__ ______________________
___
____ __ ___
_
___ __
_-_ ___I
______________ -_ _______ -_ _________________________ _ __
¬'
V. Programowanie baz danych w językach wysokiego poziomu na przykładzie VBA |-_ _-.I._____-____________.-.________________--- ¬_¬._¬_.,_ _¬,_ _
I
Ê Wykorzystanie Visual Basic _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ . . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ 218 Hi] Użycie skryptów w bazach danych _ _ _ _ _ _ _ _ _ _ _ _ _ . . _ _ _ _ _ _ _ _ . _ _ _ _ _ . _ _ _ _ . _ _ _ _ _ . _ _ _ _ _ _ 240
I I I I I__ I'
---- ---- -_-_-_-__-___ ____ _____ ______________ _______ __
I' I' .I
___ _„¬___,______ _______________________ ______
VI. Instalacja serwera baz danych
I'
ŜH Instalacja serwera baz danych _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ . . _ _ . _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 244 EE Instalacja PostgreSQL _ _ _ _ _ . _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ . _ . _ . _ _ . _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ 256 Ê Uruchamianie i Wyłączanie serwera baz danych MySQL i PostgreSQL w systemach Linux
I' .I
I' _I I I I I .I II
J
I'
I'
i Windows _ _ _ _ _ . _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ 261
I__ r I I I I I I I I I
I
ÊII Ê EE E H-ŠI
I' I'
__ I
MySQLi PostgreSQL -testy wydajności i optymalizacja Optymalizacja konfiguracji serwera baz danych _ _ _ . _ _ . Optymalizacja bazy danych _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . . Indeksy _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ Indeksy PostgreSQL _ _ _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __
_
_____-__-_______ ____________________ .,._.__¬__,¬____,_,_¬__________________
____
_______
_ _ _ _ _
_ _ _ . _
_ _ _ . _
_ _ _ _ _
_ _ _ _ _
_ _ _ _ .
_ _ . _ _
_ _ _ _ .
_ _ _ _ _
_ _ _ _ .
_ _ _ _ _
_ _ _ _ _
_ _ _ _ .
_ _ _ _ _
_ _ _ _ _
_ _ _ _ _
_ _ _ _ _
_ _ _ _ _
_
_ _ _ _ _
_ _ _ . _
. _ _ _ _
_ _ . . _
_ _ _ _ _
_ _ _ . _
_ _ _ _ _
. . . _ _
_ _ _ _ _
_ _ __ __ __ __
_
266 274 275 289 291 _“___ ___________
I'
'I I I' I'
I I'_I I'
...r
VII. Zabezpieczenia baz danych I
Hi Podział zagrożeń dla bazy danych i sposoby przeciwdziałania im _ _ _ HI] Zabezpieczenia dostępu do danych (zarządzanie bezpieczeństwem) Schematy _ _ _ _ _ _ _ _ _ _ . _ _ . . . _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Nadawanie i odbieranie uprawnień PostgreSQL _ _ . _ . _ _ _ _ _ . _ _ _ _ . _ Kopia zapasowa i odtwarzanie bazy danych _ _ _ _ _ _ _ _ _ _ _ _ . _ _ . . . _ . .
I' J I' I' I I' I' I'
II I
I
I I I I I r I' I'_I
II I I
I
_ _ _ _ _
_ _ _ _ _
_ _ _ _ _
_ _ _ _ _
_ _ _ _ _
_ _ _ _ _
_ _ _ _ _
. _ . . _
. _ . _ _
_ _ _ _ _
_ _ _ _ _
. . . _ _
_ _ _ _ _
_ _ . . _
. _ _ _ _
_ _ _ _ _
_ _ _ _ .
_ _ _ _ _
_ _ _ _ _
300 303 308 310 315
_ _ I_ _ _ _
I I I I I I I I _I I I I _I I I I I I I .I I .I
Wykaz podstawowych pojęć w językach polskim, angielskim i niemieckim . _ . _ . _ . _ _ _ _ _ _ _ _ _ _ 322
I _I J I I
I'
I 'I I' I' 'I I
Słowa kluczowe w języku SQL _ _ _ . _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ . . _ _ . _ _ . _ _ _ _ _ _ . _ _ _ _ _ _ _ . . _ _ _ . _ _ _ _ _ 325
II
Bibliografia _ _ _ _ _ _ _ _ . _ _ _ _ _ _ . _ _ _ _ . _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . _ _ _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ . _ _ . _ _ _ . _ _ _ 334
I
I
I I
I
I' I'
I' I' I' I' I' I' I' I' I'
I
I I
I' I' I'
I
I' I' I I
'_ I
'Í I I
I'
I' II
J _I
-I.-I.-¬.¬ -_I. ¬ _.¬ -I_¬. ¬.-_¬.
I
I'
I
Ĺ'_I II J _I I I I
I' J
_ ____
II I
¬.-_¬. _
I
--- _ _ ¬_,¬_ „_ I_- I¬.-
_ _-_-
¬_¬.I_I_-__.‹_________..._._._._._¬¬
¬_¬_¬__ ___ ___
_
_________ ¬
¬__ _-___ _________ _______¬_
_
_
____
_
___
___
_______
_¬.I. I' I' -I.¬.¬_¬
_,._ .I_- "-¬i'-¬_
1*'„_ -.I-I.- 'I-'I
_
_
I. Podsta baz danym/ 1 1 1 1 1 1 1 1 1 1 1 1
Pojęcie bazy danych - podstawowe definicje. Właściwości baz danych Modele danych Integralność danych Funkcje Systemu Zarządzania Bazą Danych (SZBD) Charakterystyka elementów bazy danych Sieciowe serwery baz danych Tabele baz danych Projektowanie konceptualne, logiczne í fizyczne Normalizowanie baz danych Związki pomiędzy tabelami bazy danych Formularze do przetwarzania danych Rodzaje kwerend wykorzystywanych do przetwarzania danych
Bf'-\.Z“r' D.-'%l\ÍY(Í H l SYSTEÍM-'l`1" BAZ D.›'\N`1"(ĹH _
._..
J._
--.-
.
_____.
____
____
,i__:.
---_
-._-__
.__i_
-_
.
.
._-__
-_
_-___
-_i_._
Pojęcie bazy danych podstawowe definicje. Właściwościbaz danych ZAGADNIENIA
1 Definicja bazy danych I Odróżnianie bazy danych od systemów zarządzania bazami danych 1 Właściwości baz danych -_____.__,
.--_
______
._í____
.___._¬_._
._
__
.__
--
Å.
-_:___
_.__
_-_¬..
-
Bazy danych Obecnie bazy danych, coraz częściej wykorzystywane w informatyce, stanowią niejedno-
krotnie podstawę funkcjonowania firm, stron internetowych, systemów zarządzania treścią, instytucji rządowych ibadań naukowych. Bazy danych znajdują zastosowanie tam, gdzie zachodzi potrzeba gromadzenia dużych ilości danych, ich przechowywania, szybkiego porównywania, sortowania czy wyszukania wyników. Baza danych jest zbiorem danych oraz narzędzi systemu DBMS (Database Management
System- - System Zarządzania Bazą Danych, SZB D) przeznaczonego do zarządzania bazą danych oraz gromadzenia, przekształcania i wyszukiwania danych. Baza danych to zbiór danych, który dotyczy rzeczywistości - a konkretnie określonego
jej fragmentu, który reprezentuje. Fragment ten określamy mianem obszaru analizy. Baza danych ma takie cechy charakterystyczne, jak:
Trwałość danych - oznacza możliwość przechowywania danych w pamięci masowej (trwałej) komputera. Dane tymczasowe mogą być przechowywane w pamięci komputera i tracone po jego wyłączeniu. Niezależność danych - pozwala osiągnąć większą elastyczność, ponieważ programy wy-
mieniające informacje z bazą danych są niezależne od przechowywania danych na dysku i szczegółów reprezentacji danych na dysku. Niezależność dotyczy również posługiwania
się danymi. Użytkownicy są zabezpieczeni przed logicznymi zmianami (program obsługujący bazę danych jest zabezpieczony przed modyfikacją struktury tabel bazy danych). DBMS - gwarantujący niezależność fizyczną - przejmuje na siebie zadanie określenia,
w jakim formacie i jak dane będą przechowywane na dysku. Ochrona danych - baza danych oferuje mechanizmy kontroli dostępu do danych w sposób umożliwiający użytkowanie danych wyłącznie przez uprawnionych do tego użytkowników. Integralność danych - zgodność z rzeczywistością.
Dane w bazie danych są odwzorowaniem rzeczywistości. jeśli modelowany fragment rzeczywistości ulegnie zmianie, baza danych również musi się zmienić.
Część intensjonalna - inaczej schemat bazy danych - to zbiór definicji powstających w trakcie projektowania bazy danych określający strukturę danych. Schemat tworzy encje (klasy) oraz właściwości klas - atrybuty. Część ekstensjonalna - to łączny zbiór danych w bazie danych. -|
.ji
.._.....__________..-____
-___
.
______
--:____.
_.-_-_...--.._í____
.-____._.
..
-._.,_.
.--___
.____..
.-._
._________...__i__.
_.__
_
¦| l| I I
r›oris"r'a\;a'aY: Baz. uar~.«'y‹.';:r-r
| |'
|
.
;tj 93 | |
|' l'
r|-
-4I
(I
_ ___________
_______
._--__.________ ______________,._._______.__._.________________._
I
.._________.________.._____________________._.___._-___¬_________________,.___l._____.__ | |
l l
,-
|
| I
| |
System zarządzania bazą danych SZBD (DBMS - Database Management System) ob_ Š;
sługuje użytkowników bazy danych, umożliwiając im eksploatację oraz tworzenie baz danych. By stworzyć i zaprojektować bazę danych, należy ją zdefiniować, a do tego konieczne jest określenie (zdefiniowanie) typów przechowywanych w niej danych. Istotną rolę odgrywa również wyznaczenie użytkowników oraz ich praw dostępu. SZBD pełni funkcje, które określane są mianem właściwości baz danych. Zaliczamy do nich:
j
Ê
1 tworzenie struktur baz danych, '
ø 1 I 0
I I |'
'Ê |
I I
5 j
wykonywanie operacji CRUD (Create, Read, Update, Delete), obsługa zapytań (selekcjonowanie danych), generowanie raportówizestawień, administracja bazą danych.
Tworzenie struktur baz danych
¿
Aby utworzyć strukturę bazy danych, należy posłużyć się wcześniej sporządzonym projektem. Struktura to szkielet bazy danych, przeniesienie koncepcji tabel, powiązań na obszar systemu zarządzania bazą danych. Strukturę bazy danych możemy utworzyć po podłączeniu do serwera bazy danych. Na taką strukturę składają się: tabele, widoki, powiązania pomiędzy tabelami, domeny, funkcje. W SZBD PostgreSQL strukturę bazy danych możemy poznać, oglądając menu programu pgAdminIII.
Š; =
Š--ŁTĘĘIF e-- twmrzi
‹ ,
O MIS! (information_sche O PostgreSQL (og__catałoi
:Š
'.i°'m°'Z:,”am
1.. wesele ta)
B
Ł ,Í.
_
Paamsaa ru)
'
1 '.
|'
;
I
,
1-
-
(0)
Konfiguracja FT5 (Ľ
Regały (Ü)
awm Frs(o) ea'-;ery Frsm) szaumy Frs (up
wş'2t"~'@a'=2@ (0)
Funkca to www mi
Ę
)
po
„
rabaz ai
.- . ‹..¬ .-'.
Funkcje wyzwelacz'
Widvti (1)
I'
J |'
; I
5 5 . |' ł
.' J || . í____ . _--_- -.- _
Rys. 1.1. Struktura baz danych w programie pgAdmir1III
Elementy struktury bazy danych widoczne na ilustracji to: tabele, funkcje, widoki, wyzwalacze, domeny, funkcje wyzwalaczy, indeksy, ograniczenia (w tym powiązania pomiędzy tabelami), czyli wszystko to, co stanowi logiczną organizację danych. Kolejną właściwością bazy danych jest przeprowadzanie operacji CRUD (zapisu, odczytu, aktualizacji i usuwania). Może zajść potrzeba modyfikowania tabel, widoków oraz
¿ Ê ř= ¦ l
`" .'
| | | II
.' ' I I,
r ._.___..____.__.______- _ _ _-_-_- _ - -__ _.__...______._ ___ _ _._ _ .¬- -- - -----í_______ _ .._-.¬.- -¬- --_----í___-__ _ _-_¬.-.- -.¬¬------_---:___-_..-____-_¬_-_ _--- -------i____.____ _-.¬-.--_---------__i-_._____- _-_-_- -.- ---:-¬--ł-__-
[_ I'
1| ł
I _I
I I' .I'
.l. 4 -I -I _p
I' I I .I
¦ _III .I_ f f ' I I
f
I I
I' I'
.I .I I II
I |
-I-L I ¦
.-1-_I1-. . _ . _ _„_ _1í___ _ _,_ ._¬_,¬_¬_,¬_
BAZY DANYCH l SYSTEl\»'IY BAZ DANYCH
1| I' I'
-_- ._ ____i:_i_.-
-.¬__-____
:_
.__-_.-._-___.__.:__.__._.¬_._-_ _____í_____¬_.¬.1__-___________.__.__
_________
_
._
____
_______.
_____.____.___í_._____¬__-¬,,______:____-_..¬_¬,_¬_
I
.' 1' .'
I I I
1'
I
|'
I
|
I
,
I
| |
I |
| I I I
1 1' 1' 1'
I
F
I
1'
I
I'
I I I I
I I I I
J
I
,I 1'
I I
,1 I I I I I
I 1 I _1 1 I'
'
I
' I
.I .I
1'
"
,I I I | I I
I I l I I I
.' ,,' I |'
I I I I I
|'
l
I I I I
I 1 .' .'
,
aktualizacji danych przechowywanych w tabelach. Baza danych powinna być tak zaprojektowana, by wykonywanie aktualizacji na danych, usuwanie danych czy wprowadzanie nowych informacji do bazy danych nie spowodowało utraty spójności. Spójność bazy danych to poprawność umieszczonych w niej informacji.
Baza danych powinna mieć mechanizmy umożliwiające uzyskanie szybkiego dostępu do danych i ich selekcjonowania. W relacyjnych bazach danych do uzyskiwania dostępu do danych służą zapytania. Zapytania to instrukcje napisane przeważnie w języku SQL. Oprócz uzyskania dostępu do informacji i danych, ich sortowania, selekcjonowania i przeszukiwania baza danych powinna oferować mechanizmy umożliwiające drukowanie wykazów czy zapisywanie ich poza bazą danych. Funkcje takie spełniają raporty i zestawienia, które mogą być generowane z baz danych. Baza danych powinna umożliwiać administrację swoimi zasobami. Administracja może mieć charakter nie tylko projektowania i implementowania, lecz także optymalizacji i dostosowywania do potrzeb użytkowników.
1
I'
_-____.___:__.
si-iaawnż swoją wirozs
I I 'I' _
.r 4-1.'-" ._'.'_ '-_'¦___:I`I -iI"'¦'
_-:I
à_I'å:_ -I
-ii'."'. ._ ;_ .¦.7_rf '!'I'.;-I; :'¦'I _„_-_ 21;.. -I -1.`:1
E' -1
1: 1I¦ .-
1 -' 'h.¦I:.'
.-11. ..._ _I I'
.',_-.-_1. ,_'-¬'.,__ -' .II
I
I
1. 2. 3. 4.
Co to jest baza danych? Wymień przykłady zastosowania baz danych. Podaj cechy bazy danych. jaka jest różnica między częścią intensjonalną a ekstensjonalną bazy danych?
I
I' 1'
I1='oos "ra w if' e .ii
1!
o A rr r <3:
I .I
I I l
I
¦I
I I -Il- 15 .I-1. 1-_I1.- "1.- 1.- 1-
pn.
Modele danych ,__
. ._ .__-_---_
__ _ _._ II., ._.___¬__ _ _ __.___._._._ ________ -___ _
__
ZAGADNIENIA
I Definicja modelu danych I Modele danych: model jednorod ny, hierarchiczny model danych, sieciowy model danych,
model relacyjno-obiektowy, obiektowy model danych, relacyjny model baz danych I Rozproszona baza danych
Opisywane w tym rozdziale zagadnienia wymagają wstępnego zdefiniowania pojęcia modelu danych. Model danych to zintegrowany zbiór zasad opisujących dane, relacje, powiązania (stosunki) pomiędzy danymi, dozwolone operacje i ograniczenia nakładane na dane i operacje. Model danych jest próbą reprezentacji świata realnego i występujących w nim obiektów, zdarzeń oraz związków zachodzących między nimi. Można go opisać jako konstrukcję składającą się z trzech komponentów: II części strukturalnej - składającej się z reguł określających budowę bazy danych; II części manipulacyjnej - określającej, które operacje (transakcje) aktualizacji, pobierania i zmiany struktury można wykonywać na danych; 1 części zawierającej reguły integralności - gwarantującej stabilność działania systemu. Model jednorodny - to model, w którym wszystkie dane są umieszczone w jednej tabeli, jednym arkuszu* (kostce analitycznej). Przykładem takiego modelu jest książka telefoniczna. Cechuje go łatwość i szybkość odczytywania danych. jego wadą jest duża liczba duplikatów, takich jak pamięć dyskowa czy operacyjna, które mogą się pojawiać i tym samym zwiększyć zużycie zasobów komputera. Dane w modelu jednorodnym nie zawsze będą łatwe do odnalezienia. Gdyby jednorodny model danych prezentować na przykładzie książki telefonicznej, to łatwe byłoby odnalezienie numeru telefonu na podstawie imienia i nazwiska, jednak wyszukanie imienia i nazwiska na podstawie numeru telefonu stwarzałoby problem. Książka telefoniczna zawiera dane ułożone alfabetycznie wg kolejności nazwisk. Dlatego nie jest zoptymalizowana pod kątem przeprowadzania wyszukiwania, w którym dysponujemy numerem, a potrzebujemy odszukać imię i nazwisko. W modelu jednorodnym dane mogą być duplikowane. Dzieje się tak właśnie ze względu na strukturę tego modelu. Na przykład, gdyby w Warszawie mieszkało 50 osób o nazwisku Nowak i każda z nich miała telefon, wówczas w jednorodnym modelu danych otrzymalibyśmy pięćdziesiąt duplikujących się nazwisk w kolejnych wierszach, różniących się adresami i numerami telefonów, przy czym nazwisko byłoby wielokrotnie powtórzone. Hierarchiczny model danych -¬ jego początki sięgają 1960 r., gdy rozpoczęto prace nad projektami IDS (Integrated Data Store) oraz MIS (Management Information System). MIS rozwijany był przez IBM w ramach projektu kosmicznego Apollo. I-Iierarchiczny model bazy danych pod względem modelu przypomina strukturę odwróconego drzewa - istnieje może przechowywać duplikaly. jeśli będzie to np. wypis sprzedanych towarów, wówczas dany towar, który został sprzedany kilkakrotnie, będzie duplikowa ny w kolejnych wierszach. ',_____________
-.-_-___
--.-._
__________¬..-.------.-._
____
_._____-___
---
-___.._.-..-.____________
_
-
.-¬,-----_____.______._________._-1-_._-------- ____
_-__-___._-_._
_--_-.-¬-_.--.--_
-_
___-.__
.1_-_-.-----
__
__
1 1 1 1 I I I I I I i 1 I 1 1 1 I 1' 1 1
.I I I
1111111!_.I
-
_
_
I' I I'
_ _
1 I I
1'
I
|'
_
I
_ '
_
_
I
I
I
I II
I I,I
1
1'
O
I
I
1
BAZY DANYCH I SYSTEMY BAZ DANYCH
.i¦ 1: ___
-_-_-_-_1:__
____-__
o I 1' 1' 1 1' 1 1I I I
1 1 1 I 1 I I I I 1 I 1 1 _ _ 1
I
I
I I I II
1 1 1 1 1 1 _
I
I'
I I ' I .' I I I I 1
I I I I I I I I 1 1 _
¦
¦
' I '
1 1 I 1 1 1
1 I 1 I I I _ .8
__ 1' 1' 1 I 1 I I
I
I
1 I I
I I 1 1 1
I I I I I I I I 1 1 I I
_ . _ _ 1 _ 1
I
1
I I
_
I
_
I I
. 1 I I 1 I I I 1 1
_ 1 I I
I I I
1 1
_I I I ' '
_ 1 1 1 1
'
I
.' .'
1 1 I I 1 1 1 I 1 I I 1 1 1 1 1 1_1
' ' , .I I I I I 1I I 1
_ I I I I I
1' .' 1 I 1 I 1 I 1 I 1
I
1 1 1 1
. I
'
:
I
I 1 .I , I , , I I I 1 I 1 ' 1 _ , I I I
_1 I1 1 I I 1 1 I 1 _ _ 1 I I 1 1 1 1 1 __
I
I'
I I
I 1
I
I
I .I II I
1 I I I I
I
I
I ' '
1 I I
I _ _ I 1 I I
1 I I 1 _ _' __
I
1'
I I I I
I I _
1 I I
I
1
I
I
I I
I I
I
I
' 1
I 1 I
1'
1I
I
1'
'
1 I
I I I I I I
I I I 1 _ 1' 1
'
I
I
I
¦
I I I I I I I I I
I' 1' r I' I I I I I 1
I
¦
1
I
I
I
I
I
I
__
_-_.__
._________-____-
___._____.--
.-.__.-_....-_¬.._
____.____
._
_
__________._._-_
__________.
_
_ _ _ _ _._ _ _ _ _ _ _ _
_ _
_ _ _ _ .
_ __
__
______.___.
___
_
__
__
jeden korzeń (tabela nadrzędną) oraz synowie (tabele podrzędne). jeden ojciec może mieć wiele dzieci, ale każde dziecko ma tylko jednego ojca. Każdy rekord (z wyjątkiem głównego, który jest na szczycie) powiązany jest z jednym rekordem nadrzędnym. Model hierarchiczny opiera się zatem na dwóch strukturach danych - typach rekordów i związkach nadrzędny-podrzędny. Powiązanie nadrzędny podrzędny to związek ,,jeden do wielu” pomiędzy dwoma typami rekordów. Model ten różni się od relacyjnego, ponieważ w modelu relacyjnym powiązania zachodzą przez klucze obce, a w hierarchicznym przez związek nadrzędny-podrzędny. W hierarchicznym modelu danych nie można wstawić rekordu podrzędnego, dopóki nie zostanie powiązany z nadrzędnym. Usunięcie rekordu nadrzędnego powoduje automatycznie usunięcie wszystkich rekordów podrzędnych. Sieciowy model danych został ustandaiyzowany w 1969 r. przez CO DASYL (Confierence on Data Systems Languages). jego twórcą jest Charles Bachman i mimo że nie znalazł szerszego zastosowania, to przyczynił się do powstania relacyjnego modelu baz danych. Sieciowy model przyjmuje, podobnie jak hierarchiczny, strukturę przypominającą odwrócone drzewo z tą różnicą, że gałęzie jednego drzewa mogą być wspólne z gałęziami innych drzew. Sieciowy model oparty jest zatem na dwóch strukturach danych: typach kolekcji i typach rekordów. Typy rekordów mają swój odpowiednik w modelu hierarchicznym, jednak pola są w stanie' przechowywać złożone wartości, które mogą się powtarzać. Typ kolekcji jest opisem związku ,,jeden do wielu” pomiędzy dwoma typami rekordów. Model relacyjno-obiektowy jest mieszanym modelem bazodanowym, a jego zastosowanie jest bardziej powszechne niż w przypadku modelu obiektowego. Dzieje się tak ze względu na trudną implementację i niezadowalającą wydajność (w niektórych zastosowaniach) typowego modelu obiektowego. Model ten pozwala w relacyjnych tabelach tworzyć kolumny, w których przechowywane są dane typu obiektowego, pozwala na definiowanie zmiennych oraz metod, które będą wykonywane na danych wprowadzanych do obiektu. Obiektowy model danych opiera się na koncepcji obiektów (podobnie jak w projektowaniu obiektowym - obiekt jest odwzorowaniem rzeczywistości lub abstrakcji). Odwołania do określonego obiektu w tym modelu bazy danych są wykonywane za pomocą interfejsu, dzięki któremu są zachowane integralność i bezpieczeństwo danych. Obiektowe bazy danych korzystają z obiektowego języka zapytań OQL (Object Query Language). Każdy obiekt ma zaprojektowany interfejs określający metody dostępu do niego. Obecnie coraz popularniejszy staje się standard jDO (java Data Object) stworzony przez firmę Sun Microsystems. W ramach tego standardu rozwinął się obiektowy język zapytań IDOQL (java Data Object Query Language). Dość powszechnym niekomercyj nym i relacyjnym systemem baz danych mającym obiektowe rozszerzenie jest PostgreSQL. Obiektowe bazy danych do przechowywania danych używają obiektów posiadających swoją tożsamość (tożsamość obiektu - identity - która wyznacza jego identyfikator). W obiektowej bazie danych nie może być dwóch identycznych obiektów o identycznych identyfikatorach. Obiekty charakteryzujące się tymi samymi metodami i atrybutami są instancjami tej samej klasy stanowiącej dla nich model. Zwykle fragmentem definicji klasy są atrybuty, które w rozumieniu obiektowego modelu danych odpowiadają atrybutem (kolumnom) relacyjnej bazy danych. Podobnie jak w programowaniu obiektowym, klasy mają przypisane funkcje nazywane metodami, działające w obrębie obiektu. Obiektowy model danych zawiera również koncepcję hermetyzacji, hierarchii klas i dziedziczenia. I-Iermetyzacja w zakresie obiektowego modelu danych wpływa na spójność i integralność odwzorowania rzeczywistości, implementując przy tym aspekty inkapsulacji znane z programowania obiektowego. Relacyjny model danych opracował w latach osiemdziesiątych XX w. Edgar Frank Codd. Opublikował on wówczas jedną z najważniejszych swoich prac pt. Relaeyjny rnodel logiczny dla dużych wielodostepnych baz danych. Przedsięwzięcie Codda znalazło entuzjastów
I ..._
_-_
I
'
Ĺ'
I
._
-----
I
I
1' II
' I
J
Il
II
1
_. .I.
_-
I
1 I. 1
¦.¦
_
.___
_-_--_-
___
.---------..._.__--
---
_
1____---------
-.--_--_-------_._
._.--------_-_--_-------.
____
__
--_.____.-__..-_-_
_
...__.___---,__._________.___
1'
r
1' 1'
I 1 1'
II 1' 1' I' I I I I I I I I 1
. .
1-' '_
. . _
_
-_
_
-_
"
..
.
'I
1.'
|' I
Ê BAZY DANYCH i sYsrEMY saz DANYCH | .
"
-""'
-""-----'
'
----'--'---'-
-----------------
.
_..._._..__._..
_._
..
_______._
._
...._-_-
Przy użyciu zasad algebiy relacyjnej opracowano również język SQL służący do komunikowania się z większością współczesnych baz danych. Obecnie spotykane bazy danych przystosowane są w większości do pracy wykorzystującej połączenia sieciowe (architektura KLIENT-SERWER). Aby sprostać rosnącemu zapotrzebowaniu na usługi oferowane przez bazy danych, wzrasta liczba zastosowań tego oprogramowania w architekturze rozproszonej (usługi chmurowe). Rozproszona baza danych. Pracując z bazą danych typu Access lub używając narzędzi typu WAMP, LAMP lub XAMPP, mamy do czynienia z SZBD zainstalowanym na lokalnym komputerze. Zdarza się, że administrując serwerem, łączymy się zdalnie z bazą danych zainstalowaną na pojedynczym urządzeniu. Możliwość łączenia komputerów za pomocą sieci, szyfrowania i zabezpieczania połączeń sprawia, że coraz częściej baza danych rozdzielana jest na węzły sieciowe, przez co jedna baza może występować w różnych konfiguracjach sprzętowych i programistycznych. Taka baza może się znajdować na wielu komputerach położonych nie tylko w odległych od siebie geograficznie miejscach, lecz także w sieciach lokalnych. Sieciową bazę danych definiujemy jako bazę danych zapisaną na kilku komputerach połączonych ze sobą w ten sposób, że korzystający z niej użytkownicy mają wrażenie, iż baza danych występuje w jednym miejscu. W związku z coraz szybszyrni połączeniami sieciowymi podział jednej bazy danych pomiędzy kilka dedykowanych serwerów może przyśpieszyć operacje wykonywane na zmiennych relacyjnych (tabelach). Technologia ta zwiększa ilość zasobów sprzętowych przypadającą na określoną ilość danych. Dane dzielone są na fragmenty (zbiory danych przechowywanych w jednym węźle sieci będące podzbiorami całej bazy danych). Sieciowe bazy danych wykorzystywane są również do zabezpieczania ważnych danych przed ich utratą. W tym celu tworzy się repliki danych (kopie całości bądż części danych przechowywane w innym miejscu niż oryginał). Rozproszenie danych poprawia wydajność szczególnie w przypadku dużych firm mających oddziały odległe od siebie geograficznie. Utrzymanie jednej centralnej bazy danych osłabia wydajność systemu, ponieważ odległe placówki firm muszą łączyć się sieciowo z bazą danych, a obciążenie generowane przez każdą z placówek dotyczy pojedynczego serwera (w rozumieniu urządzenia sprzętowego). Na spadek wydajności wpływa również gromadzenie licznych danych przez każdy z oddziałów na jednym urządzeniu. Niedogodności tych można uniknąć, tworząc rozproszony system baz danych tak, by każdy z oddziałów firmy przechowywał u siebie na miejscu dane, które najczęściej wykorzystuje. Połączenie każdego z oddziałów firmy i współtworzenie jednej rozproszonej bazy danych zapewni dostęp do informacji każdej placówce, nawet najbardziej oddalonej, redukując spadki wydajności i zwiększając bezpieczeństwo.
seaawoz syrfoią wisnze, 1. 2. 3. 4.
Co to jest model danych? Z jakich składa się komponentów ? Na jakich strukturach danych opiera się hierarchiczny model danych? Iakie znaczenie ma hermetyzacj a w obiektowym modelu danych? Przedstaw historię powstania relacyj nej bazy danych. jakie są zalety rozproszonej bazy danych? 5. Podaj definicję sieciowej bazy danych.
-H
|' |' 1'
P o o s 'r.‹f±.w¬r s A z o ,_-Y-1. ia 'rc ii 1.-.1-1.1-1.
.1-1.
__
T
í
_1 ¬_.-,1¬ .,1 -. 1¬q_. 1_.¬ -1-_»_-_¬ .'_-'._'|_'1__-1. -------:-------------------_____...________ _______-.-.-.¬.-. .-_-1¬.-.-.-.-.-.-.-¬--------1-. _|___-_ii
_
Integralnosc ,jdanych
II
.-_„_
Å
_._.__
:_._.___í__________:___.___________
__
Z
ZAGADNIENIA
I I I I I .-.-_,.„
_,_
_,__
Definicje pojęć: integralność danych, integralnośč baz danych Reguły integralności Integralność encji Integralność referencyjna Statyczne i dynamiczne więzy integralności
:___í_______í___________________
__
_
__
_
_
__„
.
\111|"l
.
_
_
_
..._
.._._______.__.__________._._:___.______..._________-___._.1___-_.-1.¬.¬_-_-.--¬.\- ¬-.----------------------------:----_---
1' I.
Integralność danych, określana również mianem spójności danych, jest to funkcja SZBD, która gwarantuje, że dane nie zostaną usunięte lub zmienione w nieautoryzowany sposób. Ochrona integralności danych polega również na zapewnieniu, że dane nie ulegną zniekształceniu podczas wykonywania na nich operacji. Spójność danych związana jest z ich dokładnością - dane dokładnie odzwierciedlają modelowaną rzeczywistość. Oznacza ona również ich prawdziwość oraz aktualizowanie, gdy zmienia się rzeczywistość modelowana w bazie danych. Dane muszą być poprawne i zgodne ze schematem bazy danych. W SZBD powinny istnieć mechanizmy, które pozwolą zabezpieczyć dane przed skutkami awarii zasilania, sprzętu lub oprogramowania. W bazie danych powinny działać mechanizmy, których zadaniem jest zabezpieczenie danych przed następstwami błędów logicznych. Zachowanie spójności danych powinny gwarantować systemy chroniące dane również przed błędami pojawiającymi się w chwilach współbieżnego dostępu do tej samej informacji. Istotną rolę odgrywa również system kontroli danych wejściowych. Proces utrzymania integralności bazy danych obejmuje również kopie zapasowe danych. Zachowanie poprawności bazy danych opiera się na utrzymaniu poprawności w obrębie semantycznym, encji i referencyjnym. Integralność semantyczna polega na utrzymaniu ograniczeń nakładanych na dane, m.in.: a) w określonej kolumnie tabeli muszą znajdować się wyłącznie dane zgodne z typem danych kolumny, np. tylko liczby całkowite; b) w kolumnie nie mogą wystąpić braki wartości- puste miejsca NULL. Obok integralności semantycznej wyróżniamy także integralność encji. Integralność encji wprowadza się w trakcie definiowania schematu danych. Zgodnie z regułami integralności encji każda tabela powinna mieć klucz główny - kolumnę, w której nie mogą wystąpić wartości NULL oraz w której dane nie mogą się powtarzać. Integralność referencyjna polega na wprowadzeniu i utrzymaniu powiązań pomiędzy tabelami. Związki te tworzy się przez umieszczenie kolumny pełniącej rolę klucza głównego tabeli w innej tabeli, co nadaje kolumnie funkcję klucza obcego. Takie rozwiązanie nosi nazwę związków: klucz podstawowy - klucz obcy. Reguły integralności referencyjnej determinują, czy wartości klucza obcego mają odpowiadać wartościom klucza głównego (w powiązanej tabeli), czy mogą przyjmować wartości NULL.
-I
1 1 1 1 1 1 1 1 1 I
| I
I
I
I !
I I
I
|
' I
| |
I | I
| | |
1 | I I
1 I
1 1 I I I 1 I I I
1' 1' 1' _. 1 _. _1 1
I
-'
I I 1 I I I I
. . 1 1 . . 1
|
I
I I
1 1
1'
I
. I 1
1 | |
1' .I
| I
1'
I
.' _1'
| 1 I
I'
I
_I _| I 1 1 | 1 _|
I | |
I
1 I I I ' | |
| | | |
I I
| | 1 | | |
1 1 1
I
1 1 |
I I| I |
1 -'_1 .I
1 1 1 I
1
I
|
| | |
1 | 1
I
1
I 1 |
|
I
1 | |
1 1
I
1'
| | I | | | I I | 1 1 |
. 1' -' .' . . 1' . 1 1'
1 1 1'
. 1 _._,. __.1_ _l
|
I | | 1
|
'
.-
.-
.I
BAZY DANYCH I SYSTEMY BAZ DANYCH
1__ -
. '
_ _ Ĺ __ _
'
.
'
.
.'
'
` 1'
I
1
_._I _.I'I. ¬-H'I¬ _----.¬.¬.¬_-1.-1_1__:.I._ -1-._.- .=.,__,`_ ' 1
I' '._. I1_._I____
I
1
1 1 1
`1'
|
_I
1
1'
I 1' '¦ i
1' I 1
1'
1' 1' 1'
I1 I'
1 1 1
1'
1 1 1 1 1 1 1
_¦ 1'
'1¦ 1I. 1 I
1 I
1 I
1 1 1 1
Podczas omawiania zagadnienia integralności bazy danych stosuje się również podział więzów integralności na statyczne i dynamiczne. Ograniczenia integralnościowe statyczne odnoszą się do bieżącego stanu bazy danych, np. na kolumnę wiek zostało nałożone takie ograniczenie jak CHECK (wiek ‹: 200). Nałożenie tego ograniczenia podczas tworzenia tabeli spowoduje, że w kolumnie wiek wartość nie będzie większa niż 200 w trakcie nakładania ograniczenia i w przyszłości. Więzy integralności dynamiczne to takie, które przeciwdziałają zmianom, ponieważ związane są z przejściem bazy danych z jednego stanu w drugi. Oznacza to, że odnoszą się do bazy danych w aspekcie temporalnym. Przykładem takich więzów może być wymaganie, aby wiek pracowników nigdy nie malał. Ieśli wiek pracownika po pewnym czasie wzrośnie, to wartość kolumny wiek nie może nigdy się zmniejszyć, ponieważ nikt nie staje się młodszy. Więzy dynamiczne nazywane są również więzami przejść.
1 1 1 ._ 2 Í
-__íI_._
1'
1' 1 1 1 I 1 I 1 I1 1| 1'I. 1' 1 1 I 1 1 I I 1 I 1'
1 1 I 1 1
1' 1'
.I 'Í I
I 1 1 I I
srsawoz swsoią wnzozs
""c¦-
. :'1fg'-T;I1 1 I '-`¿. -1.' 11"'
1'
1. 2. 3. 4. S.
.¦,;'_ E .
1'I1 _Ĺ 1-ll'
fi
»frra: ':I-ł.LI-.-
-›..._ 1:'
'Ê "¿Ê`¦`I' .-.r .
'F 'S ."|_
Is __-_
5. Li ¬
I I
Co to jest integralność danych? jakie wyróżniamy rodzaje integralności? Kiedy baza danych zachowuje swoją poprawność? Czym różnią się ograniczenia integralnościowe statyczne od dynamicznych? Podaj przykład integralności encji w przypadku, gdy tabelą byłby spis uczniów w dzienniku szkolnym.
1_
1'
1' 1' 1' I' I'
I
I
1'
.|
I I
1' 1'
I
1'
1| 1'
1'
I 1'
1' I'
1
I I
¬.¬.-1_
1'
I
_:_____ I I I I
1'
.I 1' I
I
I ¬_
I
11 11 r I'I 1 I
1 1 1
-1.-___-_-1.
1' 1' 1' _
,_
1' 1 I
I1 I .--_---11.-_-_ 1_.I1_-.+_ 1' _1 1
___
_ _ _.--- ..-.-_ __ _Å _._-._-_-_-_ ______ ____ _ -_.-.__ ______._-_ _ -_ ._ _________ ____-_ _._ ___.____ __ __ ._ _
_
_
____
__ ._ _ _._______ _.___ _ _.____ :¬--1 - -. 1____:________ ._
¬.¬_ _¬'__
if' o o
Y s if. rr -. *-. c I-i
.I I I I I I I
Funkcje Systemu Zarządzania Bazą Danych (SZBD) --------------.-.---1.
-.--.--.-..--..
.
-_
.
_.-._
___-..-._.__
ZAGADNIENIA
I Definicja Systemu Zarządzania Bazą Danych (SZBD)
I Historia powstania SZBD I Funkcje SZBD: niezależność danych, ochrona danych, ochrona spójności bazy, szybki dostęp do bazy, tworzenie kopii zapasowych i zarządzanie nimi, przywracanie bazy danych po awarii _
__I__ _____ -._ _ _ _.-._ _.______ _-._______.- ___ ___ _.-_._ _ ____ _ _ _._ _ ___.___ _ _-.____ -_._ .__ _ _____.-...- _ __.--.___ -.____-. _...___ _._____._--.-.____ _.-_._ __.__._ __-.____._-._.__ ___.- _.-.____.___ _____ __ ___ ____._ ______ _-___ _ _____ __________
SZBD - Systemy Zarządzania Bazą Danych System Zarządzania Bazą Danych - SZBD (DBMS - Database Management System) to oprogramowanie umożliwiające użytkownikom definiowanie, tworzenie i zarządzanie bazą danych oraz kontrolowanie dostępu do niej. Rozszerzając tę definicję, warto wspomnieć, że oprogramowanie to umożliwia dostęp do baz danych nie tylko użytkownikom, lecz także innym programom. Wszystkie powyższe czynności są możliwe dzięki zaimplementowanej obsłudze strukturalnego języka zapytań.
Funkcje SZBD Powszechnie uważa się, że pierwszym systemem zarządzania bazą danych był system stworzony na potrzeby projektu Apollo dotyczącego lądowania człowieka na Księżycu. Ponieważ te zainicjowane przez prezydenta Kennedy'ego prace wymagały gromadzenia bardzo dużej ilości informacji, należało stworzyć system, który byłby w stanie udżwignąć mechanizm dostępu i modyfikacji informacji przy bardzo dużej ilości danych. Wykonania tego przedsięwzięcia podjęła się organizacja NAA (North American Aviation), która stworzyła GUAM (Generalized Update Access Method) - system modyfikacji i dostępu. W połowie lat 60. ten oparty na hierarchicznej strukturze system był rozwijany przez firmę IBM, którą przyłączono do NAA. GUAM był podstawą projektu IMS (Information Managarnent System). Kolejnym krokiem w rozwoju systemu zarządzania bazą danych było powstanie nowego systemu baz danych - systemu sieciowego. Zarządzany był przez produkt firmy General Electric - IDS (Integrated Data Store). Badania nad rozwojem systemów przetwarzających i gromadzących dane były przedmiotem zainteresowań nie tylko przedstawicieli rządu, lecz także finansistów i biznesmenów. Na konferencji CODASYL (Conference on Data System Languages) postanowili oni ukierunkować prace związane ze standardem tych systemów. W 1965 roku powstała grupa do spraw przetwarzania danych - List Processing Tasl: Force. W 1967 roku zmieniła nazwę na DBTG (Data Base Taslc Group) i zajęła się wytyczaniem standardów dla systemów umożliwiających przetwarzanie danych i tworzenie baz danych. Propozycje standardów dla SZBD podane przez DBTG były podstawą tworzenia systemów zarządzania bazą danych, mimo iż nie zostały przyjęte przez ANSI (American National Standards Institute). Kolejnym krokiem były systemy tworzone po 1970 roku, kiedy to E.F. Codd opublikował swoją słynną pracę będącą do dziś podstawą założeń wszystkich relacyjnych systemów zarządzania bazą danych RDBMS.
1 1 I 1 .I 1 1 1 1 1 I 1 1 1 1 1 1 1 1 1 1 1'
1 1 1 1 _1 1'
1 I
1 I
_1 1 '1 1'
_1 1 1 1 1 1 1 I
1 1 .1 _1 1 .I I
1 1 .I _1 1 1 1 1'
1
I
I
1 1 1 I
1 _1 1 1 1 1 1 1 1 1 1
_
-1
I _I
_
_ -
`
1' I
1 I|'
1 II
1
.I
I
1'
I1
1
f f II
I. I I I
I
1
.I
|
II 1:
I I
_.I 1' I -_r -_-_-_¬___,_-
I I I
1 1 1
I .I 1' .¦ | I |
1 1 1 1 1 1 1 _1
I I
1' 1'
1 I I
1' 1 1
1II 1'I
':
I rl II |I
1
I-
I .I
1' .
1' 1I 1' 1'
1 1 1 1 I
1
I
1
I
I I
I I
1
I
1
| 1 1 .I 1' 1' f I | 1
_1 .' |' 1' I I I 1 I I
I | I
I I I
,1 1' .'
1 1 1
1'
I
1 I | |
I I 1 I
|
I
,
1
| |
I I
1 .I 1'
,I 1' 1'
1' 1'
I' I
1 1
1 I
I
I
1
I
| I | I |
I I I _I I
1
,'
l
I'
,I
1
1'
I
1'
1
1 1
_I ,-
| | 1
1 1 _1
I1'
Š-I'
|
I
1' 1' 1' 1
1 1 1 1
I I | I | I I I _I
1 1 1 1 1 I .I _1 _1
J
1
| | I | I I
1 1 1 1 _I'
1' 1' 1
I I I
I 1
1 J
_'
I1'
BAZY DAl\I`r`"CH I S"1'"S'l`El`vl`*(` BAZ DANYCH -_----
-
-_-____-------_-_-___ __-----_
_.1_-___---------.--__..___--.--_---
--..____._.--_._--_________
---____________-_-1.
_-___.-.__--
._
_-_________-_
_
_____.--___.
-
...___-_____._-_-1
__
__.-___._._1--
Systemy Zarządzania Bazami Danych (Data Base Managment System - DBMS) pełnią funkcję pośrednika pomiędzy zapisanymi danymi a użytkownikiem bądż programem chcącym z tych danych skorzystać. Sprawiają, że programy (aplikacje) nie muszą mieć zaimplementowanej obsługi zapisu plików na dysku, jak również logicznej organizacji danych w tych plikach. Wszystkie te zadania SZBD biorą na siebie. Funkcja ta nazywana jest niezależnością danych. Oprócz organizacji przechowywanych danych należy zapewnić im odpowiednią ochronę, zarówno przed nieprawidłowym działaniem programów, jak i przed dostępem ze strony nieuprzywilejowanych aplikacji i użytkowników. Funkcja ta nazywana jest ochroną danych. Przechowywane w bazie danych informacje należy też zabezpieczyć, aby były logicznie spójne i odpowiadały rzeczywistości. Efekt ten osiąga się przez wprowadzanie więzów spójności, które pomagają realizować kolejną funkcję SZBD, jaką jest ochrona spójności. Funkcją, która wpływa na atrakcyjność SZBD, jest możliwość uzyskania szybkiego dostępu do danych, ich sortowania i modyfikacji. Kontrolując spójność danych, SZBD zapewnia również współbieżny dostęp do danych wielu użytkownikom i pilnuje, aby wykonywane przez nich operacje nie naruszyły spójności bazy danych. Bardzo istotną cechą jest możliwość tworzenia kopii zapasowych, zarządzania nimi oraz odtworzenia bazy danych po awarii. Oprócz wielu możliwości, jakie dają SZBD, nie są one wolne od wad. Ponieważ oferują bardzo wiele nowoczesnych funkcji, wzrasta ich złożoność, co pociąga za sobą konieczność zapoznania się z bardzo obszerną dokumentacją. Mimo stale prowadzonych prac nad polepszeniem wydajności tych systemów, nadal wymagają zapewnienia dużych przestrzeni dyskowych i zasobów pamięci operacyjnej. W przypadku komercyjnych produktów znaczna jest też cena SZBD, która może być uzależniona od liczby procesorów wykorzystywanych w urządzeniu serwerowym. Do kosztów należy zaliczyć również opłaty za szkolenia pracowników, koszty przeniesienia systemu, koszty generowane przez audyt i bezpieczeństwo. Utrzymywanie scentralizowanego DBMS i uzależnienie od niego wielu aplikacji (np. dwieście stron internetowych korzysta z jednego serwera bazy danych) w wypadku awarii systemu uniemożliwia pracę wszystkich powiązanych z nim aplikacji.
sreawnz swoją wrrozs -1. I'. .,.
ÊÊIÍE
Er
Í',I1. _' 1-__._II1 1 Ł-_I
1 L ' r
I
1
r 1 1 1
1 I I 1 L ____
____._______.¬--_--_______.-----
I. 2. 3. 4. 5.
Wytłumacz pojęcia: dane, baza danych, system zarządzania bazą danych. Co to jest CODASYL? Omów pojęcie niezależności danych. Wymień wady SZBD. Na czym polega spójność danych?
--1-I-_
P c= n s T.±=~;w Ęs..‹1=,;2: D It Y ca: ii I-1-.
-I--
_.-.-..__._______.-_________.-_
___-____.¬__.
_.__
I."-I\D
____
_ i__.-h F--I-.- ¬ ¬ -.‹(¬I .- ¬.„-_¬.-_.-¬.-_ ¬. __Ż -. ¬_. „
I I
hí-__-__.¬.__.__ _ ¬--------------- -_--------_----------------.-
-_---
I
_I
I
I
I'
I
|'
I'
I I
I
.
i I |
I I I
Charakterystyka elementów bazy danych ---------------------
_-I-I.-I.\'I__._.¬_----_
_--------
-_---------
-_
-.-I.-._-
__.___.______.:_íí__í__í_____¬¬___¬¬___
¬_,_
ZAGADNIENIA
I Definicje pojęć: encja, atrybut, krotka, dziedzina, klucz (główny, kandydujący, obcy, prosty, złożony) |Ii____í-______
--¬---¬-¬-----'---------------_-Ź---------Ü
J
'I I' I'
I 'I
I I
.I _I I I 'I
ř I
II. I I I I I I I
I
.I _I I'
I'
': I
I
f. I I
--
-
._-------
--------------------------------.-.--..-._...I...__.__I.._._.___.._.-..-.-__.._..._._---___.___._
.__
_
_„___
_
__________________________.__
Znajomość budowy bazy danych wymaga zwykle fachowego określenia jej elementów. Twórca relacyjnego modelu danych - E.F. Codd - w pracy Relacyjny model danych dla dużych banków danych nie używa terminów tabela, kolumna, wiersz, lecz zamiast nich stosuje pojęcia: relacja (zamiast tabela), atrybut (zamiast kolumna), krotka (zamiast wiersz). Terminy te będą tłumaczone na przykładach w dalszej części podręcznika, poniewaz właściwe zrozumienie teorii baz danych jest kluczowe dla ich przyszłych projektantów i administratorów. Podobnie jak w innych specjalistycznych dziedzinach wiedzy, również w przypadku informatyki posługujemy się uniwersalnym językiem do opisu elementów bazy danych. W celu odniesienia się do rzeczywistości prezentowanej w bazie danych posługujemy się terminem encja. O encji (entity) mówimy wtedy, gdy potrzebujemy określić coś, co reprezentuje obiekt lub grupę obiektów. Pojęcia encji używamy, aby określić nie tylko obiekty fizyczne, lecz także niematerialne. Przykładami encji mogą być takie obiekty jak: OSOBA, której cechami mogą być wzrost, numer buta, waga. Cechy te nazywane są atrybutami encji. Istnieje pogląd wskazujący na podobieństwo pomiędzy encj ą a obiektem (w programowaniu obiektowym). Porównanie to wskazuje na właściwości, atrybuty encji i ich podobieństwo do klas obiektu. Dla graficznej reprezentacji encji atrybutów oraz związków uzywane są diagramy związków encjii. Owale reprezentują atrybuty encji (autor, tytuł, ISBN), same encje zaś reprezentowane są przez prostokąty. Relacje pomiędzy encjami pokazane są za pomocą równoległoboku. Kolejnym często spotykanym terminem jest krotka. Krotka (taple) może być zdefiniowana następujące: jeśli tabela spełnia wymogi relacji (jest relacją), a jej kolumny są atrybutami, to krotka jest jej wierszem (rekordem). Krotka przechowuje stałe wartości o różnych typach danych, których to typów nie można zmodyfikować w kolejnej krotce. Dlatego typy, np. tytuł, ISBN, dla następnych krotek jednej tabeli będą stałe, a ich zawartości będą się różnić. Odczyt krotki wymaga podania jej indeksu (w naszym przykładzie niepowtarzalnego numeru ISBN). Atrybut definiowany jest jako kolumna relacji mająca identyfikator (nazwę). W relacyjnym modelu baz danych, gdy dwuwymiarową tabelę nazwierny relacją (gdy spełnia warunki relacji), wówczas posiadające nazwę kolumny tej tabeli nazywamy atrybutami. Ważną cechą tabeli- relacji jest to, że kolejność atrybutów nie powinna mieć znaczenia.
J
I
_I
I
, , , I ~
. I . . .
I _.
I
I
I ,
I
' : I|
I I I
| I
_ _ ,
I I I
|
I
II
-'I
I
'¦
II I
.I I'
| |
. .-
I ,
I
ft Diagramy związków encji opisano i zilustrowano w rozdz. IÜ. „Związki pomiędzy tabelami bazy danych”. I
I
' I-
I I
.I__L_
.II
s›~«.zY 1>.ß..×n'ci1 I srs'i'1.‹1r»-'ns' Baz. o.~xN\'<:u
Przyjmując książkę w bibliotece jako encję, możemy wskazać jej następujące atrybuty: ISBN, tytuł, autor, wydawnictwo, liczba książek, rok wydania. Poniższy przykład pokazuje, że dla encji Książka mamy dwie krotki, mimo że teoretycznie mamy 3 książki (suma wartości w kolumnie Liczba_ksiazek). mi
fi±í
Rys. 5.1. Przykład działania bazy danych MySQL
Dziedzina jest zbiorem wartości, jakie może przyjąć atrybut krotki. jeślí kolumna tabeli przechowywać będzie numery kuli używanych do losowania Lotto, dziedziną atrybutu będą numery od 1 do 49. Gdy kolumna przechowywać będzie liczbę książek, wówczas zakładamy, że będą to wartości całkowite (ponieważ w bibliotece nie występują egzemplarze ułamkowe książek, np. 0,5 książki), zatem dziedziną kolumny będą wartości całkowite integer. W bazie danych typ kolumny (dziedzina) może zostać zdefiniowany jako int (11) , co oznacza, że w kolumnie książki mogą znajdować się liczby całkowite o maksymalnej długości nieprzekraczającej jedenastu znaków. I Líeahamksiazek
¦
intílíš
¦
Rys. 5.2. Zdefiniowany typ kolumny dla bazy danych MySQL
Klucz główny Dość często spotykanym problemem na etapie projektowania bazy danych jest określenie, która kolumna (kolumny) będzie pełnić funkcję klucza głównego. Ponieważ każdy wiersz w tabeli musimy jednoznacznie zidentyfikować, zachodzi potrzeba wybrania atrybutów (kolumn), które spełnią to zadanie. Klucz główny odgrywa bardzo ważną rolę w tabeli (relacji), dlatego jego wybór powinien zostać poprzedzony analizą typowanych przez nas kolumn pod kątem wymienionych poniżej własności. Tabela 5.1. Własności kolumn Trwałość
, Wartość kolumny powinna być stale obecna w wierszu, oznacza to, że kolumna taka . (należąca do klucza głównego) nie może zawierać wartości NULL. ¬ I I
Unikatowość
¦ i g -
. . , Stabulnosc
Wartość klucza dla każdego z wierszy powinna być unikatowa, poniewaz w niepowtarzalny sposób powinien on identyfikować każdą krotkę (wiersz tabeli). Może się zdarzyć, że taki niepowtarzalny identyfikator otrzymamy, umieszczając w kluczu głównym więcej niż jedną kolumnę. Kombinacja wartości, np. trzech kolumn, które należeć będą do klucza, będzie unikatowa i jednoznacznie zidentyfikuje każdą krotkę. Ê Wartości klucza nie powinny podlegać zmianom. Nie powinno się jako kluczy głów; n ch uz wać kolumn rzechowu` c ch wartości nietrwałe, n . numer telefonu ko-F mórkowego, Y Y . P mimo jego . lą unikatowości Y P może go zmienić, . ponieważ każdy człow|ek . np. gdy przejdzie do innego operatora.
I I I .I I
P O Ü 5 '"i_".“-"'I"rli_»"" ir" _ii _.-"iz, Z Ĺ? _»Ä
Il II I'
YŠĹÍ l¬i
.n.-.-¬._..__í¿__
I I I
I' I.
I I. I' I I I I
Projektowanie relacyjnych baz danych wymaga stosowania fachowych określeń, których używać powinno się nie tylko w odniesieniu do budowy tabel, lecz także w stosunku do relacji- związków tworzonych pomiędzy tabelami. Aby jednoznacznie zidentyfikować wiersz tabeli, stosuje się atrybut (kolumnę), której poszczególne wartości dla kolejnych krotek (wierszy) będą niepowtarzalne. Na rysunku 5.1 taka kolumna to numer ISBN, ponieważ dla każdej książki jest on unikatowy. Oczywiście dany ISBN będzie identyfikował grupę książek o tym samym autorze, tytule oraz roku i wersji wydania, a także zawartości. Ponieważ każda z tych książek będzie identyczna pod względem zawartości, nie ma potrzeby tworzyć w tabeli kolejnych wierszy, wystarczy wpisać, że mamy dwie książki pod tytułem W/pustyni i Iv puszczy, a każda z nich jest wierną kopią poprzedniczki. Atrybut będący kluczem głównym możemy stworzyć sztucznie, dla przykładu wprowadzając kolejne numerowanie wierszy 1, 2, 3, 4 itd., pod warunkiem że każdy wiersz ma inny numer. Możemy również posłużyć się określoną cechą (atrybutem) opisywanej rzeczywistości (encji), np. dokonując spisu ludności, możemy posłużyć się numerem PESEL. Ponieważ każdy człowiek ma inny niepowtarzalny numer PESEL, nie zachodzi obawa, że może on się powtórzyć. Taką kolumnę (atrybut) nazywamy kluczem głównym (primary
I I
I I I
I I
key).
I' I. I I I I I
Rodzaje kluczy
I .I I. I
i
I I I I I I I I I I
_¦
ł
Zdarza się, że baza danych nie przechowuje pojedynczej tabeli, lecz wiele tabel, pomiędzy którymi występują powiązania. Aby pomiędzy tabelami można było tworzyć związki, powinny one mieć przynajmniej jeden atrybut (kolumnę), który musi spełniać dwa podstawowe warunki. Musi być unikatowy (oznacza to, że jego wartości nie mogą się powtarzać). Drugim warunkiem jest jego atomowość (musi być minimalny, tzn. powinien zawierać elementarne, niepodzielne wartości). Możemy rozróżnić następujące rodzaje kluczy: II klucz prosty to taki, który jest jednoelementowy (składa się z jednej kolumny), II klucz złożony to taki, który jest kilkuelernentowy (składa się z więcej niż jednej kolumny). Kluczem może być zatem jedna lub kilka kolumn, które wspólnie będą w stanie j ednoznacznie zidentyfikować pozostałe dane w tabeli (relacji). Kolumny, które należą do kluczy (używa się ich do jednoznacznej identyfikacji wierszy tabeli), nazywamy atrybutami podstawowymi. Kolumny nienależące do kluczy (zawierają dane, które w określonej relacji są przedmiotem opisu) nazywamy atrybutami opisowymi. Do łączenia dwóch tabel (np. A i B) za pomocą związków używa się klucza. Klucz pochodzący z obcej tabeli B (w której jest on kluczem głównynr), używany do łączenia tej tabeli z tabelą A, będzie dla tabeli A kluczem obcym. Superklucz (superlcey) to kolumna lub zestaw kolumn jednoznacznie identyfikujących każdą krotkę tabeli. Superklucz może zawierać kolumny, które samodzielnie mogą nie identyfikować każdej z krotek. Unikatowa identyfikacja każdej krotki może odbywać się jedynie przez zestaw np. dwóch lub trzech atrybutów. Przedmiotem zainteresowań projektantów baz danych jest taki superklucz, który zawiera minimalny zestaw atrybutów unikatowe identyfikujących krotkę.
.I II
nn-I.-I. -I_.____
_
I I I I I I I I 'iu
Klucz kandydujący (nadklucz, klucz potencjalny) to superklucz zawierający minimalną liczbę kolumn unikatowe identyfikujących krotki relacji. W praktyce to kolumna lub kolumny, których użycie w charakterze klucza głównego jest rozważane przez projektanta bazy danych. To właśnie twórca bazy danych decyduje, której kolumnie (kolumnom) nada funkcję klucza głównego. ¬.-.-__-.
.__..___...__---.--
-.I.________...------_--._
_.___-___
--
-
-
_-.
-
__--_-
_
___
.
________----
-
ii_____.__...
.. .. I I I I I I I I I I .| I II
. -_:. .. .. I
I I I I I
. I I I I I I I I I I I I I I I I I I I I'
I I I I I I I I I I
I J
I I
J
I I I F I I I I I I I I I I I I I I J II I I I' ø I I I I I I I
II I I I I I I I
._I
-
-
_II___ I' I _._. . _ I _ _ ._
_
II
_
_ _ _ . _
__
-I
_f
-'
-__{ _ I __ |' I I Ľ I
-1 .I I I| .
I
II
_|-
I,
I .
I I
.
¦
¦
Ę-
_
_
BAZY DANYCH I SYSTEMY' BAZ DANYCH
Klucz główny (primary key) to klucz, który został wybrany, aby unikatowe identyfikować krotki
l
tabeli. Klucz główny jest podyktowany wyborem projektanta bazy danych. ;
PRZYKŁAD 5.2
I
I
,_
_
_
_
_I
¿ I =
Rozważmy przykładową sytuację, w której projektujemy relację zawierającą np. spis lokatorów nieruchomości. Poniżej przedstawiono wycinek takiej tabeli.
Ę i
Tabela 5.2. Lista lokatorów
1 2
Maciej józef
Newer kewalzki
jI--._____.___ __ .. ___II___.__ _______-.___________._____.__..._._____._j______._ _
Ę
___.______._.___ _ .. ________._________..________¦______
,
74092932157 65112164813
_ _ ____-_-__ _.__-__-_____-_____
-_________I
;I
l
Ponieważ mogą występować osoby o tym samym imieniu i nazwisku, wybór atrybutów Imię lub Nazwisko jako klucza głównego mógłby powodować błędy w wypadku wystąpienia dwóch osób o tych samych imionach, tych samych nazwiskach lub tych samych imionach i nazwiskach. Ponieważ każdy człowiek ma niepowtarzalny, unikatowy numer PESEL, atrybut PESEL spełnia wymagania kolumny jednoznacznie identyfikującej każdą krotkę. Projektant baz danych jako klucz główny wybrał atrybut Id. Przykład ten pozwala zrozumieć różnicę pomiędzy kluczem głównym a kluczem kandydującym. W tym przypadku kluczami kandydującymi mogą być Id lub PESEL. Ponieważ projektant, definiując tabelę, mianował Id kluczem głównym, atrybut PESEL pozostał kluczem kandydującym. __ _ __ _ _ I g g -¿ I ¦ -, ; I; I
I
I
'
. _
I I
_ = 5 1;
,
Klucz obcy - kolumna lub zestaw kolumn w jednej tabeli, która pasuje do klucza kandydującego drugiej lub tej samej tabeli. Klucze obce wyznaczane są zwykle podczas tworzenia związków pomiędzy tabelami. Dowolne dane w kolumnie (kolumnach) klucza głównego tabeli A muszą mieć swoje odpowiedniki w odpowiadającej kolumnie (kolumnach) tabeli B (zgodność danych kolumn w dwóch tabelach). Zjawisko posiadania odpowiedników klucza głównego w obrębie różnych tabel nazywamy integralnością referencyjną. Klucz obcy definiowany jest również jako kombinacja jednego lub kilku atrybutów (pełniących funkcję klucza głównego) wykorzystywanych do tworzenia związków pomiędzy tabelami lub w obrębie jednej tabeli. Oprócz wymienionych powyżej definicji, istnieją również takie pojęcia jak: III Klucz prosty - klucz zawierający tylko jeden atrybut. III Klucz złożony - składa się z więcej niż jednego atrybutu. II Klucz potencjalny, inaczej klucz kandydujący (candidate key).
5 I fz Š ;I
Š l 5 'i = '=
Il
I|
|
I
sieaawoż swoją wareçozis F-E
f. 'I _.I'_
ar
.___ _' :.-;-_¦, -_r,_-=_' .
`|. 2. 3. 4. 5. 6.
Co to jest encja? Wyjaśnij termin atrybuty encji. Wyjaśnij na przykładzie, co to jest krotka. jakie cechy powinien posiadać klucz główny? jaka jest różnica między kluczem głównym a kluczem kandydującyrn? Co to jest klucz obcy?
-______________ ___ _ .________ _ __ .__ ._.___ ______________._ _
___
_
_
_
_
5.
1' 1l
¦ I
5
II
.I
P o ti- '1řia*›.r.-f
,I f I'
s a 15': tira M <3 H
J I I
a 2 23
r--I rl
il
'¦ I
I-l --z-mb-..___.__-_i--__-------_
_
__
__________________________
.__
_.___
_____________:________
_
__
I__
____:
Sieciowe serwery baz danych ' ¦
._
_¬________________________.. .. ._______________________
_
_
_
I I ___ _____í____|I
I -j|
I | I I I
.I I I _.
ZAGADNIENIA
¦ Ê
I Historia powstania MySQL I Początki i rozwój serwera PostgreSQL I Komercyjne systemy bazodanowe
I I
"r-\.¬.¬-¬.\_'-'\-'\-'--_ii--___--___i_-I.-_-.'..______-ii--ii-----Ę -_-.¬.¬.¬__-._-__-_±_±-_:-±_±__---›¬.
I I I
__._.____...__í-_--___-_--gm -_-,_ ,
_
__
ii
,¬_-_________±:_____|I
I
I
.
| , ,
| I '
MYSQL ř Początki MySQL sięgają roku 1995, gdy Michael Widenius (znany jako Monty) rozpoczął pracę, wraz z Dawidem Axmarkiem, nad kodem bazy MySQL, który ukończyli w 1996 r. Projekt tworzony był w TCX DataKonsult AB i jako MySQL AB został sprzedany Sun Microsystems w 2008 r. Baza danych MySQL swoją nazwę prawdopodobnie odziedziczyła po córce Wideniusa _ My. Monty stworzył jeszcze jeden SZBD oparty na MySQL oraz silniku Aria. Produkt znany jest jako MariaDB. 27 stycznia 2010 roku Sun Microsystems został przej ęty przez Oracle za 7,4 miliardów dolarów na podstawie porozul mienia podpisanego 20 kwietnia 2009 r. Od tego czasu MySQL rozwijany jest przez Oracle. Mimo ze kod MySQL dostępny jest na licencji GPL, ma również wersje komercyjne, które cechuje rozszerzona funkcjonalność. SZBD MySQL wykorzystywany jest bardzo często przez firmy hostingowe, poniewaz cechuje go duza szybkość transakcji. Nie zmniejsza to stabilności, szybkości i wysokiej funkcjonalności pozostałych systemów, takich jak PostgreSQL. Systemy bazodanowe, podobnie jak systemy operacyjne, 5 mają swoich zwolenników i przeciwników, a spory toczone pomiędzy nimi przypominają „święte wojny” na tle religijnym. Celem tego podręcznika nie jest testowanie wydajności i funkcjonalności obu systemów, tylko przygotowanie przyszłych informatyków do stawiania pierwszych kroków w administracji i konfiguracji SZDB. PostgreSQL jest jednym z najstarszych i najlepiej przetestowanych serwerów bazodanowych. Serwer ten ma bardzo wiele rozszerzeń w formie wtyczek (plugins), które sprawiają, że może konkurować z komercyjnymi SZBD najwyższej klasy. Historia PostgreSQL sięga roku 1970, kiedy to na uniwersytecie Berkeley powstał projekt Interaktywnej Grafiki w Systemie Wyszukiwawczym (INGRES). W 1980 r. poprawioną wersję skrócono do Postgres. W 1993 r. projekt oficjalnie zakończono w Berkeley. Rozwojern Postgresa zajęła się społeczność open source pod nazwą Postgres95. Poniewaz system ten wspierał SQL, jego nazwa została zmieniona na PostgreSQL, którą nosi do dziś. PostgreSQL wykorzystują z powodzeniem firmy i instytucje przetwarzające duże ilości danych, np. Skype, United States Federal Aviation Administration (FAA). Instalację PostgreSQL można przeprowadzać na różne sposoby w zależności od przeznaczenia isystemu operacyjnego. Oprócz wymienionych wyżej systemów, które omawiane są ze wzglądu na popularność oraz na łatwy i darmowy dostęp (każdy może je za darmo pobrać i testować), istnieją |
1' Å--í-_-J----Ľ - -
I' f | |.
-
._ ._ _.__.__..._..__._._-- --
--
-
_
_
_
_ _ _ _ ____________.____------- - - - -_
_ . .__ __ _ ...- -__..._-__..__..-_- -- - --__ _ -._ ...___.__.-.______.-.-_..._-----_--- - -_-_-
-
_ _
-.
. _ .
_..__.__:___i-------- -- -
-
_ ___________
Ĺ
i '
'
BAŻY DANYCH I SYSTEMY BAZ DANYCH -.|¬..-|_¬.|
T_-
í_____. ___
__-_- ._-_----_.____í__________-_ _- .. _..._--- ..-__-___._-_-_ __-__-_-_._.__ __ -.-.______._________ _ _-
_
.
..._ __ _
_____.___í_____ _-_ ._
___Ż_
również systemy komercyjne, które oprócz profesjonalnych zastosowań cechuje wysoka cena. Ze względu na to, iż w przypadku chęci użycia produktów firmy Microsoft czy Oracle należy przygotować się na wydatek kilku lub kilkudziesięciu tysięcy złotych, stosowane są one w firmach, które stać również na przeprowadzanie szkoleń z obsługi tych systemów. Nie bez znaczenia pozostaje to, że większość narzędzi prezentowanych w obrębie tego podręcznika ma interfejsy zbliżone do ww. komercyjnych rozwiązań. Dokładne poznanie sposobu administrowania, użytkowania i projektowania przy użyciu MySOL i PostgreSQL będzie bardzo pomocne w wypadku, gdy z rozwiązań darmowych zajdzie potrzeba migracji do rozwiązań komercyjnych, np. zastąpienia MySQL lub PostgreSQL bazą danych Microsoft SQL Server lub SZBD Oracle.
sraawoż swoiawreoze 'I. Omów w kilku zdaniach historię powstania MySQL. 2. Dlaczego serwer PostgreSQL jest obecnie tak popularny?
Ü
-I.-_I Ź
.._____
__
_¬_¬_-.-.-.----_-___---__-_
_
_
› - -_-_--____-____-___
---.___._.-.__í____
_
. - . _
__
._
l
t
.Íß Eś'l¬.-:“'%.l~;”"Ÿ.«-Ä' Y B A 'n-\-»¬-¬-¬-¬-¬-¬-I-¬-1-¬--1--_
--
___._____.í._._______
l)_›'% i'-i`i
_.___-___-._________.__..._.._.
.___
_
___
| .l
Tabele baz danych !"i__í"" "' ""
ZAGADNIENIA
I lloczyn kartezjañski I Dlaczego tabela w relacyjnej bazie danych nazywana jest relacją? Ti----i--~ -.---- -
Relacja - tabela
I
I
Aby wyjaśnić pojęcie relacji, warto odświeżyć kilka istotnych informacji z matematyki i teorii zbiorów. Iloczyn kartezjański zawdzięcza swoją nazwę kartezjańskiemu układowi współrzędnych. jest to prostoliniowy układ współrzędnych o parach prostopadłych osi. Nazwa pojęcia pochodzi od łacińskiego nazwiska francuskiego matematyka i filozofa Kartezjusza (René Descartes), który opisał tę ideę w 1637 r. w traktacie La Géomătrie. Iloczynem kartezjańskim prostej A i B będzie zbiór punktów płaszczyzny zawartej między nimi (każdy punkt należący do tej płaszczyzny). ldąc tym tokiem myślenia, jeśli będziemy mieć dwa zbiory A i B, to iloczynem kartezjańskim tych zbiorów będzie taki zbiór C, w którym każdy element A będzie połączony z każdym elementem B. Prześledżmy tą sytuację na przykładzie.
Rys' 71' René Descartes
'\¬ 10
B Rys. 7.2. Kartezjański układ współrzędnych
~I`_"""
Ĺ
Ł
` _
` _
'_
"
BAZY DANYCH 1 srsremr Baz oANY‹::I-I
-¬.' _I¬ |-_. -_
¬Z¬_I__ I-I-I
-¬~. :. ¬_ . _ _ ¬.-..I_-
I I I I'
I-I _._.__
_ ¬¬
_
.._____.___
___I___
_
_
i
______
_ _ _ -_ _ ----_--.¬.______.___________I_ '
I
I
_
'“`_""""---'-' ¬-- ------ -__.______¬_ - ---Ź-I-.-I________ ._ __ _____ .___
____I__I_I___
Z
__
-1-------.I-I _.______I¬_._
I I'I. I.
I I'
I'I' _
_¬ I_¬ _ I I J I'
I' I' I' I I
I' I' I'
I
-
I I
I I II I' - ¬. _¬_ -
L-¬_ _ _ -I.
___
I' I'
II I' I'
I' I'
-:-_-_.-I_¬_- _ _
_I I' I I I
-|_._ ¬_-I_
---
.-I. _-
I'
_¬¬--
-¬- -
¬¬_-I_I_ _
I----¬-¬-_ . _ _
II I II
_`
_¬¬'--1-- ¬
- -í--.-_¬_____ _ . _ ________¬_.__ _
'
_I_ ___
_
___'¬
¬-'---@---_¬_..___._„_._._______ _
_____,¬_¬___
I
Rys. 7.3. Zbiory danych
¬"- In.-I_¬_
I' I'
¬___|_
_ _ ._ _ _I I'
-I.
II II ' ' ' z zb1orowbędz1e - . . następujący _ _ _ C, w którym k::ā)I;II:|:ITeI:ĹezjąnskImbtj/ch dwoch zbior en owi z 1oru A będz1e odpowiadał każdy element zbioru B:
--_-I.-_
-I¬.¬.-I.
¬.
I' I'
---_-,I._¬.¬_ _
I' I' I'
I' I' I'
-I. _¬_ _ ¬_ _.
I' I I I'
I' I'
--_¬. ¬_
I I
¬_I._
.I
I I .I .I I' I' I'I I I I I I' I'
I
I' I' I' I
I I
_I f I I I I I
I _I I.I'
I .|
---_ _.___¬_¬_ _
I
I'
I
r
I I I
I I I.
I'
Í I I
I
¬-¬. ¬_
I I
_ _¬ _
I I'
_. _¬ _ . _
I I I' I' I I I
Rys. 7.4. Iloczyn kartezjańskich zbiorów A i B '¬'---¬-______ Ŭ.¬.¬_ _ ._ _
_. _ _¬ _
I' I'
I' ¬_-I_
I I
_ _¬_¬_¬_
I
I I I'
I' I'
I' I
'I
I I
I I
I I
II I I I'
I I I I _I
Teraz spróbujmy zdefiniować relację. Relacją nazywamy podzbiór iloczynu kartezjańskiego N'
h
d b'
, .
_
.
'EC po Z 'Ümm dla naszegü P1`ZY'<'3C'U będą (1 - jacek, 2 - Ewa). Iesh um1eśc1my te elementy w tabeli, otrzymamy:
-I.¬_ _I_¬_._ I'
I'
I'
¬. ~¬_ _
I I
¬. _ _
--¬_.¬_¬_I-_I. ¬_
I
I'
I'
I
¬-I..¬.¬_
II I
I' I'
I -¬.¬_.¬_
.
-¬.¬.¬_
¬_¬_ _¬ _
____
-_ -_-_¬|_ ¬_¬_ I' II
r I
I I -I_ _
'Ż I I I
- I .¬_¬_
¬._¬_¬__¬_ _
*I
¬.__ -I.¬_¬_
I I
I.
I Jacek ¬ .I-|_¬_
I
I
I'
I
I
I'
I
:
I
I'
Il I
I
_ _ ._ _ I -I
-I _¬_-_
1-_I-
--I.-_- _ _
Ewa
M¬_¬_ I' f
¬. ¬_- _ I I I I
P--_ ¬- \-I_-I -.I_¬
. ___
_ _ ______I_ __
¬----I-I.-_'_
_
_
-I.-_-»_ __„_¬_¬_
_
"-_-_-_
¬_-_I_
I'
Rys. 7.5. Podzbiór iloczynu kartezjańskiego ¬_-_I _ _
I
' '_ ¬.--__I I_
- -_ I_¬¬-_
_
_°" """-_í--"-'------- ¬______ _,__ ____ __ _ _
:_:_`-`_'_
_"""“-"'------
1------.¬____--.
-_
¬_
_____._ ___
_____I__I______¬___
¬. _ _ ._¬ ._,I_ I__II __
¬_¬_
¬_-_¬_
____ ¬_¬_-_
_¬_
_
I_
I' Il'
___ _ ,__
P' O _D `_lÍ`_‹~'Ÿ`¬›. W
B
Z D .ii
YCH _-..¬.l¬.
-u¬.-' |1'u.¬-u.¬|-p-¬
¬J
-
Dlatego w relacyjnych bazach danych relacją nazywać będziemy tabele bazy danych, ponieważ zawartość tabeli ulega ciągłym zmianom. Kolumny - atrybuty mogą przechowywać wartości określonych typów, jednak wartości te mogą być modyfikowane. Podobnie jest w naszym przykładzie. Relacja (tabela) przechowuje dane, które zwykle ulegają pewnym zmianom. Zawartość tabeli, jeśli nie jest modyfikowana, może być rozszerzana o kolejne wiersze (row). Operacje, jeśli nie zachodzą w danej chwili, mogą zajść w przyszłości, dlatego zawartość relacji możemy traktować jako zmienną. Teoretyk baz danych Chris Date zaproponował określanie tabel w relacyj nych bazach danych mianem relvar. jest to skrót od relation (relacja - tabela) oraz variable - zmienna. Ten nowy termin w języku polskim tłumaczymy jako zmienna relacyjna. Takie definiowanie tabeli w relacyjnej bazie danych ma na celu uświadomienie osobom poznającym teorie, że tabela spełnia wymogi matematyczne relacji, a jej zawartość (to co jest przechowywane wewnątrz tabeli) może ulegać zmianom w określonym czasie. W większości opracowań dotyczących baz danych pojęcie relacja odnosi się do tabeli w relacyjnej bazie danych. Problemem teorii baz danych jest stosowanie terminu relacja również do związków, które występują pomiędzy tabelami (np. relacja jeden do wielu). W efekcie przyjęcia takiej nomenklatury, gdy chcemy powiedzieć, że pomiędzy tabelą A i tabelą B występuje związek ,,jeden do wielu”, mówimy, że pomiędzy relacją A a relacją B występuje relacja ,,jeden do wielu” (zupelnie tak, jakby oznaczało to istnienie trzeciej tabeli o nazwie ,,jeden do wielu”). jak łatwo zauważyć, postępowanie takie doprowadza do zatarcia sensu wypowiedzi. W tym podręczniku konsekwentnie używane będą jako synonimy pojęcia relarja i tabela, a stosunki pomiędzy tabelami nazywane będą związkami, np. związkiem jeden do wielu, związkiem jeden do jednego. ¬. ¬_-l.i¬.
PRZYKŁAD 7.2
h_ L
___
_ ę
Dla przykładu omówimy następującą relację: R (reprezentacja Polski w piłce nożnej). Tabela 7.1. Lista reprezentantów Polski w piłce nożnej Li
'
12 -------
,
1
22
i
2
j Grzegorz Sandomierski ----ii---:\.¬-----.-.¬.¬.-._
__
________:_
ojcíech Szczęsny
ešg rzemyzławrywń
-¬_.___._._._._.J¬_._____________________---_.__._ _ -_
__
.
. _
___
ā
5wrześnial989/22|ata .i._
1
3 _Ż
18 kwietnia 1990 / 22 lata
j
_
ll
|
.'
,|
____________-___--_-..__-_-_-_._...-._.. ._.__.____-
s l
Jagiellonia Bialystok _._
E
.' j
4ziy‹zznia1987 /25 lat
P “T
O
8
O
i
._.__
Å.
__
'
__
i j Arsenal F.C_ '| I .
0
______________L.-_.._________ _
'_
Psv Efndheven _ __ __ ____-___.._._.__-__ ___
Tabela przedstawia fragment składu reprezentacji Polski w piłce nożnej. W dniu 16.07.2012 r. odpowiadała rzeczywistości, jednak po pewnym czasie jej zawartość może ulec zmianie. Wystarczy, że któryś z zawodników strzeli gola, wtedy zawartość relacji ulegnie zmianie. Podobnie dane ulegną modyfikacji po podjęciu decyzji personalnej przez selekcjonera mającego wpływ na ostateczny skład reprezentacji Polski. W 2013 roku zmieni się również zawartość kolumny Wiek (każdy z piłkarzy będzie o rok starszy). __ __ _ _ _ .il
_.___------_
--------‹-------- - - -
-_-.¬.-_ ._ _____¬__-__________í._í_..__._._____
_::__:_í__:._i_.__¬____¬_¬_¬_
_:_____íi:_______
¬_,
_Å
I' I I I _I _I I
BAZY DANYCH I SYSTEMY BAZ DANYCH ___¬¬_._
_¿. ' '-1.'-. _-__.___.____
| | I 1 'I' __., -r-I
J
-¬___._.
___
-¬.I-¬._- ¬_. „,._ ,._ ¬ 'Í |
¬_
¬.-_ _.¬_.¬.
-._
¬-I.¬. ¬_ ¬.¬_
Ponieważ zachowanie zawartości relacji przypomina zawartość zmiennej znanej z języków programowania (pole przechowuje pewną wartość określonego typu i może ulec zmianie), stąd pisząc o tabeli, której zawartość ulega zmianom, użyjemy pojęcia zmienna relacyjna, natomiast gdy mamy na myśli tabelę, której zawartość jest rozpatrywana w danej określonej chwili i nie ulega zmianie, będziemy mówić o wartości relacyjnej lub, w skrócie, relacji.
_,__¬_¬_
1
¬.¬.-|.¬.
I'
.__._ -_
¬-„-t¬.¬.¬_-_
-'ą _|. `__:_|.' _|_.T -..‹
1-Ê '4¬- :'_ .__'. "_ř.'± _-_.": ,'¿: ._|1 ._ 1. ".r" |__|' _':T_.J 1
'Ł'‹-,_ż'*_ '=7ff'_ Il ¬
|_|Łf| ¬ f
sraawnż swoją wisnzr
¬ .¬_
I. Co to jest iloczyn kartezjański i kto jest jego twórcą? 2. Dlaczego tabela w relacyjnych bazach danych określana jest terminem relacja?
¬. '-1.4¬_
¬ _¬“_. ¬_
¬ .¬ .¬_-_¬ -_ ¬ .-|¬_¬.
I J _|
_.i _ ¬_¬_ ¬_
__¬. ¬- : .¬_-|¬\.-_ -_ _____.¬._. ¬_ ¬_
I' I
¬.¬.¬. ¬. _¬ _I I .l
_ _ -_ _
¬.¬.
-1. ¬. ¬_ ¬_
._ ,_¬._¬, ¬_ _¬_
_ _ _„__ ¬ .¬.¬.1.1.
¬¬.¬ _-| ¬_ -:_¬.-z1.-_ufo_¬.-_
¬.| ¬_ .\_¬
f. J _I
_ _ ._ ¬
_- _ ¬_ ,¬_ ¬_ I 1 -¬_. ¬-._¬_-1¬._ _¬_.¬,_ _¬._
_ ___ ¬_ ¬ _,¬ _ I J I _í. _,¬ _ ¬ _.
l. ¬. -\.~_-»_
| I
I' ¬. ¬. _-
¬. ¬_-\í._¬__¬_ ¬_ ._¬ _
i
I J
¬. ¬.___¬._ _ __
-›.r¬. __-_z.- _ _ _ _¬_
'|Í _. r
I'
-:-_í_- :_1_-.¬_ _.¬ -.¬ --¬._ ¬¬. ¬. _¬ ._
-__¬. ¬. ¬.
¬.¬.
___¬
¬_1 Å._-._¬L
II
_I ¬.¬.¬_-. -|_‹.'-__í._J.í|'_ __¬ ._¬_¬__|_.___i¶_ ¬¬.-._.__ __.íi.___._ ¬-.¬_._._1..__i_í__.__,_,___¬_ ¬___íí_____.¬_¬___¬_._._ _____í_______ ______ :_í_:____ ___`_
________
__í________ _
__
II
‹:
- n-¬-1-mi--t-|.¬.-_-__ _._.íí_ _ __ .-_¬_ -_ ¬_-_ ..._ _-¬\---__ -¬-|-
_¬_
__:_ _ _¬_ ¬_¬ _¬ _¬ , _ ---_-_mi¬__-___¬.¬_._¬___..______¬¬_ ¬_ ¬_ _.¬_¬ ._ ._n_¬. -_ __
P Ü ET? S `l"_r's `~ÍiI" 'I' ii A
Í) A
Io un
'if' C' i-'l I_-\_¬._¬_
¬_¬_-I_'I_ ¬.¬. _l,-I__
¬'I_ .n_I _I _ _I.,_:,_:_ ,:
____-I__ _.___
I' I
_I .I I .I I'
-I.¬_
Il I
Projektowanie konceptualne, logiczne i fizyczne
¬. -_I.- I.¬_- -I. I'
I'
f '_Í I
I I I I
I. I I
.I I
.l I' F I' I I ¬-I.-I.
_I II
I' ¬.¬-I.-I. _-I_¬_¬_-I. I. -I_ I_-I_ _ _-_I.__ _ _____ _ _m______._ _m___.__ _ _ ___ ___ _ _ _I____ __ `°_"`° I"':_`I ---¬-¬-
-
-_
--
---
-I.
-I.-
-I.-I.-I.
¬_¬.¬.-_-_.¬_I_I_-I_ ±_______ m_._i___._____í__.__,______ ___.___
__¬_
I I I
_ _ _ ___ _____í__
I I I I'__ I I I I I I I I
ZAGADNIENIA
I Pojęcie projektowania konceptualnego
I
I I I I
¦ ¦
.I I I I
I Różnica pomiędzy modelami (konceptualnym, Iogicznym, fizycznym) I Pojęcie anomalii występujących w bazach danych
I
I' _I II I'
-_
-_
I______.___________m______._.___m__-_._________.,_._____,_._.„_ _._¬_______
____
__
_
____
_______________________________________
_
__
_
_______
_
_
_____
____
___¬_______
___________
_______
___
__
_
__
_ l_ _ _ _ 'I I' I' I'
Projektowanie konceptualne to proces konstrukcji modelu danych używany niezależnie o d fizycznych rozważań (decydowania o zawartości tabel, typach danych w tabelach i rod zaj ach powiązań). Projektowanie konceptualne prowadzone dla przedsiębiorstwa rozpoczyna się od stwo rzenia modelu projektu - zamierzenia. Rzeczywistość oddawana przez model konceptu alny nie jest ograniczana do reguł implementacji, rodzaju DBMS, aplikacji i programów. Projektowanie relacyj nej bazy danych przebiega od modelu konceptualnego do fizycznego.
_ '
I I
I I I I I I Il
.__¬_-_-_¬_-_
I :I ł
_I I'_I I' I' I' I'
I I'
I I'
I I I I I
¦ , j
_ r I
I
( Nazwy encji
I |
_
Tak
I-__ --_-----_-Å-I---I--I-1.¬.----I-I. _ -¬.|¬_I-_-|_I_I_¬_-I_I______-I___ _
_
_
Związki encji
Ÿ I I
l
_¬_¬¬¬__
¬_¬____.,___
I'
._
:I
I
Tak
'¦ I' J
.._,_.,_¬__,_¬_
----
_-
Tak
_ _
---- -.- ¬.-._¬_-¬_-_-_-I_¬_-I.I¦|-_-_-_-__-_
___
I__
_
_
_
_,
.¬¬._--I
I' I' II I'
Tak
I Il I' I.
¬_I- ¬.|-I_1I¬_n'I_ -I ¬_ I I -._¬_ ¬.¬.
trybuty I.-_I __-I_
I.-_-_-___.___-_-.__-_..._.__._
' _._
__
_
____
._.__
_
_
____
_
__
_
__
I
i
5*:
----
-'-'
- - --
lucze obce -
-_I. -¬_ ¬.I-_ _--z---¬
-I..-_
I-.n. I.I›_I_-_-_.__
-
_r-'-
'-
_
-I.- --¬.I-.- -_¬.¬.-I_¬_I¬.I¬. I_-_-_¬_._I_I- - -___
I_- -
- __
_
_
I' - --¬¬¬_-
¬- - - -- - - -¬-'\-¬- - -I
-
_
__
__
_,,¬_.¬_
__¬_,__¬_¬_
Tak
¬.-I.-_-_-. ¬_¬_ __
_______ _.I_ _ _ _
.__
--+
_I_|_
__
¬_¬_¬.¬.I.-I.-|_¬_\.-__-I_ __ __ _.______._ _____m.____m_
Ta
--I.
I _I_
_
- -\-¬-----="-¬-¬-"-¬---'--+"--
_ _ _ -_-_-_-_-_- _-_-_-_-_ -»_ - _ - _-._- __1_ -_ _
__ .__ :__ _______ __ I .m.___m__m_______ ____ _ __ --_-¬¬¬-- ¬.¬.
_ _ I_ 4_ I.í
_ _ _ _-T _¬_ ._
Klucze główne
I
_-I.-_
¬--- -I-_
-I_-_-_-_-I_I-I_-
_._¬_¬______ __¬ _
_
_____ __-__._
Tak
| I'
_I_
I I I
_
-¬.-I .-I.
¬__I
I I I I. I
Tak
_j...,___,.
__
__
_
_
¬-I.-I.-I.¬. I I' I'I.
I ¬"I I I _I
_-I_\_
____________________¬__
_,_ _
___
-__l_.
Nazwy tabel
--_Í_-_ -I.-_-_
--
'I__'
-
-_-I
¬-
I- ¬_I- ¬_
Tak
-_______:i___IŻl_ -Å-Ź-Ź-__----Ľ -.--I--I-I¬-I. I-I-I--_-_-I.-._-¬.¬..-._-._-._¬_-I_¬_-___.I_-I_II.
.
I
__
__
_¬_
___
¬_.._..__
_,_¬_
__¬_¬____
__
__
__ .__ .I-_-_¬.¬.¬_-1.
¬.¬.-I_I-_-_-_-_
Nazwy kolumn
¦
Tak
_'I____m_ _ L_
¬|-¬-I.-I¬-.I-I.-.¬-.¬.I¬_-I.-I I
I 1
¬.¬.¬_-_ -
--
-
'__
.I- -I-_-. ¬.I-_-I.¬.¬.¬_¬_¬_¬_-_-_-_I___I__-I_I_
----
-
_
--
-¬¬-I.--¬.¬.-.__-I.I.-I.II_-...I-I_ł_.___.______
_
_
___
__
_
__
_.¬,¬__¬_.,
¬_J¬¬_¬_
_
____
__L__
____L_
Typy danych
¦=
:_--I-I-¬-I-I-I.-_-_¬ -_-I.-_-_-_›_I-_¬_-_ _.I____:_.___
___
I-I¬-_-_ -
-I_¬ _¬__-I _
I' .| ----
- - - - - - - -¬.- -c¬.-..._¬_-I. -I.-__-_..:II_.__________________.:__________,__.__._____¬¬_,_,_,_
___.___
.
_
._
_
_
_
_
___ . ¬____
___
Rys. 8.1. Proces projektowania bazy danych
I
I
I
l l
¬. ¬_-I _ _m ___.___
I' I' I'
-_¬_-I_¬_ ¬_¬_-I.. I I I I I
¬_
Projektowanie logiczne to proces konstrukcji modelu danych oparty na specyficznyrn modelu, ale niezależnym od DBMS_ Model fizyczny to proces produkcji i opisu implementacji bazy danych opisujący relacje bazy danych, organizację plików, indeksy, dostęp do danych, ograniczenia, wyznaczenie reguł integralności i stosowanie środków bezpieczeństwa.
I.-»_¬_-_ __-»_
_-_-._._¬_
I I I I _I I I' I' -I_-_¬_
-_¬.¬.¬_-»_ _I Il _. ¬_ _ _ __ _ ._ _
¬_-_ _
'if -ii---_Å
¬.¬.¬_
_¬_.
-I_I_
__
_ __._._________ _____m;__m____________ ____
_,_¬_
_,_
_,_¬_
__
_
_ _ ____ __í__:___í__í_________ _
_ ___
___
______¬_
„_
___ __________
_
__
__
_
___
I
I
¬. -_ ¬_-c
.I
¬._______ _ _„_
___I_m__
_____4_ ¬.-¬I.¬-I_.-I. I I
_¬. -I. -_¬. ¬_ 4
I' I' F
Ê 1
0,
|
I
BAZY DANYCH I SYSTEMY BAZ DANYCH ¬.I-_I .¦ ¿¬.I
I' I' -I-I
-'L-I. ..-_ ¬-' H.¬-I"l r-¬'I1"-uI'r¬.- In.r-I:
'--¬-
I' I' I I I I I I
|
I | I | |
I I I
I | | |
I I I 'I I|
II I I I I I I I I I I
I. I'
'IÍ |
I |
I |
I
| |
I | |
I I I
;¦ I|
'¦ |
I I
I
I I I' I. II.I I. II I I I
I
I I I
-I':
Proces projektowania relacyjnej bazy danych można podzielić na trzy etapy: 'I. Przygotowanie diagramów związków encji. 2. Normalizacja. 3. Wprowadzenie zasad wymuszających integralność danych. Normalizacją zajmiemy się w kolejnej części podręcznika. Przygotowanie diagramów związków encji wiąże się z budową schematu - struktury, w jakiej będą przechowywane dane. Należy przyjąć, że w bazie danych przechowywane są obiekty lub wartości, które są odwzorowaniem realnych lub abstrakcyj nych bytów. Obiekty te są opisywane za pomocą właściwych dla nich cech, atrybutów, zdarzeń i metod. Właściwa organizacja tych obiektów oraz wybór odpowiadających im cech jest podstawą budowy diagramu związków encji. Przykładem budowy takiego diagramu może być próba zaprojektowania bazy danych na potrzeby organizacji służby zdrowia. Encją (realnym lub abstrakcyjnyrn bytem), która będzie przedmiotem opisu w naszej bazie danych, będą lekarze. Atrybutami tej encji mogą być: imię i nazwisko lekarza, wiek, płeć, specjalizacja. Dobór atrybutów podyktowany jest oczekiwaniami klientów w stosunku do bazy danych. jeśli baza danych miałaby rozliczać liczbę przepracowanych przez lekarza godzin, należałoby umieścić dodatkowo takie atrybuty, jak: godzina przyjścia do pracy i godzina wyjścia z pracy. Każdy kolejny lekarz opisywany przez atrybuty będzie instancją encji ,,|ekarze”. Podobnie jak podczas programowania, defíniujemy zmienną lub obiekt, gdy podstawimy wartość do zmiennej lub powołarny do życia obiekt, otrzymujemy instancję zmiennej lub instancję obiektu. Tłumacząc wprost, instancją jest powołany do życia obiekt, a w przypadku bazy danych instancją encji „lekarze” będzie np. „Ian Nowak”, „internista”, ,,lat 43”, ,,mężczyzna”. Zazwyczaj opisywane przez bazy danych encje mają formę tabel, np. tabela ,,lekarze".
I'
I' I I I I I
I I I I I I .I I I I I I _I .I I
'f
I' I I
I I I I I .I .I II .I _I Il I' I'
I'I. I
i '.
I I
Modelowanie fizyczne polega na tworzeniu modelu opisywanej rzeczywistości i wyrażeniu jej za pomocą struktur danych oraz określeniu sposobów dostępu oferowanych przez SZBD. Modelowanie fizyczne oparte jest o implementację modelu logicznego (utworzenie na podstawie logicznego projektu działającej bazy danych w wybranym SZBD oraz uzupełnienie tej bazy danymi). Podczas używania bazy danych mogą pojawić się tzw. anomalie - sytuacje, w których może dojść do utracenia danych lub stanu, w którym przechowywana przez bazę danych informacja będzie sprzeczna z rzeczywistością. Aby uniknąć takich sytuacji, tabele bazy danych są normalizowane. Normalizacj a ma jeszcze jedno zadanie, a mianowicie zmniejszenie redundancji baz danych*. Zabieg ten sprowadza się do podziału (przekształcenia) dużych, nietrafnie sformatowanych tabel na mniejsze, dobrze zaprojektowane 1 uformowane tabele. Pomiędzy nowo powstałymi tabelami należy również określić typ powiązań. Anornalie, mogące wystąpić w niedostatecznie znormalizowanych tabelach, dzielimy na trzy główne rodzaje: 1. Anornalie wstawiania. 2. Anomalie usuwania. 3. Anomalie modyfikacji (aktualizacji).
Ã' I I I I I
¦_¦
id Iilieudlindancja
jestinacz-ej nadmiarowością - występowaniem powtarzająqfch się danych.
I' ÜIÍ) S`"i`A\R"`Y' "B Fi Z Dr-*~_i\i "{Cl~'i _
¬_¬.I_¬_-_-_-___ _______--_ _
¬.
_ -______________ ___ - -_--_ ¬.¬. _I_I______________--_____,
I›nzYI‹I_An 8.1 _
_
._._._______._________. _ _ ._.__._ ¬_-_______._.____________________ _-____ ¬_-I_-_ _ _ ________II_ I-_¬ _¬___.I _I ¬ _, ¬ ¬
I' I'I. I I I I I I I
_
¬_¬__-_1 ______ -I_
Przedstawiono tu przykładową bazę danych stworzoną na potrzeby organizacji służby zdrowia. Taka baza danych powinna przechowywać dane lekarzy oraz określenie ich specjalizacji, a także informacje dotyczące pacjentów.
I
I
_¬_
Ę ¬_-I_-I_-I_
-I.¬.¬.¬_
¬_-I___-_-¬_-_I_
.=
Tabela 8.1. Baza danych lekarzy
-I.
|. .
__¬__I_ _
-I__
i I. I
I
I Internista l 229 jí_`__"`i"`"""`_` 229 I Internista ;'I ¦¦
Lubicz
,I
=' Lubicz
„
568
¬_-
ilI I' I
____ __¬_____,._. _ ,_ _
Proktoiog
ië janusz
50
'I
¦:
;I
I
I- Lek. med. j
II _-_-..¬.I-I_I_-I.-I_I__+_.___,___
Nowak
' Burski
II I'-I -¬-¬¬_-_-._.___
__¬¬_____¬_¬_¬_._ .___.___
Anna
_L
_____
Dr
.
»
jakub _.__
_
___
______.__
159
'
____.____.,_.._.._.__
_ Ziober __
264
___l
_
Dr
__
_
_
_____,¬__¬__,__¬_¬_____.._
1 Kowal
Ł
i~~~~-_-----
-I+ _-.¬
:
Brodeckí
__ ___.¬-_-__-_¬¬.¬.¬_.-I_-- 1.|__
_
.__._._I __
I'
Marek
___.__-_....1_-._-._-_-._______
I
1_ _3¬ "'ni urolog _ _ _ I_Z
eu rolog
Iarosz
----- ¬.¬.-_-__ ______
I
II -_ -I _ .___ _ __ _ _ ____ .'- __._______ __ _._ -. _-I-I.-. I
367 __¬¿___
:I Marcin
Sum
Henryk
Lek. med.
248
I¬_1. -¿'_-_-_-
Sum
-¬¬_I¬_«¬_I-_I_¬_I-_-»_-_ ______ __J_____ _ ____ __-__._ ¬_ _ ._ 5-I.-_-_-I.-I.
en ryk
joanna
I
Prof. Prof.
-_ -_-_-_ _-_ _ _______ _ ___,__ _ _,_ ___ ._
236 Ł: :E :E 159
Hanna
' Mostowiak _L
'I
_
_,_
i
,I
I
Iober
'Uni
I___¦I`*~|
LI-I. -_
I____
NFZ __
I
I
25
,I I'
,I II
~
I' II
12
gi
__
31
____
I
"t
59
I I -'1¬ I
I
___
_-I
Brak
¬.¬.-_¬_»_-_-
II I'I.
I
I |' ______--___-ę\¬¬¬¬.¬.¬.-_¬_-__...¬__._____._.|_._______¬¬.____._¬___.___.¦_.____
__ ____ ¬ -_ -_-_ -_ -_ -_ _ __ __
I.LI_. ¬_ _I _|
367
Krnieć
Brak
'¦ ____ _ ¬.¬-__ -_-_¬.¬II._.__
I
752
_-_ ___ __ _I
_---- --.I- ¬ -._¬_-_-_-_I¬_«¬_-I.-I.-I.I-I-I._____
ÊI Zdzisław
__ +___I ______.________________L______._
439
_-_-_-_-_-I.-_----___
jakub
-I_ I¬_
dfatra .I I ;_III E5
NFZ I'
I
jan
__' _________ _l_.___
498
¬.-_ -.I _- _I.
Zawada
_I '¬J'I 'Q0
_ _ ._ _
:D
I'
Í Gastrolog
Lek. med.
¬_-.-_-I.¬. I' I' I I
T
I I ______g_____ -I--¬¬ ¬. _ ¬.¬. ¬_¬_¬_-_ ¬_ -_I|_ _ _._____ __-- _ -_ _ 'Iş¬¬_¬___¬_ I. _ _-_ _-_.______ F _____ __¬_ ¬ _..,_¬_.I___. _. ____ _ _ __ ___ ___ ___I_____ I I _ __ _¬_I_ ._-_¬_-_-_._ ¬. ¬_ _._ ._ __-._ _.__ _._ __ _ _ _IIj_____
',____¬____ _ _-_.._____._._._¬__4.
___
jan
II
Š.
'¦ ':
Ł
---'I I
NFZ ____¬¬________¬_.,
I I
I I I I I I
I_¬_ _ I
II
NFZ
-I.-I.-I .-I_
-I.¬_¬_-I.
¬ .-¬.I¬.
akub
Ę..tz-II'
Brak
I_ _ I ____.__.____,__ ¬ _,__ _ _ I-_-_-_-_ _ _ _ _______________ _
_„_ _ I'
¦ _'___
__ Z
Dysponując tak zorganizowaną bazą danych, w momencie gdy chcielibyśmy usunąć pacjenta Marka Brodeckiego, nr 489, wraz z nim stracilibyśmy informację o le-
.
-I._ I- .¬_-I' ¬_I '_
ř
______
karzu Iakubie Burskim, jego numerze i profesji. Taki niepożądany efekt nazywamy
5
anomalią usuwania danych.
_I I' I' I'I. III
Ieśli w szpitalu zmieniłby się lekarz na stanowisku internisty, musielibyśmy zmienić jego imię i nazwisko nie tylko w jednym wierszu, ale we wszystkich wierszach ze specjalizacją internisty, w których dane lekarza się powtarzają. Efekt taki jest niepożądany i określany jest mianem anomalii modyfikacji danych. Podobna nieprawidłowość może wystąpić w momencie zapisania do szpitala nowego pacjenta. Musielibyśmy nie tylko skompletować dane dotyczące jego imienia, nazwiska, wieku, lecz także wielokrotnie je powtarzać przy wszystkich lekarzach, do których pacjent byłby przypisany. Zjawisko takie nosi nazwę anomalii wstawiania danych. Podany przykład prezentuje tylko niewielki fragment bazy danych, która mogłaby w tej postaci funkcjonować w szpitalu. Iednak realnie, po umieszczeniu kilku tysíęcy pacjentów, wykonywanie powyższych operacji (wstawiania, usuwania i modyfikacji) mogłoby okazać się niezwykle czasochłonne, kłopotliwe czy wręcz niewykonalne dla jednej osoby. I _ __ _ _ _
¬_
= ' '
-I1_-_¬1_1.I_ ›.¬_-I'_¬-I.'_¬_.I_1_
Anomalie mogą pojawiać się jako skutki uboczne, gdy przystępujemy do wstawiania, kasowania lub modyfikacji danych w tabelach. Należy jednak pamiętać, że nie każda tabela bazy danych jest narażona na pojawianie się anomalii, które mogą wystąpić w niewystarczająco znormalizowanych tabelach. W takich tabelach może zajść jedna lub kilka anomalii: aktualizacji/ modyfikacji, usuwania iwstawiania. Ieśli w obrębie tabeli ta sama informacja powtarza się w kilku wierszach, to aktualizacja takiej tabeli może spowodować, że utraci ona (wraz z powiązanymi z nią tabelami) spójność logiczną.
-¬' -"I.¬'-iI.n_¬I-_ _ ¬_¬_¬_„
I I
-.¬ -;¬. -I. ¬. I.
.
_ _ _ -_ 4¬-
' = i
I I'
II. I I
_ 5 . I
¬.¬_1_‹.¬_ _ I r r
I
I Ł I
I'
I
Ii I
.I I.
š
I I I I' I'
II
I' ' I' I'
¬.-_
I 1
___
'I -'¬_
----------Å---------w
--
-_-------_---í--------I.
-_------:--_-----
_
__-
--_
¬_
__
_
-_-___
--
-
_.-__-.____________.________._._._¬___.__________
.¦_._..___|___ I I
-_ ¬_ _-_ _-¬ i_ _ _ _ _ _ ¬ ¬_ _
I I I I I
I' I' I'
I' I I I I I I I
I I I I I
_
_ _
_ ¿I'
'
I
BAZY DANYCH l SYSTEMY BAZ DANYCH
:N2a
3J 1' J
|| .l
Normalizacja odgrywa zatem ważną rolę w procesie projektowania relacyjnych baz danych. Na pierwszy rzut oka nieznormalizowane tabele charakteryzują się tym, że w obrębie kolumn mogą powtarzać się dane. W momencie aktualizacji tabeli przechowującej np. pracowników, aktualizacja miejsca zamieszkania pracownika nie zostanie wprowadzona we wszystkich wierszach, w których występują dane pracownika. Anomalia usuwania zachodzi wowczas, gdy usuwamy wiersz tabeli i wraz z nim tra-
| | | I I I
rI. .I. .I. . ll
.I I I
cimy dane, które byłyby dla nas istotne. Usuwając informację o pracowniku i jego przydziale, tracimy nie tylko dane pracownika, lecz takze informację o jego stanowisku, którą chcielibyśmy zachować.
Minimalizacja przeprojektowania podczas rozszerzania
.I I I I I I I I
struktury danych
| | | I | | I I I I
W znormalizowanych bazach danych aplikacje, które współpracują z bazą danych, nie muszą być przeprojektowywane w momencie, gdy rozszerzamy bazę danych o dodatkowe tabele, a modyfikacja takich aplikacji jest niewielka. Normalizacja ułatwia tworzenie modelu bazy danych tak, aby był bardziej czytelny dla użytkowników. Związki pomiędzy znormalizowanymi tabelami odzwierciedlają związki zachodzące w świecie rzeczywistym (pomiędzy encjami), dlatego forma znormalizowana jest bardziej czytelna dla użytkowników. Normalizacja ułatwia projektowanie baz danych, ponieważ eliminuje konieczność planowania układu tabel pod kątem zapytań, które mogłyby najczęściej wystąpić. Etap opracowania struktury tabel jest automatyzowany dzięki rozważeniu zalezności funkcyjnych pomiędzy atrybutami i sprowadzeniu tabel bazy danych do kolejnych postaci normalnych.
| . . I . I.I I
.'
snaawnz swćoia, wnëtnzs E _-Š'-= '
:NF ll
'I .=a:“.
I 'L. -
1. Co to jest modelowanie konceptualne? 2. Wymień anomalie występujące w bazach danych i krótko je scharakteryzuj. 3. jakie funkcje pełni normalizacja?
lł (Í) if) S' 'łyk W Y fi A Z if) .~"5‹. N Y C H
.
al..
'
.l
Normal|zowan|e baz danych _
__
l
_I
_
_
_
_
__ ____
. . . . -.
_
-____
ZAGADNIENIA
I Definicja zależności funkcyjnych I Rodzaje zależności funkcyjnych: pełna zależność funkcyjna, przechodnia zależność funkcyjna, wielowartościowa zależność funkcyjna, zależność złączeniowa I Definicja klucza głównego I Etapy procesu projektowania relacyjnej bazy danych: przygotowanie diagramów związków encji (anomalie wstawiania, usuwania, modyfikacji), normalizacja, wprowadzenie zasad wymuszających integralność danych I Postacie normalne relacji I Temporalne bazy danych I Czas w tem poralnych bazach danych (czas walidacyjny, czas transakcyjny)
I Relacje w hurtowniach danych drugiej generacji Aby zrozumieć proces normalizacji, należy poznać pojęcia, które pełnią rolę narzędzi projektanta. Znajomość takich zagadnień jak relacja, klucz podstawowy, klucz obcy, klucz kandydujący oraz związki funkcjonalne i posługiwanie się nimi ma priorytet w definiowaniu kolejnych form normalnych. Ponieważ takie pojęcia, jak: klucz podstawowy, klucz obcy, klucz kandydujący, zostały omówione w rozdziałach poświęconych tabelom, ostatnim tematem poprzedzającym normalizację będzie analiza związków funkcjonalnych. Projektowanie baz danych to bardzo rozległy temat, liczna jest też literatura dotycząca zasad projektowania. Aby czytelnikom tej ksiązki (przyszłym projektantom baz danych) ułatwić poruszanie się po oprogramowaniu z angielskim interfejsem, wprowadzono w niej wiele nazw polskich i odpowiedników angielskich.
Zależności funkcyjne W obrębie tabeli (relacji) pomiędzy kolumnami (atrybutami) zachodzą związki, które opisujemy za pomocą zależności funkcyjnych. Definicją występowania zależności jest przedstawienie takiej relacji - umownie nazwijmy ją R - o dwóch atrybutach (lub grupach atrybutów): A i B, w której atrybut B jest zależny od A wtedy, gdy we wszystkich krotkach zawierających określoną wartość A wystąpi tylko jedna odpowiadająca jej wartość B. jednak dla danej wartości B może wystąpić kilka róźnych wartości A. Należy zwrócić uwagę na to, że spełnione muszą być trzy warunki: l. jeśli w co najmniej dwóch krotkach atrybut A ma taką samą wartość, to odpowiadające mu krotki atrybutu B będą miały identyczną wartość. 2. Dla kolejnych róznych wartości A wystąpią różne odpowiadające im atrybuty B. 3. Opisane powyżej warunki będą niezależne od czasu analizowania zawartości atrybutów Ai B.
-. -L-. '.¬'.
BAZY DANYCH I SYSTEMY BAZ DANYCH :_¬_
I-
__ '_ '_. .I
I'-- _ f_ ' -I_II _._ .I.. -_¬.: «-. . . -_-'_'-. ¦`|_|¬.| .¬-.'¬ _.-.¬., '_.¬_., ._j;-. ._
¬. -._¬_
¬.- ¬.¬.
I iI
I=InzY|‹ł.An 9.1
_
__ _
_
Definicja wymaga przykładu, którym będzie analiza relacji R.
¬ .¬.¬.¬_¬_
I I' I I I I I
Tabela 9.1. Lista uczniów (1)
Tabela 9.2. Lista uczniów (2)
II I
I
I _I
-
¬ I
¬.¬.¬_
I' .I
-1._-_
Bara" Maclel Czapla Dominika
-|.-. ¬. I I
I'
¬.¬.¬.¬.¬_.
.I
2 __
1.
1.-._
-¬.¬.¬.¬.¬_
I .' I' r I I
I'
I
____Ê________`__ÊÍ¿'§>jI_-ąI>I'?-'|_‹_ Marzena .
l
'_
4
_._ _-_-_-_-_¬_-_
1.¬_.__I›
. I I
I
I I
I
I
_
" Kowal Šdzlsław
¬.¬.-
i
I
l
I Baran Maciej Czapla Dominika
I~¬..i .
I I
I
I
I
I
_,_
I I'
,
T-__
_____l_
.I
---¬¬-1-¬.¬.¬_-|_ 1'_¬_
. Cza la Dominika
-_¬. -_
Ż-:I-._- c_¬.| -_¬
______________i;_______ I.
.- -¬ ¬.¬ _- ¬ _.¬
¦
-I.-_
I
-1.-_ _
4
I .I
I
5
¬_.-J¬. _¬. _¬_-|_¬_
iGołąbek Marzena I.-u¬_¬.|_-_¬_I:_í?.-._:,__¬¬_.-,.„_._-_.
_- ¬_
I
,
_
_¬_¬_¬_
_'___
I Kowal Zdzisław
I. I. I I I I
-._¬_- _I._ '¬_.-___¬__-_
II
¬.¬-I.¬.¬_¬_
I I
¬.¬.
-_
-_-_
-c-I.
¬___?_,_ _í_í¬_„ _., _¬_,
.I .' I' I'
¬..__¬.¬. ¬_-._¬_
f
.' ¬.¬.¬_
I
I I I' r I' I I
¬.
¦
I I I I I I' I' I'
r 'Í
-c¬.-c¬_¬_ _
I I I
I I
Tabela 9.1 może być przykładem fragmentu dziennika szkolnego. Atrybut (kolumna) A przechowuje wartości, które są porządkowym numerem ucznia w dzienniku. Atrybut B przechowuje imiona i nazwiska uczniów (podobnie jak szkolny dziennik). Każda kolejna wartość atrybutu B identyfikuje inną osobę. Celem naszych działań jest odpowiedż na pytanie: czy atrybut A jest funkcjonalnie zależny od B, czy może jest odwrotnie? Iak łatwo zauważyć, w przykładzie wyznaczenie zależności funkcyjnej jest dość trudne. Dysponując tabelą 9.1, trudno określić, czy atrybut A (numery uczniów) funkcyjnie zależy od atrybutu B (imion i nazwisk). Aby wyznaczyć zależność funkcyjną, należy przeanalizować podany przykład, a zwłaszcza wszystkie możliwości, które mogą mieć miejsce nie tylko w danym dniu (w którym rozpatrujemy podany fragment dziennika), lecz także w przyszłym roku. Możemy wówczas dojść do wniosku, że zawartość atrybutów A i B może ulec zmianom. Może się zdarzyć, że dwie osoby będą mieć takie same imiona i nazwiska. Mimo że jest to mało prawdopodobne w obrębie jednej klasy, istnieje taka możliwość. Przykład omawianej relacji przedstawia tabela 9.2. Ponieważ fizycznie mamy do czynienia z dwiema różnymi osobami mającymi takie samo nazwisko i imię, łatwo spostrzec, że identyfikacja osób w klasie jest zależna od numeru ucznia, a nie imienia i nazwiska. W tabeli 9.2 dla jednej wartości atrybutu B (Czapla Dominika) wystąpi kilka różnych wartości A (numer 2 i 3). Dlatego też numer w dzienniku (kolumna A) jest wyznacznikiem ucznia, tzn. atrybut B jest funkcyjnie zależny od A. -
I I
I I I I I I
I I I I . -I I'
. I . I I
I I I I . I
I I I
I
I . . I I I . _I
I. I. I. . I I I I
I I I I I I I
I I
I I
I _I I I. II II . I. I I I I I I
I I _I I .I
.' I I' r .' I r I. I I
¬_¬_-|_¬_
.I ¬.¬.
I I -._.-_ -___
I .I I
-I.-»¬_¬_ .I-¬. ¬_-I.
I' I'
I I'
¬_¬_
¬-
-1.
.I .'
Wyznacznik
¬.¬.¬_
I I
strzałka
Zbiór deterrninowany (za leż ny fu n kcyjn ie)
Rys. 9.1. Wyznaczanie zależności funkcyjnych między zbiorami
I
.I I'
.I .I _I
.I
¬I.. -.¬ .¬_ .¬ .' r
I
I.I II. I I I I 'ÍI I I I I I _.L --I---¬.¬¬_-¬. -_.¬ _-
Ponieważ B jest funkcyjnie zależne od A, zaznaczamy to, umieszczając wyznacznik po lewej stronie strzałki. _ __ __ ___ 'FI. I'
li' O D S TA W Y ii A Ê. D A N `)'TĹ l-I -mi
---_---.
-_
__
_Ź
.¬.___
-_i_.
.______.__ż_-__
.__:
.
_-í
_____
._í.
---_¬_-..._
._-__--...
--,______.
..í.
._..__-__.
.
Podczas wyznaczania zależności funkcyjnych należy brać pod uwagę nie tylko jedną określoną wartość, którą przyjął ustalony atrybut w danej krotce (w pewnej jednostce czasu), ale zbiór wszystkich możliwych wartości, jakie może przyjąć atrybut także w przyszłości. Zależność funkcyjna jest wyznaczana przez zawartość bazy danych (wartości w tabelach), a nie przez schemat (np. układ tabel). Podczas wyznaczania zależności funkcyjnych pomocne jest również określenie przeznaczenia atrybutów. Przeznaczeniem numerów w dzienniku jest jednoznaczne zidentyfikowanie ucznia. Rubryka imię i nazwisko stworzona jest po to, by przechowywać zbiór imion i nazwisk oraz przyporządkować im określony numer. W powyższym przykładzie, w którym dwóch uczniów miało takie samo imię i nazwisko, nie jesteśmy w stanie wyznaczyć ucznia za pomocą imienia i nazwiska, a jedynie przez numer. W pierwszej tabeli związek numer-uczeń miał charakter jeden do jednego, gdyż jednemu uczniowi (każdemu imieniu i nazwisku) przypadał jeden numer w dzienniku. W drugim wariancie związek uczniowie-numery może mieć postać jeden do wielu. Zajdzie taka możliwość, gdyz w przypadku wystąpienia kilku osób o tym samym imieniu i nazwisku, reprezentowanych przez jedną wartość kolumny B (powtarzającą się w kolejnych krotkach), odpowiadać będą funkcyjne odpowiedniki w postaci różnych numerów (wartości) atrybutu A. Zależności funkcyjne mogą być określane mianem trywialnych, gdy ich prawa strona jest podzbiorem lewej. Zależności trywialne nie wnoszą żadnych informacji o więzach integralności dotyczących wartości atrybutów. Zależności funkcyjne trywialne bardzo rzadko mieszczą się w obszarze zainteresowania podczas projektowania relacyjnych baz danych i znacznie częściej jesteśmy zmuszeni do analizowania zależności nietrywialnych. Przykładem takiej zależności jest pełna zależność funkcyjna.
Pełna zależność funkcyjna Atrybuty B są w pelni funkcyjnie zależne od atrybutów A, jeśli B jest funkcyjnie zależny od A, ale nie jest funkcyjnie zależny od żadnego właściwego podzbioru A. Upraszczając tę definicję: atrybuty B są funkcyjnie zależne od całości atrybutów A, ale nie od części atrybutów A.
A----'-8 Rys. 9.2. Oznaczenie pełnej zależności funkcyjnej (notacja oparta o przedłużoną strzałkę)
Przenieśmy teraz tę teorię na obszar baz danych. Pełna zależność funkcyjna A -' B występuje, gdy po usunięciu jakiegokolwiek atrybutu A zostanie ona utracona. Ieśli istnieje jakikolwiek atrybut A, po którego usunięciu zależność funkcyjna A -" B zostanie zachowana, wtedy jest to jedynie częściowa zależność funkcyjna, a nie pełna. PIIZYKŁAD 9.2
_
_
_
_
_
_
_
__
__
W celu lepszego zobrazowania tego twierdzenia posłużmy się relacją, w której ustalimy dwa założenia: 1. Przyjmijmy, że mamy tylko czterech lekarzy w szpitalu. 2. Nigdy nie wystąpią osoby o tych samych imionach i nazwiskach. :_
_,._.__-____..._-_-___
¬______-_
_-......._......
..._-.____..-.._¬_._
_______
-
_¬____.
___
.
-
_____
___-_
._____
.
_-_---
_:_
._
__
.___í_..___¬._
*_
*iu-1.
-.fu
.
_ ___
BAZY DAN`r'Cl'l l S`¬r'S`Íl¬l-¬_'lv”l`Y" BAZ. DANYĹÍI-I ' '- _ _ I. _. _. „I_¬. ¬.-I¬.~-Ŭ_...___ _._-I-.¬-:_: I I
._ ¬_j. _._„_. _.I_. _¬._ I' I
I I I _________.________.___.- -------------¬--Å-------' -----:-
-
__
----'
______ ________ _.__ ___ _____¬_-I.--i____..-J-I.-I-lllll ;I_ ', |
I I
Ś
'.II
_I J
'
I
.l I I
l Ê I I
r I' I I'
Tabela 9.3. Lista lekarzy (1)
I r r I'
E _í
_l
l
I
' | I
I |
I
I_
¦
_Å
l
:¦
I
|'
|
I
'I
'I
I'
,I
I
I
i Nazwisko I I'
I
Imię
I ____ ________.___.I_-_-I.-I-:______ I.I.-_-_-ZI ____ I.-I.-I.-I.¬-_____I_ _-_---..--_--_.__ -.¬.
I
_„_
-_ 'I
ŠE Nowak
l
I
=,,` g.
I'
IlI
I
III
jan
I I I
-I.I-I.-_ ___
_¬ą _ ~ I-1.'I-.
I
¦I
Zdzisław
I._._.__.____¬_.___.____ ____ _
_.__i_ _._ _._
_ |
ll
-
t-±±±
j
-_--"--'¬-¬-'------"-'-""'-'i-"'-'¬""""¬--í--"""""i'
t Kardiologiczny
¦I
Nowak
Gabinet '
___-___
_ _ _í__
__._..
Neurologiczny . . _ ___ _ -__í__
_ _ -I
_
_*_ - '-
_'
j
°-¬--"-'
_________..¬:__I¦ _
__'I|._
I'_ '
'
.I_' '
_______________________
_ Kowalski
j
ÊI Józef
_ __-___I____. i
l Psychiatryczny _ ____ __ ________ _ _________¬
¿ _ . -_-___---__----_ -- -_---
____,_ _._____._._._¬1
_
_| Mar ek
I.If"ł
i
_j
tornatolog|czny
'
]ak łatwo zauważyć, gabinet, w którym pracują lekarze, identyfikowany jest przez klucz główny A składający się z dwóch atrybutów - Nazwisko i Imię. Atrybut B - Gabinet jest funkcyjnie zależny od klucza głównego, ponieważ każdy z lekarzy ma inną specjalizację, czego naturalną konsekwencją jest to, że kardiolog Ian Nowak nie może pracować w gabinecie stomatologicznym.
i I
_ " j _.¬_¬__ -
:' Il I
Kowalski
.j 1
I I' .l
_
I J
j i -I.
Tabela 9.4. Lista lekarzy (2)
I'
Nowak t j Nowak
_____
Kardiologiczny
I. _ _ __ ___.___í_ ____ -.- - _ __-__ ____.___
j.- _ _ _
_ __ _
__
_- -.-I-
__.
_..-.-_- -_-_---
Neurologiczny
---_____________ _ _ _ __-.____._.. ._.__-_ -_-_______.__ .._..-.___-____¬
owalski
_ Psychiatryczny
j I
¬.¬.:_-I-I-I.¬I¬.
i Kowalski
Stomatologiczny
¬.- ¬_-.¬_-_ _
1.¬_-_-_-I.- - --i_i___ _-_ -I_-_-_- _
_
---_í___I_¬_-_-._-I_-_-_-.- ---_à____í__..c__¬_-I_¬.-I.-I.- __-___.
L-.¬.¬.¬-. -l
I
Iednak gdy od klucza A odejmiemy któryś z atrybutów, np. imię, wówczas zależ-
ność zostanie utracona, gdyż dla samego nazwiska, np. Kowalski, będziemy mogli przypisać dwa gabinety (psychiatryczny i stomatologiczny). Zgodnie z założeniami
i 5
zależności funkcyjnej A -+ B, B jest funkcyjnie zależne od A, gdy dla każdej innej wartości A mamy odpowiadającą jej inną wartość B oraz dla tych samych wartości A mamy te same odpowiadające im wartości B. W tym przypadku założenia zależności funkcyjnej zostały naruszone, ponieważ dla tych samych wartości A (Nowak, Nowak) mamy rózne wartości B (kardiologiczny, neurologiczny). Nasze rozważania sprowadzają się do twierdzenia, że pełna zależność funkcyjna występuje wtedy, gdy klucz główny jest w stanie jednoznacznie identyfikować krotki zmiennej relacyjnej wyłącznie za pomocą wszystkich należących do niego atrybutów. Straci tę właściwość, gdy którykolwiek z wchodzących w jego skład atrybutów zo-
l
Stanie mu ßdięty- _
1 1
¦
|
j l _ I
I' I' I' I' I' I' Il I
I I' I' f I' I'I
_
r _
a_
_
-__
Przechodnia zależność funkcyjna
I g :ş j _ Ê J
l 5 =;
I
ş
I
I
Z przechodnią zależnością funkcyjną mamy do czynienia, gdy A nie jest bezpośrednim wyznacznikiem C, wówczas można określić tę zależność jako pośrednią. Atrybut A deterÊ Š ' ' j
minuje funkcyj nie od niego zależny atrybut B (nazwijmy tak umownie kolejną kolumnę),
Ê
natomiast atrybut B determinuje funkcyjnie zależny atrybut C. Zapiszmy ten przykład jako A -" B i B -" C. Ponieważ C funkcyjnie zależy od B, to zależy również od A, ale nie bezpośrednio.
_ 5 ş
I
__
I |
I
I
j
__-....___+_'_________.___ .-_-.-________________-__-_--_-.______.___._ I' I'
I
I'
I'
--¬___________-__
_
_
...____________________...._
___
I
____________._.__._-___:______. __-________¦.__._. I
I __I I
-_¬.Il
'¦ I I'. ¦. , I
_P Ü D S TA W 'I' _B A Z D A N 'I' C H
I
I
it- l
I' .¬.¬. iw-'m " ¬¬-¬-- ¬- "-¬- '- ¬-'-'- - --_--_-:---í----Å -I-.-I -I - -.-.-I. -I. -I.I-_-I--I. _ _ _ ___ _ .í_. _í___.___ __ ___ I
_ _ ._ _ _ _ _ _ _ _ i____í_í__ _ __ _ _ _ ___ -
-
_
¬_I___-_______._______
I_¬ _¬I_,.'_¬., _¬., -_
I
I' I I I
_I
_¦
I
'
I›nzY|‹ł.An 9.3
_ __
I' I'
_ _
'I I'
Prześledżmy tę teorię, posługując się przykładem:
A
_D
_I
B
B
_ł
C
I
1 I__.___¬_¬_¬__¬_.,_,...
Nøwak
„_
¬|
E
-I
123-321-123
-I.-I. -I. I. _¬_-I. _ _ _ .___I___.__ __ __ ____ii_____ _¬,¬__,_¬_¬_ _.___
_,__
_
__ _
'
_ . _¬ -_
__ ____________________
__
_
___
I
_
Kowal skI II I J
ł
Ê I
¬. _I ¬_.¬_. ¬._
_I.I I'
345-543-345
I llI'
_.I
I
I'
I
__II 1
I
I
¦
I
II
II
'I I
I' I' _I _I I'
I
i
“
567 765-567
II II
'I
I'
I
I'
a s|lewsk1 ` '
I I' I
I
I
I'
.I I
-I.
j
_I I I
'Í
Í
I
I I I
I -I. -61. -I¬.-o
l
Nowak
-I=~
I I
_I
--'
-I.-. -_-_¬_
234-587 909
I'
I' I I I I
_
-_.¬_-. ._, 1._ .,_ .1_ _
___________._________._______._____I______
A ----------+›c
I
I I
I
¦
I I I I I I I I
Rys. 9.3. Pośrednia zależność funkcyjna
_I
l
J .I
B jest funkcyjnie zależne od A (kierunek zależności wyznacza to, że dla dwóch takich samych nazwisk numery będą różne (1 - Nowak, 4 - Nowak), wobec tego atrybut B jest wyznaczany przez atrybut A. Drugi związek występuje pomiędzy lekarzem a jego numerem telefonu (lekarz może zawsze zmienić numer, zatem numer zależy od lekarza). jak ilustruje powyższa zmienna relacyjna, atrybut C pośrednio zależy od A. Oprócz zależności przechodniej (tronsitivs dspendsncy) możemy wyróżnić jeszcze zależność wielowartościową __ _ _
'
I
I I I I I I I I
.I I'
II I
1'I I 'I
I' I' I'_. I I' I' I'
I'Í I I I I' I
I
|lI I
I
I I I I
I I I
l
l I
I
l Wielowartościowa zależność funkcyjna ā (MVD - multi-valued dependency)
I I' I
-I.
I
-I.-I.-I.-I.-1.
I' I'
I Umiejętność wyznaczania zależności wielowartościowej istotna będzie zwłaszcza podczas
I'
I' I' I' I' I'
procesu normalizacji (w formach wyższych od BCNF), o której informacje zawarto w dal¬._-If¬.-I_¬ I-_¬ -I_
I' I' I' 1' r I I' I I I I
_ szej części podręcznika. Istotne jest, aby czytelnik zapoznał się z nią przed lekturą rozdzia5 łów o normalizacji.
I'
; Zależności wielowartościowe powstają często przy doprowadzaniu nieznormalizowa= nej tabeli do pierwszej postaci normalnej. Aby tabela znajdowała się w pierwszej postaci I normalnej, nie może na przecięciu się wiersza i kolumny zawierać wartości złożonych (nie I może wystąpić kilka elementów zbioru). Oznacza to, że tworząc tabelę, np. dyżurnych, nie _Ê możemy umieścić kilku różnych osób w jednej kolumnie.
I 1
.I I I _I
I
_I
i I' I' I' I' I' I'
Tabela 9.5. Lista dyżurnych
E
.
-
5 Pon1edzIałek
'
i
.
I I' I'
'I
II
.
.
1
.
|
Kaz|m1erz, Roman, Zb|gnIew
_
-_
I I I I I I
l
II
I'
II
I
I
5 Zofia, Maria, Bozena I
¦'
I Il
I
I
I I' I I I' I I I I I I I
I I
II
1.1-_'Ł-_
j Środa
eszek, Marian, Krzysztof 'i Il
I.I¬.I
¬_.¬-_ _ -._¬_-. _¬_-I.
Piątek
I1 I
I I¦
I
:I
_._,
'I
I",I.H
ÊI I I
I
I
_
-=--I.-u. II-.-I.¬..1._-I_'I__
¬. -_ ¬. _
Donald, Grzegorz, jerzy
_ _I_ __
onika, Aniela, Dobrusia
-I. -_~._¬_-.I| _
Å
-
-
_
_
__
__
__¬___,_.__-____=._
_
___|
I I I J
wona, jolanta, Klaudia
I' I' I' .l
-_-I.¬_I- .-I. -I. -I. -I.
.¬ .
_-I. _ .-I. --I__ -._I_I.___________í_i____í_ _-._-__ ._,.,__ .__
__
-I._¬ _-I.
-I_I II .I I
I _I
Il
I'
_.~-_| ._:______.____í___.__ ¬_¬__
______ _______
_
_
__
_______
Il _I_._ |'I.¬ .¬_¬_¬_¬_¬_I-._¬._-¬. _-I.
nm
BAZY DANYCH I SYSTEMY BAZ DANYCH
___¬ -\_¬ -¬.
.¬_._.,¿__I_..I-.|-u---I
¬_._.`,_'I_ ¬¿I_-I. ¬.I"z. .-_I- fI.-wł,-__'__'I.-_ ru-|¬I-L
¬._ _ _
I' _I
_ ¬_ _ _
I' I' I
I
krotek) _ Tabele możemy określić jako formę nieznormalizowaną tzw. UNF (Un-Normalised
I' 1
¬_¬_ I f
I I' II
_-I _¬. ¬-
Tabela 9.5 nie jest relacją (zmienną relacyjną), ponieważ w kolumnach Dyżur-ni__M (M - mężczyźni) i Dyżurne_K (K - kobiety) występują zbiory wartości (dla każdej z trzech
¬_¬_ _ _
_¬_¬_
_I
l
Form) .
_-I.-_
Aby przekształcić ja w relację (aby tym samyrn była użyteczna dla relacyjnej bazy danych). musimy pozbyć się nieatomowych wartości w atrybutach Dyżurni_M i Dyżurne_K. Możemy tego dokonać przez tzw. spłaszczanie tabeli.
_¬_¬_
-_-__I_.-_I
I' J II
_ _¬_- ¬.I
j I
l
I
I I r I'
I.¬_-.
I
Tabela 9.6. Lista dyżurnych (2) - spłaszczenie tabeli
I I I I I 'Ż
.›
-
1|
I
Poniedziałek
¬.¬_.-_ _ I
I I' J I
I
i
I
|
'
I
Kazimierz .___ ______-I_-I- _
I _ _ ___ _._¬¬________-_ -_--I-.
_.__
Roman _
__-.- -_
I. _ II
ofia
bignlew
I
I
I
I
I ____¬_¬_
I
_ Maria
-___
¬.
-I
I I_
Bożena
.,_.,_,._._____¬__,__
.r.-
_
¬_ _
Środa _
I __
'U.
_I_¬_I¬.|¬.I--
' Leszek I_
ątek
íi|
r _I¬.I¬-_-_-ra-¬_¬.III - i _ I I ¬.I _ I
'
arlan
I-
I'_,_ I IŠ I'_
r I I-__-"
_
'|.III -___ ¦
____'|_I .|
rzysztof I'
-:
I. I . Il _
¿ Grzegorz
' N onika
_ _________._____._____ _.__ _ __I_____ _ ¬_-_-____¬_._______
_ I _I II||
I¦
_
Ü
I Aniela
I
-._
I
I
I
___
I |¦III
¦I I ____._I¬.I-I.,-I
IN '_F
Iwona
-._ _ _ _ ¬.) -I -._ _¬.-_'f
obrusia '.
I II I
I _
-I_'¬_¬.I-
__
-r-'___
I.I
5
I --
i.
j_ _ _ _ . _. _
_ _-_-I-|.¬
5, jolanta
_ Klaudia .F-I.
|-I.-I. I I
¬-;¬--I -I.-_ _ 'I_l|_I¬_I- I-vi
__
If. 5I'
rI_ _,__ I _¬_
.__I
rI
erzy
¬. -_ _.I_¬-.I _
¿ Donald
-I. _¬-_.
IIr'_r JI_
_
_ _-.-
_
'I
_ ¬__.I.____ _ _-__ ___ _ _ _-.__ __ _ _ -. _ _____ _ -._ _-___ _ ¬_- _____.
-______ I_¬._-____ _-_- I-.__z__I_-.- -__-_.--I_-_ -I----___
-_ _ -_ _ '.- I- _
5
I
-_ - ___-.I-I. -____-_ _-_-_- -__ _ _-'-.--I
-_-.|.-_ _ _ ¬.-I ._-I .-_¬_¬_
Albo przez powtórzenie atrybutu Dni:
¬_¬_ __
._¬_¬_
J
Ą
Il
____._¬_¬-_ _
A -›>ß
Ê
-I.
I I I' I I I
--__¬-___¬_-.I ¬.¬_-.,_
I' ¬_-_ _ -_¬.¬.
III'
_¬.¬.-
1
'l U
I
Ę
'
4'
_
I
I
._-___
I
I
I r r I'_I I
I'
_I J I
I I
- -_-_-_
-_--_-_
-1.
._
Poniedziałek
I' I'
I II
__
_ ___I__-_¬_¬_
|
aria
Roman
Ê
I I I
¬.¬.-
Ü,
_. __-_l__
Poniedziałek 5 Zbigniew ____ ___,_¬___ ._.__ Środa Í' Leszek
____I_-.¬.-¿--
Bożena
____
____
_. _ _ _„z_ _ _._¬|j._ Š_ onika
1 '"
_ _ _ _______..___¬__ ____II.-II- -__-__ _-_ -I.-_
_ _-L-_-I-I
_ ¬_-I._¬ .-I
Środa ____-_¬_
___¬_ ¬_ _ ¬_¬_-I. ¬_¬_-.¬-_
Marian
- -_-_-_
4 I
- -_-._-_-_
Sroda
_ Aniela
--_-_-_
-_-_-_
Krzysztof
'
I
- -_-_-_ _
_-_-_
_._ ¬.-
|
Dobrusia
I' I' .l
_¬ ._ _ _
Piątek
Ü onald
:_ Iwona _____.___
¬_¬___
_¬_-
- I_-_-_
-I. -I..-I
-I.
._ _-_ . _.¬. ¬.¬l._
Piątek ,_._,____
_
_¬_¬__ __
5 Grzegorz
¬.
_-_ _¬_- _
__-_¬_¬_ _
_¬_¬__
I I| I'
Ł jolanta _
_¬_-___
_ÊI-.¬_
_-_-_-_
'5 _._
_
_
_“.--_-
-____ _¬____¬. _ _. _
Piątek __
'\'l__I
._-_-_
___-_-_¬_-\.‹-»Í-_
_ ._____-
erzy _¬_.
Klaudia ___-___
-___
__u_._..
._....-_..
._.¬_______._ .¬.
A -----"">C
I' --__¬_¬-_____¬_¬_¬-I_-
____._._..
_ _ ¬_¬-I. -
I I
I I
,
I I I I'
_,____ __
I' I
Rys. 9.4. Wielowartościowa zależność funkcyjna
¬_¬_-
W tym wypadku pojedyncza wartość kolumny A wyznacza zbiory wartości atrybutu B
_ -I_¬_¬ _
.I I
-=
(Dyzu:I::ni_M) i zbiory wartości atrybutu C (Dyżurne__K).
_ ______
I I I
Ê
Zalezności funkcyjne, w których jedna wartość atrybutu A jest wyznacznikiem zbioru
I'
-L-I -_ _-I__-_I. _¬ _
_-I.-I. _¬_¬____-_¬_- I._
I
I I
I'
'I
.| I
I' I|
I
wartości atrybutu B, nazywamy zależnościami wielowartościowymi. Przed przejściem do normalizacji oprócz zależności wielowartościowych powinniśmy omówić jeszcze jedną zależność ~ zależność złączeniową (join dependßncy).
;_
. _. ._______.________. ______.._.______.-_______ __._______.__._____.__._______..-__-___ _.._______....-.____._._._-..___--.__-___ ..._-_¦_-
P Ü _D 5 TY). W “If B A
ÜA
if C _iii
UJ KD -_-.I- . nI_'I_.- _¬_¬_
_.-._-__._
___.___
_
_
_
_______________________________________ __.___..__...._.____._.
Zależność złączeniowa Zależność złączeniowa związana jest z operacją rzutowania. Rzut (projekcje) możemy przedstawić jako pionową maszynę do cięcia tabeli. Projekcja powstaje przez Wybór określonych kolumn. jeśli zatem potrzebujemy podzielić zmienną-relację na dwie mniejsze zmienne relacyjne, wykorzystując do tego operację rzutowania, oznacza to, że za pomocą wyboru kolumn określimy, które atrybuty znajdą się w tabeli nr 1, a które znajdą się w tabeli nr 2. Za pomocą zależności funkcyjnych wyłaniamy klucze kandydujące, aby spośród nich wybrać jeden, który zostanie kluczem głównym relacji. Cały proces wyznaczania klucza głównego rozpoczynamy od określenia atrybutów (lub grup atrybutów) jednoznacznie identyfikujących każdą krotkę. W ten sposób Wyznaczymy zestaw kluczy kandydujących. Spośród nich wybierzemy lclucz główny, kierując się zasadą, że klucz główny to taki atrybut (lub zestaw atrybutów), od którego zależne funkcyjnie są wszystkie niekluczowe atrybuty. Wyznaczanie zależności funkcyjnych jest więc ważne na etapie poprzedzającym identyfikację klucza głównego i kluczy kandydujących. W systemach bazodanowych klucz główny jest automatycznie indeksowany"". Należy więc rozważyć, czy wskazywanie jako klucza głównego kilku atrybutów, których typy pozwalają umieszczać w nich duże ilości danych (w każdej krotce), nie będzie wiązało się ze sporym obciążeniem systemu. Normalizacja jest procesem mającym na celu redukowanie anomalii zachowań relacyjnych baz danych poprzez tworzenie mniejszych tabel opartych na dobrze zaprojektowanych relacjach. Aby uniknąć późniejszych błędów podczas projektowania bazy danych, można odnieść się do koncepcji poleci-yolce (japońskiej metody eliminacji wad i poprawy jakości). jest ona związana z zagadnieniem projektowania defensywnego oraz wczesnych błędów. Próbując, dzięki pewnym ustalonym regułom, uchronić aplikację (w naszym wypadku bazę danych) od późniejszych błędów, zaoszczędzimy czas związany z koniecznością jej modyfikacji lub modyfikacji oprogramowania współpracującego z określoną bazą danych. Normalizacja jest zbiorem reguł, które, choć nie są skomplikowane, bywają przedstawiane w bardzo zawiły sposób, dlatego w tym rozdziale zostanie ona omówiona na przykładach. Celem normalizacji jest izolowanie danych. Pojęcie to oznacza, że modyfikacja (wstawianie lub usuwanie określonej informacji) odbywa się w jednym polu, skąd zmiana przenoszona jest za pomocą zdefiniowanych związków (powiązań) do pozostałych tabel bazy danych. Wynalazca modelu relacyjnego - Edgar F. Codd -- w 1970 roku przedstawił model relacyjny znany jako pierwsza postać normalna. W podręczniku będziemy się posługiwać skrótem, ponieważ normalizację oznacza się powszechnie za pomocą skrótu NF (Normal Form); analogicznie postaci normalne od 1 do 6 będą oznaczane INF, ZNP 3NF itd- Codd jest twórcą 1, 2 i 3 postaci normalnej. W 1971 roku Codd i Raymond F. Boyce opracowali wspólnie postać normalną nazwaną Boyce-Codd Normal Form (BCNF). Stąd, gdy mówimy o bazie danych spełniającej BCNF, mamy na myśli bazę danych przeprowadzoną przez 1, 2, 3 NF i spełniającą BCNF. Wyższe formy normalne definiowane były w kolejnych latach przez innych teoretyków. Ostatnią jest szósta forma normalna (GNF), którą wprowa-
dzili Chris Date, Hugh Darwen i Nikos Lorentzos w 2002 roku. W powszechnie przyjętych praktykach baza danych sprowadzona do 3l\lF uznawana jest za znormalizowaną, ponieważ jej tabele w większości są wolne od anomalii, które w pewnych przypadkach mogłaby spowodować modyfikacja związana z wstawieniem i usunięciem danych. W przypadkach * Pojęcie indeksowania wyjaśnione w rozdz. 3.7 ,,|nde|‹sy”.
'_- ¬_-._¬_
I I'
BAZY DANYCH I SYSTEMY BAZ DANYCH
_I -I_ I__
Il Il
I I'I -I' --'-"-'---1-i--"
¬¬. ¬_¬._____
------'-"-¬--------_----'------Z
1-
-
-
_ _-----.-...____--- - _-___-___-I-__
__
_
__--_-
_.______. .
-_____ __
_
I I I
_ _-I -'I-1-I-Il-ul-u-.¬.¬.I _I-|_I-_|.¬I.'
I .I I_. I' I I I I I I I I I I
I 'I
I I
I I I I I _I I' I I I I I II I I I' r 5. i I I I I
J'
I' I I I I I II I'
I' I
I I I I I
I I
implementacji standardowej bazy danych projektant powinien zadbać o pełną normalizację baz danych projektu. Istnieją jednak gałęzie modelowania (dimensional modeling) i hurtownie danych jawnie zalecające nieznormalizowany projekt, który nie jest sprowadzony nawet do 3l\lF (denormalizacja w niektórych przypadkach ma wpływać na podniesienie
wydajności bazy danych).
I I
_II I _I
I
I
__---_-------_I
NFN F
,
.---_-----..__.-------
Ę
` ` ` ` `` ` _ ""
l`lNF
I
""_
I'
Š
¦
rnnr
I I I
I I I
I I
I I I I I I I I I . I' I
_ .---_---- ___-___ _-----_.___.___--¬______-_.---
..___----__.______-
_-__._ _.__
co
..
(5uperKey Normal Form) postać normalna superklucza
.I._.|__.-I'
_-___-___
-___._._¬ ._____.____...
___
___..._-_-_______-_.
.._____... ..
_.______
5NF
[5 Normal Form) piąta postać normalna - Roland Fagin
6NF
(6 Normal Form) szósta postać normalna
R
I
I' I' I
I I r I I I
I
I I _.I I I
I I
I
I
I I I I I I_II
I
I I
I 'I I'
I I I
r
Bazy danych OLTP (On-line Transaction Procassing), które charakteryzują się dużą ilością transakcji zapisu i odczytu, są bardziej znormalizowane od baz danych OLAP (On-line Analytical Processing), które przetwarzają nieliczne - za to dość złożone - transakcje. Dla tych baz danych powtarzające się dane (zdenormalizowana forma) ułatwiają zadanie połączonym z nim programom służącym do wspomagania podejmowania decyzji w biznesie.
I
I'
I'
I' I I I I
I I I I I I II I I I I I I I I I _I I' I I I
I I
I _I
I'
l l
„Nie pierwsza postać normalna” (N`INF-Non-first Normal Form)
I I
I I' I'Í
l I
I I
I
I
I
I
I 'I
.I I' I'
I I
I I I I I
I
I
I
I 4
I I .|
_I I'
_. I
I'
l I
I I
I I
I
Denormalizacja lub zaprojektowanie struktury bazy danych tak, aby nie spelniała założeń projektowych nawet pierwszej postaci normalnej, może być rozważane jako słuszne w niektórych przypadkach, gdzie dużą rolę odgrywa Wydajność. Dane (wartości) przecho-
wywane są w postaci domen, którymi manipuluje się specjalnie w tym celu zaprojektowanymi językami. Przykładem NINF może być zagnieżdżony model relacyjny, który wspiera relacje (tabele) jako zawartość domen poprzez dodanie dwóch dodatkowych operatorów zagnieżdżenia i niezagnieżdżenia.
I
l l
I I I
I
i
I' I'
I I I I I I I I I
I .| f
I I
I›azY|‹ł.An9.4
_
_
_
__
_
__
_
__
_
_
_
Dla przykładu prżeanalizujmy tabelę o atomowych (niepodzielnych) zawartosciach
kolumn. Nasza relacja (tabela) przedstawia klientów salonu motoryzacyjnego i preferowane przez nich marki samochodów. Tabela w pierwszej postaci normalnej (1NF): I _I .I Il
___----.II-. I _'__
_
-
(Redundancy Free Normal Form) postać normalna wolna
Rys. 9.5. Kierunek normalizacji relacyjnych baz danych
Denormalizacja
I I
¬_
(4 Normal Form) czwarta postać normalna - Roland Fagun 5
;__-_I'
I' I'
I I'
____
(Boyce Code Normal Form) postać normalna
SKNF
POZ OM NORMAL Z
_
5 Boyce'a-Coclda
. 3NF_
_
(3 Normal Form) trzecia postać normalna
Š4NF
I
----¬..¬_¬_ _________ .
-|_-_-I.¬_Ŭ_¬_ __
Il---I__-_----"
'Ir
_
-[2 Normal Form) druga postać normalna
BCNF
'
'Č
l
-
-._ ,I 3NF AC]
t2r~sF
""""""""`""`
l "l Normal Form) pierwsza postać normalna
j2NF
I
`""""""`"`
I I ¦I
¬___
_I I'
._._-_----______-__--___.___
Ę normalna H
oI
.____.-------.-..______----I.
(Not FIRST Noaruat FORM) nie pięnwza postać
I I I .I .I .I _I I' .I .I .I II .I I
P Ü D Ĺ*Š'l¬.›"5'. "C"›." 'I' _li .ĹXŻ DP. .N YĹĹ Pi -iw---------J
___._____._._________.___
. ..._________.__ ____ ____________ ____
_
__
___________.__..-.._____
.__
.__
¬__._ _ _ __
I.
-. ,-¬Ĺ.-5.- _ ._- ._ ._
.II I'
+.I ¬- I. I I I I I „_
_ __¬________________í___:__í__ 1.._... I'
I' I
I'
': I I
I I
Tabela 9.7. Tabela INF
Å Pfßfßfßwflflfl "1fl"‹= I
I
* ' Piotr
_;_
I
Šś
I
-
I
I I j-------_---¬-.---- -.¬-.-. _._-._ ._ _ _ _-_ _..--_.__ ____ ___-___-___-._-¬_ .¬ ¬.-.-.-.¬.-.-.¬.._....¬____ _ _ ___._._.I
i Pia..
I Audi
I _,____-_---------.--.--_--._ _...¬_-
___ _
' _.___
Renata
'
_
__
_._
_
.I
I
Honda
Ê Renata
.I .I
Š Skoda
',.____-_____.-_-_-_-.--.
._ _ . . ___________________
Renata
.I
¬__-_._-._
Kia
.I I' -._
Ryszard
Daewoo
.
¬.
¬.¬.
jak wynika z tabeli, jedna osoba może mieć kilka preferowanych marek aut. Aby zamienić tabelę w postać NINF (nieznormalizowaną bazę danych), potrzebujemy użyć operatora zagnieżdżenia, który Wykluczy układ algebry relacyjnej stosowany w postaciach normalnych, czego rezultatem będzie tabela w postaci: I
I I
Tabela 9.8. Tabela NINF
I
I .I .I
I I
I .I
I
r
I' I I. I. ____-._._ __
-_.____
_
ĘPIÜII
-._¬_-._¬.¬.
'|
BMW I ,__---__--_--_--------U
' I
|---------_-_-_-_._¬_-_¬_-_
__--_____.
-_--1
Preferowana marka
Audi _¬___ __
_ _ .________________ -_-.--.-.._¬.--. I . I -I . _ __
I Refiafa
'U '
_
.'
--.__
-- - - -. .-.I
¦
Š
I
______________________. I I
referowana marka I
I _I.II II _I II I
.I
I' I' II I I. I I__--F- __
" Honda
-__..-¬__ -¬_ .¬-_.- _¬_¬_-. ¬_ .-c
-. -. -¬.¬.'- _¬_-.¬. -._-._-_
-._ _-_-
-I.-. -._-. -I,
II
Skoda
I j"`¬"""` ` `
i:;¦ Kia 1
.
I'Í
Ê `
`
-._¬_-. -
` "`" "_"""_'-I
II I
I I I
___.____________________________._____ _ , . .-_---_---__-_-_-_---_----___--.__
_I
1'
_í:__::
,, Preferowana marka ¬.¬.¬_-_-
-_____-_-__.__---.. ______
_ ¬. -_.¬ .
-'-i_--1--F ¬¬.¬.¬.'l.'l-"'l-¬-'|-'I-I- -'
_-__
-_-_
___
I-..-.¬.¬. _
Í
I
.
I I
.I I .I _I _ --- -'- - -
:I .I
___ |.-.-.-.¬¬
--_-.-I. -._ _- -_¬_ .¿- ___ ______ ____- I
.I
II .I
Możemy taką nieznormalizowaną tabelę przywrócić z powrotem do pierwszej postaci normalnej, wyłączając zagnieżdżone tabele relacyjne i grupując je w wyższej postaci normalnej. Działanie takie spowodujeutworzenie osobnej tabeli, wktórej przechowywane będa, jedynie marki samochodow. Klienci natomiast zostaną umieszczeni W inI I I I
nej relacji (tabeli).
__
___
II
I I _I
-..-._-._
.__ ___ ________________¦'
_-..-_.___-_.__ _
'¦
I _I I
aewoo
__-J
I
I I I
.I
Ryszard
I
_
__
.I .I II
¬_¬_-. -. ¬_ .¬ _.- ¬_
.' .' I.I .I I' I'
.' 'Í I
F
I' I'
.I
I
I'
I'
I' I' I' I'
I'
I'
I' I' I' I' I' I'
I I I I'
I I.
II I I
I I I I
Pierwsza postać normalna (`INF - First Normal Form)
.' I' I I
Postać normalna używana jest podczas normalizacji baz danych. Aby tabela spełniała wymagania pierwszej postaci normalnej, musi spełniać kryteria relacji (tabela musi być relacją). Tabela bazy danych jest zgodna z INF, gdy spehflia zestaw założeń, l
I .I
I I I
I I
I .I .I .I .' I' .' I I' I' r I I
'I .' .'
.I .I I
I'
.'
42
BAZY DANYCH I SYSTEMY BAZ DANYCH
_,_¬.¬_.. __
_I' l
'._'\_-1_._ .
-1. ;-u.fu.'
l_.__
-.__,,_._._.,____ _ _ _ ____
.„_.,___¬_____í_______¬_¬_______í______¬__._._
_ _ _ ',._ ._ _ I I I.
'I
¬_¬_-._
I'I I _I I
III
I' .I -I I I I I
I'I. I Ĺ. .I I I
III II.
______ ._¬__¬_¬_ I I
I I
I
I I I
I I I I I' r .' .' .I I I
I
II
__
_
__
__.,________________,,._________________._.__
___
______,_¬_________i__,___________
_
...¬_._-_________.__-_--_____
INF w ujęciu C. Date'a powinna spełniać następujące kryteria: Rozpatrywane z góry na dół wiersze tabeli nie muszą być ustawione w określonym porządku (kolejność wierszy jest dowolna). Kolejność kolumn jest dowolna (nie są one ustawione w jakimkolwiek porządku od lewej do prawej). Wiersze tabeli nie mogą się powtarzać. Każdy wiersz i każda kolumna na swoim przecięciu zawierają dokładnie jedną wartość z zakresu swojej dziedziny i nic ponadto. Wszystkie kolumny są symetryczne i równomierne (tzn. że w obrębie wierszy nie ma dodatkowych ukrytych składników, takich jak mniejsze kolumny, podkolumny czy dodatkowe identyfikatory wierszy, kolumn, obiektów, czasu).
____
Naruszenie któregokolwiek z tych warunków powoduje, że tabela nie jest relacją (w matematycznym ujęciu), a zatem nie spełnia założeń 1NF.
I. I' _I
I I I I I I I I r I'
Uwaga! Powtórzenia mogą wystąpić w kolumnach, które nie należą do klucza, jednak każda krotka (wiersz) musi być unikatowa. Pierwsza postać normalna nakłada na tabele bazy danych najważniejszy wymóg: tabela musi być relacją. Podstawową właściwością 1NF jest elementarność (atomowość), inaczej oznacza to niepodzielność kolumn. Tabela o nieatomowych wartościach kolumn może mieć następującą postać:
_ _¬ ._-
I I r r I'
II I I I
.I I
I I I
I I I' .I
Í' I I I I I I I I' .'
Í
I I
___ _ .-__.¬_
I f
I'
I.I
¬_-I_
Tabela 9.9. Tabela o nieatomowych wartościach
_I I I
__
I
an
I'
l
I ¬_
_| _. _- T-_. -_ I
I. 'Ę:._
"¿j.=I'¿'¿'I§ T | ¬___
_.
.___
i Bluza, pasek, spodnie
2
__
_,
___
_.
_
Skarpetki, buty, koszula .
_____,._ ._ __ ._.__-_ _____-..¬.-_- -.- _____._.--.-.-_-_-.¬----___
_ .________ _
I
I
Grzegorz
3
[ I
I
i i j.._I._ -._ -_. I;El '
i
ękawice, spodnie
I
__-._-_.-.-
-
-
-
_-_._
_----
-
I' I
-_
.__...-.-
-
-
.___-_-.-I.-.-----
-
__¬_ _. _¬ ._- ¬_ -L._
.I I
I I
I
I I I I I I I I I I. I'
I I I I II. r
I
Łatwo spostrzec, że tabela ta w kolumnie Zakupiony towar ma nieatomowe wartości, zatem nie jest tabelą w 1NF. Naszym zadaniem będzie takie przekształcenie tabeli 9.9, by spełniała założenia relacji oraz pierwszej postaci normalnej. Istotnym warunkiem, jaki należy spełnić, jest również wymóg, iż na drodze przekształceń nie możemy utracić ani jednej z informacji przechowywanych przez tabele. W wyniku przekształcenia tworzymy tabelę, która w kolumnie Zakupiony towar ma niepodzielne (atomowe) wartości. Poniższa tabela posiada kolumny o atomowych wartościach i jest zgodna z wymogami relacji, więc jest zgodna z 1NF.
II I
I I I I
I I
I I I I
I'
I I
._¬_
¬.¬
.I I I I
Tabela 9.10. Tabela zgodna z INF
_
I I I
-I.
';
I' .I .I
@
-' an
II .I I I
Bluza
_I
'fiín
-I_.¬..-._I-._-...___-._-_-._-_-..¬ -_--
I rI I I'
'_
I
ĽJ 3
_.._-_-_-_-.¬.-.
_-
-
-._
.__-_¬_-_ ...¬_¬_ ...__ ___ _ _ -_ ¬_-. -...¬___
ojciech
_I-____, -I_¬.- __ _
*_
“_
_ """'I""_"__i-' ""'¬' ""¬_"'- -__:""-""'¬'¬" ' I.
i Pasek _:T_-
--_
jan
.T_ .¬-.¬---._ _
-I--'-¬---¬-"' 'i_-Å'-~ '-" ` -"-_'
-_ ._¬
I
¬.¬.¬.-
5: Spodnie
-¬I'_ _ I'
_¬_¬_-I.
___.__._¬_-._¬_ -. ¬ ----_-_ _ _ _.-.¬.-.-I.¬- -----_ -¦|_----_¬ -..¬. --.- -___ - ----_-I-¬ ¬_- -_- - - ----- --.-Å -_II
_-.I-._
2
l Skarpetki
¦
.,_¬ _¬ ,_ _r_-'_¬_
'._
¬. __
_
_
____________-.--¬-
44 *
BAZY DANYCH I SYSTEMY srxz DANYCH -íí _ _- ¬_ --._.___ _-_-
_-._¬_
.___ _ _ _- -------_-.¬.----_-_ --- -.- ------._ .- ---i-----.-i---
mi
____ __¬_-‹..|-_._1 _____- ____.___-_-._________-_______._._______ _.__ _.___ _ _ __ _ _________ _ ___-___ __ ________ _ __ __ _ ____ __ _ ._-___
f
3 3 3 3
ł _- __ _ _
E 5 fi¦
,| J
.___ __ _ . .__ ___.___-___-___ ____ _-_¬_ _ __
__
f T. Love T_ LOVE T_ LOVE j T. Love
r
¬L
__¬_-J-__ _____ ¬___- ___.___ _ _-_ -_---._____ -_-_--_ _
ą jan Pęczak ł Plåwełlšlàżimek
13 14 15
T l
idney Polak
._-.¬_¬__ _¬_- _---___-_-._.--_______-_-_.-_.
-I CF!
____.¬_-__.¬_____-_-_ ¬___ _.____._¬_¬. -____|'__ _._¬__ _ _____ _¬_-___-___ _¬_¬_ _ _.__._ _ _-.¬ -____ _.-._ _________._-.¬_.___
- -_-_ __
__
_
JÍÍ _,__-Ę izhałrualéłzki -__ _ __
- -_¬_
- _-_-_-_-_
l _
"
__¬_._-.-___ _-_--_- _ __.__._-_ - ______-_¬_ -.___
Druga postać normalna (2NF - Two Normal Form) Aby zrozumieć założenia drugiej postaci normalnej, należy .zapoznać się z pojęciami: klucz główny, klucz obcy, klucz podstawowy, klucz kandydującjz Tabela, która znajduje się w drugiej postaci normalnej, musi najpierw spełniać wszystkie wymogi INF. if Każda z kolumn tabeli w drugiej postaci normalnej jest w ałni zależna od klucza głównego i każdego atrybutu (kolumny) klucza głównego - jeśli ` lucz składa się z więcej niż jednej kolumny. I Wszystkie kolumny zawierające elementy nienależące do kr- lcza głównego muszą od niego zależeć i być przez niego jednoznacznie identyfikowane Do drugiej postaci normalnej można doprowadzić tal elę, która znajduje się już w pierwszej postaci normalnej. Aby to zrobić, należy usunąć kolumny zawierające atry-
buty, które są innych typów niz typ wskazywany przez klucz podstawowy. Oznacza to, że wartości niekluczowych kolumn muszą zależeć od klucza podstawowego. Kolumny, które nie zależą od klucza podstawowego, najłatwiej rozpoznać po tym, że zawierają powtarzające się wartości. W tabeli w drugiej postaci normalnej wartości każdej z kolumn nienależących do klucza głównego muszą od niego zależeć. jeśli klucz główny składa się z kilku kolumn, to wartości kolumn, które do niego nie należą, zależeć będą od każdej kolumny wchodzącej
w jego skład. Takie założenie redukuje duplikujące się dane w kolumnach (redundancje). ' RZYKŁAD 9.6
_
_
Rozważmy poniższą tabelę: Tabela 9.13. Lista lekarzy
|
r
Ê' Internista
5
E Nowak
ĘŠ Internista ¬_-_¬____.__ _ ¬____._____-.. ___--______-.-.-._-_
¬.¬--__
.
-_---_ .
_›
4
il __ _-.¬
-_
_ _
--___-_--
_-.-_›_ _
_-_
__-_-_-_
'-¬
'-u--_ _
_. -_. _ j._ _ . _
1, ______________,
3
-_----_.¬-
ubicz-_--
_ Kardiolog
r-_i
-_-._-_-j ._-_-_-„
LH
_____._,_,_._____________
¬_
-_¬_-
if|', __._____ Neurolog __.__._ __-_.__
_¬_-
__ _
._-___
----_.___
`ou r"' urski __ _._____________________________ : f|
jißfowalska -_ -_
.__L__
______________________
_
___-_-_ l
1
I
Przyjmijmy, że w naszej tabeli klucz podstawowy będzie skład-_ ' się wspolnie z kolumn: ID_Lekarza i ID_Specjalizacji_ Ponieważ wartości atrybutu Nazwa__spec'.jalizac:ji zależi tylko od kolumny ID___specjalizac:ji (jednej z kolumn klucza głównego) powyższa tabela _____ ___
_ '_
._ -l. _-_--_- -_ --___._---____.___ -_ - -
_ _ ¬_
___ ___ -»_
""¬""
__ _
____ _
--.-1-_-_ -_ _
_
_.__ __ _
_ -- -_-_ 1.-_ __
__
---__.__.-
-_______._______-._
_-__-_----_---.-1-t-~
--1-¬.¬------1-¬-'¬:_-I
Å-i-n_-_-_-1-_-_-----________ ._
_Å-----'xx
____.___ ' ` " --“_-i-- --1-.1
_._ .. _ ___-___ _ _ _-__ .
__
' ._________._____í______
_ _
- -
'| -.r_.______ _____ ____
*
li' O if) 15 "l¬.f*~. W Y B A Z [J A
j =
f;;4. I
YC H
narusza reguły drugiej postaci normalnej. Zmiana wartości kolumny ID_Le.karza nie Pociąga za sobą zmian wartości Nazwa_spec'_jalizacji, której wartości powtarzają się wielokrotnie. Tak zaprojektowana tabela stwarza jednak pewne problemy. Nazwa specjalizacji będzie powtarzać się wielokrotnie w kolejnych krotkach dla wszystkich lekarzy, których specjalizacje już raz wystąpiły. W wypadku wstawiania kolejnego lekarza z bardziej skomplikowana nazwą specjalizacji będziemy musieli mieć gwarancję, że wpiszemy ją poprawnie, inaczej baza danych może zwrócić błędne wyniki. Przykładowo, dla specjalizacji neonatologia wystarczy, że osoba wpisująca dane użyje zamiennika: chirurg_dziecięcy (co oznacza to samo), a baza danych potraktuj e to jako dwie odrębne specjalizacje za każdym razem, gdy zostaną błędnie wprowadzone (wliczając literówki). Aby uczynić zadość założeniom drugiej postaci normalnej, należy informacje z przedstawionej tabeli podzielić pomiędzy dwie tabele, w których nienależące do klucza kolumny zależeć będą od kluczy głównych w nowo powstałych tabelach. Zakładamy, że każdy z lekarzy będzie zatrudniony jako pracownik o pojedynczej specjalizacji (przedstawiony poniżej związek wiele do jednego - ponieważ może pracować kilku lekarzy o tej samej specjalizacji). jeśli każdy z lekarzy mógłby mieć więcej niż jedną specjalizację, związek pomiędzy tabelami należałoby zmodyfikować jako wiele do wielu - wprowadzając tabelę walidacyjną_
Í i, ; | ¿ l j l -I
5.
I I
I' I'
f I
l
l
"
'
I I
. ,I""
-_-_-""--í-Ź-'
l -
W 1-_.J
j -,
3
I
|
'I__
_ I .
,
_- ._ -_ ----
---
-_.__
..
_ -_.___.
I. | I
l
I' I
I
__ _
l
Lubicz
2
I; Burskí
.__-_._ .___.___._._____._._.(__.__ _
3
l
. _ . _ ___
Nowak
5
_
l
-|
5
internista
Ê
lll
':----'--
I I' I_
l
_ _-___ __ _.-._ ___l_-_ _
_ _--¬_-_- - ¬ _
j
_ _ _._ _ ._ _____._____.j
l ;ş 1
` ro
_ ._ _I -_
3
----'_
kardiolog
_
neurolog
________.___-_._.______.______-_ _____
Ê
l
_._.__._ _ ._____._- .L
ĹKowalska
_ _-_-
',
- _
- ¬-_¬-_- - . ¬
..
.
_-_-
.__
-
I I I
Rys. 9.6. Związek jeden do wielu (wiele do jednego) - jedna specjalizacja, którą może mieć wielu lekarzy
I
-I _
_
_
__
___
__¬__
_-___
_
_
_
_
Trzecia postać normalna (3N F) l _ . ¦ j
Tabela jest zgodna z 3NF, gdy znajduje się już w drugiej postaci normalnej, to znaczy, że każda z kolumn, która nie wchodzi w skład klucza głównego, jest zależna od klucza głównego i każda kolumna niewchodząca w skład klucza głównego nie może zależeć od innej kolurnny niewchodzącej w skład klucza głównego. W skrócie: kolumny tabeli mogą zależeć jedynie od klucza głównego, a wzajemne zależności pomiędzy kolumnami niena-
.'
I
leżącymi do klucza wykluczają trzecią postać normalną. Tabela 9.14. Lista lekarzy (2)
`| | ;-
____
Lubicz ___
____
2 J
Stomatologiczny
l ____________________
_
___....
____._¬_.¬_---
Nowak _-_
E 3 t_____________ 4
l l
_
___-_-----
Lfl
__-_¬-_.__
l
¬¬|L-_-_-_¬-¬-
rtopedyczny _
55445838
__
j 254 52 85 63
_r___n__ I
__
Burski ş____ Kowalska
Š Kardiologiczny
;Q 152 57 2612
Stomatologiczny
l _ -___l__
§ 555 44 58 36
ll 'I
__¬_
': I
.
____
_____
__
_.___
__
_
___
____.___
___
___
___
_
__
__
.___-
-_--____¬_--
_------I
|.¬_-----
---------
-.-
----‹--~
----
--------
---~-
----
-
I ;_ _ -l.._ .' |
48 ,
BAZY DANYCH l SYSTEMY BAZ Ĺ)./-XNYCH
_---¬.I_-_I_¬___I|:_-_----.¬-_¬_-________----.- -_-_-_ ____________--.¬-¬-____.-__________._----.-________________-. ______________-___
.__.
I
_
___.____________.-
.____¬_
_
_
_
_.-._-...___-___________
Tabela 9.14 narusza 3 NF, ponieważ zawartość czwartej kolumny Numer tel. do
gabinetu zależy od kolumny Gabinet, która nie należy do klucza głównego. Zmiana numeru telefonu dla gabinetu stomatologicznego w czwartym rekordzie nie pociągnie za sobą automatycznej zmiany numeru telefonu w pierwszej krotce dla tego samego gabinetu. Tabelę tę można znormalizować, dzieląc ją na dwie mniejsze tabele. jedna tabela zawierać będzie ID lekarza i nazwisko lekarza, druga tabela - gabinety oraz przypisane do nich numery telefoniczne. Tabela 9.15. Lista lekarzy (3) -
Ż* "I
1
Lubicz
______,___ ____-.__-__-..¬.¬_._...___________ _,__ ____ |___ _____ ___ ___-___ _.______________________ __ _ __________
l"'~.J I- _-_------------I -1¬-I.-_¬_-___ _.__ __
i
owak ___ ._
3
_
_
urs ki _-
_?_-_-_-_-_¬_-_-
-
____ __¬_¦'¬_ ¬_ ¬_
_
l
-'_ft@i-1 I.-_O-
II I .
____ _ ___ _,__ _¬_¬_ __.__._ ______ _
I
¬_¬_ _ _ _ __ _-___- ____ ____ ¬_¬__ ,_,._¬______
l
"
'
'l
-_-_¬_l-._ ¬_ -_
_ ._ _-.¬-_-_-_-._¬_i_ -_I-.-.¬.I-_r
_I ___ _,_____________,__
-I--I-_-_-_-_'|_ __
-__- _ ._ _
-I-I ¬ - ' 1 1.'|_'_¬_______|._______¬,___,¬_,_|_¬_-.__________'__,_,___¿¬__|__ __¿,_,__-\__.j
¬___
4
I FSW Zowalska
`l
¦
'
ll__ ________. -_._¬_-..._-_.__._______,__,_______,_¬_,_ |__I____-_. ___-.¬_- _-._,_____ ___ _____ _ _,_¬_ _ _,___ _ ¬ ¬_¬_ ¬_¬__ J _ ____ _„_ _ _ _,_ ¬___. _______ ____ _ _._„_____II I. -._-._-I. -I. -_¬_
Tabela 9.16. Lista gabinetów
*vi
If I'
'I
Stomatologiczny
j.____________________-__ _¬.¬
I
1
__-_-_-___¬_-_-_-
_-_-I.-_-_-_-_-___--
2- l<>'fYf ='›=e>"==='¬›'--3
Kardiologiczny
5554458 36 "
_ _
l
-_-.¬_¬_-_-_I________¬_¬_____,_.__,____í____
_---_---- -I
254 52 85 63
-I-_-I.-I_I¬.I-I_I-1.'¬_¬_ _I lI
I ip I ł I' I.I' I'
;
l
_
i
__ I
¦
_¬_ 1
I.I
l II I
____ I
¬_ _¬__I.
152 57 2612
i
Doprowadzenie tabel do 3NF uzyskujemy zwykle za pomocą tworzenia tabel słownikowych oraz tabel łącznikowych (tabele łącznikowe używane są przy budowaniu relacji typu wiele do wielu). Wnioski: I Normalizacja polega na przeprowadzeniu tabel przez kolejne postacie normalne. I Znormalizowana baza danych jest bardziej elastyczna pod kątem zapytań.
I Proces rozkładu bazy danych do trzeciej postaci normalnej nazywamy procesem rozkładu naturalnego wykonywanego za pomocą relacyjnej operacji rzutu.
Postać normalna Boyce'a-Codda (BCN F) Postać normalna Boyce'a-Codda (BCNF) nazywana jest również postacią normalną 3.5 ze
względu na to, że umieszczamy ją pomiędzy trzecią i czwartą postacią normalną. Tabela (relacja) jest w postaci normalnej BCNF, gdy: a) spełnia warunki INF, b) dla każdej nietrywialnej zależności A -I' B w relacji (R) atrybut A jest nadkluczem. Po przeanalizowaniu tej definicji można postawić pytanie, w jaki sposób postać BCNF różni się od SNF. Postać BCNF jest bardziej restrykcyjna, co można zaobserwować, umieszczając obie definicje w tabeli: ._______.____I__J._ _ _ ___ _ ____-__--_----Ü
-I.-_¬____.____-_------I-I.
_I_.-_
_
__
_
_
__
_
___
_
______
_______________
if-"IJDfš"š.¬I"'IWY Ez'IĹ?. .DA N '“r'C-_I-I f
í'-""'_"'|-5'I'-'*'-
----'
'-1
----11
-
-
----11
il-'
~
'
-
-
- -
Ii
I
-
-
-*
-
_
- '
'
-
_
--x:-mi
.
.
.
_-1---Å-í±:±
'1'
-.
'__
___.±._±±i-1?-'12-1-|-'I.-\.'|.
1...!-_._@.:-í-1-1
I
-
_
_
-1-1_±1±_1±±±±±±1¬.±.-1-_'|--5-51.*tli
__
|_I- _I-.¬ I-_ I_.
3¬-I_I"-¬I--I-¬¬I__- F_-.I¬
I
I
.'
I
I
I
I .I I :I
,' I' ,I
.
'
I
I
_.
I'
I' I' I.
_I II I' I' I' I' f I'
Relacja R jest w 3NF, gdy dla każdej nietrywialnej zależności funkcyjnej (A'+B) odpowiadającej relacji R przynajmniej jeden z przedstawionych warunków jest spełniony:
"
I'
l I
l I
I I
I I
Relacja R znajduje się w BCN F, gdy dla każdej zależności funkcyjnej (A -I' B) odpowiadającej relacji R:
II
I
.I
I .I I '
.I I' I' r
,I .I
I r
' |'
I I
I
I II
I
|
I
I
I
| | |
A jest superkluczem R.
I I I
I
I) AtrybutA jest superkluczem relacji R
.I
|
.'
I '
f I'
LUB
I
II I'I.
_I I' ł
_ 2) B jest kluczowym atrybutem relacji R lub j_ częścią superklucza.
I' I'
I
I _---_-- - -I I---¬--
I I I
i
--- ---- - -.
- - --
_-_
----- -I--.'.
--_-:--
1-
.-_-_-____ .___.: _____ _._¬_
I I
_I _I II I' I'
I' I' I'
Różnica daje się zaobserwować, gdy użyjemy wielu nakładaj ących się kluczy kandydujących. Gdy dysponujemy tabelą o atrybutach: A, B, C, D:
I I I' I' _I
¦
°""_'""'¬ ' 'I'-"L“'?II'--."-"':-rt'I¬¬I,I„I' .'şI1 'Ijr
I
I
.E_'.I-_ :- 'I"'.¬'.'~'I-'---:'I' '- _kI;_'.'I. I_ . . 'ā-1---- '¬
_ '=.:$.-łá Ä
I I
'iineåt'-zifgił' "_ '.-,-." '-¦""=._-."_'I.
_I II .I
Ir 'Í
I I I
I::.'IŁ .f .'I¦ I I'I I II, FJ ' _I
_-1.1. ¬_.¬ ¿-.¬ .-_ -T_. _.
.
I _I'-'I.-_. -._..__,_._. ' ,II,.-_._`.' .II ____ _ IL' -, ' . IF ".I' ' Ê' ".'I.'I¬3'-" .-''I I -I'- I"I--_.<1-I1'I'ŰI I'
¬¬¬„„j m_a _ _¬
f'
'f_-_':-'II¬',[I': -.'-„':I".-
_ _.-.___.___ _-------
- ¬.|:Iå"I¦'-'I"-Ill'-I.'.-.I.I-".'.
I
|
gu.'-I,__-- -I. -I.-_-'I ._-,.___' I'¿.J'_ _._
I
szukamy kluczy kandydujących. jeśli klucz kandydujący jest tylko jeden i są nim kolumny AB (klucz złożony) oraz jeśli istnieje zależność AB -I' CD, wówczas tabela jest w postaci normalnej BCNF. Wiemy też, I że relacja ta spełnia pierwszy warunek BNF (atrybut AB jest superkluczem) i tym samym l automatycznie spełnia założenia 3NF. Zatem każda relacja spełniająca BCNF będzie spełniała (automatycznie) wymogi 3NF. Różnica polega na tym że nie każda relacja będąca i w 3NF spełnia założenie BCNF. Prześledźmy to na przykładzie. Użyjemy nadal relacji ABCD. Ieśli istnieją w niej zależności funkcyjne ABC -I' D oraz I D -I' A, wówczas mamy następujące klucze kandydujące: ABC oraz BCD. Zależności funkI cyjne występujące w relacji to ABC -I' D oraz D -I' A. jak łatwo można zauważyć, D nie jest kluczem kandydującyrn, ale A jest częścią klucza, dlatego relacja spełnia założenia 3NF, ale nie BGN F. Kolejne postacie normalne od INF do ÓNF są próbami poszukiwania reguły, która zagwarantuje pozbycie się redundancji oraz anomalii z tabel relacyjnej bazy danych. I I
I I I' I
I'
I
I
I
|
I
I
I
I
f I' I
I I
I I
I
I | | |
I I I I
|
I
I
II
I I
,I ,'
.I
I
.'
'
I I:
I
I I
» I
.I 'I r I I I I I
I'
r
I I
I
I' I' I' I'
I
I | I |
I I I I
I I I -' .I -' I'
_' I' |I' I' I I
f
I
I' |
I I
I
I
I |
l I
|
I
| | | I I | I
I
I I I I I II I' I' I' I'
I I J _' .' I I'
I
I'
II
I'
I
I
|
I
.I I' I' I | |
I I I I I I
|
I
I
_I
I '
I' I'
I .' I' I'
I I' I I'
I I'
'I r r I
I I
I
I
I _I I' .I I
'Í I I
I I I I I
I I I
.I II I I
I I' I'_. I I I
Czwarta postać normalna (4N F) Po wprowadzeniu postaci normalnej Boyce'a-Codda okazało się, że istnieją przypadki, które sprawiają, że w bazie danych zdarzają się redundancje, nawet w BCNF (co mogło skutkować anomaliami podczas aktualizacji). Stwierdzenie to przedstawił Ronald Fagin w 1977 roku. Postać normalną silniejszą od BCNF nazwano czwartą postacią normalną. Ponieważ powtarzające się dane w BCNF były związane z występowaniem zależności wielowartościowych (MVD) w obrębie jednej relacji, R. Fagin zaproponował, aby umieścić zależne atrybuty w nowej tabeli razem z kopią ich wyznacznika.
I I I
_I I' _I
II I'
I Í
I'
I
I' I' I
I I I
I | I |
I I I I
|
I
I
I I I _I I I' I'
II | I I I
I'
I I' I'
| I I I
I
I
I I
I I
'
r
' I I
| | |
I I I
II
.I I' I' I
II
I I I I I I I'
I I I
I
Piąta postać normalna (5FN) Piąta postać normalna to relacja niezawierająca zależności złączeniowych. Ze względu na to SNF nazywana bywa postacią normalną rzutu-złączenia. Relacja, która występuj e w piątej postaci normalnej, jest wolna od zależności złączeniowych.
I
I
I|
I_I
I I ' I I .'
I' I' I I |' |
I'
I
I'
I
I I II -'qí-___| -I._._-___-_____---_-._-I._I_________.-.___-¬.¬.I-.____:_.____--I,-._-_.._____Ż__i__.___-¬__.__.____:_________
._._____í______¬_..__________:_________¬_______í___¿______¬___
____________:_______|__¬_.,___
____
I
I
I"' , "" I I I I _I I .I I
.I
i
oo ___,_.__ ____-_
BAZY DANYCH l SYSTEMY BAZ DANYCH ___--____--____--____
1 I_ _¬1 .-_ ¬._ 1. _¬-1 . ¬.-_.¬_ _.-_1.¬-_ ¬_ 1 1
I' 1
1
I
.'
1
I 1
I' J
| I
|
_1 1
1 1
I
1'
1 1
I
'
1
I
1
1
I
1 I
-_-_..-__
›
-___
-____
-_._
- __ _ _ _
- . . _ _ _
- _ _ _ _.
____
Z
1 1 I Z-__¬----_-_-_Å
Szósta postać normalna została omówiona z wykorzystaniem definicji C. Date'a, który pro~ ponuje, aby operatory relacyjne - np. join - były takim rozszerzeniem algebry relacyjnej, by mogły wspierać naturalne przetwarzanie przedziałów czasowych (z mniej lub bardziej uszczegółowioną notacją zapisu: dat, chwil, momentów). Aby umożliwić poprawne funkcjonowanie, zwłaszcza temporalnych baz danych, Date stworzył definicję, zgodnie z którą zmienna relacyjna o nazwie R jest w szóstej postaci normalnej, jeśli nie posiada (nie posiadała i nie będzie posiadać) żadnych nietrywialnych zależności złączeniowych_ Szósta postać normalna implikuje piątą postać normalną. Tabela R jest w GNF wtedy i tylko wtedy, gdy jedynymi zależnościami złączeniowyrni zawartymi w relacji są zależności ti¬ywialne_ Zależność złączeniowa w relacji R występuje wtedy, jeśli relacja R może być odtworzona bezstratnie ze złączenia mniejszych relacji składających się z zestawów atrybutów należących do R.
1 I
1'
_- ---_
Szósta postać normalna (GN F)
1 I
.-
____ -1
1' -'
1 1' I , 1
1 1 1 __ 1
| |
I I
F I 1 1
I 1 1' 1
I1
I1
1'
I
I |
1' I
1 1'
1 1
1'
I
I I 1 1 1 _ I | 1
1 1' 1 1 I 1 1 _ 1
1
_
1 1'
1
1'
I
1 1 1
11 1
1 -'
I I
I 1 1
I1 1' 1
1
I
1
I
1' I I 1 1 1 1
I_ 1 1' 1 1 1 1
I
1
I
Tabela 9.17. Rodzaje relacji --i__-_--_Ź
----____--1-__
NFNF
2
-____-.- :___---..__1_-__i_..-_--:___ 1¬---_.__
:_ : i ; ;_ Ę 1 = : 5 1
1-.-.-__-.- -__.__ -_-_.__-1....--___›
--___ _-_____
- ._-__-1--.__ _ .- ___.___
--___
-mi _-
-__.
_ --
_ _ co najmn1ej _ _._jedną powtarzającą _ s1ę_ grupę na przec1ęc1u _ _ kolumny _1 w1ersza_ _ ż5 Tabela zawuerająca
1
I 1
1' 1.__--___.-1.-__.__¬_--____1---___-_-___-_-_-__---_.._._1---_____.---___-_---_.___---_.__ I I 1|
1
1
1
INF
1'
'
I
I 1
1 . '
1' I
:I I 1
1 1 1
1 1' _I
1'
|
j
1'_1 1
1
I
2NF
I
1' 1
|
I
1 | I . .I I
_1 I. I I I -I
1'
1
1 1
1I 1
-_._.__-__-.-.___
-.---_
- - _ _ ._
____ ____._..____...r___
I
1
3NF
I.
Oznacza relację wl i 2 NF, w której każdy at1ybut spoza klucza głównego nie jest od niego 1 tranzytywnie (przechodnio) zależny. (Żaden atrybut spoza klucza głównego nie jest tranzy- I tywnie zależny od jakiegokolwiek klucza kandydującego). Ij
1 1
I. 1
I 1 I I
I I' 1' 1I
1 1
1' I
1 ¦
¦ 1 r-__-._ __1_.-_id-?1_-_-____-.-____- :__ 1 1-____ _-_- .____-_¬-___..- -____ 1.-_____-.¬___ _-.--___ _ - _ _ _ _ _ - - -._.__ -._.___-_-___
BCNF
I
__-I.
11
1'
Ę1
Relacja, w której kazdy wyznacznik zależności jest kluczem kandydującym.
'_ 1'
I 1
I' 1I
|
I
1 1
'
I I r
1
1'
I
--___-_--_..._-_---___-_
Relacja w l NF, w której każdy atrybut nienależący do klucza głównego jest od niego w pełni 1 zależny funkcyjnie. (Każdy atrybut spoza klucza głównego jest w pełni funkcyjnie zależny od '1 każdego klucza kandydu)ącego)_
1'
I
---__
I
I1 1
I
--i__
_ ._______.____ _.___ ____ __ ____._ .__ ___ .________.______ _ _ _____._.___ _ _ __ ____ _.-___. ._____.______ _ ___.___ .___._________1..______._______. ...11
1
I _ _ -- ----v±_ _'_-1.-¬. _-1-'-¬ ¬- _ -1 J I I I
I 1
--____-_--___
I
1 1' .I
.'
-_:___-mi-
Relacja, która na przecięciu kolumn i wierszy ma zawsze tylko jedną wartość (wartość fi atomowa- niepodzielną)_ '-
4NF
r__. ____
': I
1'f I1' 11' 11 II 1|
'
r
1
1
I
-___ ._¬_____J._ ____-_ _ _ _ _ __ .______.._._____._....__ __.______. _
5NF
1I
---__ _ - - --_.._-1.1- _
.I
1
I
| 1' ' 1 1 1
I I I' J 1 I L _
_._ _ _-_-___ __-____ _ _---__ _ .- _ -.._-_
Relacja w BCN F, która nie zawiera żadnych nietrywialnych M)./D.
6NF
j Relacja, która nie zawiera zalezności złączeniowych.
1
--±.___-_ - -___ _-__ _ __-_-_.__ -_- _ ___._..-_-____ _ 1- -_._ 1_-_¬_- _ _ _„_ -___._.1_- __
Relacja nie posiada (nie posiadała i nie będzie posiadać) żadnych nietrywialnych zalezności złączeniowych Ę _____
______._______._..._______.___ _ _ _-___ _-________.__ ______-______ . ______._______. ____ _.______
_____ _¬___ _ _ __ _._.._____. _____ __ _.____
__ __ _-__ __ _._
_.___ ._ ____ _._ _____._____ _- ___.___-____`1
DKNF (Domain Key Normal Form) 1
I
| 1' I I
I I 1 1'
I
I
| 1 ' I 1
I I 1 1 .1
1 1' i I
I I 1 1
`1
| I
.I I
1
I I I
I
I I'1 1 _1
I
I I I 1' 1'
I
'
1'
| I I f
Prawdziwe jest twierdzenie, którego dowiódł Fagin, że jeżeli zmienna relacyjna R spełnia 5 zależność DKN F, spełnia również automatycznie założenia SNF (podobnie jak 4NF, BCNF itd_). Błędne jest twierdzenie, że DKNF jest kolejnym krokiem w procesie normalizacji. Ę W niektórych systemach baz danych indeksy mogą być przechowywane nie tylko w innych l plikach niż tabele, lecz także na innych urządzeniach (np. dyskach). , 6NF - szósta postać normalna zasługuje na szczególną uwagę. Ten termin jest używany przez Christophera Date'a w celu opisania relacyjnych baz danych, w których doszło do i dekompozycji tabel do nieredukowalnych elementów. GNF jest bardzo ważna szczegól- j nie podczas projektowania temporalnych baz danych. Termin ,,temporalne bazy danych” 5 odnosi się do systemów baz danych, w których istotną rolę odgrywa przechowywanie
I
1 J
1 1' 1 1 I 1 1 1 1 I I I
1' I I
1 1 1 I I
1 .I I
I _±-1
____i_._-____._____._______.______._______._______._______________-____________________ _._ _ _ _ _ __
____
_ _ _ _ __
-_-__
____
_____
.___________
_ _ _ _ _ __.__-_
_ _ _ _ __
_______.________.______.____________________..___1_
P O If) S `"l"`1A1IC'i-" Y _"fi A
IJ A N “1f'iĹĹ ł-i
_I""`
I
l
zmiennych czasowych. Zmienne te mają naturę interwałów i możemy je odwzorować na osi czasu. Temporalne bazy danych znajdują coraz szersze zastosowanie szczególnie w hurtowniach danych, zwłaszcza w praktyce modelowania następnej generacji, a mianowicie w modelowaniu kotwicowym (Anchor Modeling).
I I I I 1' I I
I I I'
I
1 I I I I 1' 1' 1 I
Wprowadzenie szóstej postaci normalnej spowodowane było problemami związanymi z zachowaniem integralności danych w przypadku, gdy SNF okazywała się niewystarczająca. W rozdziale tym omówiono GNF oraz konceptualną metodę modelowania kotwicowego jako sposobu tworzenia zmiennych relacyjnych, które projektowane będą pod kątem przechowywania danych temporalnych. Narzędzia wskazane w tym rozdziale są pomocne w konwersji zmiennych relacyjnych spełniających założenia GNF do języka XML (aXtf:r1siI:'le Markup Language). W literaturze informatycznej, zwłaszcza polskiej, brakowało przykładów zastosowań i dokładnego omówienia 6NF_ Wraz ze wzrostem popularności hurtowni danych oraz rosnącą ilością ofert na rynku pracy skierowanych do specjalistów w zakresie hurtowni danych konieczne jest przybliżenie ww. zagadnień - zwłaszcza dla techników informatyków, którzy w przyszłości mogą mieć z nimi częsty kontakt. Omawiane w rozdziale zagadnienia są dość proste i nie powinny przysparzać problemów nawet
¦ I I 1 I I 1 1 I I
1| 1
¦
I I I 1' 1 I I I I I I
1'I I I
¦ I I
I' 1
1 1
l I I I'
1
II
1 1 1 I I 1 I1
początkującym projektantom.
1' 1I I
Wprowadzenie w tematykę temporalnych baz danych zacznę od omówienia kilku kluczowych pojęć.
1 I 1 II 1 I I I 1 I 1
Temporalne bazy danych nazwę zawdzięczają ukierunkowaniu na aspekt czasowy, który jest przedmiotem ich analizy (łac_ tempus - czas). Aby odpowiedzieć na pytanie, jaką rolę odgrywa czas w tego typu bazach danych, warto wymienić kilka cech, które są charakterystyczne dla większości tych systemów. Temporalne bazy danych zwykle operują na dwóch rodzajach danych związanych z czasem. Pierwszym rodzajem danych jest zakres czasowy, w którym określony fakt odpowiada rzeczywistości- czas walidacyjny. Przykład: mistrz świata w boksie - waga superciężka (2011, Mahammadrosul Macidoy, Azerbejdżan) - w 2011 roku ten fakt istotnie odpowiada rzeczywistości. Stwórzmy tabelę:
I I
I.
1 1 1' I I
I 'I
Í'
.I I
¦ 1 I 1' '1 I I
I I I I I I I' 1' J I
I l I
1 1
I. I
1' 1'
Tabela 9.18. Mistrz świata w boksie
I
I
l I I I'
1'
1
1I I
I
BOKS
l
I I I I 1' J .I I
.I I 1 I
l
1
1' 1| I I
I
1 1 I
¦
I I
r 1I 1I
1 1 I
1
I
lV|ahammadrasull\/Iacidotf
Zawartość takiej tabeli będzie prawdziwa do czasu następnych mistrzostw w boksie a więc od mistrzostw w roku 2011 do następnych mistrzostw - chyba że zawodnik obroni tytuł mistrza świata. jak łatwo zauważyć, aspekt czasowy odgrywa w takim wypadku zasadniczą rolę. Upływający czas i zmiany zachodzące w rzeczywistości mają wpływ na to, czy przechowywane dane istotnie zgodne są ze stanem faktycznym. Drugim rodzajem danych czasowych, jakim operują temporalne bazy danych, jest czas transakcyjny. Aby podać przykład czasu transakcyjnego, przyjmijmy, że temporalną bazę danych wykorzystamy do pomiarów naukowych. Załóżmy, że na stół upuścimy z pewnej wysokości piłeczkę do ping-ponga i mierzyć będziemy wysokość jej odbicia w czasie. Piłeczka po odbiciu osiągnie wysokość np. 15 cm powyżej stołu w momencie, w którym czas t = [2012_07_01,
12:15:23,12s] (zapis momentu w odniesieniu do rzeczywistości to czas walidacyjny - stemII'
1' 1' 1' 1 .I I
pel czasowy, w którym położenie piłki odpowiada rzeczywistości). Dane te możemy np. po kilku dniach umieścić w bazie danych.
___ _j_____¬..-_________._._.__-_
_ _________._._--_..___. -.__._______.._-. __.___--_
._ _________ _ ._ _ ____
.._.______.
___-___ _ __ ---._-__ -_.__ _ _.___
_
_
50 ll --
1_.1_-.-1_1-
_._
s.ß1'zYD1»\NYr:H 1sYs"rEMY say. DANY(:H -_
-_
____-___
___---._
_-___
-
_
.___.._____--
______
-____.
-____
--__
-___..
__-_ - - _
. _ _ __-_----1
_-__._
-_.
____....___--_.__
._____--_
_
Zakres czasu, w którym inforrnacje przechowywane będą w bazie, nazywamy czasem transakcyjnym.
Termin czas transakcyjny odnosi się do zakresu (odcinka na osi czasu), w trakcie którego powiązane z czasem fakty mogą być przechowywane w bazie danych. CZAS WPROWADZENIA WYNIKÓW POMIARU I UTRZYMANIA C10 W BAZIE DANYCH
|
Ł 11.
V
_
_
_
_
_I
Czas transakcyjny 01.01.2012 godz. 12:37 Wprowadzenie danych
05.05.2012 godz. 16:3? Usunięcie danych
Rys. 9.7. Oś czasu
Na podstawie twierdzeń możemy z łatwością ustalić, że czas transakcyjny może nie mieć
nic wspólnego z czasem walidacyjnym Czas transakcyjny bazy danych może wiązać się z przechowywaniem od 06.09.2012 do 07.09.2012 wyników meczów pierwszej ligi polskiej
piłki nożnej z lat 2005-2010. Wyniki meczów nawet w trakcie ich trwania podlegały zmianom i np. wynik 1:0 dla zespołów X i Y mógł być prawdziwy tylko w określonej minucie, a po 4 minutach był już inny (dane nazywane czasem walidacyjnym). Czas transakcyjny na-
tomiast to jednodniowy przedział, który może wystąpić X lat, miesięcy lub godzin po opisywanych w bazie danych zdarzeniach lub mieć formę czasu rzeczywistego. W tym wypadku czas zapisywanych w bazie danych zdarzeń będzie teoretycznie odpowiadał rzeczywistości. Przykładem może być giełda papierów wartościowych, gdzie dla pracy temporalnej bazy danych notującej kursy papierów wartościowych w pewnych jednostkach czasu zgodność z czasem rzeczywistym może być kluczowa, zwłaszcza gdy dokonanie na czas sprzedazy lub zakupu po korzystnych cenach jest uzależnione od czasu. Koncepcja czasu walidacyjnego i transakcyjnego została przedstawiona i opisana jako część specyfikacji języka TSQL2 w 1993 r. w odpowiedzi na propozycję Richarda Snograssa stworzenia temporalnego rozszerzenia dla języka SQL. Koncepcja czasu walidacyjnego i transakcyjnego rozszerzana jest w bitemporalnych bazach danych nie tylko zdolnych do przechowywania danych odnoszących się do terażniejszości, lecz także mogących przechowywać dane historyczne lub wybiegać w przyszłość w odniesieniu do przewidywanych zdarzeń.
Projekt temporalnej bazy danych i koncepcja 6NF W celu lepszego zobrazowania koncepcji Chrisa Date'a posłużymy się przykładami tabel, które będziemy modelować na potrzeby temporalnej bazy danych.
1'nzY1‹ł_Ao9.7
___ „„_______
__
__
_
Wyobraźmy sobie drużynę piłki koszykowej o nazwie Guźce Kacza Wólka. jedną z wartości bardzo istotnych dla zawodników atakujących jest liczba zdobytych punktów. Wstępnie rozważmy nietemporalną tabelę w SNF. Tabela 9.19. Nietemporalna tabela SNF
_
N1 --_.._..___-_ - - -
. -___-____-._-___
Benek 1 ._.___-_-_.--_-.___-
__
___
___
20 _
.____________
_____._-
______
__
Kacza Wólka ____
______
1 _____1._..
_-___
______
._______.-__
PODSTAWY BAZ DANYĹÍ i-_l _-_„_„______¬_,._.„__ ________._1_
_
__
_,_ _¬_._____________ _.__ _ ___________ _¬_
__ _ __ ________ ____ _ _
_ _ ____.___ _______ _________._
__ __ _1._________..¬_1_-1.-_________1_¬_ .___-1__._____-1_1.¬_¬._
.I I
._ 1_ _¬ ,._ ,_ _., _, _, _1 -_.1.-1 -
_. |_ _. _ 1_ ¬_1_-.1_¬.- _.-
,I 1I
I' I'
_¬_-_
l Aby do tabeli wprowadzić element temporalny, użyjemy atrybutu 0d__kiedy, który odniesie się do czasu, gdy zawodnik pojawił się w zespole.
j 1
l
j Tabela 9.20. Temporalna tabela SNF
_rgI I I
I I
I 'I
Ni
Benek
20
'j________¬_.____. __________I2_._._____________________._.__ -_-__ _.__Il__._¬___ ___
Kacza walka
____ _ _ __ _ _._________l_._________ __ __ __ __ _ _________
1<11;DY__oi __________ł___._ _ __
.______.__.____,_________
..__-_____________.j
_I
j
I
1
|
_ -
-
-
---
-
1-
_
-
_
-
--
-
1 I 1 rI_
I
1.I1'
|
1
"
Semitemporalna zmienna relacyjna (częściowo temporalna) l Wartość KIEDY_01 wskazuje na odniesienie do innej tabeli, którą stworzymy w celu śledzenia przedziału czasowego, od kiedy Benek grał i miał podpisany kontrakt z zespołem Í Gużce Kacza Wólka. Alternatyymie możemy posłużyć się atrybutem Okres zawierającym przedział, w którym Zawodnik N1: Benek ma podpisany kontrakt, np. kontrakt ma na okres od 01.01.2011 1, do 01.01.2012 i prawdopodobnie 01.01.2013 r. podpisze nowy kontrakt z zespołem, np. Kapturowcy Krasiczyn. Tabela 9.21. Semi-temporalna tabela SNF
'
I
Ni
1 I1
j
Ê
'
Ę
1
Benek
_
1*'-1.1 CŻI
Kaczawolka
_______.
1I'
l [1<|EDY_o1;|<1EoY_12] _
_
_ _..-._-__
¦' 1I| I I
1'
1'
I
|
II
Okazuje się jednak, że nawet z użyciem zakresu czasowego powyższa tabela z punku widzenia temporalnej bazy danych jest nie najlepiej zaprojektowana. Dzieje się tak z dwóch powodów: 1. Ieden temporalny atrybut jest niewystarczający, by zamodelować warunki, w których 1 1 , 1 1 _ 1 1 pozostałe atrybuty mogą zmieniac się niezaleznie w przedziale czasu. Np. Benek może zmienić miasto zamieszkania miesiąc po podpisaniu kontraktu z Guźcami lub zmienić imię, wtedy wartości atrybutów Miasto i Imię będą błędne. 2. Dane mogą zostać utracone w chwili, gdy pojedynczy temporalny atrybut zostanie zmieniony. Np. Benek przedłużył kontrakt z Gużcami o kolejne 2 lata, ale po miesiącu od 11.2012 czterokrotnie zmieniał (co tydzień) miejsce zamieszkania. Mimo stałych poprawnych aktualizacji danych informacje o jego kolejnych miejscach zamieszkania zostały utracone, ponieważ aktualizowane informacje nadpisywały poprzednie.
l
j. :_ | ! 1'
I = _ ¿
`.-v- _ -_L1-_
I
Chris Date określił takie dane mianem semitemporalnych (częściowo stemporalizowanych)"'. By poradzić sobie z pierwszym problemem temporalnym, atrybut Okres może zostać dodany dla każdego pozostałego atrybutu zmiennej relacyjnej. Rezultatem może być spłaszczenie tabeli.
E ' ' l 1 = I
Ľ
i 5 I 1;
_ ¬_ _¬__
¦
I I
I' I'
i I
I
, '
____¬_¬_¬_¬__
_I I
I
l
1.-í________1.-_-_---_-___.____.___-_--_-1_¬---____._____.
1' _II'
I I
* Date, Christopher); Darwen, Hugh and Lorentzos, Nikos A (2002-12-03) (paperbac|<)_ Temporai Data and the Relational Model: a detailed inrestigation into the application ofintenial and relation theory to the problem oftemporal database management. Data Management
j 1 1 _
1
1 Ę
_ _-_ _
i I I
systems (1 z1ai.).sz11 niego, ca; Margin 1<111fmi1-111. zona. Rafieved 2010-12-29.
_-1 T-1-1.1-1.-_----___ _______
--_ ------ _--_-_ _¬_ .-.- - -1-___ ____ _-.- -_--_-____ _ .- - -_----___
-:___-___-1.-_
1 _
_ _
- -_-_- -1-1_____...‹1_ 1. 1.-_- --_--__ _ .--_ -_ -.-
-_
I I 1' 1 __.--1-_¬_ - - __-_-__ _¬I1-1.--1L--
Ii š¿ BAZY DAi\lYCl¬l l SYSTIÊMY BAZ DAi\lYCH
U1 BJ I
I
f
I
I I I I
II
I
I I I
_-. _-.I_„-Ĺ _
,iI_¬,í_-.I-II-_
i
I I' I I I
'
I
I I II
I I II
|
I~l_Z I¬_~I1
I
I
I
I'
"
(Elniię
smar BI-ma
Io
I I
I I'
I I I I I
¿IÊ1sor¿aIzideor` i`žj` Z [IcrE1:ir_o1;iozDr_`:Iaj
ao au
I
Punktów -Üidas
.
I\I'IiastoI'I'JIiejsco1.IrośIi
“[1<1sor:ñI-.iozor dig] itazzawauza [I
Zhåiasto" .Okres
“
1-Š .Iüloes
-'[§aEDr.iEI-Eiogfiiíüqj---'E [I<1aDr_o1;IcisDr_Ii2j 'gêlśtirfofiíiii-2iŸI±"_. jjI~ŁIsor_uI}iciE.or_12
Rys. 9.8. Spłaszczenie tabeli
I I I I' I
¦
Il-E`..3`i.ZĘĹ)`1;'¿`a`III-_f_-"-`"_'__ -.;"31._3f:f:Íf?:Í.;"-3Í`ŠI:í.ÊI'fřjI_"_;" Ê=';¿'._ Ptinktów
I
I
jakkolwiek taka tabela mogłaby potencjalnie odpowiadać naszym potrzebom, nadal określa się ją jako semitemporalną. Powodem jest to, iż w wypadku śledzenia historycznych zmian dla każdego atrybutu w tego typu tabelach występować będą powtarzające się krotki. Rozważmy sytuację, w której Benek w czasie obowiązywania kontraktu z Gużcami zmienił tylko miasto. Wszystkie pozostałe informacje, które nie musiały ulec zmianie, zostały powtórzone i są nadmiarowe. Taki stan to omówiona we wcześniejszych rozdziałach redundancja danych, której zapobiegać ma proces zwany normalizacją. Problem redundancji w semitemporalnej tabeli pokonujemy za pomocą wertykalnej dekompozycji (pionowego cięcia atrybutów) na mniejsze tabele o własnych sygnaturach czasowych (znacznikach czasu).
I I
| I
I I
I
I'
I I Il I I I 'I
I I ' I
I I I II
' : I
I
.
I
I
I II I I I
I I I I I I
'
|
I
I'
I
'I I I
II I I '
I
I
.-
Modelowanie związków relacji dla hurtowni danych drugiej generacji (relacje w hurtowniach danych drugiej generacji) I
Aby omówić zagadnienie modelowania relacji w hurtowniach danych drugiej generacji, warto wprowadzić czytelnika w zagadnienie hurtowni danych, omawiając standardowy system baz danych określany tą nazwą. jedną z nowych możliwości zastosowaną w hurtowniach danych drugiej generacji jest możliwość rejestrowania zmian danych na przestrzeni czasu. Takie podejście motywowane jest poglądem, że dane statyczne (stałe niezależne od czasu) oraz dane temporalne (dane zależne od czasu) powinny być fizycznie oddzielone od siebie we wszystkich projektach bazodan-owych. Zmiany schematu encji powodują występowanie zmian znaczenia danych w zmiennej relacyjnej. Zmiany te różnią się od zmian wartości w obrębie atrybutów encji (jeśli do tabeli zostaną dodane nowe kolumny - atrybuty, będzie się to wiązało ze zmianą definicji całej encji i będą to inne zmiany niż w przypadku zmian zawartości już istniejących kolumn). Znaczenie encji w temporalnych relacjach podlega zmianom w odróżnieniu od danych statycznych, które nie podlegają takim zmianom.
I'
I I . I
I I I I'
|
I
I I
I I
I'
I'
I
I
I I
I I
I
I
I
I
I I' I
I I' I
I I
I I
I | I
I I I I
I
I I I
-' I I
I'
I
I
I'
|
I
I
I
-
I
I
I'
I › I
I I .
I
strazawoo'ż swoją wtenzrgg '{l'L-
I II-.-I .-_-I. . . _,_I I
I' I' I II'-I I_-I . I _II _ .'.A.
„ I.
II
I'I¿
iri-'š1=i*I?›~='-5Ê?štr1z”'-EÊ‹š.'±5"f§~1=-a s1:›I'.-iśřÊ=Ęw¿-`§i_'r
`=¬-I ¬'"IfÊ'I-' =Ę""'¬-I-._-'I
II-11 I. I-- II."I I-_I-.I _i__"_-.' -I.''-'I ".I' I
`I. Co to jest zależność funkcyjna? 2. Kiedy występuje pełna zależność funkcyjna? 3. jakie wyróżniamy rodzaje zależności funkcyjnej? Opisz ich najważniejsze cechy. 4. Podaj definicję klucza głównego. 5. Co to jest normalizacja i denormalizacja? 6. Wymień postacie normalne relacji. 7. Czym różni się czas walidacyjny od transakcyjnego? 8. Co to jest temporalna baza danych?
-
W
l' Ü D S T.-ft W" “Í "fi A Z ll' A N “if C ii _ ._I ._ .I_, .I_ ,_
_...._._._I.._......_II_¬_II_._¬___-_¬__._¬__._
__|I.___I____ mi _.Å ___ _ _ ___ | I I I I
.- .-_-_-_ -I__-_-_-.-I ¬_-. ---¬__-___¬___--
_
___-_--_--___
_-_
___
___
____I'
_ _¬___
I I
Związki pomiędzy
tabelamibazy danych ____
___
_ _.____________ _.___ _._I__
_
_
__
_____.________________
._
ZÅGADNIENIA
I Definicja diagramów Ven na l Model diagramów Chena I Elementy diagramu (encja, atI'ybut, związek) I Związki między tabelami (relacja jeden do jednego, relacja jeden do wielu, relacja wiele do wielu) I Zastosowania więzów propagacji (działania na rekordach, kaskadowe usuwanie, wstawianie null) _._._._._.iII_._¬_¬_,.__-._-„¬,..,_.._,___._.._____________________.___-____._______.______________.____.__________.___
____.______.___._
.__
._.
__-I
-_----.-_------------_-_-_-_-------I--_--____.__._.__.___.___________
I
Podczas projektowania relacyjnej bazy danych informacje o opisywanych obiektach, rze' czywistych bądź abstrakcyj nych, możemy umieszczać w różnych zmiennych relacyj nych - (innymi słowy relacjach, tabelach). Potęga i funkcjonalność relacyjnych baz danych wypły' wa z możliwości tworzenia związków pomiędzy ww. relacjami. Pierwsze z prac mogących oddawać typ powiązań pomiędzy ' elementami dwóch zbiorów prowadził john Venn (4.08.1S34j 4.04.1923), który był angielskim konstruktorem maszyn, filozofem logikiem i matematykiem. Znany jest jako twórca dia, gramów Venna, które znalazły zastosowanie w logice teorii " i zbiorów. john Venn swoją teorię opisał w pracy On the diagram- ' motic and mechanical represenmtion ofpropositions and reason' ings. Diagramy, które opracował, nadają się do ilustrowania Š uczestnictwa i liczebności w związku. Zmarł w 1923 r. w CamI bridge w wieku S9 lat. Zgodnie z założeniami Venna, encje (zbiory) reprezentowane są przez kółka (owale), wewnątrz których znajdują się instancje. jeśli poprowadzimy poziome linie proste pomiędzy instancjami dwóch encji, zgodnie ze związkami zachodzącymi Rys. 10.1. john Venn w rzeczywistości, w łatwy sposób możemy zilustrować liczeb- (4.08.1834-4.04.1923) 5 ność i uczestnictwo w związku. I' .I .I
I I I
Il
I'
J II J
l l
I' f
I I'I. I' I' I' í|í________
Prześledźmy to na przykładzie. Wyobrażmy sobie hotel, do którego trafiają goście. Żeby być przyjętym - zameldowanym w hotelu, trzeba mieć pokój (w hotelu musi być wolny pokój). Ponieważ w jednym pokoju może mieszkać kilka osób i jedna osoba może wynająć kilka pokoi, jest to związek wiele do wielu. Przy czym każdy gość hotelowy musi mieć co najmniej jeden pokój. Może natomiast zaistnieć sytuacja, gdy pokój pozostanie niewynajęty - bez gościa. Diagram ilustruje zatem, że jest to związek wiele do wielu, zaś uczestnictwo gościa w pokoju jest opcjonalne.
I
f.I
I. I' F
Ĺ'
I' III' I' I' I'
'I
'I II Il
-
__
-I -.'-.1-I I-
.I.I.__.,_ ___ _I____--
___
-wi
;__ I' I'
__1¬. '
I
I'
._
_____
__--
__
_
____
_
___-
_-___
_.___-
__.___
__.___.___.__-I.--I
_
_
.___
_.___
I__--
.__
___--
-_
__
___
_-___-
-____
____
r
-____----___ 'I
'“Í II
Pokoje
coścnz
`|Ü24 '
- *' Piotr Niewyspalski
9% mi I I'
300
_
I
- Monika Awanturnicka
- __
.
_ Stanisław Mędrkiewicz
I3
I I
'
- Agnieszka Krzykalska
I
I
I
'I
Il
I I'
I
Ę
Rys. 10.2. Przykład diagramu Venna
I
|_
F
I I
I
.I
.
_
___
_
__
-_
_
_
--
I I
_
-
__
_
_
-_
_
_
_
_
_
_
___
_
_
I
,
|
_ 7
Bardziej rozbudowany model diagramów związków encji, w którym możemy umieszczać kilka zbiorów i określać precyzyjnie typ związku i uczestnictwa w związku, zaproponował dr Peter Pin-Shan Chen - amerykański naukowiec, członek wydziału informatyki uniwersytetu Carnegie Mellon. W 1976 roku opracował model relacji encji (Entity-Relation-
I I
ship Model).
I 5 '
l
'F E
Diagramy Chena (model ER) Entity - Relationship Model, zwany w skrócie modelem ER, jest abstrakcyjne-pojęciową reprezentacją danych. Diagramy ER pozwalają w sposób graficzny przedstawić model projektu bazy danych i związków zachodzących pomiędzy encjami.
II I
Ę i I |
I J
I
.|
I'
I II I
.
I I I I
_ I
I I _
I I I
I :; l
Encje reprezentowane są przez prostokąty zawierające j w środku nazwę zbioru.
Encja _ I
_
________.____
_____________,____
l
_
i
________,_._¬__________.,
_¬___
________
_¬___
_______
¬________._.
___-___-_-.___.______-__-..._
_
___
..-_¬_
___I__-__.__
___-I.-.II-_-____I_._.III.__
_
Atrybuty oznaczane są za pomocą elipsy, która w środku I zawiera nazwę atrybutu.
'
-_____I-I_-
|-_
___
_ .¬.1 ___
_____-I"l'-- __ __ _
- _ -._____I¬_
___
___-I-1.
'
I I I J I
r|_____
__-|.--
-__
___-___-___ _
__- -
-
_
__
--:_ -_ __
----__
'IIA-_-----_--_II-"|'n._-± __-
I-
-¬-_--'-|--_-___-
--
i
Związki oznaczane są za pomocą równoległoboków zawierających w środku nazwę związku.
J Il
I I I' I'
i i
I I |
Í
_____
iI
____
____._____
__
______
__
___
_.___.___
___
.___.__I____._.
________
___
_.__.__-__
,___
__
_._.
-_.__
_-__.__-_
____-._-_-_
__
_
______
.__.__
Rys. 10.3. Elementy diagramu Chena i ich znaczenie
' 'l
Tworząc diagram Chena, encje i atrybuty łączymy za pomocą linii prostych. Pomiędzy encjami mogą występować związki przedstawione w formie rownoległoboków. Encje i związki do nich należące również łączymy za pomocą linii prostych. .I'
Š
.If
PO D
Y E? AŸZ. iĹ>_.=ä_±`\""±i"C H
-n.¬ .¬ .1 -u-«.¬.¬.¬.¬-
-u.n¬.-1 .-u
'! Ł ¬_¬_ -|-|.r'L
PRZYKŁAD 10.2
_ _______________________________ ___
__
¬_|-_¬_-_-.__-_ _._-_;___ --|'.¬-u n.-\¬-n.¬ .¬
_
|
I'
f. ¦|
I
¬.¬.¬__-_
j
Pacjent
I
Posiada
-1.
.|
I |' .' .I
-_ .-_ -.
I I
|' .l
|'
-.¬_ _- |1.
1|
l
¬_¬_.
Le ka rza
.'
j
J
.'
'Ż
___
Rys. 10.4. Przykład diagramu Chena
J J
Podczas projektowania związków encji istotne jest prawidłowe rozumienie pojęcia atrybutu. Atrybut jest cechą obiektu, np. cechą lekarza jest jego specjalizacja.
| |' 1 I'
-_-__
W elipsach oznaczających atiybuty podajemy nazwę atrybutu (np. specjalizacja), --_
¬.¬.¬.¬.-
- 1.
a nie jego wartość, np. internista, kardiolog. Błędem jest również utożsamianie atrybutu z nazwą kolumny, ponieważ atrybutem encji Lekarz może być nazwisko, a nazwą kolumny (tego atrybutu) tabeli, np. naz_lek. Związki, które zachodzą pomiędzy encjami, mogą rownież mieć swoj e atrybuty.
__
|
Pacjent
j
-¬
Od kiedy __¬_
Posiada
j
Le ka rza
|
Rys. 10.5. Przykład diagramu Chena - atrybuty związku ---
-
-
_
I | f |
_.l 1|
Związki pomiędzy dwoma zbiorami moga ilustrować dwie elementarne cechy związku: 1 liczebność związku, 1 uczestnictwo w związku. _
Rozpatrując zagadnienie liczebności związku, musimy określić liczbę instancji encji
|'I. f_. I I
f f |' | r |
I I I' |'
I
Ä uczestniczących w związku.
.'
¦| nl
-_
---
----
--
-_
-- ---:- - -
_
_
__
_
__
_
__
_
_
__
___
_
r .'Í
_______‹_ _¬_________
10' -____-_-_ ._._-
BAZY DANYCH I SYSTEMY BAZ DANYCH -.-f.q ą,.- .'_u._'u.-J . _I I I I I 1
-
-----
--i---
-----
-¬-.---..._¬.-.-
__¬.--
._-___
__-__-_
.____.
__
____
______..
__.__
_______._.____
__
__
___
..._
Związek jeden do jednego (1:1) występuje wówczas, gdy jednej instancji encji zbioru A odpowiada jedna instancja encji zbioru B, np. w wyścigu może wziąć udział pięciu kierowców, a zespół techniczny każdego kierowcy wystawia dokładnie jeden samochód. Każ-
demu kierowcy odpowiadać będzie dokładnie jeden samochód, a każdemu samochodowi przyporządkowany będzie dokładnie jeden kierowca. Samochód
_
_
Związek 1:1
, _' Artek
Bolidl
l Balidz
| |___..____
_
_.__
Mari.-|‹
I I I
__.__
1.I
|
.
l ._¬,¬.___.__
._
._
.'
Bolid3
Izabela
Í
Rys. 10.6. Ilustracja związku jeden do jednego
Związek jeden do wielu (1:M) występuje wtedy, gdy jednej instancji zbioru A odpowiada
więcej niz jedna instancja zbioru B. W praktyce, gdy mamy np. 3 samochody, którymi może jechać kilku kierowców tego samego zespołu, ale odpowiadać im będzie tylko jeden samochód dla nich przeznaczony, związek taki określamy mianem jeden do wielu. Na przykład, wg poniższej tabeli bolidem 1 pojadą Artek i Marek, bolidem 2 - Michał i Wioletta, bolidem 3 - Izabela i Grzegorz.
_
I
%ß‹›'fi‹='1
"_"'""'_'j
E Bülldz
I-¬-..¬.i¬.-¬i-Ś
-
_ .--¬.¬---
__
.-
f#L*=.--_---.--_--l
Związek 1:M
Marek
i
ç
__-___
1 Izabela
..¬..1I .I
,' l----¬.¬.-¬.-¬.---.--
Bülld 3 I---.__-__
-
_._
_.__-_
._ ___j
5
-¬:----
' .¬.¬.-------¬.-.--I
Grzegorz -----
_j--
_.-.--.---
-_
_----
-_--_-
|
.._1
j Michał I------í-------Ÿ--------
---I
Wioletta
Rys. 10.7. Ilustracja związku jeden do wielu
Związek wiele do wielu (M:N) zachodzi w sytuacji, gdy wielu instancjom encji zbioru Ĺ .I I |
I r r _I
I I I I I F .I II
A odpowiada wiele instancji encji zbioru B. W praktyce stanie się tak W przypadku, gdy dysponować będziemy np. encjami Lekarze i Pacjenci. Każdy z pacjentów będzie mógł korzystać z usług wielu lekarzy, a każdy lekarz będzie mógł świadczyć usługi wielu pacjentom.
I' I
Ł
¦
j Lekarzl
,
Lekarz2
I" ""' ' """""_l j Lekarz 3
Rys. 10.8. Ilustracja związku wiele do wielu
.
¦
1
Zwlązek
5 Pacjent1
M;N
l Pacjent?
'"'"""'_
; Pacjent 3
5
¦
_
I I I'
if' ci o is 'wi w 'if s .fi z D A rr: ti-I _
----_-¬._-iw__------.-_›__-_---
_---__-----
._-----
_-__--
..._--_-
___--I
_
_----
_
-__-__--_-_
____--_
-¬,¬_
.___|-. _¬_-I.
_____-I.-._-___--¬_-____---.-______¬_-I..___---¬_._-___
I I I
I' I
l
I
¦l
Uczestnictwo w związku
I'
I I
I I
_¦ I'
Uczestnictwo encji w związku może być opcjonalne lub obowiązkowe (wymagane). Uczestnictwo encji jest opcjonalne wtedy, gdy istnieje przynajmniej jedna instancja encji, której uczestnictwo w związku nie jest wymagane (nie bierze udziału w związku). Przykładem może być sytuacja przedstawiona na ilustracji związku lekarze-pacjenci, w której do któregoś z lekarzy nie zgłosiłby się żaden pacjent. Wówczas uczestnictwo pacjenta w związku byłoby opcjonalne. Dzieje się tak dlatego, że może istnieć lekarz bez pacjenta, ale nie można być pacjentem, nie mając przydzielonego lekarza. W praktyce, podczas projektowania diagramów encj i, na linii obok związku, którego uczestnictwo jest opcjonalne, umieszczamy kółko.
.I
I ,I
¦I .I I 'I I I
J I'
.I I' I I' I I
¦ i _I I' I' I
.I
I I Ii I' I I I I I I
i
I'
,
Związek M:N Pacjenti
¿' Lekarz 2
I
I I' I
_I I'
I' I
'J I'
I
I'
I I 'l 'I
l
-.I |. ll
I I'
-¬.¬.-_
II'
r
I I I I
J I' I I
'I Pacjent 2
I
_._ ._ ____.___ _.___ __ ...___.___
I Lekarz 3
I' I
iI
._ _.___ _,__ ____ ¬._._____ ____ _ ___ ¬ ._ ____5
Pacjent 3
Rys. 10.9. Ilustracja związku wiele do wielu
Poniewaz uczestnictwo lekarza w związku jest obowiązkowe, po stronie encji Lekarz nie umieszcza się kółka. Relacyjna baza danych zazwyczaj operuje na tabelach połączonych więzami jeden do jednego i jeden do wielu. Może zaistnieć sytuacja, w której mamy dwie powiązane tabele przedstawiające kolejno: kierowców samochodów wyścigowych oraz w drugiej tabeli- samochody wyścigowe. Tabele powiązane są tak, aby umożliwić dopasowanie kierowcy do bolidu. Co stanie się, jeśli nagle bolid I-I12 SYRENA nie będzie użyty w wyścigu z przyczyn technicznych? Czy w takim wypadku usunięty zostanie również powiązany z nim kierowca? Na takie pytanie możemy odpowiedzieć, analizując więzy propagacji. Więzy propagacji wskazują, jakie działanie zostanie podjęte podczas modyfikowania wierszy w tabeli powiązanej. 1. Pierwszą z opcji jest ograniczenie możliwości usunięcia rekordu (synonimy: wiersza tabeli, krotki) do czasu występowania powiązanego z nim wiersza drugiej tabeli. W naszym przykładzie: do czasu, gdy do bolidu H12 SYRENA przypisany jest Michał Michalski, nie można go usunąć, można co najwyżej wstawić w trzecią krotkę tabeli SAMOCHODY inny bolid, np. I-I13 WOŁGA.
I I' I I I
I I J I' I I I I I I
i j
l II. I I I I I I'
f.I I .i
'Ż ¦ I I
I' I'
I I' I I' I I I I I
I I
J J
I'
SAMOCHODY i'
1
“
I
I
I
2
ŻÅWÜDNlCY I'
I
ş C23 .I
__I _
;D50
I'
I sim
__
l
.I
_ l.__._„____.._____....-_____.._. ---i
_ijelcz
I
j---._ .-._.-.-.__.__¦__. -_----_. . ___-___ __j.-_¬-______¬¬.___..„____-
_
_ _
<3 3
i
, Maciej
I Nowak
¬__
_I
-_-- ¬. __ -l¬.___--I-_ _.__- -_ _.___-.
-_-.I'__. -__ -_-.___-_
-_ ._
2
lwojtek 'Í
3
I
I'
III
__
-Š l
'II' I I _ I I
ichał
Kowalski ÍI I_I I
O
s rana
__
_
¬_ -I»_-I _
I
I-I12
©_-_-.--_-..l_-_--.--_----
I
.I
I
I
-I_______¬_ ._-I______.-_ _ ___ ____ __
j Michalski
-¬¬¬-I_I-I.-_'|_‹l__ .... --_-_i___-..-____. _____-..._-_i__- -._ ___-...-_-__-
l
..-J
Rys. 10.10. Ilustracja więzu propagacji _,¬_¬.___--I_-I___---_-_____- -._I.__-_-_-.__.__--_--___--.¬___._.__._-_____._..-_______-___
_____-.
_
__
l
¬_¬_
_-|.I¬.I- -
I I I II
BAZY DANYCI-l l SYSTEMY BAZ DANYCH
_I .I I
_ _
_._¬_-.______.-._-I. -
___.--___-_____. ___.______._.___.__ _-_____-___-_____..______-_____ .-._
_ '
.__
__ __
___
_ ._
__-.____. --______________.___ __-__ . _ _ _ __
__
_
-__ _._- ...._-__ -I _.___ _- ..__.__._¬-____ -
I ---__ _¬____Ir¬-I-
_ _
ä"-
I_¬ł__-1-¬-\_-I1"-I1"-I'l_-'I-'I -1.-u-|"-l¬'I-'I-1-1'-F
--___¬p-¬_¬.'-
I' I I
2. Kaskadowe usuwanie występuje, gdy podczas usuwania krotki pozostałe połączone z nią krotki w innych tabelach również zostaną usunięte - automatycznie. jak sama na-
zwa wskazuje, ten typ więzów propagacji przypomina kaskadę (wodospad). W naszym przykładzie niech usunięty zostanie tylko zawodnik Michał Michalski. Połączona z nim krotka zostanie usunięta kaskadowo (automatycznie). Gdyby ten zawodnik połączony był z krotkami w innych tabelach, zostałyby one również usunięte wraz z nim. Łatwo można dojść do wniosku, ze określając takie więzy propagacji, można utracić dane, które mo gą być istotne, dlatego użycie tego rozwiązania wymaga dobrego przemyślenia, czy istotnie będzie to bezpieczna opcja.
li 'I
5 li Fi _
3 _ Wstawianie n ull - w przypadku usunięcia krotki tabeli głównej klucze w tabelach powiązanych zostaną ustawione na null. 3
srsawoż swoją wrsozs
"II.I -ł
-¬.
¿'I-. .I
"11
"'¬"`,'Iš¿'__Í5""_. Í!¬.'_ł_Í"'.:lĹ'¬".I_=.c'lłiI-.=F:~`.__'l-' ._Ł=I':=.Ĺi;'-å`:' '=l" I I' I I I '_ I I
1_ 2. 3. 4.
jakie zastosowania mają diagramy Venna? jaka jest różnica pomiędzy diagramami Venna i Chena? Wyjaśnij związki: jeden do jednego, jeden do wielu, wiele do wielu. Co to są więzy propagacji?
,
PODS'T`AWY BAZ DANYCH ø‹a'ov»~› `u~.-'¬øv __
_
__
_
-.--¬`.
_
`¿.4-_‹.&n›±'___-s`.~.¬¬`-¬-`¬-›»›‹ I
I 'I I I I I I
"J`'I I I I
`-'-J -<-~'-
~_..¬.-I›››
I I I I
I I
Z I Formularze do przetwarzania I danych
l I f f
l I I
-`›¬_-»«`__-__-¬___- .
I I
l
I
`~¬__`._ -"_~. ,_-`" _
I
III
ł I
_¬_"_ '__¬.~_
l I __`~. I I _--..__-__ _._-__ ___ ____-I~--.4..._________-...-.. I
już---Ż-'_-1_\_--„__---_ _ _-_ ›.
._
__
_
__ __.__„ ___¬-__--._--. -_-__ -__-____..__-___ _-.______.._.....„
__
_
_
_
ZAGADNIENIA
l
l i
1 Pojęcie formularza 1 Aplikacje bazodanowe i ich zastosowanie
i l
`_.__`_--_¬_..-_~-__.¬____¬~_-__-._-_____-~__.______-‹
____-„_-_»-_.-_\__`____‹,-_-______›
.--¬
_.__-____~___-
__¬_
_-_-›
___¬___.-_.--_.__..____-._.___._-----.-.`___-
___-¬___...„.-
_.__
-.-._-__ _____¬-__._--
___¬__
Formularz (screen form), określany również mianem formatki ekranowej, używany jest do wygodnego wprowadzania, edytowania i usuwania danych W tabeli. Aplikacje bazodanowe udostępniają całość danych zgromadzonych W bazie danych za pomocą graficznego interfejsu użytkownika. Ich zadaniem jest wykonywanie interaktyw-
.' I' I I i I I
I
8 I
I I I I 4
i
I I I
I
I I I I 1 I I
nych akcji w odpowiedzi na inicjowane przez użytkownika zdarzenia. Aplikacja taka oferuje użytkownikowi mozliwość przeprowadzenia odpowiednich akcji,
często powiązanych z przyciskami graficznego interfejsu. jest to jedna z najważniejszych
_¬_ _..¬ I
I
i
I I
I I I
1 I l
l
I
I I I
funkcji formularza, ponieważ sprawia, że użytkownik nie musi znać języków programowania (w tym strukturalnego języka zapytań), by wykonywać operacje W bazie danych.
.' r I i
Składnikami formularza są elementy dialogowe, umożliwiające podejmowanie interakcji
I I
I
I
I
I
I Í
I
i
I I I ›
I
i odpowiedzi na zdarzenia. Zastosowanie formularzy wiąże się z umożliwieniem wykonywania operacji, wprowa-
dzania danych do bazy danych i przeglądania zawartości bazy w zaprojektowanym oknie aplikacji. Innymi funkcjami formularzy są: aktualizacja danych w bazach danych, drukowanie dokumentów z danymi, zabezpieczenie danych (formularz może oferować dostęp tylko do wybranych danych przechowywanych W bazie), utrzymanie integralności danych (formu-
I
I
'. I -_._"»-
'I I
l v II I Í
I
II I I I I I I I I
I
I
I I
Š I
I
ł I
_I
I I
I I
¬`__-_
I
I
I I ‹ I I .° I I I I I
_¬‹._~
I I I I I I I
II
larz może kontrolować poprawność wprowadzanych danych). Formularz może operować na bazie danych umieszczonej w komputerze, na którym jest uruchomiony, ale może również działać w połączeniu z sieciowym serwerem bazy da-
I
I I -¬`___--_‹ _ ._ `
I I _.`
nych znajdującym się W odległym geograficznie miejscu. Wymienione operacje wykonywane są za pomocą okna służącego użytkownikowi do obsługi pola. Znaczenie pól opisane jest za pomocą etykiet, czyli nazw pól.
Formularze mogą być tworzone za pomocą kreatorów formularzy lub programowane W językach wysokiego poziomu, np. C++, java, Pascal, PI-IP, Ruby itp. Ilustracja na sąsiedniej stronie prezentuje wygląd tabeli bazy danych i stworzonego do obsługi tabeli formularza W programie Access 2010. Opis budowy formularza przedstawiono W dalszej części I I I
I I
e_:4.-_Í_ _ -_ _
podręcznika.
I
¬_ .¬`»_
C
I I
"_-._
.`_ ¬`->_ I I Í I
l
I I
I' I' I I I I I I I I
¬__"
I I I I I
J
I
I
I I I
"- -`
I
I
„_____
l
SPRAWDŹ swoją. wisozią 1. Co to jest formularz i jakie ma zalety? 2. jakie zastosowanie mają aplikacje bazodanowe? 3. Na czym polega utrzymanie integralności danych za pomocą formularza?
I
_(___.___- _ -_- _---_ ____ _.___ -...__.__ _.__-_.__-_._¬ ¬___-.
9
~¬ -I' \
'N-
\‹" 'K-I J
I» l
_ _ ___ H_ ¬_Mw„_ ”H_ üń_ _“ _ ”__m_hNh__d __”_ _ fi_ _wH_H__ _ _ ___ _ Í_U“¬____________úu_____"___ _ _h_“_H_h_ ¬_¬____h___u______w__$_“__________¶____Hífi_______________“_`_"U____„__ _
____I _'___' _-_____ '_`_ L_
____“___ „__“__
|_|_|___ I l|_|_L ___ '_| __I |__|__|_l|I_|_| _Ill_l___l__IldI I I
BA
_ _ _I_ '|.łI_l I I
vb V_ nu _HMH v_ FL H
5
V_ S T_ E Hm V_
B
_n¬_ nu _H MH V_ Fu H çuw _Mm___m_ā_d_
__F5______I_'____`"________T___[____',Jr_____ _'_
_v_=____________mą_ _
“__ _______“_____ _HM ___ ___“___Ę__“___I_h______ _m_“„________ _____ ________fi____r ____ h____ _“____ _____ ___ ____ __"H _______ __ __W __ _ `_fi_ _______M____J______„_____@______~Ł_¶hm_“_________WW _h_h_______ąåh__m__h_____w____@_ __¿____¬HfiM_ __"u_______ ______“%_ ___*____ “__ łfiý __________“uh_r“___“__*_ u_H_¿_H_" _“w______ __
_'_|'_l '_l|_
_____________ HH__“__ _________ M_Hn_____ _H____________h_____"______H H_"__F___"_*___"_____u__I___`_"H_“h__M_H__I______H_H_"_¬___H_____ H_ h
IIÍI_Í_I_____I ___I________ _ ______I_ _I____I_________________I_ _ II_ _
W ____"_ "__ „___ _a_r“____ 1___ “_ _____ ____ ___”_-_ww _"_ _`___________ __H _____ _*Ê __ __Pu ___ ____ _`n__ą“_„ _ _m_ _ _ '_
_mi ____ H____ W___ P___W_ “_MwJ___H __I%JE____ WPm$_I_ldmwI____“___ “______uw_ “_*______¶'____F"___ELU %___ w'____ WP__M¬w___wMMú__ '____|_ w__ _|_“__" ______1 ___________“__“____|__-_"“|_ _ _ _wl U__"__ ___ *___ _F _____ _1__u h“_"____dl¬ną__ ___ ___fl____ _"“_"________ __ „_¬“____ __‹'_“„”____ "____ _n¿__`_m_"u_ _ _ __¿¶U" P__ “_ _łJP __"__ _ń_HĘJ_ Ę “_____ W _hlń_ ____”_F L_____ ?¿__“W_H__W”"W_Ww_ ___p___wW¶_ ¿r_ __“_ ___“ _“l_” _ _ “„H_____ __Ê~____H_“„ _ _”Ł3* „_“_L_üfl _HM__________ „__”I__H__Űfifiřl Ę ____m_H__ ____ "¿_IW__”¬_I“&p_u h_$_N“_ä_____Ą w„___\_J ___H_W _„_ _v_____ü_¿____ _Ê_¬_hÄ_J__ŰJW __w"_ _ L_ _ wĘ fiúü ___1_____L1 w__m___ “_ ____ ___ _____v ¿___„__ ____H___¶____fl_T___“_¶_H__ _ _„___ “___________ ____ _“___L_äm%m_í _____“___ __________ ______ =m_ _h_u_ _ _ h_ h_'___ ____fl__ _______ _H_"____r F ______ __`__________ _'___”____b____ _n_P___r____"_dq`_ü `_fl _¬fl_ _ _ _ _ _
wfiämw whWfimH“l”_¶______ ____ ___E_l FH&_W M_q_*__ _Mb _dm _śhh I_mń„“uhwm_1_“_ __f_MMhH“"I____ h_Ű? Ę„mfl___*H1ăn__„u"__“MHfiuIfi__1fl__I_Hfiw__fW¿__Mm_m¿WHm_h Ę WIE ___ ____ ______¿Flńh_Ê h__“__ Ê __ flñ_L”___J_I_“„fl_w_hu ____mlUŃF`1“_:_m"%__I1hH_M_FM _Id_„gw 1I_____ M_múlJw_q$fl_WW “¿m____ % _____ __'_|_I___H_|J___|______h_|_|lH__ ___ __“_ W_H__“_“__ NmWW “H___ $___h_I ¬MW_P_Näf____ w_m_“_"___ ¬__fiw1__ ______ IüJF?¶_M_"__v_> ü_IN____ _Ę*h__________ wH1l___m__ m__“¿wI__¶F_ h“__ HJq_¿____ _“W____ ____ __ ______ H“;"_ Un '_ _“__ ______ `ł__ __h___ ____H___p_ ________“ ____m_H_ _um I__ E______h____"_M_____fl__m"____I_____ l________ mw“[__“_ hń____ m__5lI____ Ąh„“H___“r___ ëiu_*fi__ü _____¬Fñ„__ flI_Ę uœ_“l_"1_Ê ¬I__Í“_¿__“H *_W_ Ê__%q“ lym____“ ____ xE__ _W___ ā__ā_l _F å_Ę|I_I|ß _; I_ _| Ľ __H_*JT_ __w“Hm___¬_MJ_ __“__ _____n lM__„mfim __1H”_MH u_wh__fi1____“ „h__dj m”___¶_flŁHú\_W 1ÍI“__ Ÿ_Ah ____1___ “__ ____J _JUu flm__m_¶______ ___fl_ _m___“ _Ę„___ M„____“I____fi ___I___F___Th_I____I_____ “m_“___ _,__ h¬_L_¬p__“__"_" ¿M“T_ H“l____ I_FM_“_“dm l_“___¿wH__¬_ JW WE _L I __l____ __ _H____ _ _E53 ___fl ”_¬___“ ¿H____m_„_r”_zW_M_H_d__ ä“w_l _mww„ ____“mH_ _“ _ _ _ __“n____L_Ł___ w br___ ĘN_“__ _____ _______I_w1“___-_“____ “P_Fu_______\_ __B_____H __13% _w_____I»_I¬_¿__“ Hh“__________l__ _F__“_Ńm¿Im___Ńw_ _?U1ä__“_ :Ê_H __L_II"3_____Ir@_______Lq_:___h_IIlm_ ______ ___mufi ¿_Iv____“___ ___¬_Wm_“_n____ “_Ę __mwv___r____Ü_“ __“fiwl_N_“_U___¬“_ÊHW_Ią__“__¿p_üm¶lh_Ę____ _____H___ F____ü__w:_______ Ê ___“_ ___ _w_¬““I_____ ____ ”__;“¬L__I_P___Ę ______W_“__*§m___
“_ “_ V_m_ _ _ _ _uzu_ H__
_r______„_G I__u_äfl___ fl_N_____w ____ J¬____fi__“__ U_H_“_ñ_ _______ĘTT 'l____-'__-' __'_'_ _ _ _| _ lp___
“___ F!
Ę _“¬___ _ _| l_| _l I_| _ I_ ___
_Ęm___šHmz_
_ _w_¬mń%__ " w_u_m___ Êhmub _______m___¬ "_m_l d`|____n“w_m___ _"__" I__ __ _„___” _F u____IĄm_“_'1_Tfi_m_hEą__ _I__ _I_%_l¿m___ “____J_ _vÊHl___I @_ _'L _______L__ _"_________'______L________ ______:____ ___ ______L__|__J_______I________ ____1__|I_II___u_[__________I_____:“M_vå¬_ä%*%_ ~_P_m_! h“_P_mc “Mtv __å“__fl"_ _":_\_b___ ¬___* ____F_______ `_Üø*Ę ____ __“wi_ ___"_I ____________m___ _äh__±_“ :1_`_“_ _______| ____ ”____` ___l__“'h_I1_L_`__ ¿"_gl _“_ _____IJIÊ lb__\u____$-___ _“_ l@h__`_M____`_____ nfiIJ__"___“›___r _¬“M¿_ “l_`"_ _T_
_„H___“__ú ______ ”qĘ___“I__*M___M____ ________“_hI_$“¶„___n¬_HĘn_u„¶___Ifi¬hm_w_fl$ ¿_H__“W_ _
__¿_ N “T_ H_ L___HH _ ____ f_ u_ _$H_
_“__1_“_ __:__ \____ ________ I_____ __II¬ __"_ II __
_ |l_._I|'l_' |l'I_I|_._Jl|"I_' _ I|II_lI|l _
fi____ _“_fl____?__n__ m___L____m____ ___ßüüfi__m__%_____ __ww “ww _“_äm_ _ _ _ fi%“_ _ _¶_ _ ________'_`_E_ _ _ _n _
§ā% OÜHE UH_ÊEĘNÊŠÊNĘ EGNow ¿_HMÓÊŠ _mWEgg m_„NB O__Š ÊĄ: Hñmāüfim :Q_ __Ę _āĽ&fiāg _mā ___H _________ _||__'|_|l“| _| _l"| _|l||_ '_ _
M__mm_w_¶W___m_ _„F I_¬__ñ_ _%\__ _Fń__Hh__`___m_“F¶_¿F1_“__ _h“mëmfiu w_h__ I_`_dm_U_H_
__
_____'I-__fl¿___I _| "__ŚI___'__._____I___'I___P___'\ _ ____I_l_' |1_ \l|_
__
MNE_UĘ __M_ __š _______ ______ HH
+
_W____, _______"__________ ______"__________ ______ @_______i _@___. ____________ Ü______ ___ @_________ __Fa r__¿____¬w___¿ ____“____4fl_____ _¬_ _A_ _ _¬_ _ _ _ "___ “___ _ _"___ _______ _“_ _1___l"__ _ _I _ _ _ _ ¬_ ____ „_ _w _ d_ __Ą_' U_______ _fl" _________ ¬___________¿______ h“_wr_____________ _ _ __h_____ ____ ___ ________ _“_____ ____"_____ _______________H_____ ___b ________ _______ _ ___ _____ _____ _______ _ _______” I ___"___________ _:___-_¬_____ ___ _______ ______ _________ ___H___ _ _ ___ ___ ___ _______
__.__._
____fl _h“l_ _h_“_ _
_ U Mm_ w _ _w __;__M__N______ _ __“_ Ľ_ ____H_ _” “____flm_______hI”_`___“_M___"__m__UHL _
____ _ _____`__ ___ _ fl_ _“_ _ _ _“ _ ___ _ ”_ _ ___________ _ __ _“-m`___“_ "H_ h_H”U__%“$% __q_ _ _H_”_" _¬_“hm Í_ ,H_ ____ ;__ “_____ m________ _ _ __`________u_____ _ ___ _“H_ _ h_J_ "_ _ĄHĄWñm_____bń__1____" „__” m__ "__" H_¬m_”_ E __:fl__"_____¿_„_“ ____MT_ __ _$Uw___ H_ "h_ "H_ _ “_N __Ę__ I_____I______-_-¬___ _____ Il“_ _ I__________h _ "__“ ______ _ _u_“__"_ _ ____ ___H _____u_ _ _ _ ______U________“__ H_d“„#_“_"_ _¿_ _H__” _ __MW__ _h_ _ _h_ _ „_ _ _ _ _PH_n_H“_„______“J___Für__”____h__n“_„_ qÄ ___ __ _____H__ ____ __H___ __H____„W_ ______”___v__ _ m_u _ w_u_ _“ _¶ ___ _ _m_H______H___j ______ _______ I____w____h_ _“____ _„__“__ _fi_d ___"U “_H________ “_ _„U__HH“_“_ _ _____"_ _ _d_nI_____“___f_T__” _ _ __ ____H "V"____“_*___ „_Ű___ _____ ___ _ _____ ________ _____ _____ _*__ _ _HH _ ____ _ _ _1_ _ _ _ __________¬_I_ _ _;____:_ ___M__ _ _ _ _ _ _ _ m__n_ _____ _____Im_“_qm__”_ ____H ¬____H __r_________ _"_ _" ___"“_ _ __ _ _____ __ fl__w____“_“_______________W____________-__m_“_“___ _ _ _w _ _ _ H_ _ _ _“mą ____„_„_ _ _¬ _ $_ _ _ú _ h_ ,U "_“_ ___ _____l _ _ ____ _ _ __."__Ü“"_
_ ____________ __ ____ _ _ _ ____
1_
______
“__ ___I'_____l______ __________I_
U_ _ F______J_“_ F_ _ _
_r _ ___P____._|c___I _]
_“_____"_I„_ ___ ___H___Í _ ___ ____¬_›_ ___________ __
I I'||||||||I|l||l|_ '_-l.l.|I|'|| l|l|l| l_lJ_I|l I-_rll|Il|_`|l_ń|||_
_______u_
_|_ _ l_ |l_J' |_I _|"Jl_ |_
u__*gg mă_šøzwarg _ mzāmr u_Ê m_ wm_u$m m_3m_ _g_ 3_gflšnšm H_äm_ _H_EN “_m_fl¬fi__Ê _ š__““ÊN6En_mŠ___ _“_ _Ű_u_“_E_m¬_u¿_Š Emäm _Ê_ flgüāå _*EQ_flmñflm ăwäuumuš n_š__m¬“h__E___“_ ʶH_%mam __w_E_fiF_=M__3H__š_“w__Ę_ _m_ _' _Ê ___u__Ü“_HmE ¬___“gw _mN”_tUhm_M ʧā„E5 ¶_Eu_ _Êăuš ¶šE_fi_m_fiü_m_*aa __Ê__ _____ _ _ W__“____w_ _H_ _U_”%UE_m_“__Êv__ Oå_*Ê_H_Man¶F_uMmn__
____ ___ _________ _ _ _ “_
m_ w_8_H__N_ _ E _m _xmå _mn _“__*m_V_ _“ _ w_m_ "_ ___ |8___l____H_fl|l__¬ü____I_Il_____“I|_H___l_I _ m__*ua *mMH _üfimāg _ _3 *BEE _uguz _*E_Ęfl_Tfi_ _ā3m___ :b~___“_Ê_“__ _35_E_m__nŠ_ U_ uEE II__ ____I ___“:__1_“__H_______“______q__ m“h_±_L _ u'
____I _
Mmšüz E mam _EE3 v_*DE _Nam w_ __HH _ E__
_ __“_Š Eëā_ëm_z _ _”D_ _ _ _H
|II_ I_ -__II'*L__
_(Ę_' ___{_ __F__1__¬_ _ __|_L_|_Lü_____r[___I_-l'_|__ĘI_l'_L1_____
W_Š_ 3“_ ā_____ ąEä__ œ_ Hü_mr¿M_3_H __ _ _¶_ ¬ ___
n_ ___ ______ _______ ____ _"______ __“__ _______"____u_¿__ ___%___________H___ _ ________H_" _ _"_ _ _ _ I _ _ _ _ _ _ _
H___1_____¶m_åä“__w___~"_u _fl _ _ _
|_| | |l'|'| | _|'I|lI'||l| | ¦|`||P||||l
Ĺ_______ ____r___Ê _I_______TT|_I_PI_h_| _ _ ßh
_______ _
_| _'_I I_|__l I|_l |_l'-_|I l_
0% ____:_wu____“ŁH_ _F_ _ _ _Il'_____|__1I“_”lfl___I_IiIM_|H____|
__'______[_:_.___|[¬_ _
IIIIII_'|Ill||||| l'-I I IIIIIIIIIIIIIIIl l _|l l|l"_llfld |l| _
I__________ ____________ ___' _" _„___ _I _ _ 1_m_ _"I
____II _
_ _ ___
_E_*Ê
__5_____ _ „_ _ u_E_&_n
____ I_____¿__ ._ _ v_I _ _ _ _ T _ _|I_' |l_I|' _|lI| |_ _
Q_
E_H _.__ 1____| 1___“`_:l_“_
v_ __ _ _ _ _ _ _h_ H_”_ _ _ _M_ _ _”_ _ M"___ __w_ü___
_________. _______ _
T_; _ _ _ _ ___h___ H_hH_ ___ _ ____“M_ ____ “_ _ _ m_ 5.. ____
____”___$ _„__ _ _ _ "_ _ _______Ł
_"_ń_m___ _____
“_ _
W
ä
_ ____ _ _ w_
__ __
_
__ 1
____
__w _
__ __
P o n s 'ra \¬=:.-I' Y e A 2; o A N rc;
'II
|' .
.' .'
|' |`
'l
F-_.í_,,_¬_._í-._. ________-_-________.______
_ __
_
_
_
_ _
|"'-H:-'h
hah;
___.___-. ___ _ ___ _ ______ -i- -1. ....___
.
¿_ ¬_. _. ___-__ .j ___T_________ I3 und" |I 1' I
_l |
,'
| |
Rodzaje kwerend wykorzystywanych ^ do przetwarzan|a danych
_._.
111-u-1.1-1m.-_-.Å-_----_-c____------_-_..___---._.__
|
Í' ,'
f
__
_L
___-__--¬
._.
.--_----_..__._..-
ZAGADNIENIA
I Pojęcie kwerendy i jej rodzaje (perspektywa, kwerenda funkcjonalna) I Kwerendy krzyżowe :|1-i-¬u__------'
._-_--_---.'._------------
_--_-------_-.._--------.
._--_--_---._
---------
_.-..__.__-_-_
...__-
--
_.._-----
____..-
--
_-.._--_- . _ _ _ _ __--
-
____-------.
.___-__--.
._._._-_--¬_|._.___.- ---
-
_
l'
Kwerenda (Query) jest zapytaniem skierowanym do bazy danych. Termin ten pojawia się
głównie w zagadnieniach związanych z bazą danych Access. Ze względu na czynność, jaką kwerenda ma przeprowadzić, wyróżniamy różne typy kwerend.
I'
| | | | |
r
_I
J I
|' I
. r l
jeden z podziałów kwerend wyróżnia dwa ich typy: 1 perspektywę, 1 kwerendę funkcjonalną. -
Perspektywa określana jest również mianem kwerendy wybierającej, ponieważ do jej
r | l | | | |
zadań należy wybranie danych zgodnych z zawartymi w niej kryteriami i prezentacja tych L danych. W wyniku tej kwerendy wyświetlana jest zazwyczaj tabela, przypominająca arkusz Ê kalkulacyjny, umożliwiająca jedynie prezentację danych (bez możliwości modyfikacji). ¿
_¦ .' .' r |
Kwerenda funkcjonalna to zapytanie, którego zadaniem jest modyfikacja, usuwanie, l wstawianie i reorganizacja danych. Dlatego nazywana bywa instrukcją operowania dany1ni.W obrębie kwerend funkcjonalnych wyróżniamy kilka ich rodzajów:
l |
l _I 1' J
I'
| l | l
r 1 Kwerenda modyfíkująca
l _ ',
jak sama nazwa wskazuje, kwerenda ta dotyczy modyfikacji danych w krotkach. Wyróżniamy cztery kwerendy modyfikujące: usuwającą, aktualizującą, dołączającą, tworzącą
1' I I
|
I
„¦ .I 'Í |
tabele.
1 Kwerenda usuwająca I, jest to zapytanie, które w efekcie usuwa w całości wiersze znajdujące się w jednej tabeli 5 bądź kilku tabelach, spełniające określony warunek.
! ¦ I. I'
= 1 Kwerenda aktualizująca F To zapytanie, które w efekcie modyfikuje dane znajdujące się w jednej tabeli bądź kilku ¿
tabelach. Dane znajdują sie w krotkach spełniających warunek zawarty w kwerendzie.
| _I
'Ê
Ê 1 Kwerenda dołączająca ¿ Urnieszcza zestaw rekordów z jednej tabeli lub kilku tabel w innej tabeli lub kilku tal
belach. F
1 Kwerenda tworzące tabelę
= l
jest to zapytanie, którego zadaniem jest utworzenie nowej tabeli z danych (lub części danych) znajdujących się w jednej tabeli lub kilku tabelach.
I | |
i
I |'
1
-Ê-Å
I
.r._. -. . . -. .-
____
_
.,_,__¬_
__.,_`__,_,___„., _,__
__-,___ „___ __.__
__
_
_
_
_
_,__ .í¬____?._ií_í___ ___
Å
1
_1-1
-|-1-1'
n.-1.1- -
-u-1--u-vi-í
_„_._ -_
I I' I
| I I' Í
I I.I' | I F
;._-_ _
J ll l| _I .' I .I | ll I
ĹI
Kwerenda krzyżowe jej zada niem jest wyświetlanie zliczonych wartości z pól oraz uporządkowanie tych war-
tości w kolumny i wiersze. Wynik kwerendy krzyżowej ma budowę zbliżona do tabeli, ponieważ składa się z wierszy i kolumn.
¬___
J I |
l
|| ,. Í.
I. Co to jest kwerenda? jakie rodzaje kwerend wyróżniamy? 2. Czy kwerenda usuwająca usuwa całe wiersze? 3. Co to są kwerendy krzyżowe?
I 'I I
SPRAWDŹ sv:/o]Ą WIEDZĘ
I
'I r I
Il. Podstavvy języka SQL 1 Strukturalny język zapytań SQL
1 1 1 1 1 1 1 1 1
Strukturalny język zapytań - charakterystyka składni Klauzule strukturalnego języka zapytań Funkcje w bazach danych Instrukcje sterowania dostępem do danych Rozkazy języka SQL, tworzenie tabel i operacje na tabelach, wyszukiwanie informacji i ich zamiana Zapytania zagnieżdżone (podzapytania) " Złączenia i widoki Wyzwalacze (Triggers) Transakcje, blokady i zakleszczenia
"54 _ li aazs'unnycyi1srsrsuy saztnanrcn IŹI
_
,L Stru kturalny język Ę zapytań SQL
j
IÅGŁDHIEHIÅ
l Historia powstania strukturalnego języka zapytań (SQL) I jakie istnieją podgrupy języka SQL? I Definicja pojęć: selekcja, projekcja, :łączenie i suma
l
i
Początki SQL sięgają zeszłego stulecia i Firmy IBM, w której powstał język SEQU EL (Strustursd English Query Lnngnagej. Został on rozwinięty i do dzisiaj znany jest pod nazwą SQL jātructursd Qiurry Language) - strukturalny jęqfk zapytań. Typowy SQL to język nieproce- ' cluratny należący do grupy języków deklaratywnych. 'Wyrażenia SQL nazywane są kweren- l dami. Pozwalają one na wykonywanie takich operacji jak:
j _ (
1 uzyskiwanie informacji. modyfikowanie informacji dopfiywanle (wstawianie), 1 usuwanie. 1 sterowanie danymi.
5
I
|
Strukuiralny język zapytan ze względu na czynność (funkcję), jaką dane zapytanie ma wykonać w bazie danych, dzielimy na następujące podgrupy wyrażeń: Tabela 13.1. Podział strukturalnego języka zapytan na podgrupy wyrazeń _
' DD
.__
Å i
jEtD
Data Definition Language
_s____ .
___
DM
jly'|[II
í
1
EREATE, FŁLTEH, DRÜP, TRUNCATE
._
Data Manipu-
_
_
.j
ocr Å
DQL
-í-Ź
;so _
jI'_'
|
Å
_
____
INSERT UPDATE
Data Control Language í
Data Query Language
.
___-.
_|
l język manipulowania danymi '[jl"."lDj służą-
cy do wypehiiania bazy danych, usuwania informacji i modylikowania danych.
mi
GRANT, DEN? | HEVÜ HE _:_
-
język definiowania danych (jDDj stosowany do tworzenia schematu danych. Definiuje strukturę danych. l
Iation Language ` DELETE I--Å
i
i
_ í
SELECT
:_
- Ź-
-
-
-
:_
- -Å
'-I
' język kontrolowania danych {ji{Dj sprawuje kontrolę nad transakcja mi ± steruje nimi. --.Å
mi
Å
í¦
l język zapytań jjłj, ktorego zadaniem jest l pobieranie informacji spełniających okreI Šlonewarunki.
TEL
j5P
CÜMMIT,
język sterowania przepływem USP) danych j
l tion Control
Transac-
RÜLLBACH
(kontrola transakcji).
i Language
SAVEPÜINT
st¬.'nsrr~.wr języka sol 1
.
|jfi5
_ I
|
I-I
I
Podczas pracy z bazą danych zachodzi konieczność wydobycia określonych informacji, zwłaszcza takich, które spełniają pożądany przez nas warunek. Poniewaz zmienna relacyjna jtabelaj ma dane pogrupowane dzięki atrybutorn (kolumnomj, mozemy na takich zbiorach danych wykonywać operacje. Na początek trochę teorii. Dperacje, o których mówimy, przedstawia się za pomocą operatorów aigebry relacyjnej. Üperator taki na wejściu pobiera argumenty' będące relacjami, natomiast zwraca relację wynikową. Üperatory algebry relacyjnej przedstawia tabela.
, , . _ E _ ¿ l
Tabela ' 13 . 2 . Ü peratory algebry relacyjnej
I I Selekcja
5
symizai 6
Š Projekcja
j'|`
I Złączenie
pq
Suma
l = l
U
13.1. Selekcja
*
Teoria selekcji zostanie objaśniona na podstawie praktycznego przykładu.
_ j
Wyobraśmy sobie selekcjonera druzyny piłki nożnej. jego zadaniem jest wybór zawodników spełniających określone kryteria. Przyjmijmy, ze kryterium selekcji
I 2
będzie wiek powyzej 13 lat. Matematycznie operacja selekcji będzie miała postać: ZÊWÜDNIĽT
` I
5
M l
ijanek
3
j
Ü
i-ieniek
22
4
Kornel
34
5
Wojtek
l
Ü Wiek :- IE jżawo-dnicyj
, “
Üclzie:
=
i-
'
ą
Warunek selekcji
25
¿ “
' -
j
E
Tadeusz
43 _
5ElEl
h
Atrybut
(kolumna tabeli - zbiór okreśio nych cechj
'
E ¦
88
.
.
t
.
W s'trul
18; W efekcie otrzymamy wynik:
sj.
~ _'. ¿ Wynik działania selekcji na tabeli zawodników w bazie danych PostgreSQl_
Nalezy pamietac. że zapytanie ltcniczymy, wpisując '/.nak średnika ;.
13.2. Projekcja F1'r‹.'›j‹:l-;cja nazywana bywa rownież r.zot›.›m i możemy ją zdefiniowatf jako wym: L;=:.~i›_mm. Operator projekcji na wejściu przyjmuje nazwy kolumn. a na wyjściu zwraca ich za'.~';i:t‹;›scÍ. Możemy prześledzić to na wcześiiiejszyiti przykładzie z selekcjonereni piłkarskim. Wy'ol›raźiny sobie sytuację. że selekcjoner będzie potrzebował listy wszystkicli zawodników wraz rz l
„
\
wf.
,f
/'
_/"
` `§
_f
.
. "l
\.
Í Ĺ,
( Ĺ
Ä Ĺ,
mi
Operator projekcji (rzutu)
j I
j Oddzielone przecinkiem I nazwy kolumn (atrybutów 7
I
mm.
Nazwa tabeli
kr'
_ímzmýc
1
th-. i '.. Ê. ilustracja projekcji 2 Lfastosowanieni opt'ratora algebry relacyjnej
Wyrażenie to mozemy r‹'›wnie'ż. zapisac za pomoca języka SQL w postaci: SELECT nr, imie FROM zawodnicy;
RW l 'H Wynik dzialania operacji projekcji w bazie danych PostgreSQl.
4
'|.'.'-
¦
|
'
'_
-__r_
|¦|,-.
|
i
13.3. Złączenie Elączenic służy do pobiera niu clanycli z dwócli lub większej liczby tabel w celu porównania lub zestawienia- Eli' tabelach biorących udzial w złączcniu lriiiszą wj-,-'stępuu-'ać kolumny. lttóre są zgodne i spełniają warunki pozwulaj:1_ce na dokonanie zlącze11ia_ Zaleca się. aby kolumny te łączyły' tlwie relacje {tal:=elej na zasadzie: l-:lucz podstawowy. klucz obcy. cliot'ia:1: wururiek ten nie jest niezbędny do wykonania złączcnia.
Dla przyklatłn ¬'.'ryki_ir'zy'starny dwie tabele: zawodnicy i pokoje. Ićawodnicy
Pnkojr'
'nr imie jwlek [PI{1t1|I:e1_;|er cl1ar`tn:I:er 'rary|ng{5|`.t} integer
-irI_poI-:oji.| j_cena_za_duIie ji-:I_goscia _!gI:li_rn:e1g:z_'_1: __ __
:TI
Janet-:
_`|_'."'
..
l
SL
1
II'-_'I
Her ek
LE'
3
EE
E
3-
Heniek
l2"-¬Ĺ l"'-_'I
3
TE
Ę-i
§-1
li:-:net
CHI
et
3|:
4
E5
l'l"Ľ¦'jt:e}-I:
|¦"-J II. I'|
_5
llÍ
5
EF_
Tadeusz
-43
E1
to co
E
I-¦'. i
_
T.. Tabele wykorzystarie w zlączcniu
Gdy założymy. że numer gościa (kolumna icl_go.'soi.aj odpowiada' ruunerowi zawodnika (kolumnie nr). wowczas. chcąc otrzyrnać zestawienie imienia zawód nika oraz ceny. którą ma zapłacić za pokój. wykonujemy złączcnie: SELECT imię, c:ena'._z a__c1o1:ie FRt'}!"I zawodni cy' JDIH pokoje DH nz:=icl_gosoia:
i'i'.'- l 1.1' Wytiil-L złEjczeni;1t.'1l¬ir'l w PostgreSQL
A oto przyklad r_iper;1r.:ji rówrn'izłąc:r.e11ia zapisany językiem algebry relacji: Il-l 1mie|¦.."'Ĺ."1i¬".lŁ"|¬'ÍĹl'Ül"'llt'Ĺ`t"])
j
Üperator złączenia Itrs. I
i
zawoclnicyicł = pokojeid _pokojri
\
cene Iā_dobe{l3'ÜIiÜjEj)
Enak równości determinujący typ złączenia - rownozłączenie
l¿ć'w'ttozlączettie pr'¿iE'ilstawiotie 5*. użj-'i'ir*m operatora algebry relacyjnej
` Stąd zalecenia okreś|ą|ące_ że pomiędzy tabelami powinien '.".'ystępo'.a'ać związelc klucz pod stawowy. klucz obcy.
13.4. Suma (Union) Teoriomnogościowa suma dotyczy dwoch relacji o tym samym scłtemacie - językiem ulgę bry relacji moI`.'.E* być zapisana jako AUIŜ.
Dla przykładu wykorzystaliśtriy dwie tabele: p:r:a.c'._p_pon1o': iprar:owr1ic'.jy'_ł:ihp jal-L zostało to przedstawione na poniższej ilustracji, tabele mają tę samą strukturę ;gäj-iz.1nz11_1s|raJin'1e
wielu
5 1'"l1=s'=" ¦f=e!re=*=t_rsrtI"zt§ifl1;i*='=l'"“=l=*r"t*'iIt5'“1t"*ssF'
I¦I_oracn11r|iI1 tmtię -
uaznitrkn.
-
jaw .'|'|or1-:or 1"-.. emrrufiai _ "'='=="tam-wtfl'=i-Š
,mr-'k
Nowak
E:-'il
1
.Tan
1!-lorrnlr
-_"¦l
Hojciech
Kowalski
db
Z
Hugczech
Euualskl
WH
3
Michal
Htemuzok
IJ
`
flarzan
Nowak
JJ
4
'Henacn
Eoundzko
15
Hi-'.t 'I 1tL
Tcocc
Êó
Irene
ñzstooske
55
EU'-=I=
Mecnct
¿3
Ę
Hzktozzo
Eonatsze
33
¬
Eugene
Przykooclnoke
åü
ji (Ę
5
. .Tan
'-1' '-¬|.I'-I.
itp- i _t.ř=`. 'I`abele 1_rżytew przykładzie sumy (l_il¬'ilÜl*~lj
l-tj--._ its. Przykład sumowania tabel przy uzyciu instrukcji SQL w bazie danych PostgreSQL l_l |rJ_|I1'tr1|:o'.'¬'i¬ske|.Ir'riie.na-r-.'¬t'i'.=l'to_.\r~riek łF'FÊl'Í_l3_FllÍ'lTlÜCl l"l l_l "Il_l3'fE|'?'I'W|"'l=f±".1¦'tt*'t1*.""'E'1¬~"~'|5l'¿'3'.-Wi Elf- ll3'l_El':":"¬'l"lrli':itl-l:'l1l:'l
ltys. I fi. lu. Eiurna tabel wykonana z użyciein operatora algcłiry 1'r'lzcyj|1ej
seri..-an-"¦'i-ż swoją wii-:uczę ` 1
1. Wryjasiiij znaczenie i pochodzenie strukturalnego języka za pytań. Ê. jak dzieli się język SQL ze względu na pełnione funkcjcÍ"' 3- Podaj definicję selekcji, projc'kcji. złączenia, sumy
ł
l I I
i-*t_ii_›s'r.«va«'~r |i;_:fr'k_-× sol..
ii Ĺ
i F I
1 Stru kturalny język J zapytań - charakterystyka składni
l
IAGADNIENIA
I Kategorie składniowe instrukcji SQL (Iiterały, operatory, słowa kluczowe) I Definicja dziedziny (domeny)
I Słowa kluczowe, identyfikatory, komentarze, literaly w języku SQL I Zastosowanie argurnentu NULL (wartości puste) I Typy danych llIl
11-
._
1'
I .._...
-.
---
]al< kazdy język kom]_Juterowy, rowniez strukturalny język zapytań SQL posiada reguły, które muszą być spełnione, aby zbudować poprawną instrukcję. Instrukcja SQL zaczyna się poleceniem (słowem kluczowym) określającym operację, ktora zamierzamy wykonać. Po słowie kluczowym rnogą znaleźć się klauzule (dookreslenia dla słowa kluczowego).
Oprócz tego mozemy wyróznić. pięć głównych kategorii składniowych (tabela 14.1)Instrukcje języka SQL, bez względu na ich pogrupowanie czy implementację, zostaną omówione na przykładzie baz danych PostgreSQL, MySQL, Access. MySQL jest SZBD bardzo często spotykanym w usługach hostingowych. PostgreSQL jest najbardziej zaawansowanym serwerem baz danych z publikowanym
¬_¬_-_
kodem zrodłowyrn pozwalającym na prograr.nowanie proceduralne w języku. PL./pgSQL podobnym do języka PL/SQL w bazie Üracle. PostgreSQL jest przy tym ol:›iektowo¬relacyjnym systemem zarządzania bazą danych. Cechy te sprawiają, ze Postg1'eSQL jest bardzo
atrakcyjnym systemem zarządzania bazą danych, poniewaz moze słuzyc' jako doskonały przykład podczas zaj eć edukacyjnych. Access to baza danych dość często wykorzystywana jako składnik pakietu biurowego Microsoft Üffice i w związku z tym mozna spotkac ją w biurach i innych mniej zaawansowanych zastosowaniach. jest chętnie wybieraina, poniewaz nie wymaga znajomości języka SQL i jest prosta w obsłudze. I 1'
Domeny
l
Podczas tworzenia tabeli definiujemy rowniez typy atrybutów, np. tworzymy dla wybranej kolumny identyfikator: wiek z zamiarem umieszczenia w niej wieku osób wpisanych na
listę promocji towaru. Wartości, jakie będzierny umieszczać w kolumnie. będą to liczby całkowite z przedziału
18-110 (zakładamy, ze produkt adresujemy do osob pełnoletnich). W bazie danych zdefiriiujemy taki typ jako int(3), co oznacza maksymalnie trzycyřtowe liczby całkowite. To, jakie wartości rnogą przyjąć umieszczane w kolumnie dane, nazywane jest dziedziną lub domeną. Zbiór dopuszczalnych wartości dla co najmniej jednego atrybutu nazywamy domeną,
I II 1' I I
Íß
s.-.z'r n.›'~.nrrźi-1 r srsrr-.sir saz i:›.r~.i-¬."~r‹'._:i-1 I-
Tabela I-t.I- Pięć głównych kategorii składniowych SQL
l
l
i_-
jfierały
låtałe
.T--_
--
2
Operatory
í
_Sp-ojniki
_
Í
l
u
í
Enakowe
i'
_'
._
l Í
=
_
_____
_
_
, '¦ ss
lzastępujący dowoiną liczbę znaków]
'_
symbol wieloznaczny
|
_ |
_Å
Å
Logiczne
.
_
-_±í-1|.---Å
l koniunkcja
j
_
.----Å-iv
_ ål"'iD DR
aitern atywa
_
¦ ŁIÜT
ne E acja I.
I'
' Porównania
í
di-
I równy
j
mniejszy
=
większy j
l
L
= __ __ 'Ĺ
5
mniejszy lub równy
I'
`Ĺ‹:=
większy lub równy řiżą.
-
:I-1:: -|
_
I
'rózny
l= lub -erz-
3
i j
_ Typowe dla SQL Ê operatory relacji
operator przynależnosci ' do zbioru przedziału
l
_
lÊ.'«E'I"WEl¬~l n AND rl
l
l
domknietego operator przynależności ¦ do zbioru
z
,_
im _
operator dopasowania
,
do wzorca
i ,
_ "
in 1...:
mi
j
O Ll KE .
|-
I'
" operator dopasowania do wyrażenia regularnego
i REGEKF.
_ operator porownania
Ê
RLIKE
sprawdzający występo-
wanie znacznilra braku wartosci NULL
-_
l
|
=
J I I I
!
Ê + lub .
[zastępujący jeden zna ir.)
I
5
i
_ symbol wielożnaczny
;_
1
____
+
±
konkatencja
=
_
I
I
il-
róznica
.
__
= ,.,,
j suma i
1-”
¦ Il
E rnodulo
l
j
1 "`_`_"'
j 'IMEI
i
«
_
”Arytme1:yczne-dla Íiloczyn tych wyrażeń można ' _ ` __ uzywac nawiasów
j
mi
----mię
lS NULL
_
i›~r'ii:›s'|='.-'~.-.'~.-'=r fi;.›"rI~'..-*¬ soi
lx, 3
Słowa kluczowe
'
"w'yrazy j Słowa kluczowe to zarezerwowane - podobnie jak w językach interpretoprogramowania - ciągi znaków. Możemy do nich zaliczyć: wane przez _ " ' '
_'
5,,,.,,_.,,.,
| instrukcje
wokreślony Ę spüāúb
lśomentarze
"¦
`
_
WHERE. _JÜIN
=
i Nao.-ry rypew danych
i Inrscca, cnaz
I_
Funkcji _ nazwy ___.___ _ zyzramewyei-I
' |snuLL,ass _ _
i 4
_" _ _
j iślauzule
cesarz. sEi.EcT
Nazwy zarezerwowane do uzycia w przyszłości
_
zaleznie od bazy danych
Ignorowane Š Podwójny znak myśinika Ę- -jto komentarz, którego używamy, aby _ okr eslo ny wiersz nie był interpretowany. '
Jeśli chcemy, aby został zignnrowany więcej niz jeden wiersz, warto posłuzyć się komentarzem, który odnosi się do bloku instrukcji: i:I..I
znajduje się ¦ blok instrukcji
¿ 5
Üperator
konkatencji
5 Üperator ten pozwala łączyć atrybut z:
- innym atrybutem, ' iiterałem, ' wyrażeniem arytmetycznym. wartością stałą. ' Na podstawie tej operacji tworzona jest jedna wynikowe kolumna.
Definicja wskazuje. iz w obrębie jednej relacji kilka atrybutów moze mieć rózne domeny jkazdy atrybut na inną domenę - tekst, liczby całkowite, datyj, moze tez się zdarzyć, ze wszystkie atrybuty w relacji będą odnosić się do jednej domeny (jako zbioru dopuszczalnych wartości). Domena definiuje zbiór dopuszczalnych wartości atrybuI:u niezaleznie od czasu. _
Podobnie jak w każdym języku programowania, podstawą elementów języka SQL są pojedyncze znaki. Zaliczamy do nich: 1 wielkie litery A-Z, 1 małe litery a-z, I cyfry Ü-Ü.
1 zbiórznakówspecjalnych: " 'iió ` {j* + , - . ,J :;=,'=:¬.'-- P _ |. Choć implementację SQL mogą. się od siebie róznić, wszystkie musza, obsługiwać zbiór I znaków o nazwie SQLTEET.
Słowa kluczowe w języku SQL Słowami kluczowyrni są słowa zastrzezone, _poniewaz mają juz przypisane co najmniej jedno znaczenie. Podobnie jak w językach programowania, słowa if, begin, else są słowami ldunowyrni. analogicznie jak w języku SQL
jfl
l
l
l
I'
l'
l
j
l"1 ll:
l
l
I'
ll
-ll'-.
-`
l
l
I
l
l
|
I
Nalezy pamiętać, ze sformułowanie „zastrzezone” oznacza,
nazwy takiej nie mc
zemy uzyć jako identyfikatora, np. nie mozemy kolumny nazwać SEI ECT. W związki
z tym nalezy zapoznać się nie tylko ze słowami kluczowymi standardu SQL, lecz takz' implementacjami tego języka l"unkcjor|ującyrn_i w SZBD: MySQL, PostgreSQL. Acces itp. Dokumentację tych odm.ian mozemy znalezć w tlokurnentacji oferowanej przez producentów. Tabelę zawierającą słowa kluczowe SQL zaprezentowano na kor'icu pod ręcznika.
Słowo kluczowe [JIST'I|\IC`i. Podczas pracy z bazą danych rritizeiny obsługiwać tabeli zawierające powtarzające się wartosci tego samego atrybutu w kolejnycli krotkacli. DI STINCT umozliwia el_i_rninowar1ie cluplikatów, wartości kolejnych wierszy oraz kolumr _ w zalezności od uzycia.
lślauzula EJRFJEE' BY. To klauzula słuząca uporządkowaniu zwracanego wyniku. Painiç' tać nalezy, iz stosujemy ją jako ostatnią klauzulę polecenia SEĹl.ECT. Dane segregowane sz;
domyślnie rosnąco lub według ustawień bazy danych. Operator BETWEEN...AND. Używany jest do sprawdzenia, czy wartość znajduje się w podanym przedziale.
Opera tor IN. Służy do sprawtlzenia, czy wartość znajduje się na zdetiniowanej liśc'ie. Operator l IKE, Słuzy do wybierania wartości, które odpowiadają wcześniej ustaloncmu wzorcowi. Wzorzec ustalarny za pomocą symboli;
' % - odpowiada dowolnernu ciągowi znakow, ' _ - odpowiada jednemu dowolnemu znakowi.
Operator ISNULL. Służy do wyszukiwania wartości NULL.
Literały W językach programowania często zachodzi potrzeba posiug.iwania się litera-lami dell niowatiytni jako staic' closlownt.'.
Podajmy _prosty przykład. jeśli napisalibyśmy p1'ograrn_. którego celem byłoby wyświetl_enie napisu: ,,Witaj świec.ie" (J--isilo World), posłuzylibyśmy się następującym kodem SQL:
SELECT 'Witaj świeoie'; W bazie PostgreSQL wynik dzialania takiej instrukcji przedstawiony jest na ilustracji.
|-ł~.‹¬_ I-i.| Przykład działania literałn w języku SQL
Uzyte pomiędzy znakami cudzysłowu Witaj świecie jest Iitc-rajem _ ciągiem ziigkçāw, danych, przytaczanyrn dosłownie.
(73
ii*tii:›s'i"_i-cwi' ii~¿'.-:rss soł_.
W języku SQL dostępne są następujące rodzaje literałów: 1 napisy, ciągi znaków w pojedynczych cudzysłowach, np. ` ulica ` , " l4l0` I
1 zapisy bitowe poprzedza się literą B i urnieszcza W cudzysłowach, np. E1`11Ü1` ; ' napisy szesnastkowe _poprzedza się literą X, np. X` FA` ; 0 dokładne wartosci liczbowe zapisywane jako lic.zba dziesiętna - ze znakiem lub bez z mozliwością zastosowania. kropki dziesiętnej, np. -25.3 lub ().t"17.
Typy danych
¦
_ Š
_
W języku SQL posługujemy się typami danych na etapie określania, jakiego typu będą kolumny (atrybuty) tabeli (relacji). język .SQL obsługuje wiele typów danych, jednak - po' dobnie jak w przypadku słów kluczowych - najlepsze efekty uzyskamy, zapoznając się
i
z dokumentacją wersji języka SQL (dialektu) występującego w wybranym przez nas SZBD. Pomiędzy określeniem typów danych dla zmiennych relacyjnych w programach PostgreSQL, MySQL, Access mogą zachodzić różnice, których znajomość pozwoli uniknąć błę-
_
dów, a takze w pełni wykorzystać wydajność tych aplikacji.
` i
Typy danych w PostgreSQL
=
Gdy tworzymy lub modyfikujemy tabele, zachodzi potrzeba określenia typu danych, które
będą przechowywane w ltolunmie. Warto zauważyć. ze nawet po określeniu typu dla ko-
i
= i
lumny nadal mozemy go zmodyfikować. Typy numeryczne Typ integer (liczby całkowite) zawiera: 1 smallint typ zalecany dla kolumn, których pojedyncze wartości wierszy mozna przecho-
wać w 2 bajtach parnięci; ii integer typ dla liczb całkowitych, które stanowią wartości większe niz stnallint, ponie-
Š
“ '_
waz do zapisania mogą wymagać czterech bajtów pamięci; I bigint typ wybierany dla liczb całkowitych, które potrzebują 8 bajtów pamięci.
Typ Nuuemc
,
Moze zajść konieczność umieszczania w kolumnach bazy danych duzych wartości liczbe' wych, takich jak kwoty pienięzne.
¿
Do tego celu stosowany jest typ Numeric, który pozwala na wylconywanie dokładnych przeliczeń. Aby przeprowadzać działania na duzych wartościach liczbowych, nalezy określić skalę iprecyzję: ii p - precyzja (pizcision) to ilość liczb występujących przed przecinkiem, która siuzyć będzie do wykonywania obliczeń (ta wartość rrI_usi być dodatnie); I s - skala (scnls) - dopuszczalna liczba miejsc po przecinku (ta wartość nie moze być ujernna ¬¬ zatem równa zeru lub dodatnia).
5 i _ i
Í;
Typ numeryczny w przypadku niezdefiniowariych wyników operacji może równiez zaakceptować i przechować tzw. wartości NaN (określane jako Not a Number). NUMERlC(S,P)
l
Przykład NUMERIC(S,2) będzie odpowiedni do przechowywania liczbowych wartości do: 99999999,99 (S wartości przed przecinkiem i dwie po przecinku). ¬._ ._,¬.-_¬_
E
HĄŻYIIANYĽII|5T5ThMl"BAIIDÅNTĽlI I
-j._ . _. _., _ _
I
-I--.__-_-_|
.I .' | |
I
..
|
¦
I
l l
|' |
|
I
I |' | |' |
| .' | |
I .' | I
| _.
I|
I
Typy zmiennoprzecinkowe (ƒloating point), znane w matematyce jako liczby rzeczywiste, uzywane są przy definiowaniu kolumn, ktore zawierać będą wartości ulamkowe: 1 real: 1E-37 do 1E'+ 37 z precyzją przynajmniej 6 znakow po przecinku, 'I double: 1E-30? do 1E+308 z precyzją przynajmniej 15 znakow po przecinku. Te typy danych akceptują specjalne wartości nienumeryczne, włączając w to nieskoriczoność, oraz wartości l\laN.
Typ SERIAL
.|
|
I
Podczas tworzenia tabeli zwykle zachodzi potrzeba nadania kazdej krotce u.nikalnej wartości. Funkcję taką spelnia kolumna, ktorą wyznacza tworca tabeli jako klucz glowny. Wartości w takiej kolumnie mogą być uzupełniane automatycznie (autoincrement) i nie mogą być puste (NOT NULL). I
I
I I I
Typy znakowe CHARACTER
I | I I
'
.'
F |
I
'
f.
W PostgreSQL występują trzy glowne rodzaje typu znakowego:
I
I
I 2 |'
I_.
I
, I
w
I | | | | .' |
I _| ,' |
|
L
| .' I.|
|' |' I
|' |
I
I
I |
.I .' |' I
|
I
| | I |
I
|' | | | I
| '
| I
i
.
I | |
|' |
1 Character (Char), I Character Varying (Varchar), I Test
Gdy używamy typu Char lub Varchar, mozemy określić maksymalną liczbę znakow, ktore przechowywane będą w pojedynczej krotce dei`in.iowanej kolumny.
PRIYKŁAD 14.2
___
jezeli, przykładowo, kolumna rnusi zawierać imiona k.lientow, wowczas po zdefiniowaniu jej typu jako Varchar umieszczamy numer znakow, ktory wedlug naszych zalozeń odpowiada maksymalnej liczbie znakow w imieniu. Jeśli załozymy, że najdłuzsze imię, jakie moze wystąpić, składa się z 'IO znakow, mozemy przyjąć, ze kolumnę Imie zdefiniujemy jako Varcharflü) lub Char(1D).
Oznacza to, ze kolumna moze przechować wartosci do 10 znakow, np. polecenie: INSERT IHTÜ TABLE klienci values ('Przemyslaw'); zostanie wykonane prawidłowo. jednak gdy chcemy wprowadzić irnię Maksymilian, zawierające jedenaście znakow, napotkamy przeszkody. Dlatego definiując typ kolumn, musimy wykazać się umiejętnością przewidywania nawet rzadkich, dość ekstremalnych sytuacji, gdy np. klientem instytucji moze zostać osoba pochodzenia arabskiego bądź azjatyckiego i liczba znakow w jej imieniu moze przekraczać I4 i zawierać spacje, np. irnię Abdul Muhaymin Gdy rozwazamy uzycie typu Char lub Varchar do zdefiniowania kolumny, moze pojawić się pytanie o to, czym typ Char rozni się od Varchar. Odpowiedź dotyczy ilości pamięci,
' .' |
| | | |
I
I-
'
|' |
I
jaką system zarezerwuje w celu przechowania .kolejnych krotek kolumny. jeśli .kolumnę zdefiniujemy jako Varchar(1Ü), wowczas system na przechowanie kazdej krotki dynami.cznie przydzieli tyle miejsca, ile będzie wymagał wprowadzany ciąg znaków, przyjmując, ze maksymalna liczba znakow wyniesie 10. Np. gdy kolumnę IMIĘ w tabeli klienci zdefiniujerny jako Varcl1ar(1.0) i umieścimy imię Maciek, wowczas system zarezerwuje tylko sześć znakow. jeśli tę samą .kolumnę zdel`iniujemy jako Char(lO), system dla kazdej krotki zarezerwuje 10 znakow bez względu na to, czy wprowadzona w danej krotce liczba znakow jest o wiele mniejsza od dziesięciu, np. w przypadku imienia Jan.
I* o o s'1'¬.e\tI' Y j| |¿: z Y 1-: .tt s rg I l._„.... ____
._
I
._ .._.__-_.
Gdy do kolumny tabeli wprowadzamy ciągi znaków, umieszczamy je w 'pojedynczych cudzysłowach 'tekst wprowadzanyí Typ daty i znaczniki czasu Typy, ktorymi dysponujemy dla kolumn mających. _przechowywać czas, to: n Tirnesternp witliottt tirne zone - znacznik czasu bez strefy czasowej; 1' Tirnesttttnp with tirne zone - znacznik czasu ze strefą czasową;
|' |
I' Date ¬ Data; 1 Time without tirnezone - czas bez strefy czasowej;
1 Tirne with T'in1.ezon.e - czas ze strefą czasową: I Internal - inteiwał (przedział czasowy).
Dla czasu i znaczników czasowych zawierających sekundy mozna określić precyzję. Precyzję określa numer ułamkowych cyfr w polu sekund. Podczas wprowadzania wartości czasowych. nalezy pamiętać o ujęciu ich w znaki _pojedynczego cudzysłowu.
Operując czasem, mozemy uzywać12- .i 24-godzinnej r1otacj.i, przyjmując, ze czas w notacji 12 godzinnej wprowadzamy jako '12:10 AM' lub 'Ol:12 PM”. W przypadku czasu ze strefą czasową w notacji 12-godzinnej wprowadzona wartość moze mieć postać 'l.2:15 pm -5' albo '12:15 am EET”. SZBD PostgreSQL pozwala równiez na uzycie specjalnych wartości, takich jak: nieskończoność, rninus nieskończoność, jutro, wczoraj. Konfigurację tego pararnetm mozna przeprowadzić w pliku pos tgresql _ ccnf. Ustawienia formy dla wyświetlania daty wykonujemy poleceniem.:
. | I I I | I
| | .' I. . I |
SET DATESTYLE TD PÜSTGRES, MDY;
Parametr POSTGRES odnosi się do stylu, jaki zostanie przyjęty w wyświetlanej dacie, i moze zostać zastąpiony np. parametrami ISO, SQL, GERMAN. Opcja MDY określa ko-
lejność w wyświetlanej dacie - Miesiąc Dzien Rok. (Year) i. moze zostać zastąpiona DMY (dzień, miesiąc rok). W postgresql typ Bolean moze przyjmować wartości: 1 Prawda (True, T, Yes, Y, On, I.)
Wartości znajdujące się w nawiasie oprócz TRUE, które jest słowem kluczowym, umieszczamy w pojedynczych cudzysłowach. 1 Fałsz (I-"`alse, F, No, N, Off, ll) Podobnie jak w powyzszym p.rzykładzie, wartości z nawiasu, oprócz FALSE, .równiez umieszczamy w pojedynczych cudzysłowach.
Wartosc nieznana reprezentowana jest przez NULL 1\"J"
Wartości puste Na szczególną uwagę podczas nauki teorii relacyjnych baz danych zasługuje właściwa interpretacja wartości pustej l\lUI..I.. Wielokrotną przyczyną błędów jest utozsarnianie tej wartości z zerern. Wartość ta oznacza, ze oznaczone nią pole tabeli jest puste i tym samym nie znajdują się w nim zadne informacje. Dla przykładu, gdybyśmy umieszczali w kolumnie bazy danych wyniki. pomiarów temperatury, umieszczone w niej zero byłoby informacją, ze danego dnia temperatura wynosiła O stopni Celsjusza. Wartość NULL ozna.cza, ze porniar nie został dokonany i pole tabeli pozostaje puste. Prowadzi to do wniosku, ze NULL nie jest równa zeru (tozsama z zerem).
1'
75 I algi
Ifi
.
.,.._..,
,
,,
,
HU LL zasługuje na szczególną uwagę, poniewa:›". obol-I l`l¬tLlE i FALSE oltreslana jest jako trzecia wartość logiczna. Podczas stostnuania operatorów logicznytli Ülł AND NÜT uzycie argumentn l¬~lLlLL moze po~.~„'odr.iwać następujące roznice w zaleznosci od “ŠZHIJ Dzielenie przez zero jest l¬.1lędne w ujęciu matematycznym. jednak w ro.='u¦rnemu nie których twórców SZBD rnoz.e powodować warlość N Lll.L. W Postgre.*šQ| gtij, sprobtijerm wyk-:.in ac dzielenie przez zero. otrzyrnaniy I-tonnlnikat o błędzie:
fi t. I--I .' Działania ¬w"ykr'Iriywar1e w linii poleceri liazy l*r.is1greL'iĹ}L.
l\‹'ly5QL wynil-: cl'.-:ielenia przez zero sprowadza do braku warto:~ici, trniieszczając l'-‹lLlLL
It . -- '-:._-" Działania ¬.'»„'1,-'kor|ft'wa|1e w linii pole-:t›ri Iia;-'.y l'rlj„'E'i'íĹl'l.; wynik dzii~lerua przez zero okreslam -
'I
|
I
puleuct illoclatkowo. podczas stosowania operatorciw logicznych wraz z w.1rto'¬c1.1 NULL otrzymujemy następujące wyniki: '.t'=---11 E 1
"'.`i»"jj"riil‹ti otrzytnywane podczas stosowania operatorów lt'.igitizriw.l¦ wraz z wartost tą
l~ll_ll_L
ÜR
True
False
NULL
True
True
True
True
False
True
False
False
NULI
True
NULL
l'"~lLlLL
AND
True
False
l""Il_lLL
t-:tins i'-iii 'r !t,i ti -'=. scit
. True ._.
_
, True _
_
.
False _
¦...
-_
I NULL __
|
_
_
_
“ False
| False
False
t nurt
| nurt
trasa
'isutt
' True
“ False
NULL
,
True
NULL
I
NBT
False
I False
"
.
Typ wyliczeniowy lielunina moze zawierać równiez wartości typu wyl iczeiiiowego EN UM. lit* takim wypadlru mozemy zdefiniować wartości typu jako np. PÜNIEDŻIAŁEK, WTÜREIĘ, ŚRÜDA, CZWARTIÊH, PIĄTEK, SÜHÜTA, NIEDZIELA.. Aby utworzyć wlasny typ wyliczeniowy. mozemy posluzyć się następującą instrukcją SQL: ĘREJŁTE 'I'¬'.|!'PE tydzien AS E1"`I'LIł-1
rfeonrsozzazssf,'sToass','śsona','ezHaszss','eIazzs', 'soaoza','nIsozIsLa'i; Warto zapamiętać, ze wartości typu wyliczeiiiowego umieszczamy w pojedynczych cutlzysłowach w trakcie definiowania typu. istotne jest równiez to. iz wartości te są czułe na wielkość liter. Wprowadzenie wartości 'piątek' będzie oznaczało, iz jest to wartość inna niz np 'Piątel-:'.
Podczas tworzetiia tabeli mozemy określić koluiiinę nowo utworzonyin typem. npCEEaTE TABLE przepracoi-i'ane_c1rii
[dni tydzieni .'
Typ wyliczeniowy określa wartość FÜNIEDEIAŁEIĘ jako najmniejszą, a wartość NIEDZIELA jako największą. umozliwiając porównywanie tych wartości z innymi.
Typ danych geometrycznych Llzywa się go do reprezentowania obiektów clwuwymiarowych. 1 PUNKT (point) reprezentuje punkt za pomocą dwóch wspólrzędnych: :-cy. 8 1.ll'~i I .fi (line) definiowaiia jest za pomocą dwoch putiktów: iip- A {}'ta,`t"aj B (J-*'tli,"i'b]=.
Tablice W PostgreSQL jako wartości poszczególnych krotek kolumny mogą być przechowywane nie tylko pojedyncze wartości. lecz takze cale tablice- Poniewaz baza danych zawierająca tablice nie jest wartością riiepodzielną (atoinowąj. zastosowanie jej jest sprzeczne z teorią relacyjnych baz danych i w takim wypadku tabela nie spełnia zasad pierwszej postaci normalnej. Tablice mozemy tworzyć, korzystając nie tylko z samodzielnie zdefiniowanych typów. lecz takze z typów wbudowanych, np. CREJILTE TABLE tabelka
flctoltamnt-:'11 IHTEE¦EE[5] l' ;
Polecenie tworzy ta belę o nazwie tabelka. zawierającą kolumiię - Icolumnal. z pięcioelementowjnni tablicami' typu integer. Tablice mogą być równiez wielowyiniarowe, np.
zelumnaz Inesozs [ 1 [ 1. Uwaga
Nalezy pamiętać. ze takiej tabeli nie mozna nazwać relacją!
l .TT
78 l.
li.~."*.?"'|' l_.`J.'ft;"~l"r"4ÍĹl-l I 5`t""¿i`l`lĘl"~'l 't' ll."*'.i"' l1f`tl`-i`“|`{_ĹlI
Identyfikatory Übiekty bazy danych, takie jak baza. tabela, kolumna, muszą mieć niepowtarzalną nazwe, tzn. swój identyfikator, ktory musi być zgodny ze standardem jezyka SQL. identyfikatory;
1 nie mogą mieć więcej niż 123 znakow? I mogą zawierać litery. cyfry i symbole: (Ê $ # [pozostałe symbole. takie jak znak spacji. są niedozwolone);
1 identyfikatory nie mogą zaczynać się cyfrą, natomiast identyfikatory zaczynające sie symbolem (Ê oznaczają zmienną, a zaczynające sie # oznaczają obiekt tymczasowy. Identyfikatory nie mogą być rownież słowami kluczowyrni jezyka SQL. Aby ułatwić sobie prace, zwłaszcza projelctując bazy danych, które w przyszłości miałyby być obsługiwane przez innych ludzi. warto stosować ustalone konwencje nadawania identyfikatorow. Takie postępowanie sprawi. ze tworzone tabele i kod SQL będą bardziej czytelne dla innych i dla nas. Nazwy identytikatorow powinny być możliwie krcitkie, jed~
noznacznie opisujące obiekt. Gdy identyfikator składa sie z kilku wyrazow, powinny być pisane bez spacji. każdy wyraz wielką literą, z wyjątkiem pierwszego, np. przykladldentyfil
przedrostkow: 1 1 1 1
udf [user dcƒisƒnnctiortj - Funkcja zdefiniowana przez użytkownika; usp juscr store procedura) - procedura zdefiniowana przez użytkownika; y (view) - widok; tr (triggcrj - wyzwalacz.
Podczas tworzenia identyfikatorow w PostgreSQL należy zachować ostrożność w dobieraniu wielkości liter. Identyfikatory, w ktćirycli użyjemy na przemian wielkiej i małej litery. wymagają cudzysłowu. Gdy utworzymy tabele o nazwie: }cLiEnCi. będziemy zmuszeni
do identycznego wpisania takiej nazwy w cudzysłowie, np. SELECT * FRÜH "kLiEI1'Ci" ,T
Gdy w przeciwieństwie do powyższego przykładu dobierzerny konsekwentnie wielkość znakow dla identyfikatora tabeli. stosując wyłącznie małe litery iiowcr cnssj. np.
CEEATE TABLE klienci: bedziemy mogli wskazywać na tabele przy użyciu dużych liter, małych liter lub dowolnej kotnbinacj i dużych i małych liter na przemian. np. SELECT * FEC!-I kL:LEnCi; SELECT * FROM klienci; SELECT * EECH HLIEHCI;
Wszystlde' trzy powyższe instrukcje zadziałają bez konieczności użycia cudzysłowu na identyfikatorze tabeli.
Wielkość identyfikatordw w MySQL Podczas tworzenia tabel w MySQL rozrdżnianie wielkich i małych liter jest obowiązkowe.
Do tabel odwołujemy sie zaś. podając idenl:yi"1l":ator identyczny pod względem wielkości liter z tym, ktory ma tabela. Jeśli nazwienly tabele np. klienci. wowczas skuteczne wywołanie tabeli nastąpi jedynie przez umieszczenie takiej samej nażwy w instrukcji. np.
|
- ~
P‹íI›11is'ri-wizy ;i;z.yi<_a so 1. -
____
. Z
.
....... ..
__
_.__-_
..-_-__-_
._-__-_
_-___ ..
_ _-_-
&¿ 79 I
___________ ._
SELECT * FROM lclianci;
Analogicznie, jeśli nazwa tabeli to Klienci, wówczas identyczną nazwe będziemy
;Ê
musieli umieścić w instrukcji SQL. np. -SELECT * FROM Klienci;
W przeciwienstwie do PostgreSQL nie używamy cudzysłowu, jedynie zmuszeni jeste'śrny do konsekwentnego dobierania nazw i stosowania sie do raz przyjętej nomenklatury.
*
SPRAWDŹ SWOJĄ WIEDZĘ 1. 2. 3. 4.
jakie znasz zasady tworzenia identyfikatorow w bazie danych? Czym są konwencja w nazewnictwie obielttow bazy danych? Co to jest domena? jakie znasz typy danych geornetrycznych?
-' =¦ ' ¿
I
-¦ l
f | I
I
.l |
I
| l '
.' | |
30
-
'
.---:||-~r-
Klauzule strukturalnego j języka zapytań EŠŁGADHIEHIA
I Pojęcie klauzuli SQL nr Definicja tokenu Aby scliarakteryzować składnię polecenia SQL. należy wyjaśnić kilka terrninow. Token to podstawowa cząstka jezyka SQL, ktora nie może być zredukowana gramatycznie do prostszej postaci. Tokenern określa się słowo kluczowe. irlerttyfikator. operator, literał oraz znak interpunkcyj ny-
Klauzula liwerenda SQL ma co najmniej jedną klauzulę. iílauzule wprowadza slowo kluczowe. jednak sama klauzula może być wymagana lub opcjonalną. Mtisi być podana w określonym porządku SELECT. FRÜM. WHERE. ÜRDEIŜŁ BY. Polecenie SQL jlcwererida SQL, zapytanie SQLj definiowane _jest jako prawidłowa kombinacja tokenow wprowadzanych przez slowo kluczowe. Podstawowe polecenia SQL noszą nazw‹_=¿ klaumil. Termin I-flaenrla strul‹.tu"alnego jązyl-:a zapytan odnosi sie do matematycznego pojecia tego terminu. W matematyce klauzula jest zbiorem formuł logicznych. ktore są prawdziwe. gdy alternatywa jej formuł jest prawdziwa. W bazach danych. gdzie zbiorami danych są relacje. klauzula jest zbiorem form uł logicznych. ktore wykonywane są na danych pochodzących z relacji jtabelj. W języku SQL klauzulą nazywamy np. słowo kluczowe WHERE i następujące po nim formuły logiczne.
|t'. i"- 7- Przykład polecenia SlÊi-l7.'-'ST zawierającego trzy klauzule
sea..-fu.t-'oz sw'oj.=j wir '~?.t's T- Co to jest klauzula? Ii. Wyjaśirij. czym jest token.
z¦"t"l
l'I."' _ll ~¬ E' l. :
ll
"'|¬.. `=. 'i'
mi
. -..L
Funkcje w bazach danych _ _
IJICHHLDHIEHH'-It
1 I | 1
Funkcje tekstowe. matematyczne i agregujące Funkcje tekstu Funkcje daty i czasu Funkcje sterowania przepływem danych i dostępem do nich
'ii-
i Funkcje tekstowe Podobnie jak Funkcje matematyczne. l.'"unl-Łcje tekstowe wykonują określone operacje na liczbach. tak funkcje tekstowe używane są do wykonywania operacji na ciągach tekstowycb. Przykładem takiej operacji może być usuwanie wielkich liter z tekstu. zmiana wszystkich znakow na wielkie litery itd. Funkcje tekstowe przyjmują pewien parametr wejściowy. przetwarzają go i zwracją wynik. Parametrem wejściowym jest w tym wypad| ku tekst. Gdy dysponujemy dużą bazą danych. może zajść potrzeba przetwarzania tekstow. Gdy | w tabeli znajduje sie kilka tysiecy nazwisk i osoba wprowadzająca dane na początku niektorych nazwisk stawiała spacje jktore trzeba teraz usunąć). można zastosować funkcje
= Lrariajj.
. Funkcje matematyczne Zadaniem Funkcji matematycznych jest umożliwienie wykonania operacji na liczbach. zwlaszcza gdy zachodzi potrzeba wykonania operacji bardziej skomplikowanych. takich = jak wypisanie reszty z dzielenia. wartosci bezwzglednej. wyciągniecie pierwiastka czy podniesienie do potągi. Działanie Funkcji maternatycznych możemy zaobserwować na przykładzie MySQL oraz PostgreSQL..
His. 1t«_i-Ftn1kcja Pl w MySQL
lit-s lt:-..t. Funkcja PI w PostgreSQL
32
I
'
¬"¦Ĺ¬-'Í i
I-
"
`l.=b+.'i.i t+›.I Funkcje PostgreSQl.
I absjzj
_ powerlja clp. b dpj
cbrtjdpj
powerja nurneric. b nurnencj
ceiljdp or numericj
radiansjdpj
ceilingjdp or nurnericj
randomjj
degreesjdpj
roundjdp or nurnencj
ezpjdp or numericj
roundjy nurneric. s integerj
*lootjclp or numericj
setseedjdpj
r|{dp or numericj
signjdp or numericj
ogjdp or numericj
scjrtjdp or riurnericj
ogjb rtumeric, :r numericj
truncjdp or numeric]
. '¬"z='.ir-.ti _ . pill
_
truncju nurnenc. s integerj width_bucl
Funkcje agregujące: 'l' Pit-' Ê..
1 Count. 1 First i Last. l' l"rllI`| l i"'-"lElI"{.
1 StDey i Stüeyli. 1 Sum. s Funkcje 'tfar i VarP.
GROUP BY Klauzula GROUP BT używana jest do zestawiania krotek posiadających te same waitosri w kolumnach określonych przez klauzule. FIITKŁÅD 15.1
Dla przykładu poslużyrny sie tabelą zauody'_wed.lcarskie.
tti:-. led. Polecenie systemowe opisu tabeli ".d wykonarie w i“r_rstgr‹.'ti-Ljl.
s-*=l.'›e_;:›r-raz„~.*~.«- rr
'-r rr. sol
Polecenie SELECT * FROM zawoc1y_wec1karslcie= zwraca Wynik:
ten-; In.-I. Tabela. ktora zostanie użyta do zaprezentowania klauzuli GRCJLJP BY
jeśli zecl'ni:eri'1y pogrupować da ne. za kryteriurn przyjmując liczbe zlowionych ryb, wowczas uzyjerny klauzuli GROUP BY. np. SELECT liozba_zlowionyoh_ryb,COUHT(id_zawodnika) FROM zawody_wedkarskie GROUP BY liczbą_zlowionyeh_ryh;
Rys. It`›.*i. Wynik dzialania klauzuli GRÜUP BY w PostgreSQL
I<Ĺ'olurr.1r.|a count generowana za pomocą instrukcji COUt~`I'I.'(id_zawoclnika) i stanowi liczbe zawodnikow. ktorzy złowili podaną w kolumnie liczba_zlowiony‹oh_ryb wartość pogru.powaną za pomocą GROUP BY. Oznacza to. że trzy osoby złowily po sześć ryb. dwie osoby - po trzy ryby i pieć osob - po dwie ryby. jeśli zachodzi konieczność. by z wynikow zwracanycłr przez GROUP BY wykluczyć pewien rodzaj danycb lub upewnić sie. że wyświetlony zostanie tylko interesujący nas łragrn.ent danych otrzymany za pomocą GROUP BY. uzywa my klauzuli HAVING.
_
__
___-___ _
___ __ .
HAVING Dla poprzednio omawianego przykładu zainteresuje nas tylko liczba zawodnikow. ktorzy złowili ryb.
' 33
34
I
I
,
II
I
]'?«.«¬' i:'›."_›. Pr:‹:¬¿.'i-:ład dsisłs11is1-zlsusuli 1-l«""."»“lJ"~I'ŧ w Püs1'gr's5Q|.
Należy' pslnistsć, że 1~:1s11:".ułs HAVIHG, oprócz lsgu 'sc' musi być püprssdssrls 1«:l:1us11łą E'-RÜUP, musi być t}'pu 1f¿:,s'Ii‹:z11+:gc:'.
Funkcje agregującs (zastosowanie) |7Ln11~:=:js sgrsguiąfżc- '¿sp1":zs11111jsr11}› ns ;}1'1¬§«'l‹ł¿1nizi±~ fi111kL'ii sum. `~.Y„"}-'‹'1h1';a-:»řn1şf sobie ł1ipsŁsŁ¬I~.'c:zn¿¿ sşftlaşaciç, W l~:t+ž=1's|Ę ud'.¿i±'rl¿-±n1}; 1~:r=:d§."t¬u rrsfm üsnhnm: 1"*i':':trknwi. Msćküwi i ]11sŁ},'1'1i‹-:_ l¬'~Í':::']umn._=1 zadłużenie sswiürs ]«:w=:+Łj.'. kujre ]¶›s:‹u::«:‹;¬g‹;'1h1'3' üssbj,-' są nsm wirm'-;=- lcsli chcis]ih}='s|11ş-' się df„1wi=;'‹;1;-:i'sff¬ fs1~;.=1 íssl r;sł1-;uwitu '¬s-':n'hssć zs‹iłLrsE'11í;1, n1‹.':';F:+sn-13' 11:'.$'.1¿„"f Fu11kf:it sg1"sgL|]ącsi sum. 1¬¿tć›r.¿1 jskü psrsmsta' pr:¿1„-'imi‹: nelzwę st|'}.-'butu zadłużenie i :f.wrúci :':sLm'1|f.~~.'»'sns wsrt't_¬.'sci SÜÜ. ZÜÜ. ĘÜÜ. Frzq,-'kłsd użj.-'Cis Í`u11k‹;ii sgrr;'gL|ją':;':'j prs'zE'111uf'±' r}'su|1±~k 16.37.
|'- ` Frzj_rI';łs'::1 dzísłmuis Fur1kcii;+;¿1'figL11ącs1 sum
|'í'±:'.'1'3j11}.' p|'s}'l~L-łsd ;-:sst:j:s's¬s-'s11is liL111':cji sgrsg|1jącsj sum ps}¬:s2sm› pnr±í:å'.'¿*i.
.. - Pr'L1:‹'.f-r1tm;1¿1‹.i:¿i;±ł¿1nisf11nl{±'ji :1pr~j11,11|j;1Ł'f-„'j ~.'.-' 1*-s'stş¿¦"s5ĹĹ_}l_
1*: i 15 E5 I . -'K W *Y 1 ii
3' is
H' f.'__;› i
W sił;-fl~;‹.:i‹=: t'r:¿.__=,f':_'1 z¿1pytsr1i.¿1 znsts|'1i¿=.' :›'.w1'c'.Ê›r;'ü1'1.:„1 |‹~:r.›łmm¬i:;i zawie1'sją'::s ]Ł=.clsi'1 wisrs:‹f., lstúry będzie ref›1's:¿s1'11'r;1w;1ł' ssilmüwsny w.i‹s1‹: [1.rsr.c.i1w1"1.i]~:|:Í›w :s t¿1br_'1i pr-ac'.c›wnic:y_bhp. Psdczss ül:›li.L1:':sr1i:i sliiłystylc smicznir bs1'dzi±='.] pi'¿'.yds'l'1'1ą i1'|ÍłJ1'1¬ns‹;ją może slssssć. się ŚrĘfc;l1'1i.;1 w.i.ifl‹:i.| pi's'.:üw11il{iüw f`irr¬r1y. W tyrri cfslu p‹:~sł'L1żyn'1y się słcT›wf'rr1 k1L.i':;':›'..c;›wyr1"i AVG (susrsgs).
liys. Hf›.*J. F|'‹:':±'.i:i1l¿|L'j;i Łlzisłiiniii fL111l{cji wylicssjącżüfj śr:-;±c|r|.ią w liüstgrr.-r1'śQL I -P
r
May c.1|~:i'r:s]i':; wiek iisjstsrssisgn i risjrri-icscissffgü p1'scow11il‹:s, püsiiiiêzwriy się fi.1i'1iu¿1¿11'11i MAX Í MIN.
F
lłvs, I|'=.IH. [*1'i:zf:11tscjs dzāisłsnis f"1.|r1L:cji MAX i MIN W I"-*üstg1'f±SQL
W diiżych. Ł'sI.1s|sr:|'1 _p1':‹".ycis|'±'1¿=i bywa ifúwriisż fiinlfccjs [¬_11':‹f..'.='i r.*.:'-‹='.¿-ij.zi'::.z-1 CÜUNT, l
Rys. l'.'i.I I. F'ri;".«:‹si1Ł¿u;j¿1 :‹:sstüs':3=wsni:i f"|.i|'¬ikCji ag;grfsgLij¿'1r;‹:'j (ĹÍÜUNT W [3'nsrgI1'i'?SQI.
Iesli W tsbfsli nie Występiiją wsi'Łc1siźi N'ULL_, müż-ż=n1y 1:›':::słL1żyČ się risslępiijącą i
iiys. Ii"›.i_-Í. I`1'|'~'.¬'.'.I±'.fr1¬||:iifj..'i 'sëisiusibwaiiliei fL1i'il«:':_'ji ¿1g1'üg1.ijącźiłi (.ÍC_ÍI'UNT W PUsŁgH':SQL
36
I
IIII
I
i
I
II'|
III"|
-Ii
i
I
II
III
II- I.
|_II
III".
I_III
I
I!
II
I
|
Funkcje daty i czasu .àiialegicziiie du pnprzednicłi iia11i~:cji. Fiinkcje nrieracji na datach Lizyu-'anie są de niani' piiluwania datann. W bazach danjfch Funkcje daty' i czasu znajduj..-'j zastesnwaiiie, gdy' np. trzeba wjisztikac 1:›racewnii~:a Firrn¬I',' na pcidstawie ebiirzeri czasu (zaległe dni urinpu. iiczba dni de emer'I»'tLu¬¿.= itci.}Kazda baza daiufcii 1¬nü1".e miec niece inny' zestaw iI1.n1|~:rji daty' i czasu, diategci warte nie i1.']|z‹u zapnznac sie z cie1¬a1n1antacj.:-j.|ecz takze siedzic zmiany' pc' wjfdaniach itelejnej wtnsji ej:n'cig1'a n1t.ns'an iafaby pc¦'znac` a i~;1-iialna datę w P‹astgreSQL. i.izy'wan'ij' uastepujacege pulecetiia:
mejabaza=: SELECT current_date; H'.'.~c. ia 1 E '{ÍII'tit';«'.j.'ta1'iir' aktualnej datj' w bazie Fnstgre5QL
Czas iizj-'skiijeruş' za pcnnecij lI11nki.'ji ru1'ren1_ti1ue.
its ¬. ii.~.`i :_ í_`}dczjf'tan1ea]
Fiunkcje n"iaten'iatj.'czne pezwaiaja na ':ic:l
it'..~. if» I='.- Übiiczenia na ciatacii przj' iizig.-'ciu tI|_1n1‹:cji ajze w I*nst1't'E"šQi.
Feiiij' epis funkcji daty' i czasu dla |*estgre5Qi. i MySQL znajduje sie w dnimrnentacji. Ptw.-'j-'zej jarzedstawicine j¬n'z},'i‹:iadj' uzjfcia IIuni¬:cji.
Funkcje sterowania przepływem Pestgre5QL. pedriiinie jak M155 QL. zawiera Funkcje sterewaiiia pr'zepł},'wt+111. Mezeinjf wj-'iccri'z¬j»'st¬s'ac je w p'a1ece1:1iach SQ I.. alajf' tipryiiiaiiztiwac jajctaiiia i p1'ec}'ztiwać w¬I','ruk1-
Ietlna z |Innkcji sterciwania jarzi-.=pij"¬a.'ein jest CASE. P|'ai=:!¬jfrzru-- iizj,-'cie tegci peiecenia przedstawiają penizsze iiuslracje. Sieiadnia jżiulecenia tci:
:í'_ I
CASE warttaść
WHEH
[warunekl THEH wynik [warunek] THEH wynik
[ĘLSE wynik] END
Rys. itiiit. F'r't-'='.-n=.'rttacj¿| z.awartr_tsci tabeii z:-iwnriiiii-;r_`n'."
His. iiii Ĺ.-'. Frzykiaci zitstctsciwattia funkcji sieruwania [:|1'zepiyWent
Üptwjcz CASE My-'SQi.. nbslttguje takie tintkcje jak: i`;|'hei;j iu Í! iI'iitikt'jt' t_:|_"it-;Šit¦j_IIj1.'-„';j1;1r¿~ 11;'-3,32 |".,,1yIf5jI:j|_ *ii
Å
I
|F[j
iF (Warunek, wyniki, wynikřlj - gciy Warunek jest sjaeinieny. Funkcja zwraca Wyniki W przeciwnym wypad ku Wynikž.
lFi"'iLiLL{} 'W
_ lFNLJLL{Waruriek, wynik] - funkcja zwraca Wynik warunku beciacege |:iie|¬W'szyn"| argumentem. gciy Wynik jest rižizny ed NULL. _
I
NULLiF{j
I i“~iLiLL|F{waruneiti, warunekłj - Funkcja zwraca NULL. gdy jaedane argumenty są rciwne.
I1
s i> a. u-« u-Y s i-i;.-ati; ti. - "' t ia 1. Cu tu sa Fttnkrje tekstctwe i ntate|11atyt'zneÍ'“ 2. Pedaj przyk1adt:'we zastnsr:›w:-inia dla funkcji daty i czastt3. [Ju czegu sitiza iiutkcje siernwauia pi'zej1iy'wei11?
sali
l¦ -`-.
'
`1=I
il
l
'¬'I" “-5 l l' l'- l Ii
l
,-"I
l¦ 7”
l
Instrukcje sterowania lt dostępem do danych I A GA D H I E H IA
I jak nadawać i odbierać upraumienia do tabeli' I W jaki sposob można zarządzać uprawnieniami za pomoca konsoli SQL i programow ułatwiających administrownie bazą danych?
Przyznawanie i odbieranie uprawnień do tabel aby przydzieiać uprawnienia do tabei, nalezy dysponować uprawnienia mi, ktore pozwalaja na wykonanie takich operacji. Najlepiej skorzystać z konta superuzyrkownika, aby moc przećwiczyć operacje nadawania uprawnień dla kont innych użytkownikow. Do przyznawaitia uprawnień siuzy instrukcja GAAHT, po ktorej wyliczone i oddzielone przecinkiem są poszczegolne uprawnienia: GRAHT SELECT, INSERT, UPDATE, HELETE, TRHHEATE DH TABLE nazwa_ tabeli to Witek;
iyiozemy rowniez przyznać wszystkie uprawnienia za pomocą instrukcji: SHAHT ALL PHIVILEGES DH ALL TAELES IH SĽHEHA aehamat_pierweay, public TD Witek:
C'-dy zachodzi potrzeba przyznania uprawnień SELECT tabeli o nazwie tabelaż dia wszystkich uzytkownikow i roi - nawet tych, ktore moga zostać utworzone, stosujemy instrukcje : GRAHT SELECT DH TABLE tahelafl TU PUBLIC;
W tym wypadku słowo kluczowe PUBLIC odnosi się do przywiiejow. ktore zostana przydzielone wszystkim użytkownikom - nawet tym, ktorych konta zosta na dopiero utworzone.
instrukcje jezyka SQL pozwalają rowniez na takie przyznanie uprawnień, aby uzytkownicy mogli przekazywać je dalej innym użytkownikom. W tym ceiu stosuje sie koiistrukcjęz GRAHT
SELECT _.
INSERT
ÜH
TABLE
tabelaž
TD
Wi tek
WI TH
GIŁAHT
ÜPTIÜH;
Na dalsze przekazywanie uprawnień pozwala instrukcja HI TH GRAHT tII|P'I'IU1'-I.
Odbieranie uprawnień Aby odebrać uprawnienia do określonego obiektu, np. tabeli, stosujemy słowo kluczowe REVÜEEĽ EEVÜHE GRAHT ÜPTIÜH FUH INSERT
,.
SELECT DH TABLE
nitek: EEVÜEE SELECT ÜH TABLE Witek FRÜH PUBLIC;
ta.i:¦|~ela2 FEDH
|->r.ii:is'i¬a×.i'i |r¿tz'ri-':.»›. sol
_
REVÜIĹE
.ALL
PRIVILEGES
l
FROM Witek;
ÜN
ALL
TABLES
IN
SCHEMA
l i 39
nazwa SC'-hem-Btu
'
_
Moze zajść konieczność określenia uprawnień do wyliranycli kolumn tabeli. Wowczas Stosujerrty kon stru kcję:
±
GBAHT SELECT
5 l
(ic1,.imie,naEWiako) OH TABLE tabelaż TÜ Witek;
!_
Griarir sELEc:T (id,imie,naaw.:Lako) on TABLE tzabalaz To wita]-z WITH Gaairr oeTron,l GRANT UPDATE (imie) , SELECT(naEWiako) ÜN TABLE tabela2 TC' Witek;
:_
f GEAHT ALL PRIVILEGEE (id, imia,naaaiako) on TABLE tzabalaz To ' USER Witek;
l
oaanr U1at›ATE(:i.mia) on TABLE cabalaz To PUBLIC.:
¦
Aby odebrać t_tprawrtier.tia, stosujemy dokładnie taka samą l-=:.or1strt.tkcje jak przed stawiena powyzej, zamieniając słowo kluczowe GBAHT na REVDKE oraz TD użytkownik na FROM użytkownik, np.
= asvoirs sEr.EcT (±a,i_mia,nazwiaka) on TaaLE eaeaiaz aaon wiesz,,
Administrowanie uprawnieniami za pomocą narzędzia pgAdminll|
5
j ¿ i
Aby indywidualriie zarządzać up:rawni.eni.ami dla poszczegolnych uzytkownikow, musimy przed rozpoczęciem pracy dokonać zmian w dornyślnej konlIiguracji narzedzia pg.Ac.l1ninIII. W tym celu wybieramy Opcje... z rozwijanej listy gornego menu Plik.
_
l
' Piik Edycja i›i.ii:yca_i
"_
D-Ü'=lfil 55"'-"'°"'E"i" '1"
_
_;misją 11.5.,-,j.;._,_
-=
- '
-
__
I
'_
' -_ Ê- ,..,-_
'f
._
'- '
_ , _. _,-.'~'.; .r-_ _ '
-' "
I
_
if ii
iłys 'i?.i. Przygotowanie narzeclzia Pgf-Xclmin do modyfikowania uprawnień uzyinikow
l Dla wersji PostgreSQL 9.2 w zakładce Pozostałe UI nalezy zaznaczyć opcje: Wyświetlić Llprawnienia Liżfikownikdw.
t.S""" _ _ j Przeglądarka
`
:-:F
'
_
.a.a....a
__
_._ j___Šc,„z,„ h|„I_,I„_E_
_ Narzędzie zapytania El l -Edytor zapytania Ĺ_a:.-.__3ci_1_-_ mjüyy _i .Giatkawynikow
tl .j
Plikzapytanta
_
"
aaa.
-'Właściwości
: ".I-_.s ;:t¬. -3'
Ę
' I_
"
_ _
17 zawieszania uz.unit¦=ta.auai±u
_
-
j.¦'i'j¿|.¿,-3
`
_ :_ .
._
:
_
_ '- '
._¿_: ._
'.
_. _
'Nic _
_
'
'
__
"
1
5:1
_
-. .'
I
Rys. 'i?.I:'.. Zaznaczeriie' opcji ¬ Wyświetlić uprawnienia uzytnikdw
I _-e-_i ""¬-I -
--'S1.'
:řS.':
_
:--
-_
.___.
tx _
|-
.
¦
.
_
t
_ '- "" -'
._ „ .
_
- -_
__ _ -
'
I
_
t 'W _
' _-_ '_
-
_
Í 1-- ._
_- __
-. _ t _ W W ._ _` "
llĘidś'riła±an_ia po
_
`ai..iar|jiz-:aia,t_ti
IIIII IIlIlII-IIllĘIIlII _ _ __ _ aać_i'.'giłości_\'yośc_I |,'._&i;i|a'l_'r_._ł;_j_1_ p_o_dyiukrotn_y_m_itljipŠúĘ_ci_u__yya_d|:¦Ęi;j_wjn_-" -F j:_¦y_¿-,›|¦¿,;_jI|`j„|._.',i¦|,;-,_;j -¿ :_-'_ _
'
¦--l.JlL|l¦|itii^ir.=
"
. W __
I' ewa-±a'=waaw-a=_~ wiata.` ata-La'_ " I '" I ¦
_ - _ _ 'Jr
-
'
_
I
'rj ._
-_
_
_
| . I|"
ft Nastepnie z prawego menu zaznaczamy tabelę. dl.a ktorej chcemy zmodyfikować l tztprawnienia, i z menu kontekstowego Wybieramy właściwości. Okno Właściwości tabeli zawiera zakładkę Uprawnienia, ktorą wykorzystamy do modyfikacji uprawnień dla
' I Í
Ę 5j
H.-"tI,-""1
I.i_"'tl`~i”|i`_`l-I
I
.“'i"1`I"iIlI|'5I"-'l`"|'I I'l_="tĹć
IJ'-'7'iÊ`~i`i'iIlI
wybranego użytkownika. jeśli do tabeli chcemy przydzielić dostep np. użytkownikowi Witek, wowczas W polu Rola z rozwijanej listy wybieramy tego użytkownika. Kolejną
czynnością jest zaznaczenie uprawnień.. jakie chcemy przydzielić, a nastepnie kliknię-
_ _
cie przycisku Dodaj ,i'E_'mień lub Usuń, Üdbieranie uprawnień odbywa się rowniez przez wybor uzytkownika tym razem z pola, W ktorym na ilustracji widoczny jest użytkownik poatgrea. Po zaznaczeniu uzytkownika, rowniez za pomocą opcji Dodaj;'Zmieri, aktywujemy wybrany zestaw uprawnień. 5 'Ü public
17| aztasana-aa ttii -
Domeny tüi |=ŻonFi'|;||.|ra':1o FT5 [[ii
H sazwrai Frsroi _
- 'Ê Paiseiy Fiātbi
_
. -'Ęs istnieja roi 'Ę seiaervaßtüi
5::-oI:r|o|'ry PTE lül
' I E
Tabele 'iIT"¦| 3 r'-1| Ê E
r:'_l=-Hi iÍ'-ii iaiia-|
odauiuz Bior-
I
-ie i"! ora'c_
I
I
E I'l uczmir
l"""'I"l5`i'F"'i"'l"~
a ei asa
E iz' aus
__
"
--1'
_- 'Et' Fwlsfiar si waw iii Ü: Flepłication 5I=|:|'ny
I__I____I_m_____F
'=;'b'=|e_=H Fltzisd
,___.___
katalogi '¦Ĺ'i
__ ____
5|IlIl"fl¦I"
'I
Ę Hnzszerzelaa 1¦2¦|
ęsti'-tioetii
__ p,¿|p,[|.|;¿|_|u|-| 5,1-W
I'
_
_
¬.›
'
~z-.ana-ia taaa tzj my Ftol |[iJ]'
-ajsmnwmz asia iz) nastaw
.aa
'
ā
I-tys- i?__i_ wybranie obiektu (tabeli) w celu zmodyfikowania uprawnień E 'Ii-|'li|¦~I|-i |_¦-i:Hi¿'|-F'
_ I'-ll '-I--
1|
o=i=«ioa'lfI1ea±i~=a'i¬i-i'.iLü'=_ Itwrrreloaanearul-'aaa-usuwa Uta""‹"'=|"!""l" |Bai'¿.l.!.I
_
s.=_...t.i.-:.i..._-..,._. postgres
afwdüzt
- -¬¬¬
-_ _ „mig 1 F
I
_
weak
F _'sa'.ircr'
F wita iauat' a-wron.
'F
I _ _l'.';wr'ri+t't;i=;ii;riii-_ti'i=fnt:iii
j
I
'F' -ririfin srranrorn-.ati F F aus F
_F
_
I" win! iírtarn oifrtori I-` Wire ta'-i`.Širii' iai'ri'=-:.r.i =l" Wir'-i raaat-cerifyiz
_'F yi'ii±rs1ianor1ioii
Rys. II-F.-i-. ¬w'ybranie roli, dia ktorej zniodyfikujemy uprawiania
_ i
rioosrawy iszrza sot i".ĹÊ"-E* Po wybraniu właściwości mozemy precyzyjnie wybrać uprawnienia dla użytkownika do _ia_be1. W przykładzie prezentowanym na ilustrcji jest to tabela goscie.
i
sraawoz swoją wlsoziş
1. Za pomocą jakich komend nadaje sie i odbiera uprawnienia użytkownjkonii' I 2. Wymień funkcje, ktorych dotyczą uprawnienia.
5. Czy użytkownik niebędący administratorem może nadawać uprawnienia innym użyt|
ltowriikom?
'
.
ł
.
| l
'. I
|_
'Ü
-
1|
-I
l
l
_I.
.
. _I .
I
_
|
I..
I.
.'
.
l
I
.
,'
. _
'_
I1
I
I
I Rozkazy języka SQL, tworzenie tabel i operacje _ na tabelach, wyszukiwanie informacji i ich zmiana I AG AD H I E l""l I Å
I jak stworzyć bazą danych? I jak pracować z tabelami? I Easady doboru klucza obcego I jak wprowadzić kontrole spojności w obrębie tabeli' I Tworzenie bazy danych za pomocą narzedzia Pglitdminiil I Definicja truncate I Ügraniczenia w postaci klucza obcego I jak modyfikować dane za pomocą klaozul SQL?
Tworzenie bazy danych 'w' systemie zarządzania bazą danych mozemy tworzyć bazy danych, W ktorycit obrębie mozemy utrzymywać tabele. W SZBD iyiy-'SQL bazy danych mają lIorme katalogow. a tabele są plikami znajdującymi sie w katalogach, ktorych nazwy pokrywają się z. nazwami baz danych w iyly5QL. Ptby utworzyć baze danych. np. auta, uzywa my polecenia SQL CREBTE DATABASE auta;
koc. lšsi Utworzenie bazy danych W IyiySQl.. za pomocą instrukcji SQl_.
iii.-~ i'¬'_.t. 'w'y_nik poicenia :".ši-i~'..TW' iJ.i"›.Tr'iii.=!'t5E5
:i
' '
'
My-'5Ql. nie odroznia W'ielko:=ř.-:_'i liter, jednak dla lepszej przejrzystości kodu polecenia SQL nalezy pisać wielkimi literami. Aby uzy'skac liste baz danych, ktore są widoczne dla naszego konta. uzywamy' polecenia ŠHÜW DÄTHEBSEE.
jeśli W bazie danych, W ktorej aktualnie pracujemy, znajdują sie tabele. ich liste i'no'.i'_emy' odczytać za pon1r.a_';j polecenia SHÜW TABLES. Zanim _jednak uzyjemy tego polecenia. musi rrty' wskazać, ktorej bazy' da r1yc.h ono dot¬y'czy'. iyiozerny to zrobić. przełaczając sie do poiądanej bazy-' danych za pomocą polecenia IJSE. Dba polecenia powinny' być w¬y-'konane wotlpowiedniej kolejności - najpierw przełaczenie sie do określonej bazy' danych. np- test. a nastepnie wyświetlenie tabel: USE auta:
liy's_ II:!i.:i. Połączenia z liaza dar1y'ch auta SHÜ'i'il' TAELES;
Rys. iii.-i- Polecenie Si-liÍ_`i""lli' T_fi'tl`il.E5 Wy'dane W celu Wyświetlenia tabel znajdująi_'y'ch sie W bazie, Ikiorzj jestc'-tiiiy .ikttialnn pni jc.-żeni
Moze sie zdarzyć. ze W wybranej bazie danych nie ma tabel. Zwłaszcza gdy' dopiero utworzylismy baze danych prawdopodobnie jest ona pusta Aby utworzyć tabele uzywamy polecenia C'.BEA'TE TABLE Polecenie wymaga aby konto osolw chcące] tworzyc bazy iianyclt 1 tabele mialo odpowiednie uptayy nienia. Ezczegołowe informacje na ten temat | zaltlieszczono W rozdziale TF. FHITIĽŁAD 18.1
Przyjmijmy. ze utworzymy przykładowa tabele na potrzeby komisu samochodowego. Tabela bedzie nosić tytuł pojazdy. a atry'butami aut bede: numer. marka, rokPzodukoji.eenaaprzedazy,oenaāakupu. instrukcja SQL. ktorej zadaniem bedzie ut.'worzenie takiej tabeli, bedzie miała postać:
lira. IE; '_i_ Utworzenie tabeli pojazdy' za pornocą instrukcji SQL
93
I
Í-_
|
|.".."
'|.
'|
fak łatwe: aaiiważj,-'‹'Ź. zaraz. pa iiieiiişyfiłcaleiracłi al1'§.fĹ':i1ie›'„~„' |[1¬a11i1n'u1} ia-'5-'aiepiiie akreś|enii'. 1¬_'.']¬n1 zzlarigfeh iiietiiiicii afrg,f'l¬.›nn1- AU“I'C.'_I1~TCE„EI-IEI~IT neiiacaa ailkmiiarşfcaiie wj,"[:reh1ia.r1ie' wartüśzci l~'„ulLm1r1¦.' pn fludaliiii Lznlefillej l'f.r':1tl‹:i [;iL1t:1n1.ały'iż:':r1ir;r n1.un¬'.*.-
miaea się k'a]innna}. PHIHARE EEE m:t1a=:::.a. że at1'}„'Ln¦¦ nunier będzie kliicaeiii gÍú'»"-«'I'|},'J1"i tabeli auta. Fiizuatałe typy' i_lan1„'c;h i ich ü}'n:¬; aiiajduje] Hit; w i'n:t'¦;1ai:±le 14.
Pe i1'fw':ir:':e1ii11 fraheii nałeršrjzf wi-'pełnić ia danynii. Lf:=:'¿,w'i'aiiij'.' cie: Iegn püiefiieiiia SQL INSERT. pn kŁi:ͬ›r'¿f"ri1 :‹:naid1_1ie Sie' IHTÜ [¶J1'e1':Í}'l-:Litwał‹;a:ai1jąĽ¬j.'} w:~:1';a:¿L|ią'L¬¿„' na tabele
püiziadş-'. cła ktcnei dane he-da w's|:;1¬'."„'iani?. PüIe'c‹'¿'nie SQL. wstawia dane i‹„i:=Iei11'¿i'c}1 1':1'ütel~'. {v'.-'iereaşf tabelij.
IÍI1-
ii”.--rz-. Ljyciipiełiiiiał;i11-‹„=Íii];i:1}fT1|i
.¿"iŁ1¦,-' i:›‹:1=::':j,"'ra|ć izlane, peełi.1jąui':nn' air; ].¬›e'leceniein SELECT. Uniii:'ea':aani3.= pe' nim Ł-;j,'r'|1|L=i_il 1~LŁĹ¦'r¬¿,' będzie uüliusił się Liu każdej |-;uÍL1|11nj.«'. I'=ĹuJe_ir|;.«'|I1 Hluwenl l-¬'.lu|::7‹.tn".'q„'rii SQL feat FRDH - w'al':aI11ją'::e na tabele, I która-*i :‹'.aw;1r'1n:i{f knlunni nia
być ~a'}„'świei1aiia. Pulecenie SELECT * FRUH pujazdy' in'.';i:łe1ni' praetłLiii'1aL'z';ai T1El]i1'?51'='1'~']Ż}'¦I1|F1¦'EiÊE||i'-Z1Ż› ,.,.E*ÜI'¦-`¬Fi-.Ż WSZYSTKIE FĘÜ'LUI"fl"Í`Í E TH-EELI PÜJPLEDY".
Hi i
"J'if'¬ş'śv'.'ietle1iie aa'.'.-'a1'tn:›śr:i tabeli püiaadş'
ł{iau:»:i.1]a SELECT ae:«:¬.'f:1lu na iiżytie iiherałńw. w}':'a:ifen aI'j-,"'r1ni_=1j«'r::".in=‹żl*1. a|iaarj'w il-:mil-:a1e11=:ji. 1"c›nie¬.'i'aż pnfłueas l¬afm'aenia tabeli 11:":1„'li.=.f¬.1n}' AUTO_I1~ICEEMEHT. wz-:tawiane w kaleiiig.-'Łh l~:n:›t1»:af.:|'1 wartüści I'-HILL dla atrşfbiitii numer aüatały aa:¬'tapii'.1ne przez eyeteni ai|tmnal¬_,-'Cana rnnnerarcją wierszy. jak inníłna zai1¬.=~.'¿|ż§.=ć na pni'-Q.-'ż5z}'ii1 p1':".§«'kładrtie. ńrlaługíiźziiie, Chcąc ze:-atawić niarl-ii 1'Jc'1j¿i:=':'Liú¬i‹'‹' i Eeriş' '¿:a|‹;u]1'ii.~w. l1'1n;{e21'1'1}f
ia'ş'bi':1ć. rşfike dwie kalumnşü
'--- 'í¬ W "F."`*ƒ.~Í4¬'r~'ie'rIi;=nie aawa1't=J±ici ¬a'jfh'ra|11i'c|1 1-aalinnn 2 tabeli pfiiazelş'
i'-'i 'i ti ri ā -'\¬a..'i j i_-:
',- 1.;
tą ijia
Ź-Ia:-;wy ;in'y|_¬ii.1teiw pewitiny tżiyrfz i'iddaiel':_ine p1'żeeinl~:ie1'n. Meże sie żdarżytř, że I:'edżie|'ny eheieli wyszżut-:ae satneeheidy, let‹ii'yr.tł'i eena ż.ali:it-iu jest wieksżsi ed 5t`}Ü{'}. Użyjeniy de' Lege et-111.1 dwóch l‹:eit¬nen‹:l SQL: SELECT LWHERE- WHERE jest lelattżttla SQL 1.n'ntf›żI.iwiająea wyl.iúi' interesująey'ch nas ktetek (wiei'sży}. Wan.1n|‹:i le±gie.'żne_. które W niej iiniiesżeżatny, sptaw‹_ls;irie sa dla każda-fg-:J wiersza. jesli wartinel-¬: jest spe-łiiieny, wie1's';'. 'żestaje wyswietlemy (trat¬ia de wy:-iitni żapytania), W p1.'żeeíwt'1yrri wypadleit wiersz jest pei.rnija.n.y. Opcja WHERE musi wystąpić |.ieżpeis1'e*d1'iie jżie lek-tti:żi.1|i FROM.
[tys IH *J Wyswietli"iiie |¬~¿|'ute|-: aut. I-:.t":Íirye|i cena żal-u.1_[>i.1 j.n':żeI~:.r.'eeży-la 5Üt`)Ü
Ojüeratery, .l-~:teit'yeł'1 t'i'iiiżfrn'1y użyć, Wyniieniene są W reżdżiale 13 (,,StrL1J«;ti.n'alny jęsyli saj_¬..›ytan 5QL”). Zawa1'te›s':." Iteliinni wy'n1ieni.e1'iye}1 po |‹:lat.1żt.ili SELECT ż ttwsg]i¿rdi'1ii_1i1ien] WHERE żestaje wyswiet|r_i1na, niinie eha pnleeenia deityeża nžiżnyelt leeltiriii-1 ta |_:›e|i. Na j_:=i":-zyleład in'teresi.iją nas |'na1.'i‹.'i pejaL›:c1‹3w, |c,1'eir'yełi eena żal.-¬~:11pt1 jest w.ięl‹s±‹:a sil '_it_)t.)Ü. l<.l.au:żL.t].a SQL i wyni|‹-'.; żapytania będa inia-ty pestae:
lłş-'s. ltiltt. Wyswietletiie rnarek aut. ktifiryeti cena '.=:a1‹:uptt [.1t':żel‹:|'tiit?.:-'.yta “ŠÜDD
Tabele w SQL .
Każda tabela sawiera wiersże i l
Rys. 13.11. [Jnsti¿=.j-i ilu t=_='t:|ji'te~i'a tekstnwt'rj_gi'i :ż j_ii_i'_.‹›,'.ii_i1'1'1t1 peileceń haży ‹:la|iyi¬h
~
HPHH
.'
-
'I
i
Edytor tekstowy zostanie uruchomiony bez wzgledu na rodzaj systemu {Wi|idows - Notatnik ," Linuz - picoƒnattojlgeditj. Tworzymy tabelę za pomoca polecenia CREJLTE TABLE. po ktorym wystepuje identyfikator tabeli. np- CREATE TABLE test:
Klucz podstawowy W bazach danych kluczem podstawowym nazywamy kolumnę, ktora zostala wybrana w tabeli w celu jednoznacznego, niepowtarzalnego zidentyfikowania każdej krotki. klucz podstawowy [primary lrzyj zostaje weybraiiy spośrod istniejących kolumn w tabeli tkluczy kaiidydujacyclij lub może zostać utworzony jako nowa kolumna przeznaczona wyłącznie do tego. by pelnić role klucza głownego. Üperacja wyboru kolumny - klucza głownego - jest przeprowadzana przez osobe tworzacą bazę danych. W języku angielskim wyznaczenie klucza głownego nosi miano primary key constraint - co doslownie tnoze być rozumiane jako: wymuszenie klucza głownego. W wielu serwisach internetowych rejestracja oparta jest o adres e-mail, ktory może sluąfć do jednoznacznego identyfikowania użytkownikow, gdy spełnione zostana dwa podstawowe warunki: 'tj kazdy użytkownik musi mieć jeden adres e-mail, Ej jeden adres e-mail nie może być ws poldzielony przez dwoch lub wielu użytkownikow. W takich przypadkach kluczem glow'nym tabeli uzytkownicy rnoze zostać kolumna zawierająca adresy e-mail. CREATE TABLE uzytkownicy { amai1`Varohar{3Ü} PRIMARY EET, imie Varohar{25}, nazwisko Varohar{25}
}.=
In-i 1.'-t tz- Tworzenie tabeli w Fostgre5QL za pomoca instrukcji SQL Podczas tworzenia tabeli w przedostatniej linii kodu nazwisko Varohar {25} wystepuje brak przecinka. Przecinek używany jest do oddzielenia kolejnych linii kodu, natomiast przed zamknięciem nawiasu nie jest stosowany. Warto zapamiętać. że PostgreSQL po wyznaczeniu klucza głownego automatycznie nakłada indeks na kolumnę klucza. o czym informuje nas komunikat:
H '- L. I ~- I ł- l'iornunil-zat' po utworzeniu tabeli - autoindeksowariie klucza głownego Role klucza głownego moze pelnitf więcej niz jedna kolumna, dlatego przesledżmy sposob tworzenia tabeli, ktorej dwie kolumny będą kluczem glownyrn. Tabela będzie zawierac zawodnikow piłkarskich. a kluczem glownym bedą kolumny numer koszulki oraz data urodzin zawodnika.
11.
Rys. tii.l~1. Twoi'zenia klucza głownego złożonego z dwoch kolumn
Klucz obcy Klucz obcy to kolumna (lub grupa kolumnj odnoszaca sie do koltnnny lub grupy kolumn irinej tabeli- Klucz obcy używany jest do propagowania integralności reicrencyjnej pnrniedzy dwiema tabelami. Dzieki temu poniiedzy tabelami mozemy okreslić zwiazki. np. jeden do wielu.
Ctznacza to. że wartosci kolum ny lub grupy knlunm bedą mialy odpowiadające im wartosci krotek drugiej tabeli. FlI'l'l[Łll¦I' 13.1
Związki te możemy prześledzić na przykładzie. W tym celu utworzymy dwie tabele: |
Llczelni E*
Ityi.. |.'-'L li Tabela t.tczt'lr|i=' zawierająca klucz glowiiy Llcziiinwie
Rys. llittti. Tabela uczniowie zawitmajtjca kolumnę kod_nrzelni - klucz glowny
jak ilustruje przyklad. kluczem obcym w tabeli uczniowie jest pojedyncza kolunma kod_uczelni. pelniaca rolę klucza głownego w' tabeli uczelnie- !~¬i'lnwo kluczowe REFEREHCES oznacza. kolumna koc1_uczelni w tabeli uczniowie pobiera wartosci z kolumny koc1_uczelni znajdującej sie w tabeli uczelnie. Tabela uczniowie l:i‹±;d'.-fie zatem tabela odwołujaca sie do tabeli uczelnie. Podobnie koltnnna l'coc1_uczelni w tabeli uczniowie bedzie kolun'|nt-1 odwołu-
jącą sie do kolumny koc1__uczelni tabeli uczelnie. Pciwiazanie obu tabel spowoduje. że do tabeli uczniowie nie bedzie można dodać ucznia. ktory posiada kod_uczelni inny niż te. ktore zawarte w tabeli uczelnie-
.
lt -“i -i `t l t -fi N "i t l i l H 'T' .t-i l l'. lvl "'|` li ""'. -" l-' .-\ bt *i 1- I I
iKlucz obcy tnoże być nie tylko pojedyncza l'r.olt-tn1na, ale grupą kolumn. Taka sytuacja rna miejsce, gdy klucz glowny tabeli, dla ktorej tworzymy zwiazek. składa się z kilku kolumn. Klucze olwc.‹'.=' t.1ż.ywa11e sa do wprowadzania wiezow spojnosci relerencyjnej. jezeli tąabela posiada klucz glowny złozony z kilku kolumn -- jak ili..1st.'.rt.tje to poniższy przykład - kolumny nurner___inc1eksu i typdkonta wspolnie stanowią klucz glowny:
l-tys. IH. t?. 'l.`a bela stt-ide1¬ici_kont.=.'i zawicfrająca klucz glowny złożony z dwoch kolumn
Gdy utworzymy tabele studenci_konta. 'n'i'ożei'ny w łatwy sposob uzyskać jej opis za pomoca polecenia konsoli psql - \d. co ilustruje poni'.-"-szy przykład:
ttys- tt".i.itš. Üpis ta|.ieli studenci_konta
Łatwo zauważyć. że tabela studenci_konta ma klucz glowny sk-łaclający sie dwoch kolurnn: nume:r:__indeksu oraz tyjp_konta, o typie Integer. Lltworz.rt"iy teraz tabele studenci, ktora odwołuje sie do taliieli studenci__konta.
I-ti -._ 't H. I ft. `l`abela studenci ziiwie|'t'ijat.'a złożony klttcz ol¬-'try
Należy pamietać. że wartosci kolumn student__indeks i student_konto__ty'p w tabeli studenci nntszą odpowiadać wartosciom l-tolutnn numer_indeksu oraz typ_konta w tabeli studenci_konta. Poniewaz klucz podstawowy tabeli studenci konta sk-łacla sie z dwoch kolum.n.. kluc.z obcy tabeli studenci rownież składa sie z dwoch koltnnn. Zgod1'icisć. dotycząca .l-:olum n wchodzących w sk.lacl kl1..icza podstawowego z ko.ltnn.nami kluc.za obcego z.acl"iodzi i'ownież pod wzgledem typu - w obu przypadkacli jest to lnteger.
l
li iÍ.i' ii T¬.¬ I l
`~.-if' li'
l li -H' `“¦" li-Ĺ -'ii li t. .i l
Poniższa ilustra.cja _przedstawia projekt dwoch tabel połączonych związkiei'n jeden do wielu- Tabela studenci ina klucz podstawowy składający sie z dwoch ko.l.uini1. Powią.zaria z nią tabela studenci__konta ma ograniczenia, ktore nakładane są na tabele po utworzeriii-i powiązania jeden do wielu, umozliwiają studentowi posiadanie wielu kont, jednak kazdeiriu .kontu bedzie przyporządkowany tylko jeden student. -
I
1
1-
1.
l
Å-
I
|
1
|
1
.L
'
-
1'
'l
' Studenci
'
.şsiiia_asi_iresz_einr
_L__
.-. j
-
M-iiit-'<'='"'."=¬-ii-" 'NT
Ÿ'
__
- “
- t
kciiiuaeaia-yasoaasjzsj intę.isiaaania..yAncHaajzs'j
:-:':'-;-'
I
studian-ei__kon1-ti
L
_H
H
H
-.i¿Fi
.
-::
--
-.
i Ê
'-
llys. ltilll. lliistracja tabel połączony'.'.'ł'i związkiem jeden do wielu
Projekty relacyj.nycli baz danych wyznaczają związki pomiedzy tabelami. w ktorych wobręliiie jednej tabeli może znajdować sie kilka klt.1czy obcych pocl'1r.idząc.ych z kilkti tożriych tabelSytuacja taka wystąpi rowii.ież w przypadku. gdy chcemy pomiedzy ‹;lwien'i.a tabelanii Ai B utworzyć powiązanie wiele do wie.|ii. "l."woi'zyrriy wowczas trzecią tabele, ktora posredriiczy pomiedzy ta belaini A i H. jeśli chcielibysiny utworzyć relację wiele do wielu tak, aby każdy stt.ident mogł' niiee Wiele kont i z kazdego pojedynczego konta mog-ło korzystać wielu stut-'lentow, należałoby utworzyć tabele krzyżową. FIIIYIKŁAIII 18.3
Powiązaiiie typu wiele do wielu przedstawinriy na przykładzie hotelu, w lctoryni każdy z gosci i.noze zarezerwować wiele |'_'.iol-:rii i w jednym pokoju może miesz.kać kilku gosci.
I'
Rys. `lii.l1.Twoi'zi1~iiie tabeli pokoje
ltys. lf~i..ł.?.. Two|'ze|iie tabeli goscie
Powyżej i.itworzone tabele powiązeiny relacją wiele do wielu za pomocą tabeli krzyżowej o nazwie pokoje goscie.
l
"-f'. `t" ll' .-'-'H :`\i T 't`_Ĺ I l l S 't' .*~i"l` lf-'Í lvl Y ll _-f\ "zĹ LÍ1."`\ N Y t`".` l l
Itys. tt:š.}l.i- `1`woi'zenie tabeli pokoje_goscie Tabela pokoje_goscie rria klucz podstawowy id_wpisu, nastepriie dwa klucze obce pochodzące z tabel pokoje oraz goscie- Taka koristi'i.il.-tcja ttrnożliwia powiązanie wiele do wielu pomiedzy tabelaini pokoje oraz goscie, ponieważ w tabeli krzyzowej kolejtie krotki będą zawierać powiązania poiniedzy pokojami i gosćmi. Aby zi.lustrować przykład za pomocą dosć czesto stosowanej riotacji (Ci'ow'sji':et), tluiiiaczone.j jako ,,.kiirza s'topka”, warto przesleclzić go na przylc-l'adzie diagra.mu ER.
tr:t_got.cta trnte-_goscia
': i =
nazu.il5ko_go'5cia
- -
Lr' .
id wpisu | _:I ' ' lll-łł'l'l“'l_l”
I 5 '
ie|_pokoju ' " =' ' ' " op|s_po|':oju '; '
'
l|o'.=.c_la.-:lenek =:= '
lt'-Emilia '
l|o±a:_iiile|s': '-:: .
Rys. 13-24- Powiąza nie tabel pol-:oje_goi'Í-Icie związkierri wiele do wielu - diagram "ER
Dzieki takiemu powiązaniu mozemy uzyskać w efekcie realizacje związku wiele do
wielu, gdyz za pomocą tabeli pokoje_goscie bedziemy w stanie _powiązać jednego goscia z kilkoma pokojami oraz kilka pokoi
jednym gosciein.
Przedstawiony inodel można z łatwoscią przekształcić do jezyka SQL za poiriocą programow MySQL `\Vtirlrl_iei'icli lub l\layicat. l'í‹od wygenerowaiiy na podstawie powyższego inodelt.i przedstawia listing: CREATE TABLE "pokoje_goscie" ( "idåwpisu" varchar(30) NOT NULL, "idgpokoju" varchar(1Ü), "id_goscia" intå, CCHSTRAIHT "pokoje_goscie_pkey" PRIMARY KEY
i
("id_wpisu")
l ; CREATE TABLE "goscie" ( "id_goscia" intå HCT NULL, "imie_goscia" varchar(45), "nazwisko_goscia" varchar(5Ü), CCHSTRAINT "goscie_pkey" PRIMARY KEY
("id;goscia")
J: CREATE TABLE "pokoje" ( "id_pokoju" varcharllü) NCT NULL, "opis_pokoju" varchar(25Ü), "ilosc_lazienek" int4, ”ilosc_miejsc" into, CCHSTRAINT "pokojegpkey" PRIMARY KEY
);
("id;pokoju")
1 I
liii li'i~›'I .IK W `i' jljff. `t` li "\ Fi
ALTER TAELE "pokoję_gosoio" ADD FOREIGH KEY ("id¿pokoju") REFERENCES ALTER TABLE "pokojomgosoie" ADD FUREIGN KEY ("id_gosoia") REFERENCES
l.
CUNSTRAINT "id;pokoju" „pokoje" ("id_pokoju"); COHSTRAIHT "idugosoia" "goscie" ("id;gosoia"):
Mogłaby jednak zajść konieczność utworzenia zwiazlcu, w któryrn do jednego gościa mozna przydzielić tylko jeden pokoj i do jednego pokoju mozna przyclzielitf tylko jednego goŠc.ia (pokoje jednoosobowe). Wówczas tabele goscie i pokoje powinny zostać połączone związkiem jeden do jednego, który mozemy przedstawić za pomocą cliagrarrni ER.
L
1
* ici__pokoju cena_,.ia_=:iobe
.
Id_goscia
;E
-
'
"' I-|::l_gosr:Ia Imie
"
n.azwisl‹¦.o
L
Rys. Ii5.Ę5. Tabele pokoje i goscie polączoiie związl<.ie1'r1 jeden do jednego - cliagrarn ER -
Ż-.
--
.
.
.
I
:-1
-
--
Tylko jede.n unikatowy ic1_gosoia (klucz główny tabeli goscie) może wystąpić W kluczu obcym id___gosoia znajdującym się w tabeli pokoje. Konwersja tego diagra-
mu do języka SQL przedstawia się następujaco: CREATE TABLE "pokoje" ( W "id__pokoju" INT NOT NULL, l' "oena___za_c1obo" HUMERIC NULL, "ic1_gosoia" INTEGER NULL, PRIMARY KEY ("id_pokoju")
l; CREATE TABLE "goscie"
(
"*id_g.=.seia"' Inozosa noo NULL, -- "imiü" CHARIŁCTER VARYII"Ãl`G(45)
NULL,
"nazwisko" CHARACTER VARYII~IG(45) NULL, i PRIMARY KEY ("ic1_gos:oia") , ,_ CUNSTRAINT "ul" UNIQUE ("id_goso:.i.a")
1- ): '_ ALTER
|¿
TABLE
("id_gosoia")
"pokoje"
ADD
CÜHSTRAIHT
REFERENCES "goscie"
"ic1_go$c'.ia"
FÜREIGH
KEY
("id_gosoia"),'
l Kontrola spójności w obrębie kolumn . '
Kontrola spójriości w obrębie kolumn ma zapobiegać wprowaclzariiu danych, ktore mogłyby naruszyć spojność bazy danych lub takich, które mozna olcreslić jako nieprawidłowe.
ll
PnzY|‹ł.Ao'|a.4 _
_I j
Przykładem tego typu danych mogą być wartości ujemne w kolumnach określających wiek pracownikow firmy lub sprzedaz, gdy wiemy, ze sprzedaz towaru była albo zerowa, albo clodatnia (.ni.gdy nie mogła bycf ujernna).
Êl_í`_i" "
_ _______
`
__ _
__
I
| .l J il |
l
102
|-=
. || - ~'-.~¬i'i-ii* '
ti.-H--.i-' =|
1-tş¬_ T%ä.Ętt'i. Tabela roczna spr:".edaz - przyklad na 1-:outrule spoj|1o.'=:'.¬i, w nwsl ktorej sprzedaz ruu.-¬'i lwc wi'.';*!-o_¬'za od zera
jezeli r.lol‹;o«lttum1-' sprzedaz w p1'owadzi1u¿.-' wa rto:~ic zerowa lub ujem na. nie zostanie ona dodana. . P1'zegla.cla1jac opis tabeli w Fostg'„t'eSQl_ za polnoca l~:.':,inir.'ti'¦;l'_','1 itd roozna_5}_:rIzedaz.
rnoztenig.-' zai1w'a'.»':şc. ze PostgreSQLat1touiat¬g,-'i'z11ie utworzy! nazwe dla warunku sprawdzania poprawnost-i CHECK (sprzedaz:-Ü) .
i'tt¬. iii .-*T Üpis tabeli 1'oczna_ sprzedaz
Moz.e zaistnieć s¬_~„'tuarja. gdy :›'.et'l1r.'.e1ii}-' sami t~„";»'bi'¿1c r|az.'-.'.-'e dla warunku sprawdzania poprawności {Ci-IECK`j. np. kon1:.rola_eprzeetazy. W takiej sşrtuacji |:=|:›siii:1'.'_i'|njr sie sloweui kltir;ztiwg.=1ii CÜHSTRAIHT5. ktore pozwoli nam :¬:a1nodzielnie określić nazwe dla wa|'Ltt`|l'tu l‹tontroli l~1olt1t'nn¬¿,'.
His. |ł~t.?_."ł. `i`i.'.'o|-zetiie tabeli sprzedaz aut
Prz.1i'kiat.l przedst'awia utworzenie tabeli s.przecie.z_aut. posiarlajacej warunek kontroli poprawiiosci d:11wcl't w l'¿.o.lu1nnie sprzedaz. "'.`i."a1'L|iic'l¬: nia ztlei"iniu'~.'„';uia1 przez nas
11:tz¬aw3_' {irle|1t§.=i`ikatorj: 1-:ont1':ola___sprzec1az},r. ktora określa. Ju-'r warto.=łci nunier§,'czne w l='.olu¦nnie eprzeciaz tnusza. lwc wiei‹:sz.e od zera lub niu 1'o¬w11e tnieujemuej. Jesli w',':iwietlii'ii',-' opis tabeli s}'_:›rze':1az__aut. wowczas zoliatżzfriiw ro:i'.|'1ice w obu po¬w'ş,-'zsz}.'rl'1 p1'z§.-'I-Łlaclacli.
i'›"`,t 5' .' "¬` j 't, '~_t_. “-,
j j
tj 1-., ..'\ ~-`,t 't 1
Rys. I1*'l.,?.*-lt. Pełny opis tabeli sprzeclaz_aut
Dzięki te.'rnu, ze w konstrukcji tabeli sprzec1az_eut zosta-lo uzyte slowo kluczowe CDHSTRAINT, PostgreSQL nie tworzy-l automatycznie nazwy dla warunku sprawdzania poprawności, tylko pos-luzy-l sie identyi`ik.atoretn 1-:ontroJ.a_sprzec1.azy. Mechanizrny l-:.onrroli poprawności t'i'ic:tga być wykorzystywane w odniesien.iu nie tylko clo kolum ny, lecz takze do całej tabeliPodczas tworzenia rr=_lac_yjny'cl-1 baz danych moze zajść potrzeba kontroli poprawności W obrębie całej tabeli. Pi'zy"kiaclein moze być tabela przechowujaca dane w FrJi'i'i1ie dat. Gdy chcenfiy, aby dane w formie dat wprowadzane do ktorejlcolwiek kolumn tabeli by-zly clatami, np. 01.01.1945, wowczas mc'zeri'1y posluzyć sie konstrukcja, w ktorej ograniczenie zostanie zclefiniowarie dla ca-lej tabeli.
Ryś. litłtt. lfilak-l'ada nie r'ij;'_,i*t'ii'iiczei"i na kolumny
Poniewaz ':_:'ş={1far1icze1'1i.e o iclertt:yi`il-tatorze wyctarzenie-_..'=r.api.s nie jest deliiiiowanr-'r W obrr=,'bie określonej kolt.u'rn'1y i moze zawierać dowolne koluniriy wchodzące w skład tabeli, jest ograr1icze1"1iern or.lnt'_iszacyni sie do ca-tej tabeli wydarzenia. Ograniczenie HOT NULL uzywane jest wowczas, gdy chcemy utworzyć tabele. w ktorej kolumna będzie musiala zawierać wartości dla kazdej l-f.1'otl-zi (dla kazdego wiersza). Oznacza to, ze nie beda 1'1'iri;-zly występować w niej wartości NULL. Aby to wprowadzić. nalezy posłużyć sie l'~:onstrukcja:
Rys. ]Et..`-tt. l\lal~tladanie o,'f_.-_i,t'aiiir.źzet"i Cl-lEiCl'ā is l'*¬lĹT`l" NULL
Ograniczenie NOT l\lUl.l. - przedstawione w powyzszj/.n'1 przykładzie - wprc_iwadzr_mo za pomoca trzech l‹:ons'tru|-::cji: ¬|1í...
, 1
j_'¦
___..' '.1
jj
f.,__
;_ ' jj
j
tą '.,¦ '~.;`|"j` j'-,_.'j
_'.||
i
|
,_ t*._' `|` j_ j
1 imie Varohartoāj HCT NULL - w kolumnie imie bedzie musiala wystąpić wartość: 1 nazwisko Varohar{45} CHECK (nazwisko IE HUT NULL) - inna Forriia przedstawionej powyzej konstmkcji; jeśli dodając nowy rekord w kolumnie nazwisko, pozostawimy N LJLL. krotka nie z.osta n ie utworzona: 1 wiek inteqer HCT NULL CHECK twiek :'›1Et} - przykład ilustrujacy. ze w PostgreSQL, jeśli posłuzymy sie konstrukcją HÜT HULL zamiast CHECK II. . . IS HUT HULL}. wowczas słowa kluczowego CHECK bedziemy mogli uzyć do dodatkowego sprawdzenia wprowadzonych danych. W przedstawionym powyzej przykładzie taka dodatkowa kontrola dotyczy wieku. ktory powinien być wiekszy niz osiemnaście lat. tílucz podstawowy powinien być tmikatowy i nie powinien zawierać braku wartości 1~IUI.J..- W wypadl-;tt ograniczenia HOT HTJLL iiriikttttnyriść nie jest niezbędnym warunkiem. Ponadto w tabeli mozemy mieć tylko jeden klucz głowny, mimo ze moze składać sie z kilku kolumn. Ügraniczenia typu HUT NULL mozemy stosowacÍ wielokrotnie. Podczas omawiania konstrukcji klucza głownego poruszony został ternat wartości unikatowych jtj. takich. ktore nie mogą sie powtarzać). Pracując z tabelami bazy danych. mozetny rowniez stosować ograniczenia do unikatowości kolumn. Przykładem tabeli. w ktorej zastosujemy ograniczenie wartości unikatowych. jest tabela uz1rtkownio}¿'_zda1ni. Wyobrazniy' sobie baze danych. w ktorej przechowuje sie konta uzytkrztwriikow sieciowych zdalnie logującycli sie do systemu. Ügraniczeniem nakładanym na kolinrtne z nazwą uzytkownika musi być unikatowość UHIQIIE, aby zyskać pewność. ze nie wystąpi wiecej niz jedno konto o takiej samej nazwie-
I-tie I1', tr.. Tworzenie tabeli zawierającej ograniczenie l..ll'~llQl..l E
jak łatwo mozna zauwazyć. ogranic.zenie dotyczące stosowania wyłącznie unikatowy'clt wartości kolumny uzyskuje sie za pomocą słowa kluczowego UHIQUE. iilonstrukcja prezentowana w tabeli uz}rtkownioy'_lokalni przedstawia ograniczenie unikatowości nakładane na dwie kolumny: pesel oraz email. Taka praktyka uniemozliwi rejestracje kilku kont mających sam adres e-tnail oraz numer Iłližilíl...
l-ti ¬ iii' 3?? ?~lakla-tlanie ograniczenia na kilka kolumn
Wartti zapautietać. ze Fostgreš-'QL automatycznie nakłada indeksy typu B-drzewa na kolumny. dla ktorych zosta ła nałozona kontrola poprawności danych CUHETRAIHT.
l5*tĹJtJSTA\JU`“t' jĘÍë_'.Yl"Ĺf-\ SQL ¬-
.
_
"
1'-'
....L_-.........._.....
_
_
_
I""s
±
llitttrorzenie bazy danych tabel przy użyciu narzędzia §jjgAdmín I II administracyjne, projektowanie bazy PostgreSQL mozna wykonywać nie tylko uzyciu konsoli, lecz takze za pomocą narzedzia graficznego pgAdminIII, które dołą-
¿_`__f_Ĺene jest do pakietu instalacyjnego PostgreSQL.
I
r .-.Po uruchornieniu programu nalezy skonfigurować połączenie z bazą za pomocą gornemenu - klikając ikonkę wtyczki.
c- .Kolejnym krokiem jest umieszczenie danych konfiguracyj nych w zakładce Właściwości. -„' Nazwa jest wybranym dla konfigurowanego połączenia identyfik-atorem. Poniewaz na-
szędzia pgAdminIII mozna uzywac do łączenia się z wieloma bazami, warto wybierać na_ÍI,`I,ÍEI`-które jednoznacznie zidentyfikują tworzone połączenie. W polu Host umieszczamy
'-: dres IP komputera z uruchomioną instancją se1'wera PostgreSQL. W konfiguracji do-Ĺyślrtej (default) serwer PostgreSQL pracuje, wykorzystując port 5-4-32, jednak jeśli zmo-
_dyfdrujemy tę wartość przez edycję pliku postgresconfi musimy rowniez uwzględnić tę Ęptnianę w konfiguracji narzędzia pgådminltl.
1
li
' --'-'-'"
- wflfi.s5'fşs.'-mi-;_.j j
.. ..
.
_ .. _
.
Żadne własnoicl nie są dostępne dla bieżące] selekcji
ya. 13.34. Interfejs programu pgAdminIII _
' .
'-l
I
II
'-
:
|Ii
IIIIIŁI
.
II lI ' II
'
I
1 "I 'I
'II
I
iII'I l " TII
I
I
__
IIÄI |
I
I
I|I':I|
I- -Ê I: Ii':i'I l'
I#Il
I"
;Ii
I
. . 'I
'II
-
I'-:
..
rlL't.I-II
Ê Serwer Grup _
_
.|'_|'_|_|__|
'_|' || '." '_"_"'_¦"' _J._'
. l *7'itÊf."'".*F~l .llmlll Iiåt'
'
Y
' ' ' -:
|-[ş;±'- 'j l'I:II" I
1.
' I' '
. 1
.
_ _ -. st ';"'±=¿':-'.==t-r' ¬.-
:er›t-t¬'sse.'st . Y i ~ -'~;~ ` -_-_-_' -g,-',-'--- ':-, -=~,,,"--:",g--=.'st-.'=-r,-- .-.'.-;;¿,-.t-,.-='¦';-rg-tt'--tj-jg¬=sf-_'.s¿se:-:.¬i':-,:-." ;~:5:'-.
¿1sr.o.n.1
i ' -I '_I;_" -
-
-I-' ":j-' -j.
I
- -' j¦t_.“'
. 'I' ' i.'.'.-'¦'.'Š -I¦'-I.'.'."-.'.'r|j¦'__. '-I;:'Ir-“-"|I'..'-_.`I “-"_|;'-"'-;Í"I¬iir' -¬""""|fÊ'.'|'._'I.¬"¬'Ĺ."|
|"¬-"-'i'I '¦.Ĺ_
54.52 '
1'
'4'
'
"
-
'---
'
L
'ž'___i,- ,1 I . ,'.'t.|'. ,_ _. i"' """I ' -'¿'." -"'|
'.: ..'."| \'.'. .-¬. 'y' ""'l': ""',"". ."k"I'II'I"_ I"¦|.'-' " __ _:_
'-
Il' Ê _
__x:__I|_". IF -III' II' ' "'l.¿"' .Ifi.|_'l.l. ±¿'_'LI.|.|
.
'
'u
'l.l't.F'ul 1¦'t '
'
I' . . ¬i."'.'.
' '
_'
IlI Il' T-I_Ij .-_..___ .¬1.__-I -_'_j_||
-¿|¦iŁ:-I .Ü ||'|":_1II--FIII | 'III' '| _ '|'I.Ht'¿'||'|.|'\'|_ wś I-¦'|_ '|"ÄIll'\¦.IIr'i'lr|'|ŁIŁfi|"I'_-\.fi'|"iPĘ|i'|f|||Il'\.".|Ü_ __ _ _'|| I _¦ ¿=.@`|¶'
'Ę
D -I|-
q__\'II"'Ik'
I'i'l"Iji.-_J
I
l¦',_F,l\.¶_ I
Š
' 'I'
I "H.d'
|._____|_j łtl
I'_j_
I
I'
13.35. I'-'lonfiguracja połączenia z bazą danych ...
.
1.-
____
-._
__
||
_
_
_
_
J
'I¦|'.-1' IIIIII'l" sszr orisrcn i srsrcui ssz ossrcs Č -"|'-
-I'-I
'..__|'_l_řI ¦'|..|.
._±.Ĺ-'
Serwisowa DB to nazwa bazy danych z lctorą zamieizaniy sie połączyć Uzytkownik i Ham to pola, w ktorych umieszczamy nazwe uzytkowiiika i hasło Po zatwierdzemu polaczenia i poprawnym jego iisianowiemu otrzyrnujeniy dni-i wosć tworzenia usuwania i modyfikowaiiia baz danych oraz tabel za pomocą narze praciijącego w trybie graficznyni Umożliwia wykonywanie operacji na bazie danycłi komeczności używania poleceń SQL Zanussi uzywac polecenia CREATE DATA mozemy zaznaczyc baze danych do ktorej jesteśmy zalogowani. i z podręcznego [prawy przycisk myszy) w¬j"bi'ać opcje Nowa baza danych
Pro E ram “Tswietli okno z polami. w ktorych mozemy określić nazwe tworzonej danych właściciela. modyfikować uprawnicma oraz uzyskać dostep do kodu SQL two nej bazy |_...J.'...l:..-:l.||n:
üIlČ`IIIIIIlt
i
_.
II
III '‹H|¦tl:.i|¦l`Itl
5li"i|t±|' Grup
I' szrwerawnj
[_ 'url
[I i_o|'tni.Hl._a|.zat1ariooi sun
_
piiltpriia
lralłoffl
Í' dltte
oostfes
moj¬|_tuiz1
pnfltgrzl.
Rys IE 36 Tworzenie nowej bazy danych -J' '_
t si-ei-›"="=' ttiwnsittmmmrmemi ___.__ ¿
'li
_
Í-
_
| B1-ĹÜ-`|
l
__ __-_|_
1-1.
_
Ê _,mi-p.-1--|±í'I'|'I'l'?'ll'í
Rys 13 3? 'wybranie identyfikatora jnazwyj dla bazy danych
.__
l
PODS`l`AW`x' IĘZYKA SQL
7
-i Po wykonaniu powyższych czynności możemy przejść do tworzenia tabel, które prze- l' ” analogicznie do tworzenia bazy danych . W zaznaczone'j bazie d anych (poruszając po drzewiastej strukturze prawego menu) odnajdujemy Schematy Public. Tabele -tę 1 przedstawiono na ilustracji znajdującej się na sąsiedniej stronie: Po odnalezieniu tabel za pomocą m enu konteks towego wybieramy opcję Nowa tabela. je wowczas utworzona tabela. dla której możemy podać: nazwę. nazwy kolumn, dzieúmy danych przechowywanych w kolumnach - typy, np. Character Varying(2S) M Ż Ó . . . o emy r wmeż określić. która z kolumn będzie lduczem głównym . Za pomocą narzępgAdminIll uzyskujemy łatwy i zautomatyzowany dostęp do większości poleceń SQL ch z tworzeniem i modyfikowaniem tabel. lx l j
L
Il ,
,
*ř j
rweraw
l
l
" A
i
|
G i.oiau.m_8AzA‹127.o.o.1:s4a2› ~
‹i i
'-i Ó public
Q Katalogi (2)
fa Porównania (09
'Q Rozszerzenia (1)
Q Domeny (0) @ Konfigurocje FTS (0)
-. Ó szmmiry (1) *
0 I
~-i Q schematy (1 ›
' ÍÍJÍÊŸ .
i
l l l
'+1 Qflozszenenía (1)
- O mg «¿¬›‹'~ ‹'››
i
Ó public
`
W
I stwmlvi rrs(o›
Ê Porównania (0)
l
Ê Parsery FTS (0)
Q Domeny (0)
*~=_~±' szalony rrs (0)
0 xznfigonqz Frs (0)
Q ,„„,„d¿ (0)
~~-~"~‹«
Q3 Sloblong FTS (0)
Q› Fu'-\‹<|‹= ‹°›
(0)
.9.'4.h'l‹=8 _
'°""°°
Š Selœnncje (0)
,
Q Tabele (0)
4I
1
l im “Now
_ 1*' SWWF
Š Funkcje v1yzwaloczy(0)
1
[H bu”
l)=;?'z.~.@i‹'°.'s.'.i'_>.›
<,
l3"'“
›
18.38. Okno obiektów programu 1"
í
bł Rys. 18.39. Tworzenie tabeli w programie pgAdminlIl
i W
I
=1
W polu Nazwa umieszczamy nazwę (identyfikator) tabeli, podobnie jak przy użyciu
`~ j
iia cimiirz ranna.
ä `
.Ź
›
n
.
E
'
_ ‹
-
_
`
.
'
A
1
I
`
I V
›_
`
¿›
`
`
`
l
' "_ Ĺ _
i
›
Älę
in
- _-'a_
_
.
'._'^
jl
Ü ". Ü
'
'
.
›
0
l
l
\
\
il -
Holm
¬'/
, _
- studenci
l
H nm
Í
1
7
.
(
7
f wstgrcs
_Å
j
L.'¿.„ . _,j , . , i
,
~
Č
Q
Í
Ż
_
4
7
Ą
Ą
Ą
Ź
7 _
7
Ą _
I 1
I
Ĺ
if
-'j
0 1
4
"
i i
1I
18.40. Wybranie nazwy tabeli
'Kolejną czynnością jest utworzenie kolumn tabeli, określenie typów kolumn oraz - o ile taka potrzeba - dokonanie wyboru klucza głównego. Nową kolumnę tworzymy użyciu zakładki Kolumny, uzupełniając pola Nazwa (identyfikator kolumny). Typ (dziedzina ' maksymalnej ' ` kolumny) oraz Długość (jeśli jest możliwość określenia znaków przech owywanych w danym polu kolumny).
l l \
Ą ` ` ' j j, ` `
il
I
lu-
'¬'¦ _'Ĺ-:|"1-1|-'~
r±
„ai ,F
._.
-I
". l'i|'|"
'
BAZY DANYCH l SYSTEMY BAE D.fi'ibl"1"lÍÍl'l
H'
-'f±.±¬±=.1'ř='_-. ¿':`.Li|'Ż¬._'-= ¬'_.-'a -
I | | |
j E
Nadawanie ograniczeń {Constr'aintsj moze zostac określone za pomocą zakładki Ogra-
” I _ `
niizenia. Wybór typu ograniczenia dotyczy czterech głównych opcji: 1 ograniczenia NÜT NULL.
_ Ę
1 ograniczenia UNIQUE, 1 wybrania kolumny (lub grupy kolumn) jako klucza podstawowego.
`
1 wybrania kolumny (lub grupy kolumn) jako klucza obcego.
'*'P"""' _;-_-_
1_l-l_iZ'Ĺ
P
_
__-_'.__
'-
mi
|
'
ll
__ ._
_ _
. . _
lI|:l_'|tutl|¦n'|:|
j !
.
:
_
.
_ _-_-
-Z
=~f,-. -_.±„„a._fj"" :*.;.'¬í.:.m;¬t;""-w * niflaiifc' .„„_______._. _
Ÿ'_'='
_:___ _._-Ĺ
Ń 1,1-I
__
„_
ll-
--|._
__ -¦
1.-_:_
_| |
; 1
1
-_-1
i
_
~
Ł
`
Rys. 13.41. Tworzenie nowej kolumny 5 I |
na-ale iii' Ei---fęā ii-.neo
_
¦
I:c||=i.t|'|'|I'i'y'{1`j'
Ę
Ej ||¦|___Ê|,_|,|¦|ü|-ta
I
I_,_ĽH__5„____1yj
_____
sam' a' %-
.
_, .
:s-co FL'›===i=-››«a±i
Í
__ __r ._
_ " _ _
-. ._ _
"' , _._ _____
'
||_|._|ą±±| gm
Ê l
Fülllflfntinsi 5'|'DI'a?1ÍÜl
mm
|
-. :Í-_-"' _.
.. -'¦.._'_"'_-:- __-_.'j___:_____ »-_ _. .
-_
I'
. .
_-__-_-,..¿__._.i_. ._.__ _..¬¿..,___ _
.H .':'-al-'-:.'=_'.'____[
':„-.- -- - -.
-¬--_-.... --
M
1-'
._ _
'I .` -
Rys. 15.42. Nadawanie ograniczeń w obrębie tabeli studenci
Ügraniczenia nakładane na kolumny oferuje menu kontelcstowe znajdujące się w opcji: 1 Nowy obiekt w obiekcie Ügraniczenia w wybranej tabeli [w naszym wypadku są to stu-
¦
|
sauna; ¦
1 Nowy klucz główny - to opcja umożliwiająca wybranie klucza głownego spośród kolumn w tabeli?
¦
1 Nowy klucz obcy - umożliwia wybranie kolumny, gdy chcemy powiązać tabele, i nada-
!_ | _ i
nie jej roli klucza obcego; 1 Nowe ograniczenie unikalne ¬- jest odpowiednikiem uzycia instrukcji SQL - UHIQIIE natomiast Nowe sprawdzanie jest równoznaczne z użyciem instrukcji CHECK.
'iI'l.'¬Ê"
"
1'
|
"E109
*iii I
| I | . |
|
| .Å
Nadawanie ograniczeii w postaci wytypowania klucza głownego będzie oznaczało. ze wartości w kolurnnie oznaczonej jako klucz glow ny będą unikatowe' IUNIQUEI. nie bedą brakiem wartości (NULL) oraz automatycznie kolumna będzie indeksowana. Wszystkie tc
ograniczenia zostają nalozone automatycznie w chwili. gdy określimy kolumnę jako klucz glowr1y_
jeśli zamierzamy określić wartości kolumny jako NOT NULL. uzywarny do tego celu zakładki Definicja podczas tworzenia kolumny.
El --
studeci
*iiiml” _ _ _ Clgreni
Üdswfz
_
I
Indeks
Reguły Wyzwe
-
--
-- ~
Recrortlisty obiektow
Funkcje wy llys. 13.43 Tworzenie kolumny dla tabeli
1 _".h"iaśc|woś`c| Porownanie-
-=
Üfifiřllflfi Iłniienne I lJ1:n'e\'trrie=r|ieEl:yltIetyE|ezĽIleczeristw¬s I SQL I
.zl I ""' I
wartość domyślne I
nie tauu
IF
Statystyki
I
Pamięć
l
"' I
Rys. 13.44. "'J."p|'owadzenie ograniczenia l¬~lÜ`I' NULI. clla kolurnny
Ograniczenia w postaci klucza obcego Podczas pracy z relacyjnymi bazami danych rnoze zajść konieczność takiego zaprojektof wania koliunny. by umieszczane by-ly w niej wartości domyślne. Przykładem moze być kolumna zawierająca dyscypliną. w ktorej bedą brać udzial zawodnicy wakacyjnej grupy l'tolonijnej_ jeśli wierny. ze większość zawodnikow gra w szachy. a nieliczni wybrali np. brydza. wowczas mozna utworzyć tabelę, w ktorej doniyślrią wartośc_ią dla kolumny dyscyplina będą EEJŁCHY.
Rys. 13-45. Tworzcn ie tabeli z dnruyślną wartością kolumny
ai
ut'.Ĺ_.¿
_
_
BAZY DANYCH l SYSTEMY BA7. DANYCH
:fi2;-_ 1
.',
_ ›
... ._
_. Z.-_i. Ÿ°"*-°Ÿ.>`.;' --›. i I
l
l l
l l
Ê
l i
IB» Êl |<°lUmnY(4)
of? <›‹›'=~‹=='~f= ‹2›
±
_
i
ll
š
<0) in; Remy w„‹zwa|az=‹o› 'ji
I
l
` _ ._ .l=°”°°'Y-'ř°'°"l"°'
F||1l‹rlp|.\|v7|¿i3|.\r7v(fl\ '_
I' 'Ä
`
"Ÿ
I
'Ľ
Rys. 18.46. Wybór nazwy dla tabeli'
Taki sam efekt otrzymamy, posługując się narzędziem pgAdminllI. Tworzymy tabelę przez kolejne kliknięcia z prawego menu: bazy danych, sch tabeli i przy użyciu menu kontekstowego zaznaczenie opcji Nowa tabela. W kolejnym kroku dodajemy kolumny: íniię_zawodnika i dyscyplina. [Il
a%~ł40qanlc2enio(0) ›a› .,,.....;
e .__ _
“S
‹
1~~ß Inüelßv (0) ¿?~"% R1-=o'1Y(0) i Ÿ-»Ę wyzwa|a=zz(o› ř I l
Q Funkcje wyzwalaczy (0) liāj Widoki (0) ication Slony (0)
l l"
_-Ü
___z_wodr|i‹aQ _
_ E
character v
ng
"
'
'L' .:`;›
--
z
`
_ _Ń
ą-_~'< _
-
"` ._
'_
H
‹- 1-.‹.*. '_ -' '
--_.
_
_
S
____',
Rys. 18.47. Utworzenie kolumny imie_zawodnika /'N
. . ._. . _m-
. , _ ‹
.l
l
1'
, O 1
.
l
i
*
I
aaß
o . › ›
'
1 ‹ ‹
mg..
8 ez
‹ 11
koloniine
y'-'PC Oqrariczenia
Ifldeksv (0) R09'-1lY(0) l lzß WY2walocze (1
_zawodniaa
Funlecje wyzwalaczy (I
~.~@ wewn (0)
lnteger _
_
_-__ ____
-
Rénllrarim Ślnnv rm
Rys. 18.48. Utworzenie kolumny id_zawodnil‹a
ii.'M1..;_.;..;,...: ,ełd Ogranicz'enia(0)
ii
że '
il ---_--w '
? ä indelev (0)
Rewv (0)
I
:Q3 Wvzwalaczelül
_ _-:-
T I
Rys. 18.49. Utworzenie kolumny dyscyplina l |
I _ I
.›_____=I___
_ __ _ _ ` Należy pamiętać, ze utworzenie dwóch tabel o tych samych identyfilratorach w obrębie tego samego schamatu jest niemożliwe Dl jeśli wcześniej utworzyliśmy za pomocą konsoli psql tabelę zawody kolonijne. musimy ją usunąć (DROP TABLE) lub wybrac inny' kator (nazwę).
_ __
___ ___
___
eeesz.-'u.s-'Y _i Ęz&'I‹;.±~. segl.
Q _ ¦I--J'¦
`-
Å.
_
_
I
-
__--_-__-_
_ _-_ '_'
'-
'
_-__
-_-'
-`
"-
__-¬_ _-_-__ _-_¬'. _ _n""-' _-_ __ _'_ I_"q_I' _ _ |-
-'-__- _¦_¦_-_'-__'_'__ _-_ _ _- _-Í
'._¦'_
I-¦|!IfiH" __ _
_-Ü
-¦¦'_:I1 __ _
"-"`I "' ____;_ _
-"'
_""l'- |':¦ _Z-__' ' '-:-
__
____
"-'-¦_|_'¦
'
-_._-
__ - __ -___: _HI
_-'_';-
"
-' "'¦
_-_
_--:_
-
-1'--'22'
_'_-'
'-'I'I
'__--'_ :-'-"_-Í"_ ;-: '-_-_'_-__-- _¦ _--__'_ _I -11 __
-'
'--
'-'_'-'-'__
'
- '- _- _ -_ :-:-L2;-_ _-_-_
.'_'_-_I_-'-_
;-¦_ ___ '___-.'
|_-
_-
_'_-_' -
_ _
_
'Ű'-"" Í-_":¿'_ _-5-' E' = ""=-"':'¦:~'-' "_:_-:Í ' :- '_ _-_-_ - _ '-__ ___2|:¿5_-:1____l:¦-{_:__¦ -'_-'__,_'__2'_'_¦ '__-Ę-___ __: :- '_ _I-;
-'_:-
_:_-__I'_'_ __¬_.f"'
'='_ I'¦-:_ _ _ -:1'._ __ ___-
__
_
_:'__:-__-_._-___
-
_
_
_'_-_ _-___
'_'___'_'-:-_-:_-__-'_-';_
_
_
_
-__ --
_-___--_¦:'-__-____
.2_=:¦._ __ ' _zz-:_"-I::=:=-'-"_=_-'-'F-'-= ;_ _:-:?--_- -'
_-_.=.-_-_
_--'-: _
'-'_-_-' - _--:¦:-':'
I
z ="'__;_"_'_-_;_ ______ -_-_ '-_
__.__-_-_;_-_-'_ _-_--¦'-____-_'-'__ ___ _ '
Ĺ"IÍ-"I
`
_-'-'__
_-.__-_-_-_--'I-' -'__-'-_-__"'j-:-,__ _
_
_ __ " '
|'
'
I_
_ _
__
_
___ -_ *
_
__- _I_
.____._,_____ __- "'- -
_
__
_
_
-
_
_
_
-
_
_
- '_
_
_
-
-
-
'
-
_
_
-
'_ _
- _
_
-
-
_
_ _
_'__ '
-
'_ __ _ _' - _-_--_-_-'
' _
'
" _
_ _
-
--
_-__-
_-_ _-_-_-___ _
_'_
:' _-
-
__
-
---
__
_
_
_-
I
'
'
-_'
-
' __-_- ___-
'
'F
' _-_ ____--_-_-____ ____-_-_:____ _-_; __ ___- ______:_-__-_ _ _'Ĺ I'-"':-_-_'___:-'_-_-""'__';_ ' -¦____;-___ -_---'_: _
___ ' -'
Í* ;___
- -
-
-__
_
_-___-_- -__ ___ ___ _ -____________1_-__.__
-_-La* ' ". I'-_"_-__-z |-_'-
__ __ :'-! L- ¬`¦-' "' -"
_ __ _ _ ___ 2Í__'._ -'_-'_1_:_ -_-,___"'_-_-_-'__'_ __;'_-_-_"3;¦'__ _ _ I:-_-'_ ___ , __ _ ___ ,__ ___ ____ ____,.__I; __-_ ::_:_' '|'_-
__
5--
'-
-
-
'
_
`
__
___'
-
-
- -
_
_ _
'_' _=
-
_
_ _
_
_
' _
_
_
-
_
'
'
_ _
_
-I
_
-
'
_
" ' _
__ ' _' _ ' ' -
__
-
-
''
_
_
_
_
-
'
_
'_
_'-
_
__
_
__
_
__-
_ __ _'__ '_ '- _ - - _ - _ ' ' '_ _' '- "Z _ --_ __'-' ___' -
_
¦___ _ _-' _ __ _-' ______ "_- - - ~I I' _ -' " ' -' -'-_'¬_-__ _'-_-_-"_'_-'--:_-:-___--_:'-:_" ____ - ';_ __ -;-_ _ : _I : - -_-__"_1__'-"I '__-_- _'- _____-;- -____-___ "- -I: ":-_ __________________-"_ _ ___- __ ___ _ ;-_-'__-"`; _ _'_
-
_
__'_'__"_-" _ _
-'I-:'Ĺ-_'-
-
-_'-'
_"¦":_
_
_
;_
_-' ___
__
_
-
-
_
_
_
_
_
_
_
-
_
_ _
___ _ '
-
_
_ I-
-
_ _
-
_
_' _'
_
__-- -
'-_
- -_
-_
__ _ I
-_-__-_
_ _
_ _ _
'
¬___-
-___ _ ____
__ _
__
___ __ __
_
_.I___
__-_ __-_ _-_
_
'
_ _ _ _________:_ ____
_-_-___-_
___'_ ___-______-
--'_¦_r
_
'
"
__-_'-:
'__'_
'-
_ _ _
__=-____' '
_
_
_
- '_
_ _ -
-
_
_-_I `
_
_
'
_
' -
-
_-'
-
_
_
_
_
-_
-'' _
_ _
_
-
_
-
_-'
_ -
-_--_ '
'_'
_ ----
__ -''
-
_
__ _
_
_._
_ -
_
__
-'
--
_
_
-_
_
' - _ -_
'-
z: _ -
_-
-_
' '
'_
_ _
"_ _.'_¬"-_ '_
-
_-_
-_____-____-__'_ _ ___.__ ' -___ ___
-_-___-
'-
-'-'_ --_
''
'I '_
_
"'
_
_-'- _'_' -'-' .' '_ -'' '-_-:':_-_-.=_=-'-'_I-I__-_--___'_:' '-"' ' ' _'_-' 'I ' I ' I' I- -' _21.5._:II .' _--_: _-____-_-'__'-'-.'='= :-'-_'-:-=== _ _____-__' ,_ r ---r=___ _' f _-_-'____¦ ' _-' 2 _-_' - __"_-_: ' '_ _ _ '-'__ _-' - --'_,-_ -_-_-___--'-"-_;-_-___'_-:'___:=_;_ _ __ - _-:_: -:__-
'-_
1
__:¦-__"'-_I ' 3.; _ _;-
¬'
- _-_-_'_'¦I _-_¬__
'
___"
'
_= I
._ _
_
_
'_ _'
__: "
-¦_; --;_ __-_:- I -_--___¦_-;___ -:'_-'__.__-__ _____ ___ __ _ ___ '__ --__ I___. __-_____, _ __ -._.___ -_ __-' ---____ _--_-' -'--¦_--'_-_-_"_'__ _ __ __ ___ __.__ ____ ____;_ ____________
_
_-_
':'-'
_
1'-___|
_
-Z
-
__ __ -____
-
_|_
__
-_
_=_-"_____________ '-'_";__-__-' _ __ ___.___ I-___-.__ _ _: _ ____ __ _ -_I_¿_:__,_:_ ¬___-_- __ _"_' __:-
_' __ ' _
-"
I'-'-_
-_
¿_____:-:_-
'-_--_-2.'-I-.:-'Š-Ĺ-'-'I'Z' "' -' :- '_:-__-.-_ ._ ___' L-¬_'_-'--_-_'-
_
__ _I1'
_f_-
- - _
______ _
'f_'_" -" _ ' ' |'__-_-" 1_-_-_ '-_-'_, _. -'r'__"-q_-_ '_-_'_-_-_--__"__-__ _-_____¬|_____-_____..____,_ ____ ___
' 2"? ' ' ':'='=":'-`-`-` -- --__
__'
"_
I -_-Í'Ĺ _ _-
W
-"-:'_-'-
_
1|
_
_'-
_ "-"-. '-f--:-_-'_--":_'-"' r_''__ -__ _ -_ I__ _ -.'_'__'- '_ -' - -¬_"_-_- _-_-:-' ' _ _-'__ __ __ ' _ _--_' -' __-_ -__-_--_ '=_›- _ "=_'--' -- -' _ -'_-:_--_"¿'_'__=-'-_'-;';"'__-:-'- _ ' - _-_'-_ ' _ _- -' " -:-_',-=__:__-___-_ -- -_-1'___'_-_ _ -_ __ _ -_;_ _ _-_-_-___ - '-_','---__ _ __ ' _ __ ' _ _ __
"'-
'
'¿E"?5_ -Ê" " :__ '-:'_ -_'_5_- `-_=` _ _ _'-_"_;'Ę_'
-
___¦_
_ ____._ '_ _-_¬_-_
_
__¬_-__:_:___ __-_" _ '
-'-'n_
_'- |"¦: ;L_ _':I\_¦I_E'_: 22'.-'-'_-_:¦'-_ Ĺ.-_I-_";H¦Í-' _'__¦:-____';::-ĘIC"_-'¦Š:'¦1|'-:" _ _f- _-_ ___- - 'f_-_¬_-'__ I ;|:_;_-__-_-_____ :__.__ _ _,___¬__ _'_' ___- ' '_-'- _ ____-___ _„__ .-'.- ._.___'__'-" __ -__ '__ :__-_I-1 | _-_-_ ____ ___-__-___ _ -_ _-_ _ _ __ _-_I_-_"_'- -.- ,I - _-'2I_ __ _z __ -_____,_ _- _____-_ __ -- - - _:__;_--__- - - - ' _ -- -'---'' _ _- " _- _-'-'C '_-'Ż'-'___ _ __" ___ :-_¦¦'-:__-_--=-_-_-___;_--_- -"_ _I_ _____.___-__ __ __ ___' _ _
-_I-_
"
"
-: -_I ;' '_ '_ _
-_ __ :-:_ :__'__.__ ="
_ _ _-__ .-=-_;± '-'___ sic :-::-_;_____=.-__ =¦____ ___.__
§_:-;:_',-;_-_-_.' ___-
`
5 _ -_ _: "¦':_ -_" !'____- '=-I
'_'_|
-:-!5Í'¦'I-'-'Í-=-*':=:-:-:Í' ____ _____-_- __| - ___
-'
_¬__-_-_"____'
_¬_
_- __Ś:_-_
-
__
-
ł'E"Ĺ-='-± -_-_'-"_-=-_--- '_'~';-__' _
-
I_
|
_' :=':_-_-1_'f_ -_'__I_
_'- __ _ _
-__ -_-_'__'_-_-'_.'-'-'- '_' _-¦'_'_-" =_"'-¦'-==__=-¦' __":_ ____ _ __-;_-_ __-__:-7 ___ __ "_' __ __ __ _ _E _ -'1____j'_-_ - j. '_- _:___ __¬- ;___ _-_-_ _-_- '___; __-: -_' '- -.- -_
.__ : -
`
_
L
-
-_-_-_-__
'Ę
_-___-.
-- -__ - -;_-_-___ -__ --_:_-_-________-_:_-- |'_-'¬' -_.__ II. ___,___;Ê;:-_ ' -_I__-_- - _¦-_'-_-__'_____;_:___- --__-'_-_:_--_';_' _'_:_"-'_-'__ _;:_; ___-__ _
-'
_._ -_ ___I
_:|_._-._-'_
" '-"- '-¬'
_
_.__- __'_|_J-
fĹ'¦_' -:I-_¦_ _-___-_-;__=;'-;-_:'C -_1_=-¦_-r=- _-_ __:;_ '¦'_='=_:':=_"'- ' -:_-'-'_
_
-
_l Rys. 18.5121 Wybór wartuścí duruşfślnej 'szachy' dla definicji kulumny dyscyplina
Następnie Wybieramy zakładkę Definicja i umieszczamy W pc›]u Wartuść dnmyśína dystypllne szachy.
Należy pamiętać, ze wantuśc clclmşfślną wpisuíemy W pojedynczych cudz'}fsłc›wach.
I |
s-sf."-.":' 'Il '¦.-"_l=:.=:'l ' " _ _ |.›¿¿¿,¦,__m|-_._ = ._ §1ds'__~:|ez-
i
=z
'l
az aa
_.-'--
--'----I
Ê] rmle _
Š-----řfā Ügranic.
=_LIşuń!Skasuj_._
_
ll
I
Hnwa tabela... f".h:a-aalŁaLmna._.. l '
" " .
-
_ Rys. 13.51. Utworzenie klucza głcåwnegc:
2fl"'Ifl'd';"_|'flřüW'=ß""'
_
_ | l
E1 Ê Kuh-nn-_(81 I 1a _ aa_z~_-__a.¬a_ --sfiflfifiacaasa Ines-ia--1 mw I Sat I _Ê--_fi-_Ę Í|j_z.5|!,_'._||;]|j|"fi}=;.5|
Š
"'*Íf““"""“Ĺ“““"
z--~-H Üganrcaema (D)
_
_ __
ma-___
____ _ __
_
-
I
faa¬±~,ffn‹.aa-_zaaaanaa
..
-
:
_ cc!r
I_F¬FÍlł'd
__
_ _
_
_ _
*Ê fffifileafflř FŁ'a;'±1'›'E'1}
R}rs.13.52. Utworzenie ideutjşffikatura klucza głúwnegü
I I
Üprócz ustawienia warmścí dcamşfśhlşfch elcreślamy równiez. która l‹a1'1un:|_ua będzie pełnic rcvlę klucza głc›'w1'1egu. l UmieszczamTv' w P alu Nazwa idea lkatur dla klucza ćwne 3cw. Dla ílustrüwane E ca
| przşflcładu użyta zustała nazwa: identyfikator_zawc›dnika.
Pole łcreatüra umużliwia wybranie kalumnşf. 1-rtćarej chcemy nad:-1':í salę klucza głćwuege: I
l
¶_Å___
Ê
|
112
z.‹'¬..'-'.'.'~f z›.w¬'‹:.:H r z*fsT|=_ M 1' rw-.'.':. 1:=.fl'..'~¬:'~.'‹:_:}-f i .;_'__ł¦
Im- I
_
I:
=
¦
|
L
.'
flucmz ríí_-_-_ÊI 5 E¦'E5I'._I
I'
aw-'_±±'
|”`_"'__í_í"`Ê
_
ł'1'|fi.'fi
l¦'a.-H
mą
rw-=_ 1
Ľ
I
|
L1.-ur.
-›=~=" | -'mu .|
łłşfi. 13-53. Wybór z rczwiizncgc menu kolumny. która hęclzic kluczem głównym
Ĺ . Kaskadowz usuwanie tabel ¦ I
jeśli do tzbclí zafi'uc1y_kn1c~nijne cludzmşf klucz cbcşß. pumiędzş' tabelami utw‹.'n'zm1}' zc=zt.:=u'1u-:' zvńązck, z łcłucz pudstzwuvry tabeli studenci staruc się kluczem c›l:.-cym w tzbeli :a.wüdy_ku1nnijn.e. El F! zawnc|'¦.-' 1'.1:|h:|¬¿1|'n¦
H ş=.~;'1'~¬'fi'= ,
r;_= |m›e_zw=-±i~z _1 H 1: dmwm
"= z
' ř
"*!'*`@*?"'='¬"='4"-'ffl'-1' 15!-1 Í E'==_'='b=w
l'd=I'1Ł'5"=f||"¿
'far :wau-zvfiflł
f=.=c±¬.~' ':': ':
I
lłş-c- 1B.54.Twc1'zcnic klucza ubccgu F
;I
' ¬.'_ tl-"'|'.I.'¬' |'|EL| |l'. |'.| `l1".ƒ i h
;
-
'fiflm'-|nh':u'|=ffaL 'I llnfurult
I _ _ITI
5 |
'I
.."'.-ł'
.mw | I
i
-" .'
Rys. 13.55- Pcœwiązznic tabel zzwuclş' Lcc:1c›niinc'isl1:cłcnci
nqdq
|
u|..'_'.
.ş
| F
t"'›¬1\~„\~.l
'\«~ ~‹'
'
W polu odniesienia wybieramy studenci. Oznacza to że klucz obcy w tabeli zawo-
dy kolonijne pochodzi z tabeli studenci. Kolejną czynnością jest wybór w tabeli. dla której ustanawiamy klucz obcy (zawody__kolonijne). kolumny. która ma zostać powiązana z kluczem głównym tabeli studenci. Wyboru dokonujemy W polu Lokalizacja lokalna, kolum na ws k azana ' ' ` powiązana ' w tym polu zostanie z kluczem łówn t b g ym a elistudenci. a tym samym stanie się kluczem obcym. Ostatnim krokiem jest wybór W polu Referencja klucza głównego tabeli zdalnej - w naszym wypadku jest to tabela studenci.
_ l'.-3 94 |
._z'Q_ _ _ _ _ _ __ _ K
j
N0wY0bÍ6l<ł
5
1%. Rys. 18.56. Próba usunięcia tabeli studenci El .V1 studsct
fg
rzüimnytii
'Cl ›‹ Owal pqâdmm Ill
'í' be
, El
I
Ä rg,
__
Fa indeks
ja, Wvßtavl t='lad=
.H
K * I BŁĄD: memozna usunąć tabela studenci poniewaz inne obiekty
Ręguli
WYZW'
zawody _lu
jçoiumj
B, 9 4 Ogfm
I
-:.'
ä Indeks
K
zależą od niego
DEFAIL.- oçaniczenie l
'IASCJÄDE aby usunac' wraz 2 obiektem
zaleznym.
Rßoutż Ê Wyzw.
Ü Funkcje wym W-4.-¬l‹z rm
Rys. 18.57. Komunikat błędu w wypadku prób us ` b y uwania ta el powiązanych w programie pglldminlll
\
Pomiędzy tabelami utworzony zostanie następujący związek: klucz podstawowy tabeli Studenci stanie się kluczem obcym w tabeli zawody_ko1onijne. Tabela zawody l' kolonijne będzie zależna od tabeli studenci, która w tym związku będzie pełnić rolę nadizędną. jeśli zechcemy usunąć tabelę nadrzędną (studenci). spotkamy się z odmowa. Program pgAdminIll poinformuje nas o możliwości usunięcia tabeli wraz 2 tabelami zależnymi za pomocą polecenia DROP CASCADE. Podobny komunikat otrzymamy podczas próby usunięcia tabeli za pomocą konsoli
l › I
l
ltys.18.S8. Komunikat błędu W wypadku próby usuwania tabel powiązanych w konsoli SQL
W takim wypadku możemy posłużyć się poleceniem DROP TABLE studenci CASCADE lub użyć opcji narzedzia pgAdminlIl. mm
_
___
'
t_ '~.
.
á.¬
.l
W
› _›
r
V. z
1
l
I-
_4
»
I,
izlt
~
--›
._.
,__
.,
wi
f ,-
-
_z
V 4
f+l 'Fi Kot
t+§; W O9 Š1 Ą-
61'
°{`:_:,~
Odświez
Zlicz __
Ĺ
Ii-ll:
Re,
i_;j„ Wy
Ż_
Ć
` 7 '
_
T
_
Nowy obiekt
I
_ Ń.
›
usuńysitazuj. ..
ti-Ê Í” 2aw':'d~_ _ R'.~ lf~_"'›'}l Kaskadowe usuwanie tabel xx' programie pg.'\dininIll
Rx sc tstitti. Kaskirdowe usuwanie tabel w konsoli psql
Praca z bazą danych opiera się rownie'/Ĺ na operacjacli wstawiania i usuwania danych. Dla przykładu wylcorzystainy tabelę uczniowie: CREATE TABLE uczniowie( id_ucznia Integer PRIMARY KEY, imie_ucznia text, klasa integer
i ; W Postgresql możemy uzyskać opis tabeli uczniowie przez polecenie /d uczniowie.
I _
l
Rxąs. lŚiĹt›i. Opis tabeli uczniowie
Aby wstawic dane do tabeli. posługujemy się instrukcją INSERT INTO. po ktorej występuje na'/.wa tabeli. W nawiasie podajemy wartosci w tej samej kolejności. W której występują kolumny tabeli. Dla tabeli przedstawionej na ilustracji kolumny występują w kolejności id ucznia. imie_ucznia. klasa. Polecenie umieszczające pierwszą krotkę będzie miec postac; INSERT INTO uczniowie VALUES (1 , 'Maciek Nowak' , 4) ; jeśli 'zeclicemy sprawdzić efekt polecenia. wystarczy posłużyć się instrukcją: SELECT * FROM uczniowie; efekt przedstawia ilustracja: l
išt ~ tt~í_‹`-A \\"\'^swietltř'iiie zawartosci tabeli uczniowie ~
4
j¦'|..:¿_;
|
'-ll'-If-,__
"-!
| Ę-
'T
¦_'
",I
Istnieje mozliwość dowolnego uśtzlenia kolejności kolumn, jeśli pośluzymy śię śkladnią: INSERT IHTÜ uczniowic (klasa, ici_ucznia, im:i.e_uczn:i.a} ¬L".FLI.UES l[5, 2,
"J.Ri'Í HÜWA.H”} ;
i Ryś. 15115. Llzupelnicnic tabeli uczniowie Warto panliętac .fc podczas uktzwiaiiia krotek w kolurrmzch. dla ktorych nie określiruy | wanośct ' `.L. dane mogą ` ' bycI przydzielanę “.__` I zgodnie ze zdeliniowanyrni wartościami domyślny. rn1' DEFAUIT . | lub wartościami - - 1 -' ' NULL _ jeśli ograniczenia kolumny na to zczwalają. N
.F
.
.
Podczas uzupełnumiz tabeli danymi istnieje mozliwość jodnocześncgo wśtzwicnia kilkiinartocct IHEERT II-ITÜ uczniowie VRLUES Lama' , 1] ;
(3, 'Irena Major' ,.1j , (4,
'Elzbieta
jeśli jednak naruśzymy więzy integralności wyznaczono przez klucz giowny i - dodając kolejną krotkę - śprobujeniy powtorzyć wartość klucza, napotkarny blad: INSERT INTO uczniowie VALUES
(1,
'Michal Paspzzyd' , 2];
Ryś. I3.o-1- lilaruśzęnic' więzow integralności
W wyniku proby utworzenia krotki cluplilcującej wartość klucza głownego otrzymamy ko-
munikat o błędzie wyriikającym z naruszenia zaśady urdkatowości wartości klucza głownego. Podobny blad nzpotkarny. gdy w tabeli śprobujerny urnic'ścić krotkę zawierającą wartość - klucza obcego niewyśtępującą w powiązanej tabeli. w ktorej kolumna pelni rolę klucza ‹ głownego.
irnzrkuio 18.5
_
Pośltizniy śię tuodc-lcm z przykładu tabel pokoje i goscie. jcśli w tabeli pokoje u|nic.ścir11y krotkę o wartości ic1___goscia. ktora nie występuje w tabeli goscie. naruśzyrny więzy integralności referencyjnej. ponicwaz klucz
glowny tabeli goscie nie będzie miał wartości paśująccj do wartości klucza obcego w ta bcli pokoje-
l
* ld_pokoju
cena_za_oot.1c |ct_gośc|a
_
ll-"` '_
l¬t_ę.~.. lä.ti'i l-ia1'uśzc'nir: więzriu-' integralności
to
"ll* |cl_go5r:la
irnlc nazwisko
Í
i
IÍ: 1;”
f
'1" H
| *~fiH| i ."~1"
I-¦
|.1-`-
ml
Fê
H¬.~„_ I¦".'L_:"›:"›. {J'pi::¦;|I›f'|i|1u1¬:ujL' w SEED F‹:".+tgr'.'SQl.
l‹!1..'¬_ 1Í*Ĺ.'¦`zl-". Ü]Żl'Í5 Í;-lbi-']i g_nF;:. il: W SEED F11'H1'Ę1'1:SQ|..
I"'*‹›lŁ+c'.±|1iE SELECT * FRÜM goscie; :Łuk-'1'3Ca v.'¬¿,'ni|-: 1ź1r:'.{+fl5at;¿¬.MiEŁ1:¿}Ľ¬y'. E11' W REH='2;':u głú¬'.'~'11}'n1 tabf-*li gu:í;Ł'.`[L' 1:11;1jLlL1j+.' się Işfłkß ififdncz wartuśfi i jLz'5L łü I. [=?ŠH hçdziünq' clüdawać 1{1":}|:|':Ę dn ł:1bfi1i pakuje. 'LU W I'-Iü1ur'r1niI:± id____gu..'-3::ia= która jfirst 1".lLlEí:E'm :"1Ŭ›f_'1H'r1 W ł;11'.'Ł*|i pakuje Š 1~L]L|C2'¦3t'|¬| p'‹*›‹;1.+āT;1'~".={}¬'."."¬¿.'|1'1 W Ľabłfli gu-
scie. 111üżf3' 211.:-1łŁ=:í_'.‹fi się '¬.'fyłą±:z¦1ie wartuść jcdcn.
;.'¬ f. ¬~`¬' Wj,."r‹`:1.¬.'i{-'1|±'11iL~:¿:|'fi.-urtfiwści talrrßfłi ,'gH'±¬'rI'i‹' Ü'¿11;±L':¿.¿1 lu. ZŁE* w„:Lrt'::r¿:'r;i 1~1|L1L';':¿1 ulficegü 11111525; 1`r1iE':Ź Hwfłjc-' üclpu'wi‹3'd11i1{i W pü1.'.'a;¿-
zanei tahüli. I7"::|]‹:=‹.'.|::1-tlirz' INSERT IHTÜ pokoje VALUES
(1 _. 1ÜD , 2) ;
Iwrúcí błąd. gdyż
w püwią_'.=:a:1Ł:j tah~':=li W l~:1|:L':›'_L1 ghÍ'.'w:1¦'¿.-'n1 iw-.lt tj1_«'1Í~:~':± w;11'tn±¿:ć 1.
āhz-
ř*-.4-.'}. 1-*r±'hLt|a mni".:-:s;zc:tr:1\i¿ł w k|L1‹.:‹'.u uI¬n¿1,-|n ~.".-¿1rt‹::±ł‹;:i. l_~:trŠ'1'a nie ¬.'.=3„'.~'‹:l‹;[nŁp_¬ W ]‹:]u'::1|
¦=._:ł1':wu1,"¦1'| puv›'ią,';Ł;mf1'i te1h&'lí |¦1¦;1¦'L1:a':-1e¦1if_' '«'~'iç1'-¦i`›'.'.«' i111Ł={=¦1':-1[r1c'}śf'i rf1lf±1'f:11::ş.=]11:3i]
]'„¬':;in:ai‹: |1n!‹~cenie=; INSERT IHTÜ pokoje VHLUES (1 , lüü ,. 11 ; zustzulic zal-;uw tzfimlc' .~¬'1±1±Le±;E'rn. pür1i':'waí'. v»-'¿nrt‹_1ś±'Ê 1 wz-1tawi:111a du i~:ülL1n1ny' id_gc›scia tabeli pokoje mu f.}rfl[ż'|::*›.'-„'izŁd¿1i¿1r;ą _iüi ¬a'.f;s1't{}:":‹f w l~;1L1c_'1*.u głĘw~':1|}-'1"r1 r:|.|_1'Ł'łi güscie. l¬:Łúr§." jE'51 l~:n1um11ą pn'-.viąāmlą |¦Ê
1H}rfäffiw±Y aFfw»~« flfw ¬_¬_¬.'-_ø-LE
INSERT ÍHTÜ lI'ü|
Gdy :_".;1cl;1‹:›c|zi pDL1':¿r:'ba zal‹;LL1ali±::nwa1'1i;'1 d:1r1y‹::|'1 pr'?:c=.chüwywa11ycl'1 w tabeli. 111'1u:¿'=rxr'1y ba1'c1:¿u p1'c-'.r.y:=".yjr¬1if: p1'::'.1:p:'DWadzać al‹:tL1:|1í'.¿¿1cj±'; wy|1r;u'1yc:|'1 c1;my':h za pünmcą pc1l:~:'c‹.:'1'1i:-1 UPDATE.
D13 plfzyl-1-ładL.1 p‹..1s-|'L.1:å:y.1'r'1y się t'¿1br.:.|ą goscie.
Rys. lFš.`}"I. Wyśwíf'|l±"|1i±j- ?„.uwa_|'t‹:'ścí tz-xlreli ,@,'¿:›±-s‹_'iŁ'
I
jeśli '.:}'1‹'.:‹;-:my :"_;n'r1im1i'rž wszystliie nazwi:=.¬]‹::-1 Nüwalf. na N':'1w:1‹:1:|‹¿i, 1'r'1c_}?Źc¬'r1y prfisłlliłyć się po1ecer1íe.n'1 UPDATE u :'1:.1stç-pującc'j l‹ür1strL1l‹:c]i: UPDATE goscie SET nazwisko = 'Nowacki' WHERE nazwisko = 'I~I‹::wak'; lfiülüccnic SELECT * FROM gczscie; zwr.'ó':iWyn.i1'::
Rys. 1.322. `Zn1iar1.'_=| r1¿1zwj;~.;1<;1 N‹';›w:1l‹; ml N':;.'we1c_'l~:i
Müżz-:'my L1:rłyrf 1'ówr'1i‹::é'. l~::_mstr1.1]‹:.cj.i UPDATE, W której z':›sta1:1ą :.»:a1‹tu:±lizc,1wanfi wszystlfiü Ĺ krotld. Aby pr:-¿±=:p1'c'1w3d:¿icÍ.tu|<;-¿ n}:1f:r;1‹:jĘ'. Wysta1'=:z}' p‹::'n'1i1'1ąć warL11'1‹=r1~: WHERE:
1 Rys. 13.115. Zmi:±|'1y w±¬";.y:z1t'|±ic'l'1 .1'|;-lzfiwisk na Nüwalcżlfi
Pc}v»qf';å:s2¿1 .|z;cJn.str'L1l‹cj¿1 spüwUciL1]Ę+ ';:al<Ł1_1alí'„:‹'1w¿11'1ifi ws?:ysT|cicł1 |~=:n:'tcl'-:_ ini-------U
118
¦
--;'.z| ~.
1
.. '
]‹Łw.- 1-"Š..7-1- "J'b'§„'t]Šl'-Z 43:1-:'r11.'|11'.'.'.ü'.'v'Ił.I1Í;l IĘ|1H']1
]:_¬=:111r_"f_"..':‹;'.~â|'|i1¬ |1¬.u±¦±'mj," aL:tuali'a‹:=wa¿' daru-J W kill-au kf;=¦umnaf:ł1. npUPDATE goscia SET imie = 'Harek', nazwisku = *Huwak' WHERE i':.'1_guscia .'¦=› 1;
H'.~. 1."~å.'-“H ł¿.r'utL:i u ~„~.'arŁu¬_fi':ia±-I1 i:_`E_1ß:,‹;:±1=;ia [:›uw¬¦.-'}'Łc'1 1 '.'.u:¬"|ał1,f:«:a|u11a|1'¿c›~.'„"an':~
Usuwanie danych z tabel Dauuf :et tal:'L=1 Luaxwa się W pfastaafi całycli kmtal-z |[v~'i1:'raa§,„'}. Pc:±-:i'L1¿a_'„111aL: air; wL'a±:a11iej prĘ'af_~ntuwar1ą tabela gnscie, rrnriacnmş' L1±.'ƒ=f ;1c:'h¬.r.:Ł=r1ia: DELETE FRÜM gnscie
WHERE id_gus:ia <3: `
I
Pr;›|'c‹:.1j=fi'
1
Iilucz pudstawüwşf
"
, l
Klucz abcşf
`
Güście
1
l
Hz» |3'=.?n [-'|'‹al_1a11:~:11n`¦¿-;cia L»'_1'r_:t‹J1a za 1abf;~1i, |~¿łn`n'a "¿¦1a1|:1ui±' r-;iq 1.'.=f›_".'««'ia'.-'.l.-»11Ł1~'.1L¦'=_':¿ puclala¬'.'."‹ż:w';.-'-l';!L1'¿E
uLu1'.'ai1111;[lalm:'la |r*dna1-Ł 2:1' 1:'-«'?.;3,lędL1 na In. fa: 1ahC'|1? [JułaL';:'.:i:nr'
1:›|'f_±¬:‹'. klL|=_';¿ p‹;HI1:=.lawu¬.1'»'*„.-'-1{111f¿;¿ üh-E3'
1:|'|_11¦?r.'r."r1i¬ż= ;¿~.'-.'rĆ|'¦$Í h"]ąŁlI -!
_
-'
l~tj~_¬ |._*.
~.
-'
Í* l]lai_l - riaru±~'i'i~nit› reguł ii1tet-__5ralii=ż›:'it'i refereiicjfjiiei
11'” taltim ".'i.'¬}tpaiiltti it1L|:'±i|li}" i1aj]'iiei¬i='." tiaiiiiąč ia-'t11'ltJ5íiÍ id_Pfll't.üju
1. gt1[',"'.í: i;iil'wr.':|łt1je
zaieclta iii_gue.i:i.'a 2. F'tilei:eiiieii1DELETE FEÜM pakuje; listw-'aiiişi'wa:¿~,-'±;iltie1-;rt'itl‹;i 2 tabeli pi_'ilti'ije, a naati-;pnie iiiużeiiiji' w1,„'ltt'iiiaĽ ptilet:t~.r|ii:: DELETE I"'RÜl':'1 güscie WHERE ićl_'gi:›5t:ia '=II3;
l'ii.'- l=*¬ ¬F'l L|.¬'ttt]Ít;L'li." l-Lri'ili"l-;
lRĹt'iIill-ti W t.'_'i|_“=ell pt1w|¿i;='_:1i1 ej ttiiażettiş' Lt:āLi¬i-vat rt'iwiii'?:5' za püliiüct-i pt'ilet:erii;| CASCADE. Ľti aprt|¬a"it|. że nie tntisiinjr-' iiatiliiin tir'-itiwaii ltrtitel; l'tlLit'.;¿a til¬.'t't_~gt¬_i. Lřatiwariie l-:t1!_-¦l¬2tit'li"_iwe pciżwttla na ptilttiiiaiiit' tJg,t'ai'iii:1±eiiăa iialtlafilziiiifgti na l¬;i'i;iilte puwiązane] :ta ]Jti1i1tit:a l~;liit'ít;i iilaeegu. P1'úl:'a i1.~,¬'itr1lt;t'lt| geiśiiia Wüitiieişliti Żai11j~,'alt1i'‹'5l=1íeş;',i2i ;tal-ttii"'it'a¬¿,' się Ilieptivi-'titlztfliiem. ptit1ie\i'i"aí¿ pü'.-;lada mi tidpüwltitlaiątfşz' mu pültthj w talźieli 1Jti1.'i"ia;¿a 1 it-'j.
l"h'.~; IS..-7"'_Ea1.".f.E||'1t;i±ŜŠiÍial}i'li p‹:,¦'l~tt_ijif
l'h'~ l-“Ĺ -fill .Í;11.'.".1_'|1li*;'i¿Lt" i:¬il)'i'll g_i:|.~'=t'it=
l¬I~.-'t' l`"~›.i'ii. hÍi_i|iii_:nil':¿|t l_1l=';i_l¦_1 Ltzit|".".'ai1ia1"_"lt'_'i'ili1 - i'iai'i1±'~a'.eri|ie rŁ'g|il iiiteşa„i'alriuśui relÍe1'eri':ji'iiiej
119
E-_-*'.E"|' iÍJ'."'tl*-¿TLÍH l ':"|"|'i'i'[ Flyi"| lii'1i]."'. i1'."iil""`|`L`|"l I
I
Truncalie jeśli zacbndzi itunieczriuść ustuiiecia danych ż tabel W taici spustib, aby nie utracić tabeli. a jedynie usunąć dane, używamy puleeenia TRUHEŁTE. Tabele. z ictćirycii usuwamy dane. rnega być eddzieiene przecinicarrii. np. TRUECHTE guacie, pakuje; Należy' pamiętać. że stusując peietenie TRUI'‹`lC1i'I'E. aby usunąć dane I tabeii pnsiadaja' cej ltiucz cibcy. musimy najpierw usunąć dane w tabeli pciwiązanei taic. aby krcititi nie rniaiy pciwiązariycii danych w tabeii referencyjriei. Pcilecenia TREIHĽŁ'-LTE nieżna w wypadiui tabel puwiąza nych użyć w połączeniu z epcją ĘASCEDE. ictera sp-nwtiduje usuniecie l'n'nŁeit wraz z ieierencyjriie puwiązanyrni danymi
w tabeli pewiazanei. Üperaeje wstawiania. usuwania i incitiyfiitnwania danych rnnżna przeprnwadżać również za pnrnecą namęclzia pgñdrnirilli. W ceiu edycji i podglądu zawartciśtli tabeli aaznaczarny tabele jw naszym przyitiadzie tu tabela gciarziaj w iewyni rnenu prugrarnu pgåcinain, a nastepnie z paska peaierrtege menu wybieraniy przycisk Przeglądanie danych wybrariegu ubielrtu (rys. 13.32). jeśli tabela przechciwuje dane. wówczas W Wyświetlenytn nienie etrzyrriamy' mużiiwnsć
edytewania zawarttašci tabeii na zasadach p-mzlebnycb jak w eltnach znanych z arkuszy italituiacyjnycli (rys. 18.33). Zmiana danych i wprewadzariie newycb -:lanych odbywa się przez pedwójiie kliknięcie w pale tabeii. które chcemy edytuwać |:r¬ys. 1E.S4}. Fedubnie jak pndczas pcisiugiwania sie ltbnseią |:|si:|l. rćrwnież pcidczas pracy z użyciem narzedzia pgiadniiri nbuwiązują reguły integtalnuści. jeśli np. naruszyriiy regułą' uniitattiweści itiucza gi'ć›wnegb, wćiwczas zustanie wyświetltiny itumuniitat błędii {rys. ]El.E5j.
R reriegu ':Il:|l!l"¦Łu.
erwer Grup
E1 Ę sanyszsiy ti)
E J Pgzressat az tlszslisstzsaszi H
E '_'_l riieiabaza
-il'-.lazwa - 'ÜIĽI' "-""l'!ŚĽl"2¦!ll
ia--Ę ratalna (ai
f-raszarsei ran
El"
=- ACL
Rezsaerzrmle '[1]'
El Ü 5|:l¬|aIl'n=.!||1'¦|"|[1}|
5 '|'5,.p._|
El 'Í' F"-Üf - HT] Ferii-'.-'-|r'|a|'na (Dj Derrisny tej Iiunfiqtiracje FIS (ai
H sie-ii-ei Frs tuz'
*EF
stai
lcriy T':'i[E|¦|' _
'1' 1
.
1|
Ü*
iii
Rys. 13.52. Edytewanie zawartesci tabeii w pnigrarnie pgadminlii
'- ltlatz i;|tti'.-ilny' '- 'wierszy tusze: Czyi-|n1l't '."|'y'.|:|ełr
'_' '~"r“|I.'rm' Ęzllner = Tabele dzieclzic - 1'leść tebefi 'tlzae
-'- riiazalegiawahy ="J-ust |ĽI`lĽ""
-Ê rss-sis meet :E |"'I|:|'l:-al:ite=
i*ensr.t.wy jszrit.-fi sqi
` El'-'.|¬_.-".'y.=a rinriy='l'i I '
|'¦.'|"='1.`-f "
|
LI;
__. .
'
_ .
' aa; Izā-rii
F'-I'-'-t 'ar r"`-it`_1l *.¦.Ĺ-' |Ĺli:‹›:-:i|li'_"i:'t:li |"FŻ-Í]=
Ľ'
rtir¬f-.|l.11.rz-.'1- t_.¦us-r.||:-
ll .'1:.Ê|L.||¦
Ź-I--.ƒ.-.-.._ ' ._ _"-'__-ži_.'Í_.-'=¦¿'=Ê:.ŠI""_' -1: I'-" _-' -' _-'-_' ' '"'¦:':'Í!:I: p..-I-.-I-4--.:Ê'Í'¦
-
uj
l¿.'I¿ . ._.|
I
..|"-1 fl_
_._
'-_
.
_.|:'
_
_..
Ĺ-I-I
|__L_
zip.
|t_.Jft.
l"_
r';'|'.' r:.: ... :
:Hflfll _
a
zuysieusaii
lip; einen
Ê3
lÊ'.'=*=lt
.Feet
. 5'
__ im*
;Ê5*"!'.'
i
__:.L-'__'
_H f' ' jj ' '-1 -aa. :
E- Bflailafl
ifirfi.-L
_
'
_
ir "_-
.
'
'
Rys. 15.55. Medyfikewauie ictntelt
1-'
._ __fłEEÊ?'=
'L'."'H|
¦-Euyaiuflaki.
_ai-.reir
janusz I.
-HtFFl'F.. _ _ 15"'
_ _
Ile] einen-
ti
13°” -i1'=*='1 ....._._ _.I___ l
|
:mm-aaaasi _
...-11. |
15.54. Dedawanie kretelt
E
lflegúlan
_Iurr_fak_
jiej uieeh
Ianyalerrairi]
_
jitszsa
lwa:
__. .-'H==.e _ -_ !'=_e.s-_ -__ Jan
Lech
_ ..-_i“°*E"=
_ ___-__
""'i"¬rił'Hl¦'l'l Had! Q Eułfjüi pndvsńauuwmśelúiczarmiiszanqrrzzuńnuaflmse IIIETM1.: li'i.|crii¦l_qes':iaj='t11|'.|zis|tr'úa1a.
15.55. Błąd naruszenia reguł integralnnści
'-511' wypadku.-gdy pracujemy na tabelach zawierajacych wiele lnetek. zachodzi pnnzebs wania irretlti. dla której elitarny zaktualizować dane. .aby przyspieszyć wyszultaitrutiti. meżerny wybrać z puzinmege menu npcrję Filtr jrys. 1E.3E}:
HAĹTUANTĽHl1fl¶TEMTiHHćDANTĽH
Eřrlytje danych - Pastnreāül '?1-J?{larfllhast:5-132) - nrajahaza - ga ~
ŠÊl"""'fi""'l_ÊÊ|%l-Í!
zastrze -'
|-'¬ ile-===fi¬¬*i"
_
¦
:l-'
ce=e="'t'!e
Rys- 15-56- Uruchamianie narzędzia: filtr dla zawartaści tabeii
Fi_lt_r. aprćicz rrrazliwarici sartawania danych w tabeli za parnacą wybciru kalurnn (zakładka Sc:-rtawanie Danych). afertrje mażliwasć agraniczenia prezerrtawania danych tabeli zgadnie z wprawadzarlycn warurrkierri {zai‹tl'adi'-Sa Filtrj. W naszym przykładzie wyrażenie filtrujące ma za zadanie wyświetlić wszystkie kratki. ktćire w kalumnie nazwiska mają wartaść Lech.
.
. -|f.|.
__ _ I 'u|'.¦r 'u.|-l' . |'H
.fi_'=_'="='=e
'Í'-l
jaj cieeh _liazeic nuxłk '
Jan
'Haze
___za_rr_ryrr1au.sz1 Haaare flbuúk '
Lean.
.. _ _ .
HI: fltmfií _.„„_,. _ _ “nazw1aka"='Leen'
l`r.|'‹I|-2ril'~:`1|"'
Rys. 15.51-*_ Umieszczenie warunku lagicznega w narząd ziu Filtr
W wyniku wprawaclzenia takiegc- wyrażenia dla padanega przykładu wyświetlane zastanie akna zawierające dane. lctdre spełniają warunek;
us
Ê
Jen
Leerr
.
Rys- 15-53. Wyrrik iilrrawania tabeli lrrrrą rnetadą wstawiania. usuwania i madyfikawarria danych w tabelach za parnacą narzedzia pgridrriinlll jest użycie skryptów padrecznega menu uruchamianych pa zaznaczc-rriu alriektu jtabelij. na ktćirej chcemy wykanać ww. aperacje.
' l
eai_is'i'_.-ta.-='i' ||¿..-:i'1t_-i :-'. i_.:'i_ I. 123
'|-ájfijß (3)
`= le|Ľ|B=1ā5'¦."5ĽE
u |: h
paepizaisn si
_
Üsygres
ifzafiersiaitzj r' Fiül (U1
_
übcieetu-kaslraiirwu
lłaeat-Eabet-sr'atystr1.'.
estrawana Hale
'› .eee RfiPüfiš'F--
CRĘÊTE
'F-
F'1l`2*'-'l'¦lh'_¦"'l"'\"3l`|i.45'f'_.1
7"”
Twatzeirta kupi zapasawej...
Hayek"
Rys. 15.55. wstawienie danyclr da tabeli za pamacą l-treatara skryptu w pragramic' pgiadrninlll
Pa wybrarriu apcji Skrypt IHBERT zastanie wyświetlane akna edyrara SQL z gatawyrrr szablanern skryptu przeznaczanega cia wykanania palecenia IHSERT dla tabeli gascie:
r. _Ü
taaa aim. nas 'sa' "" j
j Š
H
na n Ê'
Í j í;i_=
.-.--. _J -' - - ..
Êr+Ea'ĘgHmflHfih|
'1
-
Lßüfl
jjjljmajabazan-. _ _ _ _
I
_
-
ş
kßufiffiflffiifl I
= 'Eli-iszar rrrra gaseiei l
“L
it1_qasc:ia.. mie, nazririslraj VÅLÜÊÊ
1:2,.
P,
Ĺ-jj:
Rys. 15.1111. Fragment skryptu SQL w pgƒtdminl ll
lylażemy zauważyć. ze w miejsce znaitów zapytania wystarczy wpisać dane. które clrcerriy wstawić da tabeli. natamiast caiasć szablanu skryptujest generawana autarnatycziriei dastasawana da wybranega abiektu- Pazastałe apcje CREILTE , EELEĽIT, UPDATE _. DELĘTE wylcariymfane są analagicznie da przedstawianej pawyzej.
Falecerria TRUIICATE araz TRt1I1~tt_`1a.TE tlaauauz równiez mazerny wykanać za paniatą narzędzia pgrftdnrinl I 1. używając apcji Übcięcie i Übcięcie liaslradawe:
124
aazr' t_'›a.'~.='='i:H | si-'s'r'ti-1 i' iiaz ii.-ii~iyi;'|i
F3
neta; uczni
Ê Firnitcje i-_
widslii ta Iizsri-:in stany
_}
j
'U.Š".li-5'-iE"”"i;.
5
rtabeijzjl
Eh " _
T1
_
Ę _
1-tys- 15.511- Usuwanie darrych z tabeli za pamucą apcji Übciecie i Übciecle kaslcadawe
Gdy za pamacą narzedzia pgadminlll twarzyrny tabele pawiązane. które mają być al: tualizawane araz usuwane kaskadawa. należy wylcanac następujące kraki. Iftanstrirujemy nawą tabele. którą nazywamy np. ta1:±iala___nac1rzec1na: lłi Ê' pubie Parównaris (El)
Ê Ê Darneny (U1
'
ttanřiguracje FTS (Ü) 5l=ciwn|l':i FTS 1:13) Parsery FT5 (E11 Szeblany FT5 (III
Ê Fun1‹zje(a} 3 Seiiayencje (Et) E
lnu
-_
ze i""'ii““* --raez- -za
:-
Funlrcjzs
-.___.wi':1ela'|
|'
rtrsatar irarawniari...
Š- Répllcaban Slany itd Rys. 15-51. Twarzerrie tabeli
"'*"iflŠfÍWDŚĽl |DeFtn1cja| Dz_iedziczen_1aj Life Nazwa
j|:ebela_n-aclrżedna
Rys. 15.513. 'Określenie identyiikatara tabeli
Następnie daclajeniy italumny: :i.cl_rrac1r:zsictne typu lnteger araz imie typu character yarying a maksymalnej dlugasci pięćdziesiąt znaków. Czynnaść wykanujerrry za pamacą j przycisku Dadaj w zakiadce ttalurnny. która widaczna jest na rysunku 15.54. ltalejną czyrrnascią jest wybranie klucza głównega. który w tym przypadku ta ict_nadrzetelne. Üperacje te wykanujemy za pamacą zakładki Dgranlczenia (rys. 15.95).
l
i-=ciirs'i'.-ta-'r _| i§.z.r|t.-t si¿'|
yaa¿eese|_asrruciajeeeezzz=ns|uulaszws-raiumy lustrem
sritriiir lnssds... I
yaeaaysii|nsaass|zinrem[mawaaa|`Eó'tea'aaew=aarm] |!-rşzuyş
t.. zl I
jld__nadrze1±"ie
lj
1-.-ji-zw‹a:|¬ Iiezesf
-'I
5
Rys. 15.51-t. Lltwarzenie kalumny ir.l_nadrzedne
'siseiaeel nei-mal
I
„
na id_naclrzetlne linie
integer charactet y'aryingtĹ5Ĺ1}|
Rys. 15.95. Ükreślenie typów kc:-lunrn
Ralejna zakładka przedstawiana na rys. 15.5113 ta Ügraniczenia. jedną z pelnianych
5
przez nią funkcji jest unrazliwienie wybaru kalumny. która będzie aclgrywać ralę klucza
I
głównegci. Pa kliknięciu przycisku Dadaj zastanie wyświetlane akna Nawy klucz główny
[r'ys. 15.*š'r?j zawierające razwijane menu z kalumnami. Atrybuty te bedzie rrrazna wy-
=
znaczyć jaka lciucz główny. W prezentawanyrn przykładzie wybrana zastala kalumna ir:1_na.d.r:zed.r'ie.
Ê
kaseeidlarfrrer-Iaeefiaeealus
"
l
Rys. 15.':1l3.`w'ybór klucza główriega l I
R
-|-Å-H
Å
"E
-E
|
I-
|
-
Ź
126
Fl."'iE"i`[1'.=¦ti'-l`r`Ľl-ll'š“r`!'i|1-_t'‹1`|'l:i."t? iJ."".l“-"'i"lÍll
'am
í F
l"l1_t1s
't'-"i-rtrsf
Ernst
1-tys. 15_'E1I'_ 'Wybór klircza głównega
rücnalagicznie da przykładu na rysunkach 15.512 i 15.93 twarzymy dnrgą tabele a nazwie t:ahela.__pac1.r zadna. Twarzyrny kalurnny: ic1_pcrcl.rzec1ne typu lnteger araz dane typu tekst. atrybut ic1_pnc1.r.'z‹ad.nia wybieramy jaka klucz główny. pada brrie jak w pawyższym przykładzie - z tą różnicą. że w relacji a nazwie tabe.'1a_pad.z'za~c1rra twarzymy również klucz abcy. który będzie adwalywał sie da klucza głównega tabeli ta]:‹ia1a_nac1.r:zad.na.
|':|_padrzedne dana
ritsqsr ten
Rys. 15.95. Typy kalumn tabeii
Ićalejnym krakiem jest wybranie klucza głównega i dadanie klucza abcega. ."'-||'.|\|.'|1.r|hr'l.1...
_
"fiasamfilaerns-Inazzazzmjuz lip-'amy üzaiwflljatsfiain rwie lu:
ria_,;za'zsi|¬s¦'
"íí:_l'="‹==i=1] Rys. 15.59. Dadanie klucza abcegn
t1ti[_1fs`|'-'tka-'r | I r i Is i “si ir
Wybór klucza abcega: Ę- Hawy klucz cibcy...
-
:
2_=;¿_-"";_ l
wiaesmssjsafiays tnńnrjarnsj
I
r
_
I1!|=il"|=r|'|"ir|r"'ł$i"
.
fl
jkluflflüfzeów
'j j
ltrl ri..=n'l|":."i='¦|'lr|'r
"Í"ł
ltys. 15.1at1. Definicja klucza abcega - reterencja cia tabela__nadrzedna
'wlasny-zsa|"a=n1=ra lat'-flnnir jš i'|:l_pa|:kz:'edne
I j
sara I
a
id__naclrzeche
Rys. 15.1111. Defirricja klucza abcega - referencja id_pa›drzedne - id_rradrzedne
hr trawy klucz ahcy...
_
"Z _
wtsrewrrujasfinnajkarnre Nzra j ra-zymeztyfilunii - ' i='±¬.zyue.r.'-is-au-_ ĹF' aaaerrafl F' riaacriau =r" aürarcr F* sesriucr ,F
fi'
-r' serriui je si=:rae|=ai.|-_r
r'"szrau|.r r* seraa=a-r.r
Rys. 15-1111. Wylrór akcji. która Ina za:-itać wyknnana w tabelach pawiązanycli padczas mady hkacjr iw przypadku usuwania
aplikacja pgradrninlll urna-.żliwia wybór akcji. która rna zastać wykanana paclczas medyfikacji. dlatega kalejną czyrrnaścią pnwinien być wybór akcji. która ma zastac przeprawaitlzana na tabeli p-awiązanej przy aperacjach pnrlczas rnadjrlikacji i usuwania Da wybaru marny:
|
iż'-'*'-r_'”1' l_Í'.--".:"¬`1"'ll
l
"1"| _“Ł-_li ".l"|
ii.-"'_."
li-"'.f'-¦`=i.il
1;|lii'1;i 15 l Wylmr akcji trnirrzliwianej przez aplikacje pgrftdminlll
HU H-CTIÜN
Nie padejrnuj żadnej akcji.
Ê-EŠTF'-ICT
Eabezpiecz jgdy istnieje pawlązanie. nie zezwalaj na zacina alicją uzuniecia lub rnadyfiltacji¦|_
C5-EC-5'-DE
Eezwalaj na madyñkacje i usuwanie l‹.askadc'we_
51'?-T 1"łT-TT-L
W wypadku madylilcacji ,F usuwania kratelt pawiązanych ustaw wartaść NULL.
Składnia palecenia SELECT SELECT *
FROM 1'tñ.EHe|.__t.ElbEli,'
Fit'-_ 15.1113 "w"y'ś¬.'.'ietler1ie zawartasci tabeli gascie
riilry przećwiczyć działanie palecenia SELECT. pałączyiny sie z wczesniej utwarzairą bazą danycir majabaza.
Rys 1-5.11.1-¦_ Falączenie z bazą danych w kansali psql Serwer Grup
Ę ssfwsrewtii 5| ji |1=;'_sr‹;rr›_-si:¿L a..r':|c›-;-a||-':›sr=s-razi El-_‹_
Bazy da|¬iych (221 El- =_j rnajabaza lt.-at¬ala';1!l'p`s`]'
. F'.azszerzer.1at¦1 El-Ê Schematy [11 . 'Er public
u -flfj Parawnan|a1`|11 -
Darneny 11211 _ 3 tlanřigurecre FT5 IĹIIIJ
Í H situ.„'¬i1r|=rst_ar ` 'Ê F'-:-ir-.=-_-fi-1.-|=rst':ii '_=IIE Szablany F15 |.'Ei]| ¿ - Ê' Funkcje [E11
Ę. sai.ae~‹-je taj _
3
rslsels (41
-
IÍTÊI rłasicia
l"it'-_ 1.E;_111`_¬å Fnlączerrie z bazą danyclr rnajabaza w pragrarrrie pgrkdmiril ll
i' -'
~
jeśli clrceirry adczytac wyłrrane lcalnrnny. i_rzywamy sklaclniz SELECT kcrlurrrnal. I-ralurrrrraż.
FRCH nazwa_tał:.'iali.' np.
|t'. - IH lila. t`1tlt'zy1arric' zawarta.-ic'i wylrrariycli lmltrrnn w jiriigrarrrie psql
tak rrietriidna zau".ya'ży'ć. w kalunrnie nazwiska pawtarzającą sie wartaścią jest Tyawak. Gdy clicemy atrzymatř wynik zapytania. w którym nie bedzie pawta rzającyclr sie wartasci. ttzyjemy sława kiticzrwifega IJISTIHCT. SELECT DISTIHCT nazwiska FREE-1 gasnie;
ttş-¬ t'~i_t|'t_-' tĹ1tlt':›'_y1a|iie zay.-at'tiisti ltalunrny rrazu'i.sk bez |rc.|w1:rrz¿rjąc1,'clr sie d.;rr|1_.'cir w pr'a¿„r:iiriii-
Pati Gdy clrcer ny atrzyniac tyllca wiersze spełniające ukreślcrrry wa runek. musimy pasiiizyc sie s-iaweni ltl uczawyni WHERE.
lira- 15- 1-tir] t`1'clt"zyttrr¬rie kratek Iabf.-l h¬-aścitz w których id_ is"-'a.sf.'_ia '.-› 2 w l rrrwrtirtrie _ . i¬ P s fi i
iytazerny równie zastasawac" zluzane warunki. używając aperatarów' lagiczrrycii DR, 51111, HÜT, np. it:i._gc1'sc:ia -<2 3 ÜR id._gne:‹z:i.a 1'-1' 4. Sartawariie cl a nych pr:-:elriega przy 'irzycitr sława klucżzawegcr ÜRDER BY. np. jesli tfltce-
my. aby asaby wpisane da tabeli gaseia zastaly pasartawane altÊ'-il_rt'1¬ycznie pad wzgledem imienia. irzyjcr'ny paierzt-rr i ia:
125
"'.
I-
'
l."'-t
'.
"'
I
I
¦"|
_'-ilil:
'
.'
-'
|'-'-_
"
-
l:
111. 1. iti.it1*t Surtawarrie clatryclr w tabeli ga:-icie - użycie Ĺ1RESil:'lł Ei`r`
Snrtawarrie dainysinie prze prawacizane jest w lbrinie ASC jasteirriiirg - rrisirącaj. jednak rnaże zajść kainecziicisć pasi_irtaw;iiiia iidwi'ii1iiega inaiejąca. 'iiy' tyirr celu ttzywttriiy' tliit'latki'_iwti sława DESC jdesiżei-rdi`i-rg - malejącaj. np.
tt-._¬.
'-¬ 5 in "_Śiarti;iwar5iie Claiiycli 'w tabeli gcistiii'-1izycit¬ ÜRDER BT
Si-:latliiia CRDER ET ttinażliwia paclanie kalejnega rrtirrieni kaluiriny. yi-'zgledeiri lttórej zawartaść tabeli rna zastać pasartciwana. np.
iii!!t_ Sartawanie i.lar1ycl¬i w tabeli _u,tr±-Šciif - iiżycie ÜRDER il`r” z nznaczeniern iittittetlt l-ti.ili_iiiiiiy, w której ina zastać. pr'zepi'tiwaclzaiie sa|'tawaiiie
Niiiirer kalttiiiny tistala sie wzgledern kaicjnaści wpistiiiiti ir.li-.=i'ity1`ikat'ai'a ltrilturrrryt pu paleceniu SELECT '- ii:1_i.[.yc.'e.i:ia iira iiiriiier 1. iniie - titttriet' 2. natcirniast nazwiska - nLrriit=r 3-
CIRDER EE 1 pascgreguje titiiie ltiiliiiriii wpisaiiycli pn słiw.-'ie klticzawyrrr SELECT pati-_ ¬.yzgledt_*'i1i kijiliiriiiiy ici_gcrst:iz'..
..
._
..
-|-
Aliasy w pastgresql liadczas pracy' z bazą danych niaże zajść patrzeba riżycia aliasaw. .alias ta 1¬yrnczasi_i'wa rrazwa deiinia".'i"a1¬ia W trakcie trzycla zapytania dla tabeli lub kcili|it'itry. jeśli talrcia rrra nazwe. która sprawia ttucliiasci w użycirr. np. rirp12gó5n23"1. iriażeriiy dajśc dci wiiiósl-;1_i, ze taki iilerrtytikatcir - chać jest puprawny z perspektywy stanilarclu języka SQL - pndczas prób użycia rnciże sprawiać trtidirtrsci w zapatriietarriti. Ĺ.ltwt:ii'zc:r1ie
aliasii spciwudiije. da tabeli a ideiity1`ikatarzc nrp12r;-45:23-it będzie rnazna aili.~.-a-tyi.'_'ac sie za paniacą aliastr. np. gaseie_hat:elciwi. lstatną ccclią aliasu jest ta. że jega czas życia jest agraiiiczany da zapytania. w którym alias zastał ztleiii¬iinwany i pn jegci wykóriarrirr alias ginie. Irlraktyczite użycie ctlittsów spra-
wadza sie zwykle da trzycia ich jaka tyiriczasawycti kaliimn. ¦icl__|:iii:iltny|.| 'cena_za_clul:re _ şşfleger jtnteiger
_____ 1
lid_'gii:iisci-a jmtegpr'
513
5
pl]
'zl
_:_
za
.r
"T li "_ _I fl'Ĺtill|l'-J'| - i:r-_'_-¬_-:-.i
za ra za
i
_
2
l
.'z.
_
r
itys. 15.113.Eawartasctabt-li piikiije w pragrariiii:-' pg.f'i.diiiiiiIt[
Pawyższa tabela pcitccije zawiera cene za dóbr; pakajii lratelawegci. jesli klient chcialby
dawiedziec sie. które z palzai uyr1¿ijettf na tydzień kaszniją mniej niz -ttttji' złatyctr za dabe. Tnciżerrry zlrtidnyi-'ać zapytanie SQL. w ktaryin użyjeiny aliasu tabeli pcikci je a icłeirtyiika-
ttirze t:eria_t:y'ctzien_ zaii-'ierająccgci ic1__pc:i1i:c'ju araz tygadiiirisi-'e ceiiy' wyriaj ec ia pcilasju jcena za dala; paiiiiiużuna przez T"]. Przylcladeirr jesty kad SQL: SELECT :1.d_j_::-nice ju _ eene__za_c1at:ie * 'E' FRÜH pakuje AS i:ena_t:ycizien liłastępnic tizyjeiriy sława klirczawegir 11111-IERE i akreśliirry wart_1nek:
RHEHE eena_tydzien _ eena_za_c1abe 'c 405 .' Warta zwrócić uwage. że nazwa aiiasri tabeli {i:ena__1:.ycł_zien`1 nddzielana jest krcipl-tą adkalunriiy aliasit [c:ena_ze_r:tcr1::-ej. W tyiri wypadku alias ma w kaltitniiie cena za_ debe wartósci tygadniawega wynajecia pci-kaju_ .
í
lły5.l5.1li Frzykłail trtwci1'zt_'tiia iiii:|si_t wlti'_it1siili psrjl
131
2
'i
J
'
'|I
il
l
"l"¿'-'l
l-.li
Ii
l_'
lt
ifiilitis illa pciprawieiiia czytelticisci k_cidu ciei"i1'iii;iwai1iy jest za ptiirtócą slciwri lclticztiwegci A5, izri jticiitalc w PastgreSĘiL rrinże zastać paniiniete. itp. SELECT a1.a2*7.a3 FRÜM pakuje aĘal.a2.a3}; jest tci i'ówiiciz|i;ic:zi'ie z. SELECT al. a2¬"'"i' , :-513 FROM pcilccije ES a{zr1.sr2.e3} I W tyin 'wypad kit zastał t1Lwcit'zciny alias ci iiii_'|il'yi1l-Ltilrirze: at dla tabeli pcikcije Lii'a'.r aliasy kriltitriii al = ici_pcilccij'-u. si2 = cren-a._zet__d.cibe, a3 = icł._r_:j'ci-'.s'r:i-a.
i¬t¬- s tli 1 i-1. lłrzykiacl 111y'.-'cirzeiiia aliasLiy'_'l‹¦.ci1isnli pscjl
.fiiiialtigiczriie tle pay'."j.".ższegn pt'zj.'kładti irinzei'ity i ti_itaj uzyc wat'L|itl‹tti WHERE, itp. SELECT a1.a2*T.a3 FRDH ppkpje RS a(a1,a2.a3j WHERE :-512 I1' 'ZÜÜI I
I
Í
Í
J'
If
Limitawanie wyników zapytan 'wyriiki zapytan rriazeniy agiaiiiczac pad wzgli-;tletii liczby zwi'ai.'aiiycli l~tra1r'k. jeśli wyiiik zapytaiiia zwraca iip. Ü krcitek. a iiaszyiit celeiii jest iitrzytriatiie jedynie tizecli pici¬wszy'cli. iizyi_'.'ci_iiiy sława kluczawegci LIMIT, itp.
t-'t¬.- il". t1"_~.~. Użycie .sława l-'.liic_zciyi'egci Llty't1T 1
ttis 15-1 iii. .'Ĺ'.iw.'ii'ta'.¬'c ialieli |*ii'i|-:tiit"
I
Å-.Ż
.I ¦!___.|
I _
Ii
Ieśli eticeiriy ale; W wyniltti zrialaeły sie 1¬;.'ll':e clwie 1-;retl-zi. licząc ed czwartej. i1;.F:ş'~.'.-'amgf' sława lctiiczevifege DFFSET, np.
|
I'
I
ib'a. lH.1t?. t_lzj',„'i:ie slewa ltlut:zt:wi;~gri ÜFFSET
Unie w pustgresql Ĺlnie Littimrarie Hai. Ętlş' '~.'.-"¦rfiill't jerli1e[_=_'_fiza[1j.Fl.z|1l¿t r:l1Ľet1't}'1í}rzel'L'1zHć Cltżi '¦:lt'L1gieg,ü zapyteliia.
i
Pnzrluan 1a.fi Dla ]:'rz}'l-:laitltt [Jti±+lt1zş„'n1j.-'sie rlwiertia tabelamiTabela pierwsza e nazwie prae_p_p'::=n1‹:.':: (siedem eetibjt 'zawiera ]ara‹:t:iwriil-:‹:3w t`t1'n1y', którzy iiltettczyli sz!-mleiiie w zal-:reeie pieiwezei pemetżg.-'. Druga tabela p:|:ae_bhp [pięć eańb} zawiera p1'aet_iwr1ilefiw Firmşf. którzy etlbgrli ezl-telenit' El IF. latntrią cechą jest zgedr1eś:ž ebu tabel w zakresie liczby' kulunm i typem' darijfcli. Warte zwrócić uwage na clwúcli praeewnil-nim' vąfatepiiiacşfeli zatiiiwne w pierwezei. lek i drttgiej tabeli. ll=|:|_|:|'r-:|'|:n'||i'||lI'ta|I|1-ilie U _ llwaehl__ l[F'K]iriI;e':|er ltharnctei' i|fa|:'_i'i1g_(_§lJĹ[ dia-ā||:t'|:|*'r'ir|:']r!i'i|¿¿¦|_i_,'_ĘI}_I|_l_|'1lE|¿11a¿r_| _'1 Gen I'Iet-i-:il-: _ 24 H':';| r:ieeh
Heuelettz
3-ii
-3
Hlühāi
Hlemczek
35
.H
Hčufitfi
Eafladzke
25
I1':11':i rr1±11:e|:-:ze
í'Teel-:11-:site }'5r:|¦=i-file!-:et
.55 E3
Enzena
l'1:z',|'l-zueeinzke
-ati
5' Í _ŠÍ_"
I
Eye. It'l.1|H-THbela ]:|rac_p_pemer;
| |
_
_
__
_
_ i:[__|:irar:n'I'mfi‹: imie inaznińtu wiek [FIZ] hteger çitaracter var1rIrrg{¬'.'rEILl dlareictei' 1rar'ƒl1g[5ü} lhteger
I
-
l
I1' 'EIJ
34
He 3 i: 1e|:h
Hewelr Eewelek1
2
'JÜ
3
Her iān
Heniek
33
'±l
He:r:r:1n
T1: eee
215
5
Ewa
Henne:
23
Rita. ll't_l1fJ. Tabela |:irai:_bbp
Użycie Slewä ltluL'ze1.'zt=gri UHIÜH Spuwečitlje priłątzenie übtt l'.'=tlJel :-5 eliniiitmfi-'aIHiE*l]1 tlupliltztćrw, eti W elelüżle sprawi. że Ian l`~ltiw-:tli i Wüjeietlt i{ti'i‹¬.';;1l±:l-ti ztietütttt w'ş'świetle11i
lylltüfez.
,133
_F134
||
_
I.
.I
_
|
H'„¬ `|".,l_.{l| I-Š'Ĺz|s1ris‹:ji1.'.';rriir* unii taljttl
W efis-l~ct'it' titrzyniartişf' tabele, l';t-tira liedzie spisem wsziystltieli 1:i1'zeszl‹:eleii},=i:li prat:ti'.'.'n il-=;t'iw. bez wzialeiiiti 11a reclzai sziteleiiia. Jezeli zaiclzie iceiiieœiiesć wg,-'s¬s'ietlt;'iii¿i ebu tabel wraz '.'_ ptmftztrzaiaeş-'iiii sie clarijaiiii. pn si':T›s"|t? l'Ili¦Cz.e¬'.'.-'¬¿„'111 UHIÜH i'1alez}-' titiiieścifi ALL.
SELECT * FRDM prae_p_pnmüc UHIÜN ALL
SELECT * FROM p-raeewnir:}='_bhp; l
Gdy zaitlzie petrzeba etiszitltariia praeeu-'riik=íiis'. luerzş' edbg.-'Ii ebe szkeleriia '[zare¬.¬.nn Etl-il”. ials i z pierwszej peirieqrj. tizjr-'ieiiişf sitiwa l~:lut:zewege IHTERSECT. itpI
SELECT * FRCH prat:__p_pemet: IHTERSECT SELECT * FRÜM pracüwnicy__hhp;
CJtrz.j,-'iiiaiiiiş-' is-'ei'.-'t:zas wjfni l-::
ttw it'i. i ll. T.'Źastr_isu¬.=.-'ati ie siuwa itl11~:ztiwe,"=¦ti lT*~l'l`l-ÍEít!:¬`›i-ĹĽ_I`l` fiiüssfe l
tiuwatte sa cltigżilitizity. e ile nie zestatiie uzjfta l~:eiist1't1l-;cja IHTERSECT ALL. jesli W tjiit'z},-'1"nett11~"tT1 "f1."1y'1"til«211 Clttettijf pei't1ii1ątf t'zt;fåti ".".=spt`ilr1ą ebti zliitJrĹiw_ tzn. is"5'Š'.'.'lEtlitř i¬},'ll¬:tfi t'.t1'íi'.źe"u'.'riii¬:m¬.-' iiiająifşfeżli t1ie]:iel'r1e' szl~'.t:'lenie alliifl z. El-l P, zlbü z [IilE'rwszej ptilltüfşf. |1:J:1_i'i.'t"tiri1¬,' sliiwa |‹;l11t'zt;i¬."«'i¿re=,t'i EICIE PT.
I
!},¦_"___
_
__
7|
__
_
¦
lij-'s. 13.! 2.3. Zastesewanie słowa kluczowego EHCEPT
W rezultacie etrzşfrnamşf pracewników. którzy' ci‹::lbj'.'li szkelenie BHP, z peminieciem tjrch przeszlcelenjfch w zalcresie pierwszej pemcicjr i BHP [część wspólna zbierciwj. Srniację rnezna eclwrricic, zmieniając kelejneść tabel. Ün'.z}-'rnanrjf n-'ón=czas pracewnikciw przeszlcelenjrch w zakresie pierwszej pernecş-' z peminieciern tj-fcli. lcterzjf eclbşrli pelne szkeleriie z BHP i pierwszej pemecff.
la. 1.35. Eastesewan ie słewa 1-clnczewege E}~ICE?T ze zmieniona ltelejnciscia tabel
Analegicznie de wczesniej pedan-'anjfch przj.'l‹:la':ltřvw', EKCEPT ALL spewncliije nafswietlenie tflupljlzattřiw. cr ile beda wş-fstępewac. _
f
'
-- -:1¬_
-_.I-"' -.-Íi
ee
f_
.....“kba _.'."i .‹___
"'¦"i |"""Ľ i. .
'
¬';f""'¦ Ę rr|
-1.
-__.|
rs.
_
c
1.-
I¦'| "'
MI
.
.'L__
|
cr
-
-
1
¬'.I.-|l'|„'l.l.
=..¦_ .Ü-__
1..
._n.
Hi
1_
=
_""|
hl
-
|
'.
-"¦
-|is.: .|"i.
_.Ł 1....
|.q.'|.¬.:} "|-___'
l`“=-
°'
r'|. 'i.1' : J'
l. jakiego zapjrtania uzjrjesz, aby usunąć tabele kaslfiadeweř 1. De czege rnezesz 1.1z'~_;.-*ii funkcji agregujacjfch? W jaki spesiíib na zachowanie integralności referencyjnej wpljfwa wprewaclzenie l<]ucz}-' ebcjrch? 3. jaki tj,-'p związku etrzjrrriamjr. nalcłaclając na l»-;lucz nbcjr cigraniczenie unil':atnwc›sci?
_lUJ Hi
1:: .'.'fĹ`i` l_l."'.l“~i`r¦Ĺfl| l Šlt'
_filii
f'
'
1
ji
Zapytania zagnieżdżone (pódzapytania) IAĽADHIEHIA
|
1 Definicja pódzapytania
_
I Metedy i.'.'}fkunfwania zapytań zagnieżdżónjfch za póme-są instrukcji 5QLi gr-aficznegó kreatura
zapytań QBE Psdzapşta nie jest typem zapytania ttzjftjrln wewnatrz innegn zapytania. Uzjfnfarite są pticizzpytania EHIST,
HÜT EJĽIST,
AH,
HÜT EH 'wraz z klauzulą l
WHERE ciraz óperatórami|"rzjrklaóer¬n pócizapjrtania muze być kód: SELECT a.imie, a.nazwiskü
FROM pracównic'.y'__hhp at WI-IEEE EIISTS a.wiek};
(SELECT
1
FRÜl'! pra=:__P_Pómcir:
p
WHERE
p.wiel-7.
=
I _
tt'.
-
-
l
|'.J t. "w'j.'r11k póclzapjrtanta
hftózerrw równiez uzyc warurtkti HCIT EHISTS. wówczas ótrzj„'n1ainjf'w¬j„'nik wsz'¿.'stkich krótek z tabeli pra'::ówniey_hhp, które nie maja swójegó ódpówieclnika pncl względein wieku w tabeli prai:_p_pc:-mócPónizsza ilustracja prezentuje clwie krótki. które nie maja óc|pówiei:lnil~:ów pód względeni wiekurr|_|¦nsur~lrnHrŠunte
jnnuasłin
_men
ut_|i|'i±:ri'ni|1ttir|;irriz
Šninsnlsl-tu
J
t_'=51h==n=' j':11'-_=-'±=r~'=y'_='-i'1'1-ir|I!'fi'1t1';=f."-='f'ż"='f'ff """'i"'i'=H"1'-t.~.'r!f'='e-*=t tE'F!!:'*5@e"_.'@?!±='r*1*1=f""t'f"1iH'1-tf-*±er!.et=' *"='f'r"'ß'ff“"tL'.'!='¦F L
"'
'.
| l _
'sz '_' u_'J
|-I'.
Eee
;
1' -
.
.
1 1
-
Tr; ee :_
F E'
Henne:
2-3
'1
-
'. l
- -_
¬
-
1 .
- -
7” '
-¦
Fe 1-
f..óL1-'|=l=k"L
_Ł
1-
l.r.-:ne
Er:='1':-='=l~=='
55
'¬
I'-l:l'rc':'|:1a
-'wn 5
7
l-='a:"'rn¬
F=':¬ƒ1'rr›.'1'.'1r' In
-'ll'
W .' `w"¿.'r1ilt tlzialaiiia ptatlzapjrtartia przeóstawicmjjf za pómóctj tabel
_i
~
'
-
Å-
Pciózapy'tanie z t1zy'ciem NCT EDÊISTS będzie niialct póstac: SELECT a . imie . at _ nazwisku
Facet prae-.:wmiey'_bhp a wazna nóe Eazses tsznacz 1 Praca-'t peae__p__pe'móc p WEIEFE. pnwiek = a..w:i.ek} :
1 |l'i'.~'.ł. l1l'. l- "J'¦.f'y'tiil~: Łlzialrmia póclzapy'tania w knnsnli psrjl
Dóstęp de danych i tabel w pgfltdminlll Pó urncltórrtiet'1iu rrarztgtlzia pgrkclrriiiil ll i pólączeniu się z baza clanyfch ".'».'y-'bierarny" tabele' lpt'zyf'ciSl': Przeglądanie wylirartegci óbielttu.
F'||l-.
Edjfcje
".'t'."ty'|:zl-=ri
'il åąlr' . .Ü _
't"'.'“i|:Ic||". Hafeeclzia
j
F¬a'|11=ac
Ü".
est _“it 'Li' ""fři' te ' -¬"" ""-
. .
I'
."""í-.= _
''''' r'
__ 5¿f.'1l±'lĽ|'t|y'FT5 |_'_|.Íl}
|.--
-I-
Ê Fun|'=.c|e |f|II]'
I
Selfwencjetlll ¦`r`Ę
_
`
`-'-E||:'E.'lE |ĹÍ"l
_1-J ¦`tl _Ä-`: ='-':
"] gsscre ' 'I j'.›:|l"n'jF.' Í 'f |:'re':__|:r_j:|órn‹ac ` "" fi
Rys. l“l.4 Pulaczenie z baza óany'cl1 przy' uzy'ciu p1r'c'[__',rairiti pg.f't¦.lit1ir1l li
W óknie. które sie pr.rja'».'.-'i. wyrswietlajac tabele. untclnamiamy' Eiltr przyfciskiern:
I eayrzja aanyreh - Pnsrgresat s.z [tnca|haet=s43e}.¬ Plik Etlytcja
Wldük l".lü'zĘcizia
F'*.c.irn'cic Ęijlšezlirrritu
|l:y'.H. l*l'.'i- Filtrówa nie zawartnsci tabeli przy' tnltyfciti prógraniu pgrfuliniril Il
W zakładce filtr wprówaclzamy' warunek: 7.? Dpcje Przeglądanie Dailşfch
I Sórtówarie D-snyfch Fllfl' I wy-'rażenia Ftltrujące Ina.: aid :=- ID nt'-JD aid c Su] I |
wiek 3= L5
llytt. l'š|_t1.Ükreslt"'rtic' wa1't|rtl'2it fi|Iru".'¬'a|1ia tlany"ch
'fi
13?
¦
ā
ll1tr"`t D-¿"rl¬~"r'2. ll l “'r`t"›Tl|"-.1`t E'r¿tzÍ [J'5tÍ“'i`t"LÍll
¶LĹ Å
L
Pn wprówadzenlu warunku zatwterdzarny óperacje przyciskiem UK. W kólejnyrrl króku ótrzymujemy wynik w póstact tabeli, w której wiek ósób spelnia warunek 'a':|.'|ak Iz 25 I Eclyn ja clanycłi
l"c|st|_:j|='r'e5Ľll. 'lit' tĹlf.i1'.‹ri||t||1"iI..'fi4l1-i'¦`.|' ' liułinh-ñzü ¬ FI*-ll-12 '
Ilflfllfnlfill-._lila'-tl'*"'-"""'="
3
_í L uñtiaacaech
_'I'Imr'u_1.sk1
_SU
E
Hazien
ŠIín'\re|J-:
SS
Ê
Haccan
jTcacz
.S15
Rys ID T Wynik uruclinnalenta filtra
Kwerende mózerny równiez przeprewadzić za pórnóca skryptu SQL. W tym celu zazrta czarny tabele 1 z menu pódrecznegó wybierarny Sk±"yp±yƒSkryrpt SELECT.
Ł'
_
|'='1|urr'ra't'|t II' 'H C|'g,rar|czer|'||e
'Ê lflåfilwr tfll' ÊW1-|l¬1" iül
Üümyşł
L' 1 e: p1.=_1|_' |;.ur±1':y'
Ettcr
_ ¬'=¦I¦t" `."i".IE:i.E 1=t:a-.".-T-I-I
Ittflvrrebietr'
I'
y___
T.l|.E|I.E pcaeann
la ttifyawalacze tr±|ela_na|:i'ze¬:i' t.¦I|¦1|'tl|:t'i".|t=c
;EEG-IZ
` :awüflr_wm:tt'.ar|=|.t|-rkcre va'z'=-'meczy'
'i||'i=:l'al'=| Iillllt |1ĽE'Ê'|"1""l 5lU'fl¬r' 'ÍÜl
SHWHIH 'Di:t`1:ii¦c|¦|
zaecnrniltu inne 'e chazacter ver uzat-tu cłiazectec
'l:±":""'¦'fl=l""“°"""l'l"i"=l|"="""""
Rfiifiłfifillflfi S-`fl"l=.~"i'lI'."l"~
Ê F'rze1ją1;l'¦l'i|¦r dmtfch
aapmy hu yflłmm _ '¬¬ ' _
His
1513
tt inceaerz
fitftft "='*E"'TE rasear
Ferze||:lsm"|.zri'|ie... Tercrzerrjaluapizapasóvrej...
5|'u"¦rptLfFD-'ITE 5l'iI'Ĺ'p|EDEl.El`E
inny spósób utwórzenta kwerendy - wykórzystanie kreatóra skryptu
pgifirdtninlll
W ókrne przeznaczónyrn de twórzenia skryptu mezemy pósłuzye sie Er:|y'tórem wptsutac kwerettde SQL Inną rrtüzliwuść daje Graficzny Kónstruktór Zapytania. któ
działanie przypórnma QEE znany z prógrarnu Micraseft Access.
Edycja Iapywaa Li.|l:|a:i=t'|e lilalea 'i1l'ti:l'el't=F'nrrr':1c
lŠ"'l‹ii]aflf'7'|tF\fi|4C"|l'>Üš'áliHrÊ]ll. _,J-I--l'l.í't-F-'I-I-I IJ- fl¿
ł
' E=|r='='f S11 i"±='f_1'==:'r_'=e"et'_Hee'_e"ezf_e¬""
l'|'l.
'
_ |Jri-wt
I
Šjümfltahazfifi t.ła|.|"| i'i'szy'sti'=a
SELECT :tdJ racóunalsa, imie, neztrrialcu, nie!-r FEDH 1:i:r:acó11rn1c:5'_t:rh1J;
Iły ~. ta '1 Twarzenie kwerendy za pcrmócą kreatóra skryptu w -skrne eclytera SQL Pn P rze l sctu dci E raficzne Eó kónstrulctcira zap l" 'tan w lewyrn menu üdnajdujemy le dla które] bedziemy twórzytć kwerendę. i wybieramy kcilumny. które będą 'itryf w wynzku kwerendy
lI'*tÍĹ\lIJíI']›II.l`."ä..W't' |ĘI_Ż.YIl'ĹÅ ÍTIŚQI.
'Il |_:_ _
-
l
-
-
-
-
1 .__-__._i_-_í
-
_
Na tym etapie mamy równiez mozliwość tworzenia aliasow dla kolumn.
_Ü mjabaza na pastgrasiäilucalhosttałā ll
ta
1"
y-
|.
¬.
Ê _ʧ¦|\¿tl;Ę|ty§lE,_'l_|¿_'
"" "v " 'n '
_
' ' ' ' ¬-' ' "'-'p';'."Ii-' '¦;¦L¦'.'.".";""'¦-.' "ły-'-_
El'-t|l`Il:z|'ty|r_IIu|*t5l:ruI'tl:u|_' Ea|ayrl';an__ia
I L_l rnojabaza
I ra
-_
" '““" """ ' ' '
' II "
'
"
I
I
I'I` I 'I“_ I” __ -'I
;__ ___¿____. __
l
'=I
katalegt
¦'
_ E- ____ Schematy
I]] |d_fia1:r_›wr|¦l"..a
j
Ê' F"'ll¦'l"f
lIŠ'¦ goscia
i-
'
E_,_____
ta1"a..'wist.o
I.
j-5 rr ja- _
Paleta |:ra':_j:|__pamnc
'
|
pi -;i':o'..-'-.'rnc';.-' bhp tebala_nai;irzec|na
_
uczntawla
_
znw`c|t|yt_.wec|kars|'Łle _ .'..F"
. ___.._ .'.
.
._.
.|'
'-'-
_'__ __-:¬_¬.-._ lll ¦|_._._._._'| '_._._._._.
I 'u'
_""3':3"Í-C.--_
II-I
l
'
.
|
.._..
i " IE
| III''.' :"üf"_y'_`|`_ "r .'
'
_ "_
_
_._
"l'l |
'
| I
.
1:'
_'
_'_
'
.
_
|
I
|
.
' '
'_
' .' " '- .
' '
'-ll
_ _. ' ' _
'
1-
' . .
- -f
7
'
. .
".
" ' "-
..
.
'
__.lI'.!' :-`
_' '
.
_..¦ ..
'
'
.. _ _la t-_- . !".'!~'.' '_'¬ '
I
'.;"¬j'. '_ ..t-.I: D,-:..._ ' J ."_' ¦'.'_'
'af '.' .¦'."j`|'. . "
.
'
.u.|III
|
|
_
_
c_›rac_ownir_y__bhp
'_I'I"I - -."...
I . '
_
|_
_
-i3.i='r'=r='="."~."'i=.i'..ł1.|".|.='
__pracciwnicy__l;|hp pracownlcy'_l:rh|:i
|
_
.
l
_'_
.
I
.\_
l
'
_
|
._
_.
|
'
'
1
.'_.._..
1'
.' |_
' |
.
' I 'nn'
. ._.|_|_
Itdjiracowntlaa
_
Ê
_
.
' i_I|l' |
_'Wa
_n.azuyit5_k.a ¦w|ek
__"I --.'_~': .. '_-:':-ta '.".' '¦'_'ł1'_.'
' '._.".'. '
_
'
t'
'
8..
"
' '. '.
...
u.|.|I I
i
_ --'
_ -
.
I|_I|' 'I'I'I
' ' ' _ _
.
.
I|II
'
| '|"
_._.
_._.'|
'
|..
__
I 'l 1
'
19.10. Graficzny Konstruktor Zapytania programu pgAdminIII -_1 -¬. 1-_.¬ _-
|
I'
Ńastępnie przechodzimy do zakładki l(ryteria i dóclajemy warunlci, którym zawartość t kolumn ma zostać poddana. W naszym przykładzie ic1__pJ:'acciwnika ma być
od 2. I J
I
l?1¦nta'til§uty~no_tü.| ngczarfla l
'Q-'I
I
Il
l-'I
I
'-1
'_'
I
rr-I±_F
L5' i',.l:`flił_.I`- _
__bbp.td_pracown|ka
_
.
. _
|..|-|._|-| I
.- __
I
_
".
.
' '
-_ _ -=-=.
'
I' '
I _'
'|
.
_
| I
.
..| '
'
-. I' -
+ 1:
__
'
s=.tr'l.l=.'.- . . I_"" i r_=.t"_'tD
+ l' r
Dodaj
Ctkreśleníe kryteriów zapytania J
operacji zatwierclzamy przyciskiem Wykonaj zapytanie. Query - |11oi-flłifizn nn ptisl;ui'esi.a'Iocal|iosŁ:S432 ""
-
_
Ęaltriiia. "2"a|:'at'aata=. .Ululaiana _trtakra widok _ Famac: . . ._ I
1|- - = i.. |
-|IEi_l.I_ -_r r'
t Ê E I „tt n ir <:f>' |' mi n»]..A 1] r_
-
'
'
|
.'
_
_
'..-,- -' ---
.__
:________'|.'1.__l|_l_' _\.;--l.'l'I'|¦|'l'| l|.l.LF'l'
|
il-|_å-Í
'
I'
_'|nfi'¿¦|"IJ"F.fl
___.'. --
.i
_
_'|
'
_.
- |
'
_-_
'
'_
'IJ|.'|' "
' '\"""j'Ifll'l"' _ _' 1|. tI|'I
____
______ _J Ü I'|I'I
`taar.--aaa: G""'."F='?*'. '“it.=t'1.'..lU'.*".'-f*.if"'-.3ePt'Fe".ie.. ..l. Cl mojabaza -L ah- .. . ›
_
"
" I' _'
I' " _
__ '
.
___ ' '_
al .I .
_
_
_-'_|'
__
_:_._|__. _'.__ .___ _._.__ ____-___-____ _._._ _|___:__'._ _.__ _'__|_._.____'|__- _.'_ _.__. '_'_'|_._.
I`..;_. .}IĹ.
'
Ĺ.
J || |'
1
".
.
lnrr-lrnu-lniru' hhn
I
Wykonanie zapytania 1.n_¬r_r.¬_r-.u-;_¬_-_
sszy' ortt~¬.'¬rcH i s'rsrt.r¬.»1'rs.-'tz o.yryycH
U dołu ol-cna wyświetlony zostanie wynik w postaci przedstawionej na ilustracji. fin_“____
-._._ .
._ __ .___ _ _ -_._
__ ._
"~¬=-W-'=-='
.
_
_
_
'tz-wzřt-
www
il.
. _
_
l'.1'e'.='±t=e'_te'azsi=flt wew" 'wheel Hera
1
Jan
'Hoaak
24
Rys. 19.13. Wynik zapytania W analogiczny' sposób mozemy tworzyć ziaczenia tabel. W graficznym konstruktorze
zapytań mozemy 'wybrać dwie tabele i w zakładce Złączenia wybrać typ złączenia. I
l.T|'aliczn'_|'II"2ii1Inlitrtdi¦l¦nl' In:l'|'_taIrIi-.IiiIII'
_ _ _ _
_ _
_
'imojalaoza El'
Ľamlüü
|3|'_1__-;||.'_'„'_t||=.3,
E||r_:l_p|ar_"_'t'.'r|i|_a
5dIŰm"I'I*Il"I
B 'mia'
E1 I|'|'=ž'
ş ¬f-_nei-_
tr: 'z'-'tel'
--
'g'¦r'_".-|tl!|
a'=='t'-'rw - ITÊI r"'a=_|='_t="="""'I |_'íl |:'|'ł'='üt"fi|=y.fi"|¦?' " .Fl l:ab=ola__nn'Elt'za1dna l_'.I: uczntoivte
F1 za\~›odr_wu=±kafr.±±e
:
Í
["=`.wwi
; =
1-
t
I
Rys. 19.14. Dodanie talzielw kreatorze zapytania
j
Kolejną czynnością jest wybór kolumny zródłowej. kolumny docelowej oraz typu '_I_ czenia. I
_ _
,
,
__
___
._
'[":-:'|'I'1'_¦_¬'I¦_'____'L _-:__-_-______'
.r'_|._:___ ._
Ê
arafirznf camntütnrzapytanta __l____
'-I' "'”"“'“'“' B- _ wawa |___H_ay__:___,
_ i¦
El"'Ü' II"-|l3'Í'2 Tff goscie
j .
-
|:rac_|:i_j_:'uunoc
l
- j-Ê-f |:at:a|a„rwi±:ei±'u=
_ = 5
`. l
'_'
._ '_±|±I! _'J'
_'._l
I
id
:II
- T_'I'- -_' _ _
______ '-
.
nazwtsłto n '.'.'a:'l'..
_
Ê...~.z'
'-"
__ -
-
raco'.'rn|ka
naswtstfn |". wH=l'
wiata
`
y : . I
r'r~"=t"-'t'tl'"'=l r' r.r‹:'_w.'n|l.a - l'}.f.Ĺ.I
-
__
Ej za'i'roc|y_wetI=.arsltto
-1 -a-a_=u='="w=-t¬¬y
____ '-
_
Ĺ =
I'-tys- 19.15. Ełączenia w kreatorze zapytania
l
1* .r"'f"="'!"-"'!'¬¬='.Ja¬'|='.'t"*=
_=üät __
Pooetzwt Jezu 1-: 1. SQL
zł
Po wşflconantu złączeniz otrz}fmu|e1'o}' ten zoo: wymk |z1c W ptzşfkłądzle uzş'c1z konzolt
1.._-¿__-L'_
flichnre
_,_..
„_
zł
.'.I.|||-ÅÊ-1'-.".›.
==-z== -_-_ ~
__
-
_
_ L-..
-
loirolc
lífljoteoh
_
_f|='=?;l;mm-t""±.'1l Í --e
|¦|;'||
_H
__.„.ä,¦¦.;¿_=¿¦.,.,_
___ _ - ___
-..... ..._
_ Ii'o1¦'ą]-|¦
Hooolszz
gg-',¦;'.,__¿g„_ ¬'~,-
...
gn
lI¦o11ro1¦łt.1.
Hojoiooh
1916 \.Vş'n1k złączeniz tabel
ztclzo użyteczną funkcją nzrzedztz pgåclmmlll ;est mozltwozć getterowzruą grzficz I . planów ząpytąnlz, które uzşrwane są W optjmlahzzqt zapytań pod kątem w'3,'dą]noś‹:1
eflvrn-'SQL EEI-EET
:l'eco1"||'|'|'n:'¦"__|E||I1|:||
l :I. I'|
Iāl l | '¦|: I
l'I¦II
IIl-rlI 'll' -±±'. I
|'l.uh Join
ir
flFlĽ_|¦|'_|¦'ĽI'|'l¦II
19 1? Gtzficznjr plan zzpytąmą generowąny' przez nąrzędzte pgfltdmtnlll
rćly chcemy w¬_v1co11zć typy złączeń które me są ofe1'owzne przez Ľirąficzny Konstruktor mo, musuny posłużyć zte Edytorem SQL, W któryro wązuzujeoty kwereodę
SPRAWDZ swoją WIEDZĘ ef zapytame zągniezclżone moze dotyczyć wyłączroąe ]edr1e1 tzbelfi F Podaj przykład zapytania zzgnleżdzozoego Iakle wzrottkt musi zpełmc ząpşflrąoze zągruezclzonef*
-::F¬.--
I
142
". i'.-'~.'. f' 1| ; .-. -1-.-_ r_' '-.1-. rz:-if
*1‹.¬.|=
Złączenia i widoki IJĘĽADHIEHIA
I Co to są :łączenia {join}? I Złączenia zewnętrzne, pełne, krzyżowe I Perspektywa [widok]
join (złączenia) Połączenia tabel w zapj.'taniaci1. Ziączeriia E¬f]“1u ]Ü[i'¬i są uzywarre, gdy' chce-|n}' Lrzysicac dostęp do więcej niz _ieclnei tabeli lub wiecej niz iednei krotki w tşfrn sanwym czasie. FIIIYIÍŁAD 10.1
W poprze.dnici'| przylcładacit posłt1giwa1iśrn';; sie tabeiaini przecitowiiiącşfrni pracowitiiccirw, ktorz'_f ocibyii azkoie.nie w zai¬'.1'e.~4ic' pierwsze] pomocy' oraz BHP. Tabeli tych ttzyjertty powtórnie. aby zaprezelttować złączenia rşfpti INNEH ]Ü|H.
His. if! I F'rz.¬¿„'ł-tłacl ziąiízeiiizi IHNFR JEÍJIH ~.".-' iconsoii |¬e¬'q1
fH_prl|:o'|'|'rir Irie igggfi._ .- -.".'.'._ 1 2
_
nllllfillto 'liidt _5n}_ci1-l'ac1;ef'u'._i'ą'h1q[5D] - .. Iioi-rco: ' i"ĹUU"B-l 5111
Ren
-
Iceno ~]lI|"'l. fl-'| .-|
.
Êiüfiłll-E.
'Í
Í!-¦I¦¦¦'¦l'-ii I".o\rod.:*_|'to.
25
5:o1o1-Falco
55
e¬"1=1'=-
@
FIE-'E'F¦'Ľ|'3l¦.'|¦|Ê|¦|¦'l¦-El
'|'¦IJ¦ucol|'I1 hl: nlrfillio 'lieir üąfi |¦±|.|f.|r±.¦|¬r.|p'|'|'||fl5|]|]|:l1.1|'ą:|:uu.|;'5‹'h|¦[ ` -t ._ _ I _:ut ' '5's"||rłĘti " ` 26 Tiiiojriecřƒ
'_--¬-ĹL --___ _ __ Eac1sn .|
5.
i Í':|_I|ri|.I.5irí
`' '-
gu;
' '
'ÊÜ
iłfş-¬ ¿|`¦'.ł liiieiliacia clziałania ziączetiia na prziiiciacizie tahei
iairsit -_.1“u_¬;;__
-
`ł.`= ;{-
uąmu _ ÍTŰĘ
`
Foidtźzas tego ziączenia słowo icluczowe INHER inozemj' pominąć, poniewaz jest stosowant' przez program ciotttjts|iiii+_ U z}'w'aii1jf lconstriiitcjiz
}'i'..¬. _*H 'Í Tirfiitiiiti rłttc'zeniat¿1|:'eiw jt„=z.1,f]-:ti SQL. w i':ot'|sf_i|i progran1npz¬'tji
W j:a'zj,'paii|
I
Niettiwnozittczenti
TiiET›'¦t IUINI to takt [jp 1.'ict'›»t1iT'it'zt't't'ct`| ziacícett ƒÜii`¬I 'w t¬tot¬it|1
tal-.o opcrator iiztftt został znali np rniiiejszosci wie]-.szosct '= {zaj¬ir,-'ei renta] BIT *tw Lt is -jak przedstawia to iiiistracj i z ipj tania SELECT p_bhp 11n_1e=, p_bhp neizwzslco, p_portioo.nazn'islco, p__pomoo.wia'k FROM pra.c:.ownio1='_1:ihp p_bhp JUIH p:ca+:_p_porooo p_pomoo 'ütłlip_pomoo.wiek 31"' p_bhp.n'ieic); I
L
l
I
I
p_hl¬ip wzteic I
I'
F
p__porno‹:: zmze, I
I
I
ii'.`j|F¦. łfl.-i- Ftzjri-Iiacl "|¬i"iei„=|-jniti w i*i_istgt't'EiQL
Wprzjrpadltii 1izj't'ii1 jako łącznika operatora zaprzeczeniii != ziączenie oinesiainş; nna-
aaa Anti join. ifiiierownosciowe ziaczenia inogą bt-'Ć oparte rowniez na operatorze '--= lub -=.= [inttiejsze 1nitrowne,wie1‹szc' lub rownej i w tal-iicłi w'f,-'p;itil‹;ii_'i1 nl:res|anij„' je mianem '5Et."'.| ttftlt-tjak łatwo zao|:|se1¬wowafi na piw.'j'zsz'j'ii'i przj,-itłacizie. ttzjtcie IÜIN w nie1't'iwnozłącze.niu może w t='i'1j.'tiii-;ii zajwj-'taiiia powodować" close tiiize retinndancje ti.z|njfc'i1. iiazcta z osob _powtorzona jest tj-'le razjr, iie jest w stosnnicn do niej st¿itszj'ci¬i osob w ziączanej tabeii. Hietownoziączeniii tizjftecztie są zwłaszcza w z1_1ic'|'aniit statąrsoffk i podczas tworzenia zestawień.
1
"
'
|
1
“I
~¦
|I--`t.-"`
'
Elączetiia mozliwe są rowniez ponmgrlzj' lcillcotna tabelami. Nalezy' jednalt pamietac, ze kolejne tabele biorące inlzial w zlączenin muszą strttlrttirą odpowiaclac pozostaljrm tabelom zlączenia tak jalc we wczesniej on1awian'j'cli p1'z§,-kiactacli.
Złączenia zewnętrzne Podczas tworzenia złączefi w'ew'rietrztij'r:lt. np. ro~.'.-'riiiziąi'zeii. w wj-'iiilcii za pyta nia zwra' cane lwljr t¬j'll
Tabela. l-:tora powstaje w ".'.-'j,'itiltii talciej¿o~ ziąrziniia. zawiera wszj'stl¬:ie l¬:rotl¬ti pierwszej tabeli oraz wszj'stl~
1 FULL C1l_tTEE ]Ct|l*~.'; [pelne zlączenie zewnetrznej Stanowi wariant ztączenia lewr_istri_irniej_¿o wraz z prawostrotinjfni i jalco wjmilt zapytania zwracane są wszjfstl~'.ir.' lcrotlai obu zl¿j'czon}„-'cli tabel. wliczając rowniez te. ktore nie ma ją swniižlft nclj'1tii„~.-'it_*tlnil‹;tÍ1'w.
Przj-'lclacl zlączenia lewostroiinej_jo tabel praoownio'g¿'___bhp i pzat:_}_:›_pori'ior:: SELECT p_h1'ip.imie', p_bhp.nazwis:-Ico, p__bhp_wioI|c, p_pomoo.nazwisko, p_pomoo.wiok Fřtfitłł pra-::ownio1r_i:rhp p_1:-hp LEFT ÜUTER JÜIH pza=:_p_pornoo p_porooc: DH {p_pc:-rtic.n:.'i-riek = p_bhp.wiolc};
p__pomooi:L1'tL"Le„
FIM- 1”. '. l'|'zj-'l-:leci iewnstrontiego zlączenia tabel w jeząfltti 5Q1.'i.'¬.' l¬:o||sn|i pioprajnn psrjl
Ialr ilustruje powjrzszjf prz§,'l‹:_lacl. w eq,-'itil-;ti zlączenia otrzj't11njen1jr wszj-'stltie l‹:rotl-Li pierwszej tabeli oraz jecljrnie oclpowiaclające itn lcrotlci t'abeli tiriąąiej. W miejscach. w lttorjrch w clrngiej tabeli zaclna z lcrotelc nie oclpowiatia pie|'wszej. uinieszczana jest wartosc HTJLL. Ponizej przyklad ziączenia prawostronne„o,o: SELECT j:_:›__lohp.imio, p_bl'ip.nazwisko, p_pon1oc:.na.zn'i.o}co,. p__potttoo.wielc
p_hhp.wiek,
FRÜH pracownicy bhp P bhp
HIGHT DUTER JÜIE pra-::p_pon'io'::'. p_potrioo GH (p_pomoc'.+n'ielc = p_bhp.wielc];
p_portioc:.:i.ttiie,
'
ttic '.tr|.n Przjzltlatl prawristronriegn zlączeiiia tabel w jezykii SQL w lo_ii"1si.':li projjrarnu pscjl PIITIŁÅD 10.1
Przjrlclacl pełnego złączenia: FL1l.l_ ÜUTEFŁ ]Ü|l”~¬l SELECT p_bl'ip.imie, p_bhp.nazwis}co, p_l::'hp.'t'rioic, p_pomo::.1mio, p_pomoo.nazwisko, p_pomoo.wiok FRDH praioownioj-g_bhp p_bhp FULL DIJTER JÜIH pzeio_p_poo'io-::: p__pomoo CH tp_pomoo.t'r:i.ol't = p_lohp.wio}c]:
l`t'~.-=. .Í1tÍt..`-F. Przjrltlacl pel|te_t___=fo zlączenia tabel w ji.';z¬j'lti1 FŠQL w lconsoli progratnn psijl
Złączenie krzyżowe (C R055 JOIN) blazjrwane jest rciwniez iloczjtiein ltartezjańslciin. W w¬jrnil:ii teppo zlączenia w e.-'j-'paclirti tlwoch tabel ottzjbnijeinj' konilziinacje ltaztiej lcrotlti pierwszej tabeli z ltazdą lcrotką cirti~ giej tabeli. co w ¬.=."şrpzn.llr11 tabel zawierającjfcli wiele lcrotelc prowaclzi ilo eksplozji oanjrclt
jaa. zttsj. SELECT bhp.ir|:iio, bl'1p.nazwislco, lohp.wio1't, pomoc: . iiniao, pomoc _ nazwisko, porno: .wiek E'P.oH pzaoownio1_.r_bhp bhp CRÜSE JCIH pzao_p_pomoo pomoc: Üprocz wjfiriieriiarijrcli do tej pory zlączeii wielo tabel niozliwe jest zlączenie w obrębie jctlnej tabeli- Tal-:ą l'tonst1'ultcje olcreslatnjr mianem SELF ]Ült~i_ aby prześledzić te sjrttiacje na jzrrzjflclaclzie. posltlzjrmj' sie tabelą praoownioynbhp. dla ktorej w tjnn wgrpacllco niezbeclne staje sit; utworzenie clriclatlcowego aliasti - pracownioy'__l:¦hp lo {b jest aliasernj ~ rjrs. Ettit. SELECT a.irnio, a.nazwiolco, amaiek, lo.in'iio, l:=.na,zwis]co, lonnielc FED!-1 pzaoownioj,f_1:i1'ip ai, praoownioj,'_lohp lo WHERE a.t'riel't I'-1' l::.i'rie.'l'=.:
145
'
I'
"
li.
`¦Ĺ'-!i`¦`|
'
"
Hi ¬. _='_n.t;. Prz.j,=lrlai:l zląc.zr='nia l‹:r:›'.}.'zowego tabel w jezj='l¬:1i ¦ž~t¬}L w ltonsnli priij,jrarnt1 pstjl
i-ii-~. _'|.'.¬t i"rz_ş.'l~:lfail zlączenia wt-wriątrz tabeli SELF Iülhl Tjtp zlączenia prc'zetttowanj." na Fjfsttrtlśtt .łtĹl.'Šl tizjfwanjr jes t, grila' zachntlzi potrzeba przeprowadzettla zestawienia w tabeli w porownaniu z Clattjririi, lctore sie w niej zttajtlttją. Fo-
wpzszj' przjrl‹la':l prezentuje takie zestawienie, wgrltorzj,-'stiijąc roziiice wielcn pracownikoie :Ł
lij il-“"" l -"+."1'Ĺ"' "I
lI-fi "f l'l -"'.
"`¬l.Jl 'lz
l
|
Perspektywa (widok)
j Perspektywa nazywana jest rowniez widokiem. jest to niezmaterializ.owa11a tabela, ktorej zawartość jest zazwyczaj pobierana i wyliczana przez system z kilku tabel zrodlowych. lstotną cechą perspektywy jest to, ze tworzona jest wirtualnie. co oznacza. ze nie jest za, pisywana na dysku. Istnieją przypadki. gdy w celu polepszenia wydajności decydttjetny się na zmaterializowanie perspektywy (czyli jej zapis na dysku) - mamy wowczas do czynienia z perspektywą zmaterializowaną. Widok definiowany bywa rowniez jako zapytanie jkwerendaj. ktora na podstawie danych z kilku tabel tworzy wirtualną tabele. Podczas opisu widokow czesto pomijane jest ich zastosowanie związane z zabezpieczeniami. Widolci mogą być uzyte. aby ukryć przed tizytkownikami informacje. do ktorych nie powinni miec dostępu. "i."lr`ii-ttialne tabele. tworzone są przez widoki atrakcyjne podczas czynnosci związanych z modyfikacją baz da nych, poniewaz zmiany dokonane na kolumnach tabel baz. danych nie dotyczą struktury widokow. pod warunkiem ze modyfikowane kolumny nie są zrodlem danych dla widoku.
Widoki Widoki są podobne do tabel, jednak nie są zmatcrializowane fizycznie w postaci zapisu | na dysku. Funkcjonują wirtualnie. stanowiąc zapis kwerendy. co powoduje. ze widoki są tylko do odczytu. Üznacza to, ze nie mozna zmieniać i nadpisywać danych znajdujących sie w widoku. Usuwanie widoku odbywa sie za pomocą słowa kluczowego ]'_Ż|'l¬`*.'Ül“ VIEW, a nastepnie podania nawy widoku- Widtiki stosowane są w celu ochrony tabel. PIIIT KŁÅD 113
Przykład tworzenia widoku dla tabeli praoot'rnio},'_bhp przed stawia następujący kod SQL: CEEŁTE CE EEPLACE VIEW pzao_bhp AS SELECT :i.n'ci.i=.-, E'RCł-I praoon'nioy_Źohp.'
nazwisko
ltys- łtl. tti. Tworzenie widoku psql
lilys- Et`1.l l. Przykład uzycia widtikn
' ll L
ltocl prezentowany na rysunku .Etllti tworzy widok tabeli prac.ownioy'__]ahp. ktory ma jedynie dwie kolumny: imię i nazwialco. Polecenie REPLACE VIEW zostalo użyte na wypadek. gdyby istniał juz widok o wybranym przez nas idertt¬j.'fikatoi'ze [pza.o_bl'ip}. Po utworzeniu widoku mozemy przeprowadzić na nim kwerende (rys. lllllj.
Êl
ll-"'.}!'."r` lJ¿".l*=i`t`t`l-l I f':i`t"Í*:Š`l"lĹl"-'l"t` l`l.f'i`E'Í lT|'.'fii"-¬t'i't".l--l
Język SQL daje rowniez mozliwosci tworzenia tymczasowych widokow za pomocą po
teeenta oszazz 'rmce 'irzzn lub oazazz on rts:eLa.es 'Iza-re yzstr. pozostała częśc j j ¦ ' ` H i | 3
składni jest analogiczne do podanych powyzej przykładow. Usuwanie widoku odbywa się za pomocą polecenia DHCP VIEW, po ktorym umieszczamy nazwę widoku. Tworzenie widokow moze odbywać się rowniez za pomocą narzędzia pgifitdntinlll. W prawym menu narzędzia pgeidrnin 1 ll wybieramy Widoki, a następnie, za pomocą menu podręcznego. opcję Nowy widok. W oknie tworzenia widoku uzupełnimy pola Nazwa oraz Właściciel zgodnie z ilustracją (rys. .'łt`l.l3'}. Tabele (Fl
f ti" -T'-l aezis
P , L
udanie
i
Z
oroc_p_pornoc
'
_
pracown|c'¦.'_|:il1a
tal'.iola_nadrzoclna
iri nre-I ŸÊ ucanonfls Ê iz- za.-ion-_oszltafitia 5-
Funkizje wyzwalaczy [El
»'iš,`ř¦|
| ''
l Ftopltcation slony asnyes
:rzenia tata-al tz]
=
.
' 'id 'Pl
istrowane lzoie (tj j
Itys- zttlz. Tworzenie widoku w pgifltdminlll
-.aa “szersze lßsrrss'l"wos=='=nsfi±l. Iza I nooo oto-
i' Ti
E
I
z . l z
Łl
Rys. ztl-'l3. Ükreslenie nazwy widoku w pgiüidminlll
Kolejnym krokiem jest wybor zakladlci Etefinicja i wpisanie kwerendy SQL. na podstawie ktorej utworzony zostanie nowy widok. Aby mieć mozliwość przeglądania widoku, wykon ujemy podob ne czyn ności jak w przypadku przeglądania zawartosci tabeli.
"stres-'set' Dsfizselaessnanalnissyaooaoiitsraalsei l aafioaoooozoaroaua I' |
Rys. ztt. t-l- Kod SQL widoku w pgiüidminlll
EELEFI' 1l_te, nozttaalto FFŁEIH p1:aooo'n1oy_la hp:
I'›‹.'ii'is"|'.~¬iz'i Ii-,zt1c.-tt sot HÍÄŜ
'I ii
F.
I
P“I _ La to Isa t..
:rr
iz-'
La fit
:
Ę =.."ol'z'ioric|e [dl
et I`lj“'| tzaata in “ft oflsriß _'ll 'llüifiülfi
`¬ |='f="=.|='_i="e'1"=s
-“J tI'='=':'wflt=r_l=ł'o
Í t-=l:|'e'la_natfi'zo1::ha :Ê |.|cn'oawta El Elžb -1':l=i' T'-_i za'-'iody'_e.ot|l'ia"rkie
Ę. rifitoaoyaaaaoyroi El
'il|"ii:lol'=l (If; El '
E
Ftfiołrlli Wyrzwolaczotpj
21115. Widok utworzony w pgådminlll
Zaznaczamy widok, a następnie uzywamy przycisku Przeglądanie danych wybranego .obiektu [przycisk oznaczony kursorem myszy na ilustracji 2lJ.15j. W rezultacie otrzymujezawartość widoku.
g pisana `í__rzzi _ _ Üojeieeh
zona!-:
Barcin
Tz acz
s- .e=j›|-ze
_
_ Eotrolslrz
Horton ___„__ - Ętra
z-seanrl
_ar-aaa
:He :noz
20.15. Dane generowane przez widok prac._bhp w pgaclminlll
_Li_s1.rwaoie widoku odbywa się podobnie jak tworzenie. zaznaczamy widok i z menu towego wybieramy opcję Usuń ;SI-iasuj. "-
Êl""
WÍŰÜH Ü?
.
ä-
_
_
_
tépicetiori Stc I Usuwanie widoku w pgifiidminlll
seaawoz swoją wieozę znasz typy zlączeri? roznią się złączenia zewnętrzne od wewnętrznych? fřpdaj przyklad kodu SQL złączenia wykonanego na jednej tabeli. ;jaką role w złączeniach pełnią aliasy? czego uzywane są widoki? związek z bezpieczeństwem bazy danych mają widoki?
' ii..-iza ā'.r.s.'~.'*r'. i-r | si s I I .us F.-'=.'.1." rr-i,:~-.rr tt
Wyzwalacze (Triggers) .
. mi
IAGADHIEHIA
Í
I zasady działania wyzwalaczy
_
-l .-ftlzy zrozumieć zasadę działania wyzwalacza. prześledzimy jego zastosowanie na przykładzie. Wyfobrazttiy sobie firrnę, w ktorej kilku pracownikow na bieząco aktualizuje tabelę z danymi. Tabela będzie zawierała trzy kolumny: id_pracownika iniie, na zwiako. Ieden z pracownikow złosiliwie zmienia płeć kobiet z ki tkobietaj na M Imęzczyznaj. Poniewaz operacja ta polega na zamianie danych. a nie ich dopisywaniu, administrator postanowił utworzyć wyzwalacz Itriggerj. ktory w rnomencie aktualizowania bazy danych, sprawdzi imiona kobiet i dopisze dla wszystkich kobiet - automatycznie ustawi - płeć lt. Tworzymy tabelę za pomocą KĹÜDU SQL: CHEATE TABLE pracownicy I id_prac SERIAL PRIMAEY KEY,
imie yaacaaatsoj, plec VAECHAE{l] }:
His. `¿I.I Tworzenie tabeli dla wyzwalaczy
lilolej ny krok to utworzenie funkcji dla wyzwalacza. ktory uruchamiany będzie w trakcie wykonywania operacji U PDATE. Wy'zwa|acz uruchamia funkcję, ktorej kod napisany jest w języku Pl.,"pgSQl_ Iproceduralnej odmianie języka SQL). Podobnej proceduralnej odmiany uzywa się podczas administrowania bazami danych 'tÍ`JRrf'iCl..E - jej nazwa to PL,ISQt.. Tworzenie Funkcji w PLI pgSQI_ zaprezentowano w postaci kodu ponizej:
__ I j |
cazzrz srrnorron zozezoiajziaojj azrorois criggoz as' BEGIH IE' I'ilEi'l.irtiic LIKE' " ba' "
THEH
rz nzw.p1ao LIzz"n** razu UPDATE pracownicy SET p1oc=*'E" WHERE imie LIEE*'%a"; END IF:
END IF: HE'I'Ľl'RI~I NEW:
END: ' LANGUAGE plpgaqlr .|
„_I
,
'| 5]
jak mozna zauwazyć, analizując powyzszy kod. Funkcję nazwano kontrola_p'loc il . jeśli imię wprowadzauej osoby zakor'1r'zone jest na _.,a" jimiona kobiet zazw¬yczaj zakończone są literą ..a"j. wowczas sprawdzana jest kolumna płeć pod względern zawartości litei¬y l'-'l. jeśli oba warunki zostaną spełnione. tabela pracownicy zostanie zaktualizoy.-'ana. líolinnna plac przyjmie wartość lt dla wszystkich ciągow znakow kolumny imie zawierających litere ..a" na końcu.
j
l'l1_i~. _tt .-'. Tworzenie Iunkcji w Pl__."pgS'QL.dla wyz'w'alacz;i
Na samym koocn tworzymy eryzwalacz za pomocą słowa kluczowego CREATE TRIG SSR. po ktorym wysteptije nazwa jidentyfikatorj wyzwalacza. l'=í.olejn:j częścią deliinicji jest określenie, kiedy wyzwalacz ma zostać uruchomiony- 'w' naszym przypadku: AFTER UPDATE 'Ubi pracownicy- co oznacza. ze po kazdej operacji aktualizacji danych w tabeli pracownicy wykonanej poleceniem UPDATE. po uruchomieniu dla lcaztlej krotki :na zostać wykonana tunkc_ja kontrola__plac tj: CREATE TRISGER aprawciz_p'lac AFTER UPDATE DH pracownicy FUR EACH RUW EECUTE PRUCEDURE kontrola_plac{};
-_
I
itrs. il f`~. T'w'orzeuii' wyzwalacza
|
`iTi”stau.'ir'r1y' teraz. dane do tabeli: í
I
Å-
itp.- .'_L A Lizupelnianie tabeli danymi
Za pomocą polecenia SELECT * PRUH pracowni cy: inozcrny przekonać się. ze trigget nie zostal urtirluitniony. poniewaz część kobiet ma l}lętlt'1ie wprowadzony identyl`1kator j płci lyl.
I 152
I
'
-.I-
--
I-t'.¬- .il fi. 'wyświetlan ie zawartości tabeli
?_".aktadamy sytuację. w ktorej jeden z pi'ai1o~.i.'riiltiiw chce rowniez dla tÍ›razyny ustawić płeć rowną I*-'l poleceniem SQL
His .łl -t'i. ?'rlod.yFikacja tabeli i urucl¬|otnlenie wyzwalacza
Poniewaz uzyto polecenia UPDATE. ttcucltotniony zostal y'.-'y'.-'.¬r'.-'alacz. ktory skontrolriwal i poprawił błędne dane pici w tabeli. a-iozeiny sie o tym przekonać. wyl-fşoruijąc polecenie SELECT * FRC't-1 pracownicy:
Its .LI ." "r"Ĺ"`yś'w'Ic'IIe|1ie zawartosci tabeli po urucltornieniu wyzwalacza
s e ra .a--ra.--' oz. wo; .fi wt e oz 1; I- Co to są un,-'zwalai'ze? E. jakie praktyczne zastosowanie mają wyzwalacze?
' Ii..-tzw ā'.r.s.'~.'*I'. I-r I si s I I .us F.-'=.'.1." Ii-i,:~-.rr II
Wyzwalacze (Triggers) .
. mi
IAGADHIEHIA
Í
I zasady działania wyzwalaczy
_
-I .-ftlzy zrozumieć zasadę działania wyzwalacza. prześledzimy jego zastosowanie na przykładzie. Wyfobrazttiy sobie firrttę. w ktorej kilku pracownikow na bieząco aktualizuje tabelę z danymi. Tabela będzie zawierała trzy kolumny: id_pracownika iniia, na zwiako. jeden z pracownikow złośliwie zmienia płeć kobiet z ki jkobietaj na M jmęzczyznaj. Poniewaz operacja ta polega na zamianie danych. a nie ich dopisywaniu. administrator postanowił utworzyć wyzwalacz jtriggerj. ktory w momencie aktualizowania bazy danych, sprawdzi imiona kobiet i dopisze dla wszystkich kobiet - automatycznie ustawi - płeć li. Tworzymy tabelę za pomocą KĹÜDU SQL: CHEATE TABLE pracownicy I id_prac SERIAL PRIMARY KEY,
imie yzacaaatsoj, plac VARCHAR{l] }:
lłis. `¿I.l "tworzenie tabeli dla wyzwalaczy
lśolej ny krok to utworzenie funkcji dla wyzwalacza. ktory uruchamiany będzie w trakcie wykonywania operacji U PIJPITE. Wy'zwa|acz uruchamia łiinkcję, ktorej kod napisany jest w języku Pl.,"pgSQl_ jproceduralnej odmianie języka SQLI. Podobnej proceduralnej odmiany uzywa się podczas adIninistrowania bazami danych 'ÜReiCl..E - jej nazwa to PLISQL. Tworzenie Funkcji w PLI pgSQI_ zaprezentowano w postaci kodu ponizej:
__ I j j
cesarz srmorron zozezo1a_p1aoII azrorois criggoz as' BEGIH IE' I'ilEi'l.imic LIKE' " ba' "
THEH
rz nzw.p1ao LIzz"n** razu UPDATE pracownicy SET p1oc=*'R" WHERE imie LIRE*'%a"; END IF:
END IF: HE'I'Ľl'RI~I NEW:
ERD: ' LANGUAGE plpgaqlr .|
__I
.
'| 5]
jak mozna zauwazyć. atializiijąc powyzszy kod. Funkcję nazwano kontrola_ploc il . jeśli imię wprowadzaiiej osoby zakoificzoiie jest Iia _.,a" jiniiona kobiet zazwyczaj zakoiiczone są literą ..a"j. wowczas sprawdzana jest kolumna płeć pod względern zawaitości litei¬y l'-'l. jeśli oba wz-ii'iInki zostaną spełnione. tabela pracownicy zostanie zaktualizow-'aIia. liolnmna plac przyjinie wartość lt dla wszystkich ciągow znakow kolumny imie zawierającycli litere ..a" na koiicu.
j
l'l1_I~. _tt .-'. Twni'zenie liuiikcji w Pl__."pgS'QL.dla wyzwalac'z;i
Na samym koncu tworzyniy w'yz.walacz za pomocą słowa kluczowego CREATE TRIG GER. po ktorym w¬_',-'stepiije Iiazwa jidentyfikatorj wyzwalacza. l'=í.olejiI:j częścią deliiriicji jest określenie. kiedy wyzwalacz ma zostać iiriirliomioiiy- 'w' naszym przypadku: AFTER UPDATE GH pracowiiicy - co ozriacza. ze po kazdej operacji aktualizacji daiiycb w tabeli pracownicy wykoriaiiej polecenieni UPDATE. po uruchomieniu dla lcaztlej krotki ma zostać wykoiiaua tunkc_ja kontrola__plac jj: CREATE TRIGGER aprawciz_plac AFTER UPDATE GH pracownicy FUR EACH RGW EECUTE PRGCEDURE kon'I:rola_plac{};
-_
I
itrs. il f`~. T'w'orzeiIii' w'yzwal.iI:za
|
`iTi”st:iw'ii'iiy' teraz. dane do tabeli: í
I
Å-
itp.- .'_L A Lizupeliiianie talieli danymi
Za pomocą polecenia SELECT * PRUH pracownicy: inozcriiy prz.ekoriać się. ze irigget nie zostal urtirlioiiiioiiy. poniewaz część kobiet nia lilętlI'iie wprowadzony identył`Ikator j płci lyl.
I 152
I
I
-.I-
--
I-t'.¬- .il fi. 'w`ysw'ietlaii ie zawartości tabeli
?_".akładamy sytuację. w ktorej jeden z pi'ai1owrIiltoy.' clice rowniez dla tÍ›i'.:izyny ustawić płeć rowiią I*-'l poleceniem SQL
lłis .łl -t'i. ?'rlodyFikacja tabeli i iiriichotnlenie wyzwałacza
Poiiiewaz iizyto poleceiiia UPDATE. ttcuclioiiiioiiy zostal y.-'y:-ni.-'alacz. ktory skoiitrolowal i poprawił błędne dane płci w tabeli. !".-iozeiiiy sie o tym przekonać. wyl-f.'orIiIj.=.jc polecenie SELECT * FRGt-1 pracownicy:
Its .LI ." "'."Í."yś'w'I-.';'I lenie zawartosci tabeli pci uriiclioriiieiiiii wyzwalacza
s I' ra .a--rw-' oz. wr'i_I .fi wi r-I oz I; I- Co to są un,-'zit'alai'zr*? E. jakie praktyczne zastosowanie Iuają wyzwalacze?
e o ri sr.-iw' y _Ir,z It it _-i s cj i.
ITransakcje. I›I°I‹a‹iy i zakleszczenia INEADHI ENIA
I Definicja transakcji I Cechy poprawnie wykona naj transakcji: niepodzielnośe, spójność, wspołbiezn ość, izolacja, trwałość I Co to są blokady i zaklaszczenia?
akcja lub seria akcji przeprowadzanych przez pojedynczego użytkownika lub aplikację w celu uzyskania dostępu do SZBD związanego z odczytem lub modyfikacją zawartości bazy danych nazywana jest transakcją. Wymiana danych pomiędzy bazą danych a uzytkowrrikami lub programami moze być
iiarazona na utratę spojności. Stan bazy danych określa się jako spoiny, gdy jej zawartość odpowiada rzeczywistości, a w przechowywanych danych nie pojawiają się błędy. Aby baza danych nie straciła spojności. wprowadzanie i modyfikacja danych powinny zachodzić
ir sposob gwarantujący poprawność przechowywanych informacji. Slcooczony proces wymiany danych pomiędzy bazą danych a użytkownikiem lub programem nazywamy tran salicją. Poprawtiie wykonana transakcja powinna mieć pięć podstawowych cech. Powinna być niepodzielna. spojna. wspołbiezna. izolowana i trwała. I Hiepodzielna Transakcja moze składać się z kilku akcji. Gdy zdarzy się, ze ktoraś z akcji narazi bazę danych na utratę spojności i tym samyrri riie będzie mogła zostać wykonana, całość
transakcji (wszystkie pozostałe akcjej rowniez nie powinna byc wykonana. ii Spojna
Transakcje nie mogą pozostawić bazy danych w stanie niespojnym. tzn. ze baza danych. ktora jest w stanie spojnym pmed wykonaniem transakcji. powinna być w tym samym stanie po wykonaniu traiisakcji. ii Wspdłbiezna
To cecha transakcji. ktora pozwala na pracę z bazą danych wielu uzytkowriikom w tym samym czasie i ma zagwarantować. ze operacje wykonywarie przez tych uzytkowrrikow nie wprowadzą bazy danych w stan niespojny. W praktyce oznacza to, ze transak-
cje podiegają wcześniej określonym mechanizmem zsynchronizowanego blokowania i izolowania. ktore blokują dostęp do danych jednemu użytkownikowi. w niomencie gdy te same dane modyfikuje drugi uzytkownik. s izolowana
Baza danych musi blokować jizolowaćj dane w momencie nwania jednej transakcji. tak aby wykonując modyfikacje wraz z innymi transakcjami. baza danych nie utraciła spojności.
l53 -
li A Z Y |fJ..f1t N T C ł--l l SY 5 T E P~«'1Y B A Z D A N Y C i 'l
_J U1 -|¦h _, _- ':,_-¬_:, _ z. . _¬.'o
Ľ |
I
F' __J|- _______________._
.
..
_-__.-_-____.__
__
_
_
__-__
___
_.____.___...-..-_-._-_--__.-__________________
_
_________:___.
| I. f |
1'
1 Tł'¬'NE-1'l'E1
Ta cecha transakcji oznacza, ze po jej wykonaniu wprowadzone przez transakcje zmiany powinny zostać utrwalone na wypadek awarii oprogramowania lub sprzętu. Zakończenie transakcji nie musi oznaczać wprowadzenia zmian. Transakcja może zakończyć się wycofaniem zmian, gdy któryś z ich elementów będzie błędny. Przebieg transakcji może ilustrować następujący schemat:
Utrwalenie zmian, .
~
.
R02 Ucz Cie
Zapisanie kolejnych
Kontrola rezultatu
traĘ_|SakÊ.i
zmian
(sprawdzenie
J
za P ist Y mczasowY
i
gdy stan spójny
_ _
s P ó`ności` I i i
I. |' | | | 1 | 1
_ . Wycofanie zmian, gdy stan niespójny
Rys. 22.1. Przebieg transakcji
Koncepcja transakcji w języku SQL określa transakcję jako grupę komend połączonych i wykonywanych jako jedna operacja.
.-
I
'
'
i
I
I
|' ' 1 .' ' . ' | | I
i i I | I | | ,| | ,' 1'
| | |
| |' |'
'
r
'i |. ..
Transakcje są atomowe - są Wykonywane całościowo jako jedna operacja albo wcale (w przypadku błędu). Aby lepiej zrozumieć istotę transakcji, można posłużyć się przykładem transferu pieniędzy z jednego konta bankowego na drugie. Potwierdzenie wykonania transferu wiąże się z sytuacją, w której pieniądze zostaną usunięte z jednego konta ipojawią się na drugim, docelowym koncie. jeśli transakcja miałaby zakończyć się błędem, pieniądze powinny pozostać w całości na koncie pierwszym, z którego transfer miał być wykonany. Niedopuszczalne są zatem sytuacje, w których w wyniku błędu lub problemów sprzętowych pieniądze znalazłyby się na koncie docelowym i nie zostałyby usunięte z konta źródłowego. Inna niedopuszczalna sytuacja miałaby miejsce, gdyby pieniądze zostały usunięte i niezaksięgowane na koncie docelowym (zginęłyby podczas transferu). Kolejnym przypadkiem, którego nie można zaakceptować, byłby transfer tylko pewnej części. kwoty. Transakcje działają podobnie jak w przykładzie przelewów bankowych. Muszą być wykonane i potwierdzone w całości jako jedna operacja. W przeciwnym razie w całości muszą zostać wycofane. Transakcje rozpoczynamy słowem kluczowym BEGIN (rozpocznij), natomiast kończymy poleceniem COMMIT (potwierdź).
I
|
1
|
PostgreSQL kazde polecenie (nawet te nierozpoczęte słowem BEGIN) traktuje jak transakcje. jeśli polecenie zakończy się sukcesem, implikowane jest słowo COMMIT, natomiast jeśli w poleceniu wystąpi błąd, wówczas automatycznie implikowane jest słowo ROLLBACK. Transakcja rozpoczęta słowem BEGIN wprowadza zmiany na wirtualnej tymczasowej kopii danych. Zmiany wprowadzane są do bazy danych i widoczne dla pozostałych użytkowników w chwili ich zatwierdzenia słowem COMMIT_
.
-. . i
PIITĽŁIU 2.1.1
ftby prześle:l'.›'.ić l‹.oi1sti'i|ktiję traiisakcji. posłtizyrtiy się tabc'ląpraoow'r1io},r_bhp.
iti-¬ ,'.*,_'. "E"}.'.~i\›»'ie|I=':1ir'za¬.'.'artosci talii-'ii
Po słowie E-:Iuczowym EEGIN. l-:tone rr=zpc_ic:-'.g,'|'|a Ł1'ansal
j
li'-'~¬' ¿_`*_.i Í-Łt:zp=:|czf,¿=i;i:_~ |r:nisa|':cji
i".'1o'.›łen1y teraz 'a'¬,-'t:c':iać zmianę, stristijac slr.'~wo i-c|11c:r.owe RU'LLBă.CIH_
ih~¬. _*J 4. “'.`*i="yci'1|Í"aiiie trarisiilcrji
H',~'_ _'tj-f 'E l_l',i:y'¦;ii-'p'L1r1|-:lti1-."='?.aj'ii:4i1"."i'tr':_=|t1s-Ill'-:cji
I
155
li-_-"'
`|
l" -"". "~¬ "1 'Í
1 l
l
"1"1 Ĺ`1 Ĺ l "'-l 'Ź
Ę"
l ' 1
`| "
f l
Tila pr'z'_vkladzie ilustrowanym za pomocą rysunku 22-4 zas'toso¬a-'aliśnr¿,-' wj"cofanie transakcji. Mcizeniy sie o tyin przekonać. stosując kwereniżlę SELECT * FHU!-1 prac:ow'nic:1.'_bhp:. Wiek pracownikow wrc'icil do pop1'zedniej wartosci- jesli zmiane cltcemy zatwierclzit`:_ Lizj."w±|n1j.' polecenia CÜHHIT. które- podobnie jak RULLEACH - kończj' trarisakcję.
Podczas w'g,-'koiiyis-'ai1.ia transakcji mozemy okres`lić równie.-'Ł punkty zapisu, tzw. SJWEPÜIHTS-
Po słowii-= klLu'_zowj-'ni SAEFEPÜIHT iizyia-':-1 inj,-' id:-'nn,=fik;'ati'n'a_ Dzięki zdetiniowaiiiu irlent¬;.'fikator-:iw punktow 'zapisu inozeinfr coiinjc zmiany przeprowadza ne przez trausalicję do nkrefízlonego za jaolnoca iclc'ttt'j-'iiikzttcirëi ptlltkttl {r¬¿,"s. 22.5).
Alaj.-' cofn.'_jć zrniany do zdeliniowanego wczesniej punktu EAVEPCJINT. iizywanw po leceriia:
Iitys .Êł-h. LÍofanie tran s¿1kc'ji do pn'pi"zeŁi:1in zdefiniowanych punktow' zapisti
Kontrola transakc
'ii'
ĹI
Podczas w¬j.'l~:ony¬.'¬„'a.ni.'=i transakcji rru'nI:liw'y jest podział ich na mniejsze częsci za pomocą słowa kluczowego SAVEPÜIHT. .iiiliy usunąć SJŁVEPÜIHT. uzywam'_r polecenia: RELEŁSE SAVEPÜIHT nazwa_punktu_przywraoania; 'Całosć transakcji mozna nadal wqrctifać. uzywajac słowa kluczowego RÜLLBACIL
Blokady i zakleszczenia ž".1kl±='¬.«'c.feni.i ~.›~.j„-tępti|::j w bazie danych w chwili, gdy co najmniej dwie transakcje należą blok ide na dane, które maja być uzyte przez inne transakcje- WcIi¬a.'t:zas transakcje czekają. 'iz l‹:.izd.1 ." nich zostanie wi„'ko11ana, i dochodzi do zal-:lc'szcze1na. S3.-'tuac_ja ta spciwridowanii. jest blokadanu iiakłaclanjinii na dane w chwili ich modyfikacji.
_ .fltby przeanalizować po'wyzszy przypadek. pos-ltizymy sie dwoma oknami sesji nuinerowaiiyrni oknol. ol':no2_ Ülilblül
ltrs. .“..?'..T". lilrizpticaecie pie|'wszr'j transakcji
Ü1'¿i*~l'Ü2
Rys. 2.31-3. I¬l::›:-'.ptt||,':".ęt_jt' rlrttgii-'j t|'a|tsakeji
jak prezentuje powyzszy p1'zykl'ad. transakcja w drugim oknie zostala wstrzymana (napis UPDATE 4 nie zostal w'y's“wietl:'iii'yj, co oznacza. zadzialai rtteclianizni bloki|j¿tc1i'dt.ist'ep do krot.ek, na l-:tocych aktualnie tw-"ykoiij-'wiittii jest juz inna tr¿.ittsiikr;'jii.
Aby-' odblokować drugie okno. musimy zakonczyć transakcje w pierwsz.yin oknie polecc'i|ien'1 'EÜI~'II!'!IIT lub EÜLLBACE- W |ta.'-rzyin p1'zyklaclzie w obu oktlaclt tfw kol±*jtii.t.sci ol-t:ne.'1. oknoíłj zako1`n.'zy|ny 1r'an.salo;jt,' t.yyi;i.if:itiie|i1 zniiau- Po 'wpisaniu
w pierwszym oknie polecenia FLÜLLBACE transakcja w oknie numer il zostanie odblokowana.
t-tys. .-“..-t-EI'. `t1i'y'l':oiianie polecenia transakcji w drugnn oknie po zal-:onczeniu pierwszej transakcji
Powyzszy przyklad pozwolil na zilust|'owa|¬iie meclianiztnu blokowania. Hadeszla pora na przesledzen ie- kiedy dochodzi cio zakleszczenia. Do zakleszczettia clocltoclzi, gdy pierwsza t'rar|saki.'ja nakłada blokacli,' na modyfikowa-
ne krotki. w tytn czasie dritg:-i transakcja chce wykonać operacje i czeka na zakonczenie transakcji pierwszej. pietwsza transakcja rowniez nie moze wykonac zntian. poniewaz w drugiej kolejności krotki blokowaue są przez transakcję ilniga- W efekcie obie transak' cie czekaja na swoje z.alcrtt'1t.'zenie. FIITIĽŁAIII 12.3
Przykłari za kleszczeni a: '|. `l`l3=`„.›"'tl“¬l.SF'tl'f.f-Ż_Íj.»¿"'.l (zablokowanie krotek o ic1_pra.‹:ownika = 1]
i'i'..~¬. ?.?..Itt. Rozpoczęcie piet'¬wszej transakcji i :t¿ilt'i'±r'rtie blokady tta dane
2. T|t."il*~iEi.f\l'tltÍ|.fi.Żł jzaltiliil-:i_n'.-'anie krotki o íci_pra.oowni]':a = 2]
lłşs. .tli l. Rnizpocz.c'rir~ drugiej t|'ansakt_'j¦ i tiztlintifiiie blokady na dane
›
1
7» Ê L Å).
_il
l
“
l
bit .Ê'- l iz l'~l "I
Y
3. TRANSAKCIAI (próba zmiany krotki 0 id_pracownika = 2 - oczekiwanie na zdjęcie blokady przez TRANSAKCIĘZ) ¬ t
R\¿<. 22.1
Próba modyfikacji danych blokowanych przez transakcję drugą - blokada
4. TRANSAKCIAZ (próba zmiany krotki o id_pracownika = 1 - oczekiwanie na zdjęcie blokady nałożonej przez TRANSAKCIĘI. czyli zakleszczenie). l
Rys. lłýtš. Próba niodyfikacji danych blokowanych przez transakcję pierwszą przez okno drugiej transakcji- zakleszczenie
jak to ilustruje powyższy przykład, PostgreSQL wykrył zakleszczenie, a transakcja 2 tego powodu została wycofana.
'
-'i |'.".'.'."=| |
tt
'
Modyfikacja tabel i operacje na tabelach IACzADHIEHI."t
I W jaki sposób za pomocą instrukcji SQL można zmienić typ kolumny?
1 jak ustawić w kolumnach wartości domyślne? I Dodawanie kolumny do istniejącej tabeli i usuwanie (także kaskadowo) tabel Aby zmienić typ danych w kolumnie tabeli. ttziletty posłiizyć się konstrukcją SQL: ALTER TABLE oraz ALTER t.'.".DLI.iI'It't. jako przykładu nzyjeiuy tabeli praf:ownio3r__]::ihp-
- i "'.`¿J1j=i3'.'~i'ietlei1ie za'wat'tiisci tabeli p|'at'_oi'.-'uicy_hjtp
jeśli wyrlanty polecenie opisu tabel i. zobacz.ymy. ze kolumna wiek jest typu integer.
- '. ' `i.Íi"yśw'ic'tlet1ie opisu tabeli pracowriiry bltp
jesli zechcemy zmienić jej typ. posltt'.›`:y1ii§.-' się i|isti'ttkcja: ALTER TABLE praoownioy_bhp ALTER CÜLUHH wiek TYPE numeriotdj; Rysunek 23.3 prezentuje zrealizowanie polecenia wraz ze sprawdzenient. czy zmiana zostala wykonana.
._
_
,||
..'..
_
Iiys- 13.. 3. Emiana typu kolumny
Powyższy opis tabeii przedstawia zmianę dokonaną na typie kolumny wiek ~~ nttii1erii:j'fI..Ei}.
Nalezy pamiętać, ze nie wszystkie typy podlegają wzajemnej koiiwers_ji i nie zawsze jest rnozliwa konwersja zwrotn a. Słowo kluczowe ALTEF. umozliwia równiez modyfikacje wartosci domyslnych dla kolumny za poniocą klauzuli: ALTEF. TABLE preii:Dwnii:3_t'_bl1p' ALTER CÜLUHH wiek SET DEFAULT 13.'
lub ALTER TABLE pracowni-::¬_=¿'_bhp ALTER ĘÜLUHIJ wiek EET DEFAULT NULL; jeśli dla kolumny chcemy wycofać wczesn iej wprowadzone wa rtości doinyslne. ttzywaray polecenia:
Iltys. 23.-i. "Ji.t`y'cofartic' wartosci drnn'y'śl|iy'cli dla koltiniiiy
lrioclyfikacje prowadzone na tabelach uwzględniają rćiwniez dodawanie lub usuwanie lailt1tnn.Al:iy dodać kolumnę. stosujemy konstrukcje ALTER TABLE _ _ _ ADD t'JU'Ll'.tI'-1`.1:~l, AP'ILTER TABLE prac:ownioy'_bhp ADD '.'IüLUI'.'lI~I lii:zba|._c1ziei:i IHTEGEF.: _
llys. 13.5. Dodanie koln inny do tabeli
_ Po wykonaiiiti powyzszego polecenia kolumna zostanie dodana. Iniormuje nas o tym Í`lt0a1LuiilcatALTEEt TABLE generowa ny przez l`1'ostgre5Qi_ po poprawnej modyfikacji taillúli. Ü wprowadzonych zmianach mozemy się przekonać, stosując polecenie ziliistrowane I |1E`I'jz'5.
| HŠEILEĽT * FRÜH 1:irat:ownir:¬_i¿'_hhp,:
trakcie modyfikacji tabel moze zaistnieć konieczność wprowadzania ograniczeń ljliartości doinyslnych. np. HÜT NULL DEFAULT. Przeprowadzenie takiej zmiany przedkolejny przyklad:
IŰŻ
.
'. .t i - -.'|'|
.
ALTEB TABLE pracownicy_blip ADD tIt3'Lt.It\'!I1~t wiek_dziecka [nteger t~t'.'JT I~l'ULL DEFAULT 13.?
t.:.~. -':.1. t. Wj.-'świrftleiiie zawartości tabeli pracowiticy_lilip wraz z dodaną kolunnią í
_
i-=:-.
.'
nurt]
` Íytodyfikacja kolurnny wiek_clzit='cka (dodanie wartosci doniyslriej i og|:anic.zciiia ł~lt`iT
Usuwa ii ie kolumny z tabeli rówiiiez odbywa się za pomocą klauzuli ALTER TABLE. iiji. ALTER TABLE praoownioy_bhp DBDP CÜLUHH liczbaufizieoi; í
los. ¿;".i¬. Usunięcie kolininiy liczba_d-zieci
Nalezy pamiętać. ze usuwając kolumny powiązane z iniią tabelą. powinno się siosotwi konstrukcję DRÜP ĽIASCADE. Podczas modyfikacji tabel mozemy równiez nakładać na kolumny ograniczenia zi'-'iąza ne z zachowaniem więzów spójności bazy danych. Gdy zajdzie potrzeba nadania kolumnie ograniczenia unikatowosci danych, równiez posluzyniy się składnią ALTEF. TABLE: ALTEE
TABLE
pra~:zoi'rnic'.y'_bhp
ADD
CÜHSTFAIHT
ogr_wieku
UŁIIQIIFE
(wiek): |
ltt -4. lit! blalijizenie ograniczenia l...ll*«liQL.|i:` na |~:olunine wiek w tabeli pracownicy_bhp
'
-.-t--f .
`tiUyktiiiatiie powyzszej klauzuli spowoduje. ze wiek pracowników będzie musial spełniać warunki nałozonego ograniczenia nnikatowości. Üznacza to, ze próba dodania krotki: INSERT IHTÜ praioownioy_b'njp VALUES (6 , ' Maniek' , 'Nowak' , 23 , 12) : spotka się z. odtnową systeiiiti, ponie'waz wprowadztiny wiek już istnieje i operacja ta naruszy reguły uiiilc;ittiwri.sci lcnltinitiy-
lij-s. ii. ti'. Próba tia ruszenia reguły unikatowosci zawartości kolumny wiek w tabeli praco'w'nicj.-_lilip I
W celu Ltsitnięcia tigrariiczeliia stnsiijettiy polot¿eiiie. DEÜP CÜHSTEAIHT:
I Itjs. 1"i 1 I Usunięcie reguły unikatowosci kolu ni ny wiek w tabeli praccn'."nicy_bhp
i l"fiodyt`|kow'._uiie taliel clotyrzy ró'.'ynit'z zmiany tiazw tabel i kolumn. Ftby zmienić nazwę koluniny ic1_1;-raoownikia w tabeli pracownicy' bhp na nazwe id, wykoriitjeniy polect.'tiie: ii.LTEH TABLE prā.c_:owni|:':}f_bhp REHAHE CÜLU'Ii'!l1'I ic1__prett:cit-rnilr.-si. TÜ icl:
I1'!-. lit 1 Emiana ideiityfikatoia koluniuy id_pi'ac.ownika w talieli pracowriicy_l.ilip
Powyższy przykład ilustruje zmiane nazwy koluniiiy tabeli icI_ptr.ar:ownik.1 na icl. Bardzo podobną konstrukcję stosujemy podczas zntiatiy nazwy tabeli.
ŁLTER TABLE prac:ownic:y_Iohp F.E1~IA.t-1E To p_hhp,'
13.13. Eniiana identytikatora tabeli pracriwitic.y_lilip _ii
163
i¦-`~"Í`t
t`|-`~.".i'. li l .“:¬"r"“¬ |'i'-'i-'llt l"' "iz". l.'.-"i."*¬5`“.|Ź"li
R1. s. ł.it.t~t. W¦.'św'ieilet1ie tabel znajdujących się w bazie: tnojabaza w SEED Postgre5Ql.
Po wpisaniu polecenia wyświetzlająccgo listę tabel zobaczymy zmianę nazwy tabeli.
Modyfikacje tabel mozna przeprowadzać za potnocą narzędzia pgikdminti I. Z prawego menu wybiera my tabelei za pomocą menu kontekstowego uruchamiamy Właściwości. E
Ê
Persery F1
Fl'=5FtÜ|'l3'r`
Ÿ.f.'ř- ':T-zatalonyř Í- - *Ę Funkcje to
F'Üf2ądl'~0'¬"i'öf'iÍB'~~ Twurzeriie kopii zapasowej...
Ĺ-
Sekwencje
Prz-ytflerćić...
ta
rasaia to
1mps.t..j,,,
Iri otistis- _ " -t7`.'-Êl. seksie .
;
.
7'
i':_
bl'
B] Ê] orac_p_pomoc
Ftş s. .t ł. i Ê. i'yIodytikacja tabeli p_bhp w programie pgrílidminlll
W oknie edycji tabeli mozemy dokonać zmian za pomocą zakładek: 1 zakładka Właściwości: nazwy tabeli, właściciela tabeli. schematu. I zakładka Kolumny: nazwy kolumn, typów' danych.
WŸHŠCÍWDŠÜ joofirttcjaj Dziedziczenie | Like
nas-.-..
|.i_i:=-te'
oin
szrsa
Właściciel
Dustores
5!Il'tBI.'¦t'IĘti|I
| ttołminy j 'oorarsczoriaj Auto-ocltiirzarite-|. upra* _'
. ._ ,_ -it' i
j public
li'.'¬ .ii to. iytodyljkacja tabeli p_blip w programie pgittdminllt - pole modyiikacji idetityiikaturit tabeh
Ügraniczenia (t2tJt'IE'.'I'ItAII~t'I'E'.j zmieniamy za pomocą zakładki Ograniczenia [`iys.13..1Ej." Modyfikacje dotyczą Klecza głownego, ittocza Übcego. Cigraniczen wykiuczającydt. Unikatowosci oraz Sprawdzanie (CHECK '.'2ÜI'lSTB.AIHTSj.
TWÜREEHIE i"tEl_.¿l'.'C"t'jI"~lI-Í] EAZT D.-"t¦"'l'|"-'Żi-i 1-
into
ctiaractiir t"ar'_.'i'|q[sD}
'int-.elo
oiarazm veyngtsii
wina
|'lai|ai'1d¦'t,u¦j
i"lIul't¦,,__'IíIi'l'l|=t¦¦l\t.a|
hboqfl l"IDT l'Il.l.li. DEF-ltL.l.`F"IE
F-_
2
I
I
'
l
23 17'. Irtodyfiłtacja tabeli p_bhp - iirterfojs_ pozwalający na modyfikację typów i nazw oraz _kalurnn
_ staw
im _ __. __- ._ i"i't'=tu=wts=s
Hudyñkacja tabeii p_bhp - przykład wyboru zmiamanego elementu
oz swoją wisozię -Ê
W
rozni się kaskadowo usuwanie tabeli od zwykłego? używane są wartości domyślne w kolumnach?
awłw
t
I
'.
' t
'-ft
I
".| 'i ti
z'tt.-"'. 1.' “i '
'
Tworzenie nowej instancji bazy danych w MySQL i Postgre-SQL ZAGADNIENIA
I I I 1
Tworzenie bazy Pojęcie znaków Tworzenie bazy Tworzenie bazy
danych w My!-IQL za pomocą linii poleceń SQL zachęty danych w PostgreSQL [wykorzystanie narzędzia plipPgAdmin] danych MySQL [za pomocą narzędzia phpMyAdmin)
Tworzenie bazy danych za pomocą polecenia SQL W linii poleceii MySQL mozemy przeglądać istniejące bazy danych za poinocą polecenia SHü`ti'i' DATABABES :. l'~lową bazę danycl1,w której obrębie znajdą się tabele i inne obiekty. np. widoki. tworzymy tak samo jak w przypadku PostgreSQL - za pomocą klauzi1lit'JRE ATE DATABASE r1azwa___batzy'_cł.an3,roh: - zarówno dla PostgreSQL. jak i MySQL
Ft.-._ 2-¦.t.`klr'y'świt'tle|1ie baz danych w lylyEiQl.
Połączenie z nowo utwotzoną bazą danycli uzyskujemy za pomocą polecenia: UBE nazwa_1:›aizy' danych;
t~'.'.._ '_'_.t-.'. Pi'.iląc'zeiiie z wybraną bazą danych w M y'5Q I-
itis .I'.-tt "J.'yśw'ietl;itiie tabel bazy. z jestesiny aktualnie poląt: ze ni
Gdy cliceniy uzyskać informacje. jakie tabele znajdują sie w bazie. z którą jesteśrnyaktuals nie połączeni. iizywaniy klauzuli BHÜW TABLES:
I “tli-" '"l it P' iÊ is i F Fl il-, |_ .*"-.t_
.i bi l". j
li -'=. ":'" 1
i_: -it ~"'.' 'it' it
Pnmiędzy Pustgre5QL i MySQL wystepuja jeclnalc pewne rúznice. jeśli chcemy sprawdzić, z jalciegu ltcinta alctualnie kurzystarny, wylcunujerny pcilecenia: _Å
j
Rys. 14.4. Uzyskanie infcirlnacji u ltultcie. na
-lrbårym
jestesmy
alrtualnie
zalugtiwani
-
Pt;_1'_-1tgreSQL
Rys. 14-5. Uzyskanie infurmacji cz ltcincic. na ltttirym jesteśmy aktualnie zalcigciwani - ii-iiy5QI..
Purlczas pracy W kunsulach DHM5 - Fustgrc'SQL i MySQL rnuzemy zauważyć, ze znak zachęty ulega zmianutn. Gdy tworzymy na przykład tabele i ruzpuczyttatny lnstntkcjç - SQL. którą dzielimy na lcilka usubnych linijelc, nacislcając El\l"l`ER_. wówczas znak zachęty
informuje nas. ze uczekuje na zalcnńczenie klauzuli SQL za pntnuca śreclnil-za. Üpis znalińw zacltęty clla PnstgreSQLi MySQL przedstawiane pnnizej. Tabela 14-1. Znal-: zachęty Pustgre5QL i MySQL
El =Í='
tn'y'5c{1 3=-_
|
Í
4
Baza clartycb jest gütctwa clci przyjęcia i wy'|-tunania nuwegct zapytania.
Zapytanie nie jest jeszcze lre-mpletne, jestesmy w trakcie jegn pisania _ (nie zristai jeszcze uzyty srednilr lreñrzący zapytanie).
J
i-
J
'Oczekiwanie zamitniecia curizysiuwu dla wpisywanegci łańcucha . znaltuwegu-
BFPJHI ,Í *fa
_ 'Üczekiwanie zamknięcia wczesniej c-twartege nawiasu. Üczekiwanie na następną linie, knñczącą wpis ltpmentarza rcizpciczę-
tegci znakiem F. 3=#
BRAK
Iicirzystarny I |
l Analogicznie: -# nznacza, ze za pytanie su pe ru zytitciwnii-za jest jeszcze nieltnmpietn e, _ ' # ci-czelciwanie zamknięcia cucizysiuwu na kcincie superuzytküwniica. "12'-
"lz ¦
Üczeitiwanie na zamkniecie pnrlwcijnegci cucizysiewu. Üczekiwanie na nastepna linię kuriczącą wpis identyfiltatera wpisywaj negci cicl znaczka {` j.
zachęty W Pustgres SQ L cluclatkuwci infnrtnuje nas, clü lctúrej bazy tíanych jesteś my podłączeni. Na ilustracji przerlstawiunp przykład przełączania puntirşclzy bazami
H
I'
li.-¬'.}f'Ĺ"|" l.`1.i"t ?~¬`1"tĹi-l
l .`:'i`t`."Š`|'l_.l*\'l`t' l'-l.-'tr' lÍ.".."'t'¬-"`t`t"i|
Rys- 14-5. Pułączenia z wybrana baza danych w F"cistgt'c'5QL
Fun_l-:cjunalncisć ta jest dcisyc istutna. pciniewaz jestesmy stale ittfnrrnuwatti. w cibrebie ja lciej bazy danych wylcunttjetny czynnu:-ści. In nym spcisc-betn na utwnrzenie bazy danych w l"'cisi.greSQL jest posługiwanie sie narzędziem plipl3'g.fitd1nin. Aby uzyskac dcistep du' tegu prcigrantu. rttnzna pusluzyć się płytą dułączcilia dci pudręcznika.
Ę phpF'qAcin1in
Ę-
'G
tĹ'_.`]i lE.?..ü..E'.1,tpi'¬|p ~':;'=td|'n|r|,' '|-
"nhnPzAd1na= s.e.a Ê Serwery
|ş_L|i't|;±F"r_.1±idnttrt'
;Ü
H PGEFQFHEÜL
Zaluguj du Puslgreātll.
-
t"i.a..":-na użylzkuflfnilsi
Ijítüztgrez
i Íajnüul
Rys. 14.1 Pnlrjczeitie z set¬-iyerent PnstgreSQl_. za pcnnttca na rzedzia phpFg.¿"tdt¬nin
Pu wpisaniu luginu i hasła zustajerny pnłaczeni z baza danych. interfejs prnpramu pl'tpl"'g.#'~tdrnin puzwala na utwnrzenie ttnwej bazy danych za pntriuca cipcji Utwórz bazę danych.
I
__
pe -1 zami ' .'_ __.
-1
_-_
'Š Serwery
._
:-;. I _
Ł
__, [1 F |::stgre5tZ."I. Ęi |__:l F-Hžlătqtes
E F] h'5"Íh'Efl`¦'Ê|T-ti' fipublil:
Ĺ'-“'_!EÊT“'*E”"
Et- fywicletn EH Ę zezwencje
Z
ętihnlztanntin
L
T_
I
I] t'tt..tr;. -:s'¦'_tt
_ł
[___]
EÊ
ll-i±I3rr|z|n'}a'1'l"
ttute
_ F“r.¬f~'¬=.1':4.'t-.|t' tatlbel
Ef Ü-¦1l"'="¦"¦
lillm l':|':|:nlI:|'zń ¿-In-___h 'W'h1l'l:h:hl l|'I'l.'||fl'|¦rh'-ll|i'¦r 'Eu-lllflmt 'E'-lt'l:|'l|:'|:-:I1' “Pn “hal Ellzmilr
_t p-¬'-rr.|t¬~.- |:-:sigma
Lrrea
_ I
- I
Ę' “"UTF`Ę'-P"'U'Hi` pauarattit :wsz za -„zwa 1.-y.a.a¬ __
mi
si '%›FL'fl"=':ie
""""""'“m"'” 'h"""
iu ti Dümmw
uman baze dąpysh
Ej 1,|=i1tlTe.'-tt Sea 5E|B1'-1 HH Hłnseiect all --±'- |--
1|
.
Wyitüriaj
j
ttyz'-.'. 3.4.5. Twnrzettit' nuwej bazy danyclt w Pustp1'eSQL za pcimnca narzedzia pl1pF'grä.dn1in
Ülcnu lcreatnra bazy danych urnezliwia slcunfigiirciwa nie jej pa rametrúw i puclanie nazwy. ._
'TWORZENIE HEl.."=tĽI`1'INE]B»i't¿Í`f DANYCH
Uyflflhenflefltsfii _ -Q1.
`
'I'
.
Hjmnjahaza
` ' ._
'
i""l1'l!i'!=üt'"`"""h líí" E
` ,Fi 5 li
ll :ñzr-:'r 15'-
1
E
14 El' Dlcuo phpPgAd1nm podczas tworzenia bazy danych
Ľmosc zatwierdzamy za pomocą przycisku Utwórz, po ktorym program informuje u utwurzeniu nowej bazy danych. Baza danych została utworzona.
itafllimti .s 'ümnjahaizupizllilnl
[HPI
.H i
miga
1*-'-H"“TE* pggoafitim .szzz za
.'
mm
±'a'_t -="r'i 1 - -='-sf-st' _ *rz ==='¬'.§í¿'.fl¿±¿„f"'=s1s-tt-±='‹~.=e=
ifipauagoltlz Ÿ mili ÜBIIIHI1-"n|Ł-llfll'-Il-II'-l'I±"'i|li| |ż'I||-
.r-i_"I'I"I±--ll;-ll;-.*"."'l| -|-1-.
t
.|'_|-'¬.-"l.."l.'-
Ł4 ttl Informacje o utworzeniu bazy danych W pl1pPga.dmifn
bazy MySQL programem zbliżonym do phpřgńdmin jest phpłvlyndrmn [program owanc' na płycie Lmuz `L1'reĽD dołączonej do pfldręcznilcaj Tworzenie W 111m bazy danych przebiega bardzo podobnie jak W poprzednim; '51'
tarontn ¦'i"'t'o"= rr on'-I
_rl-llh|"
_
_ _ "
|-l'-¬¬
przy-MAÄí1| Włblmp II phpflyrilutlmlll
_ ¬t._ _ |
"s_s"."t"'ii"'
'i'
-HL
-_- í-í-I-'I
-_
' l .l
mi Å--1
=
Ií|l|_í.1.|'i.
17% I
I 'I
r-'.'_ 1
'I.'-.
. _.
..
1411 Połączenie z programem phplyiyfltdmin
._ .- .'; '..
¬'
'I '
.l- __ . '.'-;_'l-'__."'.-¬ .-¬-|. -.¬."
I'
: 41-1'
Ufl
snzi-'|o.aui=cH1s¬i'srrr.-ironz om-iyc|4
Po zalogowaniu sie do programu wybieramy zakładkę Bazy danych, a nastepnie w polu ¿
Utwórz nową baze danych wpisujemy nazwę bazy.
Å l j
121. t1.Ľ¦I-1 1' localhost I
'I'
G' Ü 11?.1I1.¦J.1_.ip|'||:'|1iyadtn|nr|ndes.php' P1'o|~.en= cii?-e Irf:i=31l 3-?'.'.
phpMyAdmin . 5
._; Bizyåplnych
SQL
Ł Stat!-Is
mfi-z=a?t"'=a* j
.
_._. iniorrnation_schema
~ ~~
-'ł """'-"5'łlł
¦
Ű' Ernien hasło
-i i“*""='""'f'*'*'=t-='='¬*=='"r
5 5r.e~snee=s'.es=.i.s!.Łe'=is==eii.e nrfsl
.J p-'hpfnyadmin
' LrtfE_gen=eral_ci
'I
Rys. 24.11. Wybór opcji Bazy danych
ş ;
|
Przełączanie pomiedzy utworzonymi bazami danych następuje przez wybranie ba-'zy z menu po lewej stronie interfejsu. Na powyższej ilustracji widoczne są m.in. bazy-; info:r.'ro.ation_ee1'uarrta, mysql, phpmyadmin. Interfejs programu phpMyAdmin |t1a'¿=
, ¦
rowniez zakładkę SQL, ktorej używamy, gdy w wybranej bazie danych chcemy wyl
„I
nych monitorowaniu wydajności systemu i nadawaniu uprawnień.
5 .
5 _
i
B L-I
:ll III
h j “F
_ I'
Elollzll
Finn:
I.l_=','5l.l|lrl'lInilnh
.IE
rrucs-ist-ll.-Å'-*'.:.~I±_u1_-IJ +1 l-.'¬a.?E¦."›.¬.t'._.::Ła I:-r.*_1¬oi|¦c.i|.'.r.zł_±|.|¦
Bazy danych łřfi Utilúrz nn'|Ir¦| bitą danych Q.
Š
jmojahaza
I
pordrlrriywario ntlpisńw 'Ii
Rys. 14.1 3. wpisanie nazwy nowo tworzonej bazy danych
SPRAWDŹ swoją wleozs jj
1. jakie są roznice między tworzeniem bazy danych w MySQL a PostgreSQL? 2. Co to są zachęty i jakie mają zastosowanie? 3. Ialcie narzędzia wykorzysmjemy do tworzenia bazy danych w Pos tgre SQL, a jalcie w SQL? `
l
iu.-'t'..›ti.r.ei-tir. ii t-.t..«i.tíi1i-ii:i 1'-'..-'=..f".r |';.~.-i.syr'ii
i 171 ' | _,m I
Organizacja pracy f związanej z realizacją . projektu informatycznego IÅGADHI ENIA.
I Czynności podejmowane przed rozpoczęciem prac nad projektem informatycznym I Etapy tworzenia projelrtu informatycznego: analiza celow projektu, analiza zapotrzebowania, tworzenie dokumentacji, stworzenie harmonogramu, przydzielenie zadań członkom zespołu. wdrażanie systemu, szkolenia z obsługi projektu I Czym charakteryzuje się dobre oprogra mowanieł' 1 Co to jest certyfikowanie baz danych? Tworząc projekt informatyczny, musimy brać pod uwagę reguły zarządzania projektami iaforrnatycznymi i dostosować do nich tnetodykę podejmowanych czynności. W pierwszej
-kolejności powinniśmy rozwazyć rodzaj oprogramowania aplikacyjnego. jezeli nasza pra.ca jprzyszły projektj będzie dotyczyć przystosowania bazy danych dla firmy prowadzącej _usługi hostingowe, musimy w pierwszej kolejności wybrać odpowiedni system zarządzania bazą danych i po uwzględnieniu szacunkowego zużycia systemu [liczba wejść, ruch sieciowy] dobrać parametry łącza oraz pararnet-ry sprzętowe serwera, na ktorym oprogra-
mowanie będzie zainstalowane. Skrotowy sposob postępowania podczas projektowania systemow informatycznych odniesieniu do baz danych wymaga spełnienia podstawowych warunkow. Pietwszyt'n iz-nich jest analiza celow projektu [po co projektujemy baze danychłj. Zastosowania mogą bardzo rożne: od sklepow internetowych, systemow CMS, systemow ÜLAP, po hurtownie danych i inne. Tworzenie projektu powinno być poprzedzone analizą zapotrzebowania na tego typu aplikację i wyliczeniem kosztow, ktore pociągnie za sobą realizacja tego Ęprojekni. Każdy projekt powinien posiadać dokumentację, ktora podlega regułom zarzą-
--dzania. Podczas tworzenia projektu istomą rolę odgrywa jego harmonogram. ktory zakłapodział na fazy. terminy realizacji faz. definiuje zadania w ramach projektu i zakłada :przydział środ kow finansowych na jego wykonanie. Gdy projekt realizowany jest przez osob, każda z nich może mieć przydzielono odrębne zadania. Programista PHP prointerfejs komunikujący witrynę www z bazą danych. a projektant baz danych - za '-;pomocą narzędzi CASE - tworzy schemat logiczny bazy danych, dbając. by odpowiadała _-'.-zapotrzebowanioni. Üprocz tego wykonywane są testy pod kątem stabilności i bezpieczeńEiatwa. Każda z osob pracujących w projekcie tnusi być ujęta w rozliczeniu wynagrodzenia. jdiolejną fazą jest wdrożenie systemow. Polega to nie tylko na wsparciu we wprowadzeniu '-nowo stworzonego oprogramowania w firmie klienta, lecz przede wsqrstkim na przeproi`¿!ilfa.dzeniu szkoleń i wskazaniu korzyści, jakie osiągnie firma, ktora z tego oprogramowaskorzysta. Üprograrnowanie łatwiej wdrażać, jeśli jego obsługa jest prosta, a osoby na nim pracować widzą korzyści z jego użycia, ponieważ ułatwi im ono pracę lub
iytyl-:ona ją, przynajmniej częściowo, za nie.
I
| | | 1 1 1 I .I I
1 'I I
BAZY DANYCI-'ł l SYST.EMY BAZ DAl\lYCll
ł i I
1 ¬_ -|.' u1-._¬1-. a-.¬1
|| i -Ż---Żi--11--|
.-
Wszystkie elementy atrakcyjne dla klienta, ułatwiające wdrażanie, powinny być brane pod uwagę na etapie projektowaniu oprogramowania. Oprogramowanie tworzone pod- , czas projektu powinno spełniać następujące cechy: 1 odpowiadać zapotrzebowaniu użytkownika, 11 być niezawodne, u być wydajne i dobrze udokumentowane, 1 być łatwe w obsłudze i konserwacji, 'I być dostosowane do możliwości psychofizycznych człowieka. Mimo bardzo wielu teorii poświęconych wytwarzaniu oprogramowania i cyklem życiowyrn programow większość tych schematow sprowadza się do kilku założeń. Powstanie oprogramowania powinno być motywowane zapotrzebowaniem, a produkt j powinien oferować użytkownikowi możliwie wiele funkcji. Anfakcyjność oprogramowania podnosi intuicyjność i prostota obsługi, wydajność, stabilność, skalowalność (niezależność od sprzętu lub możliwość uruchomienia na wielu rożnych platformach sprzętowych). Użytkowników zniechęcają: niskie bezpieczeństwo aplikacji, zagrożenie utratą danych, ,
1 I. I' I I. 1 I. 1 1 l' I 1 I. I. I'
dostępem nieautoryzowanych osob i słabe zabezpieczenia sieciowe.
Certyfikacja baz danych Certyfikacja baz danych to proces oceny zagrożeń przeprowadzany za pomocą narzędzi kontrolnych i testow. Ustalenie odpowiedzialności polega na wskazaniu osoby odpowiedzialnej za funkcjonowanie bazy danych, tak aby modyfikacje bazy danych nie były przeprowadzane na własną rękę przez niepowołane osoby. Opis funkcji wiąże się z dokładnym udokumentowanietn schematów koncepcyjnych i fizycznych, co wiąże się z ryzykiem ponownego wykorzystania oprogramowania (sytuacja ta przypomina sprzedaż produktu 1 I .| 1
1 'I
.I | 1 1 li | 1 1 _| 1 ll
I
1 I | 1 | I
| | | 1
¦. ...'fi |' _ 1'¬-f.*' -.J
i- -.
.=.-; | 'E'-.: ¦j, _ -FJ I' - -'Š-l ._ -..ciatł
'¦ ¦':-_;-1 f - '11 .
_-W'21-'-l'_*
_-_ '.' .- _,'11
_¬¬-T-_
J-|1. -¦|.¦1|_-"-' _ .'I'-¿"' Í '1'.| ll ""|
_ |'.f.' _"±'¦± |' I |
wraz z dokładnym przepisem, jak otrzymać go w domowych warunkach). Powtorne wyko- _ . rzystanie kodu umożliwia zwłaszcza programowanie zorientowane obiektowo, w ktoiym I
zaprojektowane rozwiązania bazodanowe w formie klas są szczególnie atrakcyjne pod l<ą- j 1 tem ponownego użycia. Certyfikowanie baz danych należy zatem do rzadkości i niewielu 1 ' tworcow się na nie godzi.
SPRÅWPDŹ Sbifüjßj ÊVÍEDZĘ 1. jakie Wyrożniamy etapy pracy nad projektem informatycznym? 2. jakie są cechy dobrego oprogramowania?
3. Co to jest certyfikacja i dlaczego jest rzadko stosowana przez twórców oprogramowania?
i '
H
l"'Ji."iĹ`iF‹'..Ei¿l`*~ill"_ l¿¿Ei__-'!'.'i."`¦"|=-_"~ii_7j l'i=i..F*"|' Ľi_-'i.i\¬i":'iĘil
U
Í Zasady zarządzania ; projel‹tem tworzenia j j bazy danych
Il.'GADHIEHIå I Dgólne zasady dotyczące tworzenia baz danych I Ľylrl życia bazy danych l Modele tworzenia baz danych: model środowiskowy. model funkcjonalny I Cyld życia projelctu: model l-tasltadowy, model prototypowy, model pizyrostowy, model spiralny I Zasady pracy z doiru mentacja klienta
Zasady dotyczące zarządzania projektem podczas prac
związanych z tworzeniem bazy danych Wprowadzanie zasad dotyczących pracy z projektem informatycznym ma na celu podnie-
Ęsienie poziomu jakości uslug w ramach tworzonego oprogramowania. Prace związane I realizacją projektu informatycznego skupiają się na rzetelnej analizie potrzeb klienta, za przez to na tworzeniu systemu odznaczającego się wysoką efektywriością. l`¿'ierwszym '-etapem, oprocz badania potrzeb klienta, jest analiza aktualnego systemu. jakim on dysponuje. i tym samym tworzenie projektu, który będzie łatwy do wdrożenia w architekturze '-"sprzętowej i oprogramowaniu, jakie klient posiada. Projektowanie oprogramowania [baz
-danych] przebiega z uwzględnieniem przejścia od projektu logicznego do Hzycznego- Pro'_j_ektowanie buy danych. przedstawione jako przejście od modelu konceptualnego przez
logiczny do fizycznego, szczegołowo opisano w rozdziale poświęconym projektowaniu baz *danych jzob. rozdz. Projektowanie konceptualne, logiczne i fizycznej. Ümawiana przez Ĺrgas analiza zasobow i zapotrzebowania klienta wykonywana jest na potrzeby stworzenia
modelu logicznego. Elementami modelu logicznego sa: określenie powiązań systemu ia obiektami zewnętrznymi, stworzenie listy iunkcji oferowanych przez system oraz zależ;ílüšci pomiędzy nimi. Prace nad modelem logicznym oparte są na optymalizacji przepły-
'§1ii'1.t danych .
-.Cykl życiowy bazy danych 'Cykl życiowy bazy danych można określić jako selcwencje podstawowych krokdw polega-
jących na zaprojektowania bazy danych. zamianie projektu logicznego na projekt fizyczny „lltnieszcz-ony na komputerze z możliwym dostępem do sieci oraz zdefiniowaniu lokal-
schematow. Wraz z zakończeniem etapu projektowania cykl życiowy bazy danych -obejmuje jej implementacja i wdrożenie. Cykl życiowy bazy danych jest ogólnym schemapoglądowym przedstawiającym kolejne stadia pracy nad bazą danych. Sekwencyjność
:czynności podejmowanych od momentu ustalenia zapotrzebowania na bazę danych do jej wdrożenia oraz pdżniej szej rozbudowy i modyfikacji jest często prezentowana :ar fonnie wykresów. algorytmów w postaci schematdw blokowych. Taka prezentacja ma
H 'F
mt
Ĺ'-I-"t.Í"t' lĹJ.'f'tÍ"'-¦"r'i`_`l-ł l ?;i`“r`iż~š`l`l'Ĺ""t'i`“r" łi„"t?_ l`J'.-"tl“~.i"|'"t"`.il
na celu określenie kierunku podejmowania prac w poszczególnych stadiach rozwojowych tworzenia i użytkowania bazy danych. Uporządkowanie etapów prac pozwala pamiętać
o każdej z elementarnych faz realizacji projektu (np. zabezpieczenie baz danych, testowanie wydajnościj. tak aby gotowy produkt nie tylko spełniał oczekiwania klienta, ieü także oclznaczał się wysoką funkcjonalnością, wydajnością, bezpieczeństwem - czyli tym wszystkim, czym charakteryzuje się produkt wysokiej jakości.
Model środowiskowy Model środowiskowy (envir'onmentnl model) wyznacza granice pomiędzy rzeczywistością nadzorowaną przez system i będącą poza jego kontrolą. Zadaniem modelu środowiskowego jest równiez określenie położenia systemu w otoczeniu zewnętrznym. Übok modelu środowiskowego występuje również model fimkcjonalny.
Model funkcjonalny Model funkcjonalny składa się z diagramów obrazujących przepływ informacji oraz dia-
gramów obrazujących relacje pomiędzy obiektami - ERD {Entity-Relotionskip Diogromj. Model funkcjonalny określa działania występujące wewnątrz systemu. Üprogramowanie w czasach, 'w ktorych nieustannie rośnie popyt na coraz nowsze programy mające na celu zoptymalizowanie i przyspieszenie pracy, rozwijane jest według określonych reguł. Regttły te zwane są modelami cyklu życia oprogramowania. Zachowanie ich pozwala ułatwić monitorowanie przebiegu realizacji pracy nad oprograniowanient na poszczególnych etapach jego wytwarzania. Wpt'owadzają równiez uporządkowaną sckwencyjność działania, dzięki której redukujemy liczbę błędów, które mogą pojawić się na
etapie procesu wytwórczego. Wyróżniamy następujące modele:
1 kaskadoyna 1 prototypowy, 1 pr'zyt'ostowy.
1 spiralny.
Model kaskadowy jwaterfall model) Nazwę tego modelu wprowadził Winston W. Royce w IÊJÊÜ roku. Model ten opiera się na
schemacie kolejno wykonywanych czynności odpowiadających fazom projelctowyrn. Fonie waż przypomina schody, nazwano go kaskadowym. Czynności modelu kaskadowego to: 1 planowanie (określenie wymagań, na które oprogramowanie będzie musiało odpowie-
dziecj: 1 analiza systemu (analiza wymagań i możliwości wykonania oprogramowania, które iin sprosta); 1 projekt systemu jskonstntowanie szczegółowego projektu wraz ze sprawdzeniem, czy sprosta stawianym wymaganiom); 1 implementacja (faza, która polega na przemianie projektu na kod żródłowy oprogramowania, etap ten nazywany jest fazą 'wytworzenia kodu i może olaejntować testy poszczególnych składników oprogramowania - modułówj:
1 testowanie (połączenie wszystkich części oprogramowania w całość i przeprowadzenie testów pod kątem funkcjonalności, wydajności, ewentualnych błędów itd.]: 1 faza wdrożenia i pielęgnacji (jest to okres, w którym oprogramowanie instalowane jest w firmie klienta, przeprowadzane są szkoleniaj.
`l"t1ir"tŸlFłĹ.`f.'l`:""~l|ł`; fłl`¬l Fti."'r`]?"~lEl ł:l_'l.FĹ"¦` Ĺ2-'.-'f't=`ś`i`|ĹÍi›-l
I
11
jeżeli któraś z faz nie przebiega w satysfakcjonujący sposób, wykonanie oprogramowania cofa się do fazy poprzedniej. Czynność powtarza się do czasu otrzymania satys'fakcjonującego wyniku. Model ten nie jest często stosowany ze względu na sporą czaso-
chłonność wynikającą z sekwencyjności faz. Nie mozna rozpoczynać kolejnej fazy, jeśli poprzednia nie zostala całkowicie ukończona. Wadą tego modelu są również spore koszty ponoszone w przypadku cofania projektu do wcześniejszych stadiów.
Model prototypowy Model ten oparty jest na stworzeniu prototypu i przedstawieniu go klientowi w celu sprawdzenia, w jakim stopniu odpowiada na stawiane wymagania. Prototyp programu tworzony jest zaraz po olcreśleriiu przez klienta wymagań. Taka metoda działania redukuje do mittirtrum możliwość produkowania oprogramowania, które nie będzie spełniać wymagań
Istawianych przez klienta. Zaraz po akceptacji prototypu oprogramowanie przechodzi do ._--ltşolejnycłr etapów tworzenia, optymalizacji i testowania. Model ten jest lepszy od kaskadowego pod względem ekonomicznym, ponieważ redukuje koszty, które poniosłaby firma, tworząc oprogramowanie niespełniające 'wymagań klienta. Prototypy umożliwiają łatwe *-wprowadzanie zmian, wcześniejsze przeprowadzanie szkoleń oraz zapoznanie klienta :.zwyglądem i działaniem oprogramowania. Model prototypowy ma również wady, do któ-
zalicza się koszty budowy protolypów, które mogą być odrzucane przez klienta. Model Lten nie chroni całkowicie od możliwości nieporozumień pomiędzy klientem a programi-
poniewaz prezentowany jest jedynie prototyp, a nie produkt fmalrry.
,ljlodel przyrostowy llfworzenie oprogramowania według modelu przyrostowego rozpoczyna się od okre-śjljerria wymagań klienta i wykonania ogólnego projektu programu - jest to tzw. wersja jona programu. Klient wybiera podzbiór funkcji programu, które są rozszerzane modelu kaskadowego. Praca przebiega przez stopniowe rozszerzanie funkcji
u od wersji okrojonej do łinalnego produktu dysponującego pełną funkcjonalModel ten ukierunkowany jest na rozbudowę funkcji programu. Dzięki częstym im z klientem i stopniowej rozbudowie funkcji, którymi jest on zainteresowany. ma konieczności wstępnego definiowania całości wymagań. Zaletą tego modelu jest a forma pracy nad oprogramowaniem, wysoka modulowość i możliwość wytia funkcji powtórnie podczas tworzenia oprogramowania dla innych klientów. nad grupą funkcji programu daje możliwość redukcji opóźnienia realizacji projekgdyz tworzenie poszczególnych funkcji przebiega niezależnie. Wadami tego modelu koszty związane z realizacją wersji okrojonej, potencjalne trudności w implementacji funkcji, konieczność przewidywania dalszego rozwoju oprogramowania już na wersji okrojonej.
spiralny spiralny zdełiniował w 1936 roku Harry Boehm w artykule A Spiml Model oƒåofiDevelopment und Enhnncsnront Model |est przeznaczony dla dużych kosztownych r korporacyjnych. jego założeniem jest przedstawienie procesu tworzenia oprom'a w formie spirali, w której każda pętla symbolizuje jedną fazę procesu. Pętle :ne to fazy początkowe. a zewnętrzne oznaczają fazy końcowe. Istotną rolę w tym odgrywa podzielenie spirali na cztery sektory. Üprogramowanie osiąga kolejną tworzenia po przejściu przez każdy z czterech sektorów, do których zaliczamy:
I I
176I 1
BAZY DANYCl-l l SYSTEMY' BAZ DANYCH
I I' I 1'
¬_.|-I ¬_| .I-1_.¬ -
.I I-
___
__
_
__
_
____-___
._
__
._-___
.--_----.-I.-mw
I
'I' 1 1 II
ustalenie celów, identyfikowanie i rozpoznanie ryzyka, wytwarzanie i testowanie (rozwój kolejnej części produktu), planowanie kolejnej fazy.
Model ten, w porównaniu z poprzednimi, odznacza się szczególnym eksponowaniern zagrożeń realizacji projektu i dzięki temu charakteryzuje się wysoką niezawodnością two-
I I I I I I I_. I I I I I' I I I' I I' I' I I I I_. I' I' I' I' I'_I _I I' I I' I'_I I I I I 'I I I I I I I I I I I I I I I I I I I I I I I I I I
rzonego oprogramowania.
Analiza dokumentów funkcjonujących u klienta I I I I I I I I I I I I I I I' I I' I_. I' I'_. I' I II II I I
.f
_I .I I I I I .I I I I I I I I I I I I I I I I I I I I I I
I I
I I I I I I I I I I I I I I I I I I I_.
Tan etap to sam początek podejmowanych prac. Analiza wstępna wyznacza cel i zastosowanie aplikacji, powstaje w wyniku rozmów z klientem i określenia listy zadań, które będą
realizowane przez aplikację. jeśli aplikacja (baza danych) służyć będzie do przechowywania informacji gromadzonych dotychczas np. w formie papierowej, pomocna okaże się analiza papierowych formularzy, sprawozdań, raportów. Dzięki temu łatwiej będzie określić, które dane będą przechowywane i przetwarzane. Analiza taka pozwala już na wstępie oszacować, czy między przetwarzanymi przez program danymi występują jakieś związki (na tym etapie tworzy się diagramy związków encji). Etap ten przygotowuje do rozpoczęcia prac nad tworzeniem dokumentacji projektowej.
Dokumentacja projektowa jej sporządzenie pozwala zapoznać się z obrazem projektu osobom, które włączono do projektu na etapie jego tworzenia. Stanowi formę, dzięki której możliwa jest komunikacja pomiędzy twórcami projektu: analitykami, programistami i projektantami. Rzetelne sporządzenie dokumentacji nie tylko pozwala na łatwą modyfikację projektu, lecz także umoż-
I I I I_. I I I I I'
'I
_I I' .I _I I I _I .I I I I I I I I _I I I .I I I I I I I I I I I
:_ _I I' I' I' I .I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I
If I'
'Í
¦. _I J _I
liwia ponowne użycie programów, fragmentów kodu, które zostały dobrze udokumentowane i stanowią rozwiązanie problemów napotykanych podczas tworzenia programów. Dokumentacja związana z tworzeniem bazy danych może być przechowywana w całości jako repozytorium narzędzia CASE. Dokumentacja taka zwykle zawiera: nazwę projektu, okoliczności jego tworzenia, potrzeby uzasadniające tworzenie oprogramowania. Dołacza się do niej również opis zadań realizowanych przez oprogramowanie, szacowany czas wytworzenia produktu, środki finansowe. Każda faza tworzenia oprogramowania powinna znależć swoje odzwierciedlenie w dokumentacji, dlatego powinna w niej wystąpić faza analizy, faza projektowania i faza implementacji. Osobnym zagadnieniem jest konieczność utworzenia dokumentacji zarówno dla użytkowników systemu (osób, które będą używać wytworzonego oprogramowania do pracy), jak i administratorów odpowiedzialnych za pracę i konfigurację oprogramowania.
I I'
I _I
I' I
I r' ¦-'_`I I . ZI' _,__
r
I: '¿ I' "_ I__ _'_
_. .____
fi ±
r_-'ĹĹ4' r-
I
Ĺ-.".-I' .I
I".~ I
¦
|¬
|'-.¬
I'- I-. I' -.
_(I
':
sraawoz swojaiwieozs 1. Wymień podstawowe zasady pracy nad projektem bazy danych. 2. jakie są różnice między modelem środowiskowym a funkcjonalnym? 3. jakie wyróżniamy modele cyklu życia oprogramowania? Opisz je w kilku zdaniach. 4. Na czym polega praca z dokumentacją projektowa?
'IÍ3
t-zazj' |_i.-in-.=i'r;|-t 1 s'rsrj=-\».l'-.' s.-tr I'i-i.s='rc:|r
-'-'- """'
Ÿ Bazy danych w programie ii Microsoft Access
IAGIII DHI E l"II I A
1 1 1 I I I 1 1 1
Tworzenie formularzy i obiektów w Microsoft Access Zabezpieczenia bazy danych w Microsoft Access Zasady działania kreatora makr w Microsoft Access Tworzenie tabel w Microsoft Access Wyznaczanie klucza podstawowego w Microsoft Access Tworzenie kwererIiiI"` ""` ` _ Podstawowe właściwości formularzy wraz z zasadami ich tworzenia Definicja raportów Projektowanie relacyjnej bazy danych w Microsoft Access
_
Aby omówić budowę i zastosowanie formularzy w bazach danych. nalezy posłuzyć się-. przykładami. Rozdział ten rozpoczyna omówienie podstawowych funkcji programu Microsoft Access 2010, wśród których znajdują się kwerendy. związane z nimi formularze
i raporty. Podręcznik nie jest dokumentacją systemową programu Microsoft Access .Ź'.Ü'1Ü. Ümówiono w nim jedynie naj istomiejsze opcje pozwalające stawiać pierwsze kroki w tym pro-
granne. 'Osobom pragnącym poznac szczegółowo bazę Access polecamy dokumentację systemową i lekturę ksiązki Biblia Access EÜIÜ. Uruchamianie programu Microsoft Access 2Ü1IĹ'| następuje przez klikniecie ikony
llicrnscil kscresu 2I]1I] Itys. 111. Ikona programu Microsoft Access
l"~lastępnie. mimo ze można posługiwać się gotowyrrti projektami, stworzymy pustą bazę danych. Üpisując program Access ÂŁÜIÜ, na wstępie wspomnijmy o obiektach, które '-.wjoózniane są domyślnie przez tę bazę danych. Są to: tabele, kwerendy, formularze, raporty, makra. Iak latwo zauważyć, obiekty zaraz po utworzeniu dostępne są w menu znajdującym się po lewej stronie (rys. 213). jeśli w nowo utworzonej bazie obiekty nie są widoczne, to znaczy, ze nie zostały jeszcze zbudowane. Tworzenie nowych obiektów w programie Microsoft Access QÜIÜ odbywa się za pomocą przeznaczonej do tego zakładki Tworzenie (rys. 23".-<1-}.
s'rari|~=:'|'u|r.a rraizr |'>aNYcH w rrrrr_:›c':rf¬r.«\Mrrf rvrrcnc›srT.rr-"i' .-\r';r_:|±fss Å
I
I..---1--_---.-
__
____í___
__
_
-_
_
_
i 'I79
- -?|-'F'
- _ - _ _ -_
'
I
uj l Ê" ' l_" 1tIa_Ľ_tt'fiziaffitófwnir ___-___ _
_ T¬'."rr_orz`anIa
H Ianlsz
_
. Dot-irrI=roII'i¦rIr B-rtzo IIarIy'cII..{Acce _ I . :-
_
Dostępne szablony
H Iaplsz ohletrtjatro
'
Ê] Io|¦rl'Iz baze danych jako
1' -H
strúna
EŸŠ' Utwórz
' ":
|'_'__.,-j zIIIIrInr.r Im: rrIInIrn1 ,
, Narzędzia Iialrjr danych. _ .. _I'rIIIiI_..' . . . . ....._.'_I'ahIrI,|¦¿ _. .
Dario zewnętrzne
I II
_
'
Datahare‹t.atI:I:|I¦I
_
._ __
_.
j 'PIIIÜÍ
IN nIr.rIr›IrIIa.IIrzI±II
:'; ` -._-
¿_;`L
@ o|Ł;|m¦ş'_1,¿.±I¿.¿r±±
j"_
j
. . ..
E
. 5
' ' _
. Z
__
=-I;
IJIIIIIH bill I¦IlI"I1IIĽI"r
-,
Ĺ,
Ĺ-
Ütiiülhlü I.I:Ł'_'_Jy'.rIsr|I¦
-_=iI±nwIIII
äj tr-IrIIrrIr±=z.IInIIrI
=
Ir't_Iorrrrac_ie
E l
i
I*"I"IjIII'-'il
Iiüñtnltly
_
_
|'\I
lí)
-_
t=.I±IrI=IIy
¦-
Mqjg ;;¦jI;|;|.|-|,_Iy
I' I'
szablony
l`í'_reztsr-ftrs!.ssr.:r s.*i':›"¬i'*.=f'ff*r'=~L-›"=
_›.,_ 'i
'T1 I'
Fßpkłzdfiwg
Szablony w witrynie tJI'I'iI:e.I:em
Q:-nÊ“"Ín używane
..
ll
,._
'
"
- -i-"«_.
r-z"Š Problemy i zadania
Działalność
Projekty
f¬*="'='='¬='='='~"" 1 Rys. 2?.2. Interfejs programu Access - wybór pustej bazy danych
.I I
II
ist'='?'(""|=›' I
.
H
I'
.
.
_j řlüfltdzra główna j ._I__:Ł|
%___pÍ"` ._
`.'=_i'
Dane zewnetrzna _
Ä `~""r'l'1'I
__
__
Narzedzia bazy danych __.
__
Fütflat-J
.7Tat*rrar.*.enIe
:=' i±Ii't,r='It'o
.'Eaawar1roy~.'ane
i
H ` -'..¦'l I"\'3'Di'-I.I R'-"I'. I ej _'_ I'-Ialar: Iornratow Z
'r"r"¦ ü ot
'
*Iwo rzenia
_
.Wi=|0|'1I "'
Sthfiwfill
F I-lt r |.r| '
'3"HZP'^'-¦"_¿št,I_ _' _
III l
t"'I
l.I'¬:-un sor'towanIr.' 'v' Frrzera-ze rrttr
Sortowanie I Iiitrowanra
j r
J .I
_
Wszystkie obiekty programu ,... CE) or
I I I
Ê
'_rI"_¦`rl 'ir_.-r -tr
¬-
27.3. Übiekty programu Access
Ê Tv'-'or-'r'|1|r |"
rs
t.'r`ir'I|z`rI5I'I'r|`I1:rr`r|e Ü
. _
'.I'lII¦|liI FTl¦|_lli.'I I.'iit1r prourlmu ' Itreator Fro_|al':t llhlll 5harIrFo1nt ' I Irwlrjrntl Łwerlrrdjr
."*""'* _
_
i.-
"i!""!""'."ł"...._.l
-.-_
IiIr`II::I;|II'±I.rI"-I¦I';|¦y.II|`.i'IjIi`I¦|'i'
_ - j --'-
I'-±IIII-II,|r,I¦¿
j
__ j
,
Iireotorlormulrrrnr
.
I
-'
“Kreator raportów
.
Pfnjgjrr |='I_|¦,1-y mfllwmlül | jjflpmj plujłu puęw formularza Ir¦}|'III|,j|¦.1|-„I Êwlecejformularzy ' upmju fnpmj
'"_".'.!'!!:"_'f'_',łI
__
I
_
:.L`.;I-}
.
"E LN"Ęi"
_Raporty
_-'sr
Mo Io.
'
I I .I
Mama Ü Mhdulhlnf j¿_I_fl1.,rjI¿._"|g_,,|¿
t
rIrrIrII=I||I:I;II:r
27.4. Eakładka Tworzenie
I I
lžmiany w dodatkowej funkcjonalności w wersji 2010 to nie tylko modyfikacje interfej-
-u
-Iecz takze dodanie nowych funkcji.. Na uwagę zasługuje możliwość zapisania pojedyn-
obiektów bazy, aby wykorzystać je w innych systemach, np. po zaznaczenia malrra ęciu opcji Plik / Eapisz jako... mozemy zapisać samo makro i przekazać je innej
_e. która będzie chciala uzyć tego kodu w swojej bazie danych. technika umozliwia zapis wybranych elernentów tworzonej bazy danych i przyspiep__ra_ce w grupie. poniewaz tworzenie projektu bazy moze być podzielone pomiędzy -osób, z których każda zbuduje oddzielny obiekt.
I
I
I
1' F
' B."'1|.E't` E'-'ƒ"'.I"'-i"¦"'.'.Íl'[ l SYSTEM? BAZ DANYCH _-ng
"`ł'_=_s.'-.e.
zi ~ '
'.-'. |.ic-ll' -
_ lu-1"'f."l=
Hlrzettül elfiwnl
Lil Mela
.'.'-U1-¦ -
I'-'I-.¦."ar:'-:|rn¦ ale'-n Il.
Twflncflc
Ę_'„|c||L:
'l
"¬"¬“" Ü
_
-
Dan: :nwwl-:mc
-
I.
-_
zmazauflaniznzan _.-
;:::'=""="'~°
il'l¦'|¦"¦lll"!|"l¦l'lJ'lI'.e
_gn-`
Ę never.:
_¬___
|í""°
Hrrsąenu buy danym __
_
1: Ĺ'_':"-.Ĺ-ÍÍĘ_
_H _
_ __
5"
_ _;_`
_ _
_E
W ='“!'“"_"'_”'*""""'*" Hiiaul
Rys. 215. Zapisywanie pujedynczych nbiektúw bazy
Zanim ut¬w-arzyniy pienvszą bazę cianych w pragrarnie Micrcseft .access zülü. wartci szczególnie dla asúb. które nie mialy lc0ntal<'cL1'z wczesrúejszynú wersjami tego prugramu
- umówić kwestie zabezpieczeń. Maze sie zdanąyc. ze podczas otwierania bazy Access z pliku pcicliüclzącege z zewnętrznych źródeł [który zapisalismy np. na pulpicie) peiawiafi się bę_dzie ostrzeżenie: _ |
aamsaflsanhcusnlcnunzln csficumnaianrncmamuzumfiuafmnanguylqsucmęzqnąfgasą I ncgqmuuuu-_]"
I
Š
Rys. EIB. Üstczezenie e zabezpieczeniach
5
Dzieje się tałc, p'cmie'waż'prc'gta1n Access przechüwuie pliki w tzw. zaufanej lnkalizaciñ.
Ustawienia te rncizexny medyfflcewać za pomocą menu Plik - Üpcje - Centrum Zaufania-.= . ¿I
-›Iaufane lokalizacje.
I
__-
'
'
|
-.-.--¿.u|„|__ ' --_
I
."|| -_-'
-'_'
I-_ -_._-...
" ~¬1'.|:.'|" '.==:|1'Í"`=':|--' "fifl:1~= _-'-.==-¦-"¬"';c-='.=':-'- '-''-|.'\'-2 .': å|'.-|'...J''|¦"'-E 1-c_'. '
_ - '-'..-'.-=.'.-.'-f.-c' r.-:-_-'-.~ '
I
'
I
Ľlgúlne B" II' :La h *Blu na "H ›fi'.1'ln.|s: crarl-ych E
Fznjelctancl alncliau
Łaufanlinyaawqr ¦
'
5-praw:Iza mc ` I
Hg
“lt
. -_¬
Üatrzeicnie: W'r.':ysti|:|e pad-an: ralcułtzacje są
sama
l
__
__
Uitawienla lnnnarrłüw Aclweill
Ustlimenla tltzntl
Ultanncnla malcr
na flnmufiwlfllę wmlfll Pasclc narze-|:=l.z'l Szybki finflep
|
Lnhzmzqz und
Pasek lcamunllutúw npm mmm
Dflłllłłl'
'I
Rys. l'.?'.?. Mudşffikacja ustawień zabezpieczeń
Iesli będziemy uuiieszczać plilci w püdanynl dciniyślnie lcatalcigu w centr|.u'n : znsüdyfllctliemy lub dudamy inne lülfalizaeje, np. lcatalag, w ktúrytn prze'chciw'ujen1y
` Ê
(bazy .acc-css), unilcniecny kazclerazewegs wyświetlania nzanitn cl zabezpieczeniach.
'
iw 'IŻHÍHI
_`
|
1
5Tiil_Ji'›Í`i`L¦R."1i BAET Dr'1ii'¬i`r'Ci'i W ii'EÜ'Gi'iAMIE MiCRÜ5ÜFT ACĽE55
I 'I .
'F_"- __-""T
|..l '-"-_-_'
jednym z udogodnień podczas pracy jest wprowadzenie okna kartotekowego. Zamiast
.uaidadająqrch sie okien. w przypadku jednoczesnego otwarcia kilku tabel, kwerend forř`rnuIa1'zy,_ ol-:no programu mozna dostosować, stosując kartotekowy styl interfejsu. ¦:" l
'
T
'
lßlnhco
._
'_
.` _
Í! .'.':|.r|¬.|'¿n
¦F"'7T-'7Í""`-_'=-.~Í-"'- -' `-`
||§'j 1
H
' -
ii f-4.;n.¬-,
' '
I
„__
_
_
_
sf iagglgj Ê 1
=
l ._
' l|._. _ -"--_il.-'_ . ¦- _I
_ __ '
_
_
_ _
.'|'|-1';|d: I
I. I-"
I
_
` '
__
'
'
Do-p|:|1uj'ri'¦ |'.]¬'.I|i'|lru|¦oIll'1|..|.|_'|.'|±.l fi 'i¦jL_.,_fl,,' Er
'__
_
_
lü* ' l
-š*_
_
_
„_ _ „' ___ Ĺ,
" _ cutnuszz na
_ SI souuuurwunzn
_
_
Ê
H
9
1 E Ęalüdląącowpaaomr
'_
._ _
-Q.
_
__
Tslirl
'
.E,_
'I'
_
_
st _'_ _
I 5|_.||-|-I
ÍĹ I'-|=1'1I,qr-1 '!Ji."u'nau'r|c'n'|nl ' JI-lots: 'ş'F|='¦cn||~|'i|| HH"-Ii _ _ ł2|fihI|'|l.± _ 15.- I.¦"›-|n t=_'~|mw;|n.1e f |"sru.¦.'_|.-|1_| - wmmg- ¦|'|; '|_|.|.|_.|¬ Emfm _
' ' ` = `
|I.-.-
-l
-'-.-
{l'rI:oo\|"||'| __
. na-'If"' _'ga-z - _ _ `. . ' - .__ -f'-.-'.' _ = l L_|. Í""¦“'-'Ĺ' *few ' Å _ "-
' ..
.ii
_ .. .
„__-
'
-'__
_
___±_.ş!_ -
_
_=¿r|a=r.a ___'_______
±|
is'r'=ofiH'HL
!_._
"""§. 113. Kaskadonq' układ okien
Zmiany dokonujemy w opcjach programu Microsoft Access 2t'I1[i: Plik - üpcje - BieżąBaza ~ Dpcje okna dokumentu. Zaznaczarny opcje Dokumenty |‹artotekowe_ Ponownie ivieranty bazę danych i kolejne otwarte olcna bedą mieć. postać zakładek kartotelcowych:
“_ _B 12 Ę ąnauigaasåi 'şpr _'g'sa.Ĺ.„..§.-.._..,__ '|Hi'|¦1'|¦|k. _
Ttiifl
UĽIIII WIIHII
E Fahrflle -_
_
L|'sUl'|
E-
wartość domyślna
'I
I'-'io|:¦|]|"i'i±Lt|_| 1'-.
Å
ion' flfirluul 1 I .i'_.f".9.
Iíartotekowy układ okien
Ponizej znajduje sie rysunek. przedstawiający miejsce modyfikacji ustawień w opcjach
ilu Plik. 'I
__ogame_
_
I
wownwh-near
Flfiirkłlfid ñhilflu
_hfijş-Ifilflt
snrrnanimr
llmnl Ioiüloh
_"In
E] 'I.t¦¦¦|',|aza tlo|'|;'¦rtofl11uł|ru|'
_
Lłl-'lIl|I'llnl-kflllilfl
Wyioleu lalituhrz
¦
Dfilłlllltlflfiflłflffiitll
H fififilunuflflmu
nuitiwąunsąuiannązp
'“""|"'“""'“'"""'*“
I
.
'
Dfififiltl _ĽIHINHI mm
'I' Hlßlllheeflłołzna Ę flohllufirhfllohklint ll
'.|'|.'I'
_ -H
"" -
.'|
_.J
E9510. wybor ustawień okien -ú
I
1
182 iii_._._.
ii.¿"iŻÍ"t` l_Ż¦'_'”'ti*~¦"¦r"|ĹĹli l 5`i"_*'iTF"'r|`¬r' Hr”'.¿ IJ.-"1'.l""l't"Ĺ`_l[ I I
W Microsoft Access EÜIÜ kreator maki' znany z wersji EÜÜ? całkowicie przebudowano-
[Macro iiuildcrj, a Conditional statement zastąpiono skiadnią IF. Aby dodac akcję do makra, mozna wybrac ją z rozwijanej listy albo z katalogu akcji znajdującego się domyślnie po prawej stronie. Umieszczenie akcji w maktze odbywa się za pomocą techniki: „przeciągnij i upuść" (drog and drop).
aby szybciej wybrac interesującą nas akcję, mozemy wpisac wyraz w pole wyszuldwania i lista zostanie automatycznie przeiiltrowana pod kątem interesujących nas kryteriów. Ifíliknięcie w prawy róg listy usuwa ñltry_ Sporym udogocinieniem jest mozliwość przeglądania i powtórnego uzycia wcześniej
utworzonych makr. W poprzedniej wersji programu Microsoft Access warunki tworzone były w oparciu o składrńę IE' i kolumnę warunkową_ W Macro Builder wersji Microsoft
access EEIIÜ mozliwe jest tworzenie bardziej elastycznych składni. poniewaz mozna stosować warunki ELSE oraz ELSE IF. W Access ŻÜIÜ makra mozna dodawać równiez
do zdarzeń jct-'cnts}_ Üznacza to, ze makro moze być wykonane w momencie dodawania
rekordu do tabeli, kasowania lub modyfikowania. istotną cechą tych makr jest to. ze dotyczą. również formularza.
Uruchamianie programu Rozpoczynając pracę w programie Access. nalezy zapoznać się z nazwami stosowanymi przez jego interfejs. Zmienne relacyj ne - tabele w Accesie mają taką samą nazwę - TABELE
i Rekord _m
-
my:
j Rekord
“
ł
Rekord
I '
j ...Li
_
Å
Rys. ."_".?_t I. Nazwy elementów tabel w programie śtccess
atrybuty tabel to PULE (kolumny tabeli}_ Wiersze, zwane równiez krotkami, w progra-. mie Access noszą nazwę HEHDRD (rysunek).
Mimo licznych szablonów gotowych zaprojektowanych baz danych obsługę nccessa rozpoczniemy od utworzenia nowej pustej bazy danych. którą dostosujemy do swoicb potrzeb.
Tworzenie bazy danych w programie Access W menu Plik wybieramy opcję Nowy -s Nowe --+ Pusta baza danych. Po prawej stronie mozemy zmienic nazwę naszej bazy danych jw tym wypadku jest to Datahaeefij oraz lo->_ kalizację domyślną jw systemie Windows 'Ej - jest to C:t„lJsers\{nazwa konta uzytkownikajt Documentst.
!ÊÜl”liltii'Ĺ`i¬l..*I3l_"'. lir'ł.Ęí_'Í`“r` lÍ}r-'l.i-i`|'iĹ`l-l W |*RClGit.r'tlyllE l'rilCH't`_l5ÜFT IXCĹŜESS
_
o'o'o
* Doohçprao lllblo-|'|
'JD +' t"l¦1'rt'1'l!_|al.: -t"'
® i:'.'rp|'.: 1.1:'c :l:|'I'1','r.l"| tato
B°'°""'*¿"1 H
-ll
Ü 11:
HI:
ji _;F
ätamrnaoa. are-.nn
oatahasao H H
l
Ü
C:¬rUsers'tPrzen1elt*‹,lIłocun1ents"'r
Mlorrnaoe
Üllllfifi llfiflllftł
Ü
Szablony-'ar lriryr
l..|l:wó'|I
I
_
~._..._›
'
lkys. 2'?.l1'._ Tworzenie nowych baz danych
-
5
Å
-Å'
Rys. 1113. Wybór nazwy bazy danych
Klikamy Utwórz. 'wybierając lokalizację, mozemy od razu zapisac bazę danych w dogodnym dla nas formacie. Klikając lokalizację, mamy szansę zmiany zapisu na:
Ê ”
j j
Bazy' danych programu lrllicrosoft .Access (format Eüll'r`."-.i"[IJ5_l 'Bazy clerrych programu Microsoft .itccet-s (format 1'lI|'|¦l,l dan ch ro ramu Microsoft Access EDU?
'
I
ā
lys_ 2?.]‹i. Ükreślanie forntatu zapisu pliku bazy danych
H
Kolejnym krokiem jest stworzenie tabeli. Zaraz po utworzeniu bazy danych pierwsza o nazwie tahelal wyświetlana jest domyślnie. Nowe tabele mozemy tworzyć za zakładki Tworzenie.
_mmmmewüíjrwmwwljpmmmmmmr
mw m m w
jj-'i-'ab la_Frojeltt llsty programu | kreator Projekt ¦ F Ę. tabeii SharePoint' kwerend kwerendy Tabele _ ltwere
_ _ _
E. Tabela
_
i
Umozllwla utworzenie nowej pustej tabell. Mozna zdefiniować pola berooirettnlo w nowej tabeli lub crtworzyčtabete-w widoku projektu.
Q _r'orrrłrw.|rt.r_rrarz Ft. ray Í-U15. Tworzenie tabeli w programie Access
a"a_r_`arrr.
j "
. j j
I 1
_r
L '__
r
l.
'
-_
oazy oanrct-1 1 SYSTEMY Baz onnyct--1
|_.' r
I
_
'|
l ||,|
W tym celu nalezy wybrać przycisk Tabela lub Projekt tabeli. Poniewaz po utworzeniu nowej bazy danych domyślnie generowana jest Tabelal, zrezygnujemy z dodawania nowych tabel i zmodyfikujemy obecną.
;i IJ sr ~' o' 'li-s
'
t
D'tri='r_¿==_B==± '-iflwsh i›°'=r=s='1iiii1'J - Mw='=°f*_^=““ irrrfsrfiifii l 'i2i~'"=s='¬rr'ri'±'1`= '~w=r.=_isifls===Ĺv='r_rirrfi
_ _
AB
5.
Wlclolc I Tekst
.
r-
j
Ę Data l godzina I" `
Lltzb-a waluta
Widoki Ê
'
'.l.|. _'_. ._.|..'.||.
Pre
_fil Nazwa l podpis
[E Tal'i,,."I"Ile
` _
_,__
j _mwariciit clomyilna
ii!-un i __.
ā'lr"r'lece_j pól ¬"
-I I
_
M-:iclyiikuj t'
_ j____j Rozmiar pola
_gyjyjggfljgj ___
Dociawanie i usuwanie
fl
'access iii r
l.'l'f|_'_".n_i.lrrj.l...
_...samotne r r F, IIr'¦'I'_;'
Ê Tabeial
I
_r
' 'I II'ł'I'|" _
,-I'I',Í'
II I'
Rys. 217.16. Okno tabeli w programie Access ---I±:n_-ur .
| r
r
1:-ir-Ir--1--nr-u .
r '-F-I
l Q
I
l
Ir
-ulu-l_ln-mi-lux
I
_ i=,is._w_s.fe_sn-;_ Ę ,ti """'""""-¬" I""* ¬ "c _ I _IĹIIIl'° 1 raarrvfriarr ilrrww* I " Fl!
I
.._.._i "l" III! Ê
___,_.__'-___.¦______
_„rr”
"'-.
_
Qtworz
wiara-'prajrrra Rys. 27.17. Przełączanie do widoku projektu tabeli
W tym celu przejdźmy do etapu projektowania tabeli, zaznaczając obiekt 'I'a1aelaJ____ znajdujący się po lewej stronie, i Wybierzmy Widok projektu z menu podręcznego.
Przed przejściem do projektu wyświetli się monit z propozycją zmiany nazwy tabeli. ' |_|_| |-I-|¬| i |-|¬.| ..r r'rrrrrrrr r' . .' r r' '| ' _ rr 'rr rrr r' ' _._ . '.'|_'|__", .__.¦..|'\||"."'|_','._"_'._' |_',_',_.'p_,'__'.'__' ,'||__"'. {'__'.".' .
r " | _..'.|_|'
.'ijII'_I'Il IIIIII-'|'I"II II III"j'lI'I'I'I|"II.'II'I 'I _-I iII"IIi'II'- '. IIII I I'III'.'I - II' _ 'Il'|'|'|-|'II' |||l__'. ._. |_. _ '„| _|.||. | ._'_r_ |.||.| I'I I :'I"|II II 'I"djl'.Ü|'|l'I'I¦'IuI"I"'i' TI . I'|'I'E' II '|"|'II:I:I |'|'iI'¦'l'|'l"Í I -IIIIIIII'I
[if .f'.'¦'.i'¦'."".'-l'. ¦""_~'. -_ ' ¦'._~l 'r'-.".
"'t' "i"\. 'II ._
r
r 'Lr
." '|
| |
'r
"I' 'fi' _
r '
'
_
I: '_;¿'jI'I'j '_F_ ' _ .| .| I I.| -'I
`
rr
,'||' __
. _
_
' -I'| |I ' _'il ' I-I |IlII'I.IIII."- II.' .' a' I 1'l' ' ' |.' '_ _ ' lł |.'|.:| 'I "."
I' Ê! - _ r "Í
|
_ I
_.
1
.-
_
r . ' Ê . |'|1|_'___.'.
' "' . ' ' 'il
I I
_.
__
._ .I.
I
_.'.'.¦','
_ _
__
I
. .' |"
'
'|
Nazwa tabeli: '_
r'
_ j
' .'|. :_l
_
_'__.__|_ |_ _' _:__. f_._'|¿u |_
-:-'r' ' ' '¦ |¦.' __ ' |'| Lu
_'
I'
:-."
TT-Íf
_ Í-TTF_ÍÍÍÍr-¬*l-F*_ŻFFÍ
__lí_mI'Í'l-I-I-F 'Íl1l'-'f1_I
'I'
'
'Í'I-l-lŻŻ-
I
¬.-
.I ,í.¬, __ _._
Rys. 27.13. Emiana nazwy tabeli
Po wyborze nazwy i zatwierdzeniu przejdziemy do interfejsu projektu. Ten etap pozwala na wykonanie bardzo wielu czynności, z k.tórycl'1 najwazniejsze dotyf czą zaprojektowania pól, właściwego określenia typu pola (Typ danych).
-
5"|`Ri_íl'-'Ź"l`l_Íli.ü« H.›'1'i`.9_"`*:' lJ.å-`*i`f{Íl-i W |3'IiÜGF'..'ftl"'-'lll:` i"."llf.ÍĹlliÍJSÜFT .~".'¦Ĺ_Ĺ'Ľ_°lÊ55 .-4-li,-' |.í,. |.¿
a lW'="*'*“"*~ i" llfidat
'fi llc' n sirulżtclr
.i
şl
"f"l'U-' "f'ši'-*"1`f'W-`f'¦"""“'='“' Q Hmedaia
= :Ĺ
s
=
Arkusz Indeksy wlašciwnśtl
Ut'.n.r:`n'I malcra Imiefi nanyeƒusufi danym' malina Idamnla púł, rekardńw ł tabeii
E
Relacje Iainnatcl nhiettu Relacje
afueicly prngzra. IE] ii
` Isalasla
-
_,Ę
íypdanych
_ _ __ _
Unia
__;autanumaniwania I
H
= Włflidwnšd
..
__ Ż
_
'i
ll
Ogólne
fifi"_Í."1_l=›r_aiåĹa_ __`_lĹüšii
- -_f¬_'“'ë±1@'!'f~'±_1¬'!'_'a!t'='f¬i-';i_
= =F=s!'"_'t _ __ 5!n_ssIaa'±'sn-_=
....-; _
:Pati
Wg.-,«,s„_i= nn±„ ' ` ""`
l›'.;:_a-'if
¦Ti¦ç|i_inlfeI_I|_Qgr¿tr|¿__ „
|
l
_
_
_
_
Haaiirapnia ma±emI=eł'mał:s¦1nalnieE_4znaŁL-
aaaaacnaaz. Hatana F1. aha Łmfitafnemacnatemasnazwnñi.
§'.Rys. 21151. Ülcnu prnjelctu umüżiiwiaiące wybór naawi typów kulumn tabeli
Üicreślajac typ danych pc:-la, mamy da wyboru typy przedstawiane sa pomocą ilustracji.
eicst Tekst Huta Licaba
_ Datüƒfiadaina Waluta Autunumeruwanie TE|ll:ƒh|iE
Ęllałeltt ÜLE _ Hipefiacae
Eałącanik Dblimreninwy
ZIIÜ. Wybór typu danych lculuniny aa pomocą raandianegn menu
i _'Iypy danych dla prngramu Access 201D arnúwiuna w rnsdaiale „Typy danych". Enlejną istotną apcją uferawaną przez interfejs projektu są Właściwości pula. Dla kastypu pnia (nutka, liczba, tekst] będą ufenawane inne własciwuśiai, które maaeiżny niaĆ. Uniualiwiają ane twnraenie indeksów, relacji kluczy itd. _ lepiej przedstawić spasúb twaraenia tabeli, pnsłużyniy się przyldadeni tabeli (relaŁfttirei każdy atrybut (kalumna) iest íllnega typu. Następnie laalejnn nmúwirny usta-sacaegółnwe dotyczące pól tabeli 'wybranych typów:
i
'T35' I-L1-
BAEY [J'.firl'¬¬`f'Cll l *i"t`5`TEl"f`l`t' EAĘ [Ŝ+.~*'.l""l`i"l'.Íli
lrlulfi-|¦
Autonumarouranie
Hototiu wiek fiodzIna__zatmdnieo||
Hlflil
11
Littba
_nitaƒfiodzim
_“"'_"fi"
aa: Huwlslfla
ruin: T_'l:Il5I
I'-'|a_r|ueo
razfnia
Ęa|ns__vh:ieo_roarn_innnaI
ühielrt 'DLE
Adrns___5t|'orty_w1ww
Hlplrlfqctł
Il¦l]_ĘĽ'll
_IIÍĘĘIHÍII
Itnrrtalāt
'flhlłczln
lły'-. 2Í"'2l l“'lai:Wy kolumn i przykładowo dobrane nalwy typów danych przecb wlcolurrtnach
Zazznaczając wybrana nazwę pola w oknie Właściwości pola, otrzyniujeniy nioni rnod llcacjl roznuaru pola, rnaslci wprowadzania. nakładania ograniczeń w postaci katowoścl nałożntlta indeksu. Właściwości |::-ola dają również możliwośc ustalenia, dozwolone są wartości puste HULL (ograniczenie SQL- HÜT HLTLL CÜH5'I'Rä.IE|'I'j.
IWŸĘ
'ritizgłrflar pnia ' iřorm-at
§."!55 I
lailsafizłatßififlflflfi'
Ĺ
_ ,liffül
-
_ "||'i||'a=1tošt'_|:Ig|_[|_'|i.ln.r|
;
Lłfteguła spf. pgprawnošn:
iislfifrsßa 'aa|=.fia'a-1¿_ _ "'fornaaafl=______ _ _ _ Ę_l"|_'= išstssra._@tł_›_,'āss›saIao: _ _.=Ias
llfiflłłißfiflfl !lFii|l'PF.Ê
l='_|`_`_'lEÊ'ÊÍE
_.5_li!1F__l5.F3 !4f'i1!.ll.lE1!=l!5!!fi'i
_
'HH
Tlyb zdania edytora IHĘ “Braiş [Tagi int_eIlgen'tI1e
_ _
Iłvs I? 22 Okno szczegółowych ustawien ¦w tym ograniczeńj kolumny
Właściwości pola w MS Access Dla typu Autonumerowaníe niarny następujące ogólne właściwości pola: Rozmiar pola
Nowe wartosci
L Liczba całlt. długa
_
Przyrostowo
Format
Tyan
iàifi.-Ĺ~i‹Í.a,LLłÍz.}Íé§'""`
" "Í tanía .Ę-.|„p|aia±aĘ~}j
Tagi inteligentne wyrównanie tekstu Rys E13 Ustaw1en1a właściwości pola
I Dgolne
"
I'-i`l`Fil'l~. l L.ili."i'. B±'t}"t l."."".l"¬2`t”{ĹÍi'! "i'¦." l"lt=ÜiÊFi."'i. i'*~'lil'" _ii1It_`.li{_`J5ÜF`l` r"'.'i_.`[Íl¿.55
1. Rozmiar pola, w którym mozemy wybrać wartości: I liczba całkowita długa.
r- identyfikator replikacji (w czasie replikacji bazy danych zapobiega przypisywaniu rekordom tej samej wartości klucza podstawowegoj.
2. Iiiowe wartości I przyrostowo - nowe wartości wstawiane będą automatycznie kolejno 1. Z. 3 itd., I losowo ¬ wartości wstawiane bedą losowo.
3. Format - precyzuje rodzaj danych, które będą przechowywane: waluta P LN, standardo wy, waluta w EURÜ, standardowy, liczba ogólna. 4. Irtdeksowanie - bez dnplikatów - pozwala na nałozenie unikatowego indeksu na pola kolumny.
Włmciwości pola zalezą od jego typu. Dla Fintonnmerowania nie jest określana właści-wość maska wprowadzania, która jest szablonem, wyrazonym wyświetlanyni zestawem Ĺznaków edycji. Znaki te ułatwiają wprowadzenie poprawnych. zgodnych z założeniami wartości pola. Nakłada ograniczenia na wprowadzane dane. jest stosowana wszędzie tam. gdzie zalezy
aby wymusić wprowadzenie poprawnego formatu danych. Pozwala to zastosować konstrukcje wpisu, np. nurnery telefonów mogą być wpisywane w rózny sposób: SÜG5113-123, D5ÜÜl.?.3123, Ü5-GDI-231-23 itp. Zapytanie zastosowane do wpisania danych w rózformacie moze generować biedne dlatego uzywa się masek wprowadzania.
I
jlçłńre pozwalają wymuszać reguły integralności. Klikając po prawej stronie maski wprowadzania, uniciiamiamy kreator, który pomaga zdeiiniowanin interesujących nas reguł dla pól wybranej kolumny. ł.'¦.'I¶filnl
.155
"F
I|"\"""H_ wntswlflflwl I. _ ,wolni '¦'=.'r'r:'H"_i_ _
_ _
'irlrst requły rur. pop¿r_gn__._
__ .¬
..í....._....._.._._._.._.._.__._.
lili'-luri-Ho s|n'u||n?&'ü|Il# rb ĘHĘ-l'fl1|'.\|~h'|y':Ii-I -Il¦'rl|ihtr1'\'.;Ü|l'l:rulrr|'hr'Irllfil,\n'|I±łiü¦F'i'|lI$ ll_ł'r|¦l'fi'nflfi;
'ilr|fifl'r||':li¦
'|Í'|'-u-"IaIrlo'|rT' `
E51 ~s'|-'is
Ham' PIP'
511'-'IHD .H-'il
ü
'Å
oudlntlqo
HI"
"
ülzatlíl
. _łäłifiił
_
i.".7.2-1. Ustawienie maski wprowadzenia nym polem jest Wartość domyślna ustawiana w P r TYPadku, Ê dl' WP isu`em l Y n P' jednego miasta 1 kazda osoba będzie miała ten sam kod pocztowy Mozna wpisac kod który pojawiać się będzie domyślnie po dodaniu nowego rekordu. to proces wprowadzania danych. nmozliwiając jednak nio-dyfikacje w nieliczch, gdy kod będzie inny niz domyślnie przyjęty.
¦ 5
.-
188 l
il
li/`a.7.`t" "l"`J;'\i*lY(ÍH l Ei`t'.':i`l`lii\flY BAÍŁ [T'Al"'¬l`i"(`Ill
I I
|' .'
I
Kolejnymi polami są: Reguła spr. poprawności oraz Tekst reguły spr. poprawności. Reguła sprawdzania poprawności jest dzi_ałaniem wykonywanym na polu tabeli w celu sprawdzenia, czy to działanie jest poprawne (np. reguła wetyfikująca poprawność PESEL za pomocą sumy kontrolnej lub poprawność numeru karty kredytowej). Tekst reguły s p. poprawności zawiera wiadomość, która pojawi się w momencie, gdy reguła nie zostanie spelniona (np. rrtozetrty urnieścić napis „Błędny numer PESEL”), a osoba wypełniające bazę zostanie poinformowana o pomyłce. Pozostałe reguły pola programu Access to: i
"
""` `:`_` " `
_l.>¦!a|'tość domyślrta
`
Reguła spr. poprawności Tekst reguły spr. poprawności
_ Zerowa dł. dozwolona 1
i1
i 1 .' F J | Í
'¦ I' J l
¦ř lricleksowanie 'I
|
.
ş
.
_-..±_-_
Kompresja Unicode
i-±_í--1.-___í
_
i Tryb IME
*__T_*f:›f'=_' =_=ir_'iii_ifiriafi _'ME __ _ l Tagi inteligentne Wyrównanie tekstu
¬_.-nt|¬.-\'n -u.t\_f¬-
I r | f r I
Iłys. 27.15. Właściwości pola programu Access
Wymagane - opcja, którą mozemy ustawić w trybie TAK lub HIE. jeśli ustawimy TAK, wowczas zeby dodać nowy relcord, pole kolumny będzie musiało zawierać wartość. P1'Zy+ kładem moze być baza danych dla instytucji, lctóra wymaga, aby pracownicy podali numerPESEL. Ustawienie opcji Wymagane w tryb TAK powoduje, ze nie mozna do bazy danytll
dopisać pracownika bez numeru PESEL. Baza danych. jeśli ustawimy odpowiednio maskę, będzie miała mozliwość sprawdzenia reguł poprawności numeru PESEL, np. sprawdzi, czy zgadza się z płcią i. datą urodzenia. Niestety nie ma mozliwości skontrolowania. czy numeif faktycznie odpowiada danej osobie. Za to odpowiedzialna jest juz osoba wprowadzająca dane.Moze zaistnieć sytuacja. gdy nie tylko chcemy Wymusić wprowadzanie danych o odpoå wiednim forrriacie, lecz takze jesteśmy zobowiązani zadbać o to, by dane zawęzać do ściśle l
określonego wyboru, np. kolumna przechowuje wartości dla pola Tytuł naukowy.
' 'Ł __ _ 1' łłi..l.l_Fi:??='.'?lil(fÍliś!Ffi_.i_
na ulrowy _ _
5 Nazwisko
TYP f._łś"_afślt __
_
__ _
,ÅUt'='"'UmEfÜW'3"ÍE
i'Tekst _ƒrekst 'Tekst
Irys. .`ł?..`Ło. Ustawienie ograniczeń wprowadzania da nych Zgodnie z prawem obowiązującym w Polsce mamy: tytuł riaulcowy, stopnie naukowśi i tytuły zawodowe. r' Zgodnie z powyższym - tytuł i stopień naukowy to profesor, doktor. Tytułami zawodijif Wymi są: magister, inzynier, technik, lekarz. Musimy więc na osobie wprowadzającej da-Ha:
Efl l"t|__'HĹ`l`l_.'l¬l'”a lj_~"t?"| _Å
-1-_I
|J.f"tl*~l"r"t_.|-l W l*E'|ŸJ"¦l]l¬l.'”l.!'~.'llĹ" l'yIltĹÍFtt'_"l':›I_ll-"_|` ."'t'|Ŭ.ĽŸ_l1"¿¿-5
íi
-
im
Å-.
-_
,
í1 J
wymusic, aby nie mogla wprowadzic innych wartości niz: ;prof _ _ dn brak. Taką mozliwość daje nam Kreator odnośników, ktory wybieramy z pola określającego typ danych dla kolum ny_ ttreator odnośników ma możliwość pobierania danych z innej tabeli lub lcwerendy_ Dla naszego przykładu zdecydujemy sie wpisac właściwości recznie: Tr=¬~fl_'w-H'=='v~"›'
ígłw
-"“"'
T|!ł¦:F.'
'"“"'*°
__
_l____._:í
_
_ _
turnus'
Ľ:-:I
'
ßmo w fiämr
Dltlğod
l
Ĺ';¬'Í,„„ mm'
j3,c;aaape=o±oeaanp=u=›se-zosszneşoaesuzo-to-a-of
Totofnoe ĘIl_:|=|'eIttc¦|'tE
,h,q__,,
HlÊ
gfltcqilhaćaądunpzemmfiwrhfi ß
ltys_1?_2T"_ Ustawienia Iśreatora odnośnil-:ow
Dzięki temu mamy mozliwość własnorecznego wpisania wartości, które pojawią sie w polu wyboru: tEhl|"e1n|l'h|itlu1ająh1IEi|±Iool'!IrtiieIm`lI¦it '|¦|ti'llii:al' 't|'|':|'uI|¦a:I±lczIzql=i_|1n.l:±|5|~e11qqhy‹E
1_n'hnn|1e|'mfi|:ie,or1ant|¦1'±|\'¦htul'toidn|ma|±rj_zlulaúe|t.
lfirdwhfl=fl±aa='uioii.*1=ln1r.'ni=irn'=fian1aE1=t_n="ah='nśi Llcllnllfi-ll"|¦
I
I;
Hhnsiàwüflslfi
[T_
_
' 1113. 'Wprowadzenie wartości dla pol odnośnika
Liczbę kolumn zdefiniowaliśmy na 1, poniewaz wieksza ich liczba w tym wypadku Ĺjestmamonawsntrem zasobów. Umieściliśmy rownież trzy wartości: prof _ _ dr, bz'.ak_ Í*ü'zatwierdze11iu zrnian mozemy sprawdzic efekt naszych działań w zakładce Eldnośnilc Działame takiego ustawienia mozna sprawdzić, przechodząc do widoku - widok arkudanych_ W polu Tytuł naukowy' pojawi sie pole wylżnoru w postaci rozwijanej listy Mazywanej polem kombi.
=
5-
Ê'=
_naultc
__-_
tN=='¬-wl .--~›-
htazwíalto '
_
'
¬'fIüfi_Ł-oby-dodać -
,.-|-4,_-_|-|.-.Ŝ_;|_'.-'.'__",-_- ` .
'
-If.
'_';
, _--"'.'.'
|
_--_ L-'::_ r:_--:
- ¬'.1|'_l'_'_".'=l1"|".-_"ł-' '_ -.l.'¬|.` _'l; -.--
-"'
_ +
._
.
` _Z121 Ügraniczenia wprowadzania danych utworzone za pomocą kreatora odnośnilta Lista ta tullożliwia osobie wprowadzającej wprowadzanie danych przez wylltor wartości.
jąc prawdopodobieństwo wystąpienia błędów [przynajmniej literowekj i nadając jednolitą forme. Ponadto mozna określi-:E ograniczenia edycji listy lub tm1ieszcza~ -clopisywania. modyfikowania wcześniej ustalonych wartości.
B_'fit.E"t' D'.¿"tl"~i`fĹĹH I 5'“t"5TEl"«'l"|' E112 [1't"=tl"'-i"t'Cl-I _
__
an
I
ííl___*.___¬_ tltrteeteatu 'F'-'ef I'-MH' _
„żfadtu w|'u"fltt
. _-_I-nl!
_'pro_t'.';'ur;'hnt=*
.Haha lttlmtt ttflntśtvlti W-""'f' tw.I.'n"r' .jtI_'z_It't.r~t.soattLttr
1 .Htr _;ł_-Bat _ śfi .E-Hm ._ _Tal ."E"_ _-t'It=_ .rm 11+
.üo'=t"a=.=.ś¬tIt=t'-r. t1t'_'ttttt.=_s›r'_'rt~stst_
'eotmztytttowntoto
rue
Rys- jłÍ"'.3'tII_ łylozliwość wprowadzenia dodatkowych więzdw integralności
_'_='='='_ „.›=›'= _ s e. 'H
I
iüłflřƒflkator '|"ytuł__t1in.|łtot|ry
-ā.\!tI't|i'tllt|~¦Irt"II¦t'
_."l*i'!.lĹl" ` Tekst ttlltllś
I
[
onom
_
Ĺřfltflfl t
. .. __ . .
.
Í'|Í}'I¦|.l'I
¦
" _
'te Ęt Rys. 23.31. Ustalenie reguł sprawdzania poprawności
Ľtodatkowo, dla kazdego typu pola mozemy zdefiniować reguły walidacji jpopraye ności). jeśli Ĺtiformacja wprowadzane do pola nie będzie odpowiadała zdefini
przez nas regułom sprawdzania poprawności. wowczas wyświetlony zostanie umieszczony w opcji Tekst reguły spf. poprawności. Aby podać przykład, wyo sobie. że tworzymy bazę danych dla firmy. które powstała w 1999 rol-ru. jak 1
nikt nie mogł przed datą powstania firmy podpisać umowy o pracę. zatem nprowadzf nie wartości mniejszej niz 1999 jest błędne. Nasze reguły walidacji ustawimy tal'-:_ abyzij' kazdym razetn, gdy wprowadzona wartość będzie niniejsza niz 1999, program kotntlttłł
kował to informacją „Błędne data umowy”. Sprawdśmy zatem, jak działa to w pra
'me
d"=`-lt'="=-ete'.t.'s!e'r l'lazw_1_sílto
'I'I1_'i'Ż
I
1-
_ _
__
_t-w - ¬
-_ ._- m
-1
I
I
I
nqútne ;Fonnlt
_
;HIM-I
.
Êe'e±u_=t=tekw.-
'-
fwaeettenfirihtł _ _. Lflletttlsat-.nfietlvlfl-=›t~'-'_ . =.=.'-t!'H..... Ltrśttrzazztertaeewaeele Rys. ł`J'_3.t_ Wprowadzenie wa rnnku sprawdzania poprawności
`
___
' _ ¬,
s'rst'k't't..'tt.-t sara' ti.-sur-'tir-t w ttsorzt-:.›tt~.tte |ut‹._:eosr_›rr _-¬.tźt_:rss
jak ilustruje rys. 2132. regułę sprawdzania poprawności zapisaliśmy jako: _'='=1999. poniewaz osoba mogła być zatrudniona w chwili powstania firmy - stąd znak rćrwności_ Po-
rlfl
|
nizej w polu Tekst reguły spr_ poprawności umieszczamy tekst „Błędna data umowyl”. Sprawdzmy. jak to działa. Klikamy: 'Widok arkusza danych.
tt-ww " Ĺilā-I Kopiuj were]
tttritsotr |
-
'I'
F
-
!
lflillltli-Iflliltü-|¦II|'ty'Ell kw. 25233. Przejście do widoku arkusza
Prdbujemy wpisać do ta beli datę 1993. sprawdzając. czy istotnie reguły poprawności tlrymuszą na nas zastosowanie innej daty. Program powinien poinformować nas o tym zapomocą okna dialogowego i zablokować mozliwość uzupełniania - dodania kolejnego rekordu bez wprowadzenia wartości prawidłowej -lub niewpisania zadnej daty.
If 1134. Komunikat błędu przy probie wprowadzenia wartości sprzecznej z ograniczeniami i dla kolumny
Dzieje się tak. poniewaz wartość pola wymagane znajdującego się ponizej reguł pości ustawiona jest na TAK.
Tekst reguły spr. poprawności
I Błędne data urnowyl
wym agane
j Tak
|
1135. Ustalenie tekstu. ktory ma zostać wyświetlony na wypadek błędu .Hovmścią w wydaniu Access 2919 jest typ atrybutu - pole Üb|iczeniowy_ Możemy w 'lasposob. za pomocą Konstruktora wyrażeń. wyliczać wartości jednej kolurnny na pod-
" wartości pozostałych kolumn (tys. .?.'l'.3t5}. prostym przykładem będzie stworzenie kolmnny zawierającej zestawione dane h koltunn 'I'y'tuł_na.uJcony'. Imię. Nazwisko. W polu opcji Wyrażenie H'
my konstruktor. dzięki któremu stworzymy wyrażenie: [Tytuł_nau]cow_'¿'] E [Imię] E " " E [1'1la.zHisko]. mm
m
Å
wm
_i_L_m__
|'| 'It
..
-
Ejf
.5I'
5: I-
E
'-"_l-192; __
snzi' osnrctt 1 srs't'|¿t-_-tr ttrtz t_:'s.nrcH l.-_
__
imię __j Na zwisko Hok_zatrudnien'ia rTytuil_tmte_nazwtsko
Tekst Tekst _ Liczba _ Dbltctenlowy _ Tekst _ Nota Łlczha
___
: " _
_
_ oataƒsortztrta
Rys. E136. wybor typu obliczeniowego
hl..
_
I' ' '
_
.
._-_-I.
_ -_
_.¿-._.-
-
_-.-_ _- -
_¬_-:"'""¦_
-
' _
“hl
:ru|.1~.'.-klas
r|-na
.fr-=='=_1-1"'›'==I'~'-'11"
_
¦t'rtatl_n|Lrl':oth1'_|=1i|_=|tz\r±tt_12j_t=r|nI|:'v1_____ÍE
_
i'zzłirłrirnfir '='*"*"*'"*"'
`
'iI'l'I'lh'lI1'il.l1'łI5IEH"iI1'Í=H'=`¦ll|
"|.H| __ ___ __
l
I
`
..
__ Í"
II
- '
í
H "Im" l
_ _ _ _ _._--_____.tmest|at'r-_
_ ._ .___
________
__
_ttrt'."_'-'wet-rt.=t"'_'ttl"_it_e:'t'ttur'e'1'tst Tfiü'
|"!|.'f_F'l_
'
m'h-i'|'|'lH
*"'" "
|I¦'l'rta'I_nl'l"a'Ir
:Ett'|'_t't'rt'1¦='r'_trr___ _ _ _
__
¦-"'-"|'¦|'|"'1"rtI'|-|l'n'|'lt'I':I=.|
_
ilu; llfhflllin
|jttstr,.rno±'-'|-
ĘI'‹||'ń|l|
lłys_ E'.T".3Í"_ Ükno Konstruktora wyrażeń
Taki zapis spowoduje stworzenie kolejnej kolumny. w ktorej wartość będzie niem trzech poprzednich {'I'1rtuł_na.u]cotrr_5r. Imię. Ha.z1'rislcoj_ Przedstawia to sza ilustracja:
ldentyfilwtt " |Tytut_naut_tc_-j
_
lşw-
Imie
-| Nazw-tako -|Itok_za't|1_±¿dr
ata-
-Nowak
'l_?yt=pt__t
saw-dr-taafiaaflf
Rys. 2'J".3E_ Połączenie zawartości kolumn za pomocą wyrażenia
_ _ . '
Dczywiście prezentowany przyklad jest bardzo prosty. Na etapie projektowania bazy nych możemy tym sposobem osiągnąć atrybuty. ktore będą wyliczały daty urodzenia z meru PESEL lub inne interesujące nas wartości.
Klucz podstawowy _ z'
Podobnie jak w poprzednio poznanych SZBD PostgreSQL i MySQL. tak samo w mie Microsoft Access. zanim stworzymy związki (relacje) pomiędzy tabelami. tu określić kolunmę jattybutj. ktora będzie w unikatowy ßsob identyfikować każdy tabeli, Dla każdego kolejnego wiersza wartości tej koltunny będą inne i nie bę
i
powtotzyć. W wypadku naszej przykładowej tabeli z wykładowcami najłatwiej rzyć dodatkowy atrybut i jako typ wybrać Autonurnerowanie Zapewni to a nadanie niepowtarzalnego ntmieru dla każdego kolejnego wiersza jkrotkij. W Microsoft Access ZDIÜ wystarczy. że w projekcie tabeli umieścimy kursor w nazwie
koltunny. ktorą chcemy uczynić kluczem. i z menu kontekstowego tprawy klawisz ____
_..'.._m
_
_
.-m__
m--
.-_-.
_._
_
_
__
_
f1i`l`RL'l'Ĺ`l'Ll¬l.~“t ll.f-'tE"r |Ĺ`t.-'kl'¬`t"¬1.`_`l~i l'l"'r` lilifilifilłdtltfllí lt-'ll'LÍlii_`tŬÍ1'Ę`tl-"I r*tCCl7.55
.HB
wybierzemy opcję: Klucz podstawowy. Po lewej stronie identyfikatora atrybutu [nazwy kolumny) powinna pojawić się ikonka klucza. co oznacza. że od tej pory wybrana kolumna jest kluczem głównym tabeli.
li'
eat
.auron_|_r_rgn_et'ou‹anr|r;
3Ty'l:ut_nauIrowy
J' Í
sa H Ipogsuwonyl
Rys. 2139. Wyznaczenie klucza podstawowego
l'-la etapie pracy nad tabelami bazy danych. zwłaszcza w wypadku gdy posiadamy tabele tyypełnione danymi. może zajść ponzeba wymiany kilkuset rekordow. Możemy dostać zatlauie polegające na odnalezieniu wszystkich pracownikow ż tytułem doktora. W 'widoku arkusza danych znajduje się pasek narzędzi głownych. ktory umożliwia wykonanie czynirości polegających na odnajdywaniu. modyfikacji i usuwaniu rekordow. tak jak w przystosowania ldauztll SQL.
.access nie wymaga znajomości strukturalnego języka zapytan. zamiast tego oferuje gfimędzia w formie pmyciskow: lF`"""""` il trntrjaro
_'
Uauntottownnrej
gsm.-rr;-= ' .r
E* W” I 5"” äzrptrr fi'|='irown|o
_
:t'.tjena'w'n| firßrotfi
ŁI. H user' " Ewie-tea "
:swieta _ufu|.'
I
ñ E5' f""""l _ _ ll' ereetuż us :nut H' Itflnlrz "
canon ts.'.r:¦r'ga-tt , I I E
' _11 =
'Ł' ' -F
Šł
Nt± zil1rlr|"|¦1rl _p'rnf.' l
1 dr __.a,_______
_Í.-_ ,
lin
Nowak
.`!'tItItt dr Jan Nowak
____
9 brali:
Mariusz
Marżietutcz
rr prof.
unread.
rysjseorokse
5 prof.
Mariusz Nla|'Êt.ts.r 1.ad'ru'tga
Wlśnlewsltt Bąk Ľhalas
adr 9 dr
lilarlusz
Nowak
Eno-t¬rfla
zttutt dr lrurrtosr umvss
ltowalslta
HI' prof. 11 prof. lłbralt 15'-prof.
Elżbieta
Fuwlowslur
Ewa
wssaear
Nowalr t'to'watstrt
Ę clt ttryshrnu ltc|=wal'slt.-tt Ęflflll |¦'l'|:rř. Elżbieta Pewluws EDIII prof. Ewa Nowak
r-iu:
ttrys-t'Ian
ltowslskl
1999 prof. ttrysnan ttowatstri
titłdrut
Nowak
1 1 |'|-||'o1'.r
taaa'-ra' niusa kwas
fiź1'||'ll'l-|
'H"fl"|||'|¦|¬tl||.'I|' I'
JHIHIHÜ 1'l'l'|'l'9' D'1¬-I.-'ru-Í I'.|"u||'I||r|'|n'¦
'strat If' dr
_'|tD1tI|' brak Ir'lartus.' Marktewt
pror_.ws1=resr yisjsa 9999- prof. Mariusz wtśntew lat'-9-1-ltlariusz-.E¬ąk 1559 dr Jadwiga Ehalas
1999 lhtrll't1tI'|to'j›c'tet:I1 Itowelst'
E49. Filtrowanie zawartości tabeli
'Powyższa ilustracja przedstawia przykładowa tabelę programu .access wypełnioną dabrażmy sobie. że mamy kilka tysięcy wierszy i chcemy znależć wszystkich z tytułem profesora. Możemy skorzystać z narzędzi. umieszczając kursor w polu kolum wartość chcemy znależć. następnie wybieramy opcję Zaznaczenie. a program
'¬
| j ”
:nie wyświetla proponowane możliwości wyszukiwania dla zaznaczonego pola wypadku zaznaczonym polem jest prof _ j.
“ |
'wane przez program opcje to: Rowrra się profi. Nie równa się prołl. Zawiera Nie zawiera prof. Gdy wybierzemy pierwszą opcję. otzzymaniy wynik przedstawiony
_ ”
2141.
I
¦
|
. l
'Í'
ti 194 j „
t".}Í`t' |`I.*'rl*'."'t`t".'.'-l l `~«`r"_~i`il7.l'-'i`"r` lir"'r1-“' |.tr".l¬~"'|'[Íͦ'l
|"' _'I¬ _
_ftoinitt-ro _
__ I
Ílr l'1-flloiatn
F'
ml:
'El' Z|.tnl|::¦|'ue '
"
_ fi'-u'l|'|'
"!_'J.t.s.n'|'a'nro'.'|':ne -
I
.fihpttr '¶'Ptsownt|
_
..
_
-Z
j__..|._t=n"- s'u'tr_-'.'.a'r-rr .__
surtowuue I rdtnrrnntl F_íż_=-:-1
' | | I |
mm..-
iw-'_..._"
____
o-ur..-.ser
_
m -
ß
"""¬"~'|' "gn ¬- H LI'|.u1"| + E`|.'.|'lęr_'|'_| ' ` ftrknrfir
í
íímufl may.-'
Ľ-_“HH Ełmifl
t'5,',,z..|¬1rr' |'I'I" Frzrjdf do '
znasz . I
_
_ - ttlfo-jcledt
11 prof-
Mariusz
Włśnlewtll
3
lu prof.
Elzlatetl
Paudorrsh
_I
11 prof.
Lwa
Nowak
E3 pol.
Ilry5l_'iI|'|
Iowa!-ski
_
' '
E I 11
_Ł -
-__
_ ' I
n.".|
if-t-t-..'|-¬--'-'I-IIlt'¶'i--'-'-_?.i'-fl±'-E\'¿í '
_
ztttlfi prof. wułde-dt 'uuojoer
wojdedtowsk
_
`
5.-.jj Ilhtlliil c|c|'|'|rot'I|l
" -_r-aurr -'1sn±__a±s=reruere_-
' ' ` ar '_-åfl -I proi.
_
z s urrtqr
.'1."¦I¦"9 prol. Mariusz 'Htsntew ..'t'|¦|'|¦tIJ' prof. Htttteta Powtows żüttfl' pr _
`
of Ewa N-owak 1999 prof. lirylttanttou.-.l1s.1e
_ _ '
_
l|"'l'¦""'"|'l
liy:-;_ H.-tt. Wynik Ftltrowania tabeli
wynik podobny jest do działania instrukcji: SELECT * FRDH wykładowcy t'I'HEt"tE '_t'¬¿rtuł__naukowy = "p:|:o:E_" Filtrowanie danych w tabeli w pozostałych kolumnach wykonujemy analogicz przedstawionego przykładu.
Sortowanie tabeli Microsoft access umozliwb rownież wprowadzanie filtniw sortującycit dane. kt .ablt' P osortować dane w obrębie kolumny. wystarczy kliknąć identyfikator W i wybrać rodzaj sortowania (rosnąco - malejącoj. Na przykładzie przedstaunou sunku sortowanie dotyczy kolumny tifaenrrioko. Üpcja Przetącz filtr powoduje przejście do stanu poprzedzającego Filtrowanie tresc
-1
`
_l sortuj na n. ns z H st-pro, su z ss r. 'EE
`1-""-,|'„-_"_-"¦ fl'lt I I' c'lul|'.f'|'|-' l'I.'.!¬r.'-'l' E' [_l|'t1'y !E!tt._'|l¦l.|
1'
El
E tv'-nto E Bot
H ctrelar Kowalska
H kowilakt 'lt-'lurkiewtct
'
Nowak E f¦"r|".|."l'uu"'it|'l E 't|"t't-.into-lrttrt -I iw
Z
'=-_-'.tronI' .l.|_;:lllll:==' .'.-t:| 'I . _ I -'ll -
I-._ __¦.¦_„r'-_¬-ur.-'¬.-_-_'|.l_'l¦'
-.T-_:-¬' _-_-_.¿.r.||-
I'._
Ĺ: j¦'kfi'.l.'_' .
"| | _.. _I:¦'.-.I ' '
_.¦ '.r'. ll..:L '.'|.-...'..i-'_ Ę:._ I ,
'
Rys. ET.-iż. Sortowanie kolumny
Modyfikacja zawartości tabeli W programie .access uzupełnianie tabeli treścią i modyfikacja danych mogą być wane za pomocą podwójnego ldiknięcia kursorem w nowej jlub modyl`1kowa1tt__ i uzupełnieniem jej podobnie jak ma to miejsce podczas wprowadzania dauychw kalkulacyjnym.
1'i`l`l'll_.l|'=LTl..'F'.±". |=1F'tͱ'."r' lĹ|'.¿'t:`“'l"|`l'.`.l-l"J'l"`|-'l¬¦|í_.1'Ľ}l'lf"'.!".'1lF ="'f'l1í.ÍEł'!1'.*'Š-'t_`.Il¦`l` AĹĹCEŻŠ5
W"=~'l1_ lultchsl
-l'¦n'we|s1r.l
1559 prół. Hldul l'I:|:|'|.||'||sh|
hlódyfiltacja zawsrtóści tabeli Ftccess
przeclstawiónjrnt na ilustracji imię Jan mc-dyfilçówane jest na inne reltórdów równiez przeprowadzane jest pódóbnie. Urnieszczamy lrursór. zareltard, iz menu pódręcznegu wybieramy ópcję Usuń reltórd.
fi|'|l'l!|`&I
_ ' f:_. . "¬. Za
wnltiech
vmjele-d|e_tuslt
mna |¦=n:t'.wu_|t:||s:l1 wujner
Mlflutlfit
Wlśnlewskl
11115 prnf. Manlłnf '||f|||'H-n|'i¦|'|'||
Iuuriuat Jaclwlgs
E-alt Cłulss
HH hlakhunusz Bqlr. 1'3'stI |±.' uda-lg: Łhalar.
l|l”ElrILIn l'Ľr|||'5t1|'rLa
l'§I1¦||'lm$t 'I¦¦'::|w'ilsI':a
IĽIII' :I1' hlarlusz-Hntrralt 2'|¦|'|Il= clr I'[t"||".it'||1'|'I liüwllāh
Eltłelelza'
Faavlmunha
Iúflü met. Elthdfla Fa'wh:=n's
Usuwanie rel-türdu prngramu Access
itattnąć reltórd tabeli, rnóżenty sie również pósłużyć górnym paskiem menu - zaHarzędzia główne pó zaznaczeniu relcórdu, wybierając opcje Usuń. Êl fietnace
Isznaweriue -
tli.. Hewy
Malejąco
'üísswans tmrsne '
l_l'!.-...'|f'l E'lÍ|l`t5||-'||'ͦfT|'Ę'
'if ma
Ł
I 5u|'n'_|r
M Ęläíamlel
|fiIap|sz 'Ű Pltównii
_
Dtfiwleł
II Przejdz - II1-ąttlí* ,
j
l
sms-:ma tfutre.-mna
'
K
Lł Ífl.'I'_I"|-fil
"'
Uąşuó
IŠ Uilfiiszłuß
naultc ł 'dr
tli
Jan
_
Hnw-El
¬mn:hał_ _
cqqajşau
| '.'
_':'-IL.
c
___
'
_ EĽHII drlan He
_-f.|'.1|a
.Usuwanie relcnrdu za pónincą przycisków menu
ie kwerend ltwerenda związane jest z 'wyrazem query, który tłurnaczytny jaltó zapytanie. liwe' sj ródzajem zapytań paniiętanych przez prógrarn Micrósóft Access. inóze ógraniczać się de jednej tabeli. ale mnie równiez dótyczyć wielu taistniejącynt perniędzy ninii związltótu [nazywanyrn relacjamjj. Untóżliwia ta czynnósci pc-iegającycb nie tylko na wybieraniu infónnacji. lecz takze ua ich wykónywaniu óbliczeń ialf.-lualiza-::ji.
......ii
j
Eaaint przejdzierny dó skórnplilcówanych kwerend. warta na przyltładzie prze¿¬wi¬ czjrć bardza prósly nie-de] kwerendy. Wróćmy dn tabeli zawierającej naultówców -pracewniltów finny. Nasz ptzylelad składa sie z piętnastu relcórdów [15 ósób, gdzie lrelrnrd te 1 wiersz tabeli - ódpnwiacla jednej ósóbiej. Üperówanie na takiej tabeli nie wymaga stósówania kwerend. gdyz aby wybrać ósóby z nazwislcietn Hówak,
195'
trafi-' rr.-¬..~«.=i":"H 1 srs1'rr~.'|i iiaz. |:=.aui't_'li
wystarmy posegregowari nazwiska alfabetycznie, wówczas liczba jest łatwa cowania. jednak oprogramowanie bazodanowe operuje często na tabelach cych zawierać kilka tysiecy nazwisk. Gdy pracujemy nad taką bazą da zajsc potrzeba t¬worzenia zapytań. np. o ubezpieczonych pracownil-tów o pracowników. którym wygasa ważność badań lekarskich. Zapytania zemy' definiowac każdorazowo. gdy zajdzie taka potrzeba. lłozwiązaniern latwiejszym i pozwalającym oszczędzić czas jest zdefiniowanie zapytania cji) pod określoną nazwą i zapamiętania go przez program. Funkcjo oferuje kwerenda. Tworząc kwerendę. marny do wyboru dwie proste opcje zalrłaclłti Tworzenlét .l'|I|rtz.|t'i¦htil'l'|l|"|._||'t'tt
l Tworreou'
Ulnezewncimał
l'||`|:¿¦rlIl-`1hI1a'rIIlr|1i'Ih'
@ca.„ ma ___
- _
"§-g='='l
'=|='
;ge
;aj
..-=
'='==
Tabela Prnjrekl Łlsły' programu
Kreator
taosü ssarsaamt' '|'ql'|||-Lp
Projekt
i!||,'|,||InI |'1.|'Iu
_
l'.`.rrltorlo~r|1'||ll'.Ę
Êlilawlpronr
mmm: it-a.-mocy ; l
I Peli
Flarmulirł
Früleiíl
F"I1'Iljf
_
l
|"n1'|'rl|1|Ll|.l'f.I'
Ej.-:¬'- ł?_-Hi. Eakladka Tworzenie programu Access 'l. Projekt kwerendy QBE
QBE' to jezyk tworzenia instrukcji oparty na graficznym tbrmularzu. Access EÜIÜ umozliwia posługiwanie sie tym jezykiem podczas tworzenia Graficzny interfejs umozliwia tworzenie zapytań SQL przez wybór tabel. wia się w interfejsie. Nastepnie osoba tworzaca kwerendę przeciąga pola z formularza i określa ograniczenia. 2. lireaior kwerend
Kreator kwerend wyświetla kolejne okna z możliwościami wyboru typu dy. Uzytkownik, po sekwencyjnyrn zaznaczeniu kolejnych opcji. tworzy (rys. ł?.4?`j.
Ifrucor
-L*
Pfojlłit
Fc||'1w|.Il|r1:
l|1u'±|1nfi'||
_
Frłzllkl:
"
Pu-:l¦|'
Êr;-rratorrarrrl.-'acer :|H'|""urHa-1
I'|¦||'|'|'u.rl.||':;| 1"o|'1'n1..|||r'.|¦ ä'|'ܦ'¦'¦.l ÍÜ||"¦""-"l|"'f¦I` *
f
ā "-*
F-l'|HI'H¦ F"l'ł1:1II|¦ rIp':||'l:'.|
F-arr-¬|uI¬'‹-'zi'
_*Ż
l'I"|'¦I"I¦lI'-I'¦:|1'I1"li'Li-Iżllr-'|'r-F111'-l¦'fl'-ü'l'
las'rrorad1n|1'sn.ir.|1.1c'¦.~cl1r:'t=rl':aa'|'¦=¦|nan±|¦HI
|
_
,_-__|.a..._
.|...,¬.|-
__
_
I
|
" _|
I1'
' -"¦'uswa==_w-='su'1au
'
-
tormuiarza formularz ÊW'f'¦*1l""'“\"""¦_l'
, lílrtei
ltys. ..`ŁI".‹i}'. lireator kwerend programu Access ĘFBE - technika opracwrana przez linnrj IE-lvl. pizcłsztalcająca gra |it1"ru| konstrukcję zapytania użjftlrownilra w Formtllrletl iricrowanc do bazy danych.
STlii-|l'ĹT|._||1.i-"t Id-.=t.`rI"r` lJ'|"'rl*'i"r"ĽÍH W F'Hf.`I|¦ÍrHr7t"'.-'llF. l'-'llłffl'-!lI_1*l~`r{'l'l""l`.›"ttÍt_.E5¦'i
typów kwerend wyrózniamy: proste,
ltrmoi'-'er wy:-izukujace duplíltaty. wyszuklające niedópasowane dane.
sarną fianlccjonalnośrf ofenrje Projekt kwerendy. który wybierzemy w naszym
m
-5 vera;-of _
Ilys. 2143. Dodawanie tabel źródiowycla dla kwerendy
Pb alttywtawaniu opcji Projekt kwerendy program wyświetli stronę projekttt (rys. 3.43). mamy kilka tabel. bedziemy mieli możliwość zaznaczenia. które z nich będa w projektowanej lcwerendzie. W przypadku ilustrowanyrn za pomoca rysun1?.4E i 2149 mamy jedna tabelę Wykładowcy. Zaznaczajsc Dodaj, informuprogram. ze kwerenda dotyczyć będzie własnie tej tabeli. Atrybuty tabeli. zawartosc ma być zwracana przez kwerende. zaznaczamy w polu Pokaz.
1HÜ'
'
ra'¦.hr""s'-1 U'-|=Il'I"'rH"rr=|'=r"1I=I"*
lrlulrlrl-lin
'H'1=lIl=""'=I' Filii
å |lta¦a¦,_¦ra¦trrrrlrr=la-nl.:
'lt'rrt'rrL|r|rrlr›_ru|r=rr=|s=|rrr llys- 1S'.4';'- Ustalenie parametrów l':werendy mam
*E98
ll-„"tĹr'Ĺ"t' lͦ'Al*¬l”1'Í_`l-I ll'i"r":i`|`l1Í'¬›-'l"t`liAÍ|"'I1'.-"'.l~i"|"¦`Íll ¦'
I'
W polu ltryteria określamy warunek. W naszym wypadku nazwiska mają ne Horralt- Po zapisaniu kwerendy [prawy przycisk myszy - rnenu - opcja Iapiszj pod nazwą p:r:arr:oranir:;,r_nor-r.alc w widoku arkusza dować się będą rekordy spełniające warunki kwerendy, tzn. powstanie złozona z trzech kolumn zaznaczonych w kwerendzie. jej rekordy pracowników o nazwisku Howú wybranych z tabeli Wykładowcy. Pracując na kwerendaclt, nalezy pamiętać, ze widok udostępniany przez dę nie zawsze prezentuje wszystkie kolumny tabeli. które mam w ści. Dlatego usuwając rekord z kwerendy. usuwamy go równiez z lltabeli i utracić dane z kolumn i wierszy, których nie widzimy. w zalezności od kwerendy. Kwerenda jest nowym obiektem w lylicrosoft Access widocznym na lewym J íafledmímwne
E V|'_li|¦|ñ-I¦
l
Twolzenre
Ä 'wytnij
Y łlflornąco
“I -1] lij |'topro_r
_
'-."'- klej
_' ...d
Dane zeumętrzrie
J'h1at:rr_'±ornu|1ow
FilTI'U_|- _,__
Horzectria l:Lttzyt1'.arn-'_|'t'l'|
Ífíamarzenier
lualeiąro
I
-
'fiíaat-uanravranr ' _
y-___,r Uttm tortowoole 'il' Prreia-3 rrrtr
l 'ík
5fll'¦'.'¦H|ll3l'lil¬¦' l |'l|'l.I'|¦r_1.|-'|±1.r¦|iE
Ê unrrsnrrrraraeryrs œ
-
wii'
E
l.,.__-,'.*t'it`_- '
'll|'i;lra'=b.' llibel Hielharlaq
Vfiee* wew" ""=z'=""¬'=s='
ZUUDĹ Mari usa
Nowak
1595! Iwlchal
Nowak
zooo" ewa
Rys. ł?.5'|]'. Przejście do widoku arkusza danych
uowak
¬l
Nazewnictwo kwerencl powinno podlegać pewnym globalnym standardami' pozwolą na łatwą orientację w obiektach programu Access. Nazwy tabel poczynać przedrostkiem tbl (np. tblfiykłudorreyj. a kwerend ;
ars (QuentTaka polityka ma uzasadnienie, gdy ze sporządzonego przez nas proje ktit korzystac inne osoby i łatwiej im będzie odróz nić poszczególne obiekty. kwerend przydziela osobne ikony i umozliwia grupowanie obiektów j bele. osobno kwerenclyj, jednak uzywanie odmiennej konwencji nas tworzonych obiektów nalezy do dobrych praktyk. Po zapisaniu kwerendy uruchamiać ją przez wybranie jej z prawego paska menu:
.Fassa
_ _ _
_
wyrraecwry .'Ľi. -'
'
j
I
_
lejj
__ ._._* `
|:rrt|co'w'nicy_no'r'u'ak
Rys- `.l'."'_5l- Llzycic' kwerendy iq
5TF.l._li'l.TLlli'.A BABY |Ĺl"Al¬~l`r'tÍl-l W l'“F'.lĹJ'lĹil"l.-"l'rl'rłll7_ lyl|'ĽĹltÜStĹlFT All_"Cl:`_'.:`›S
klikrtięcie spowoduje wyświetlenie tabeli o wyniku zgodnym z wanmkay w naszym przykładzie. W tabeli Wykładowcy zostali zaprezentowa~ pracownicy. których noszący nazwisko Nowak. 'u kwerendy ismieje mozliwość jej zmiany lub edycji. .
şl
lriire
_‹_›| rraiwrirtei '
Itlilllan ItJt'.lJ_ lulariusz
Hotrrrzk Howalr
1|I|'|Jo_ Ewa
Nowak
lee: 'eee'
_*.lt._i_ |_|__ -- t- l- ' -_
_' 'lidi-Ś*
__ I' '_\"_'t" ¦
1151. Wynik kwerendy 1
i modyfikacja kwerendy j kwerendzie dokonać zmian, nalezy zaznaczyć ją w lewym menu. zawieobiekty. i wybrać Widok projektu z menu kontekstowego lub górnego poziomego zakładce Narzedzia główne. Przykład przedstawiony na ilustracji to modyfikacja praeownír.'=y'_nowak_
K mam
Wllfil
r'Tor|r|-¦|d|a"r|r tƒ Hala.
§Yä3:::
ł"_¿;,u i'|a|'|1fi'I*l|±'|-'r'tI rur "i" Furtrcr nrtr 1'I:re|'a|l|al|:
i
1'l]'DĽl`E'wa
j
__y¿__ i
Nowak
a-a-s _Zaznaczenie kwerendy w celu modylíkacji i wybór widoku projektu
Êā
×!
ÍEĽIĘEI
Ê-"'I|||'ll-l'I"l'I'llI'!ifl
7' ____________ Í I|'|zú'.ur.|}|r:|' _ tlrlrlrtz |¦1Ie|l|1|± .I'.I:l;1.rll¦|r|¦|'lI1|:y¦|¦'¦|'t|r||hånflfimągqm _ '.'|.'
razrerg
glflttionywnrtzl fifitarirlmkl-H
'[4 """"=1'l""" 'I'|¦|'iUm|"1'
| Í' ttrun toluzhro _ $21l!'d_r'__=
mam--¬ t" _ '.; _ ¿¬ " .'--_¦"
==¬';.
ł 'i
l'lI'|‹'l'|Lr'|'|'ll'='|¦"|w'
llie
Ftlzlrlrhto lt~al_r'!ain.|ü'r-ll=|'|-I-I
_
Dodawanie tabel do kreatora kwerend QBE za pomocą tachniki drag and drop
mo
ji
l'lAÍ"L"”r`ł`.1."'.-`*~i`|"tÍll l h`i`ři`l`l_7_"rl"i" Fl_"'il'Ê ł`}Ai"J"i`llÍl-l
Edycja kwerendy w podanym przykładzie przebiega za pomocą menu i Widok interfejsu QBE przedstawia ponizsza ilustracja Nalezy pamiętać ze umozliwia równiez dodawanie tabel techniką drug ruual drop Eaznaczamy w t a bel ę. którą chcemy umieścić w kwerenrlzie. i trzymając prawy przycisk myszy my ją do zakładki z nazwą kwerendy.
_ ¿ l i
ł 5 Formularze I ' _ Í
j '
Praca w programie Microsoft Access. opisana we wcześniejszych rozdziałach bezpośredniego uzycia tabel. Gdy po ukończeniu projektu bazy danych mamy która przechowuje wszystkie poządane przez nas infonriacje. i zaprojektujemy umozłiwiające dokonywanie wielu skomplikowanych zestawien i obliczen nięcieni. to prace teore tyczni e mogił`b y ś my uznac za '--:koriczone Bardzo rzadko sam projektant bazy danych musi wprowadzać do niej informac l e C ET" ności te c_zaj wykonują inni pracownicy. Baza danych zaprojektowana dla instytutu będzie wypełniona przez naukowców - pracownikow instytutu jak mozemy śleć. ptzyclzielenie wszystkim pełnego dostępu do tabel kwerend 1 ich za skutkować powaznyniikonsekwe ncjami ` '_ P racownicy mogą chcieć modyfikować dy. umieszczając więcej danych w tabeli w sposób który moze naniszyć int danych.
_ '
l l. _ _ ” Ê . ¦! _
'iii'-›--~ ¬___- r _ ie ' ' -r-*eee .-
j j
-Ł
j
=¦'-___-______'-r|'__._-___:
IlH-hi|'¬
.
FF¬L-fifilnłrí
¦-|'l'-¿|II'|I-|-
l'Ii'il'Ill|'u|i-ną
l
H' I
| 1] _...-...._. .,|__________
I
l'. . sti-Iilu'ila' 9*; ~›lg--"_`-. l
'Ê|J""
1.I'l'|"'
,lut '
ÍH
'
| |
_
'-nr
= .
|
'|.-
|'lFl'|
||
..|_|_|-'i
celi-ai'
I
I
l.'|'l" _ Ü'
i
i 'l 'lilrii-i'iI|i|'u'i|._
_
_
In-qr
jpll. Il.¬|l.
:
____
li N31-r,
_
..~_",-'.'..'_ _
Ill"l'l|'-'|'|
_
-_
1-u|.--..|
iii r I-'I-|'i'la'| '|'|'|'|il|ll'| l|l.||"a.....| Ilhlru ||.|ipi|.|.
'|'l'ilI-nr '|'i"|'i'||r-. l.1:l'i-'1"|:| I'Ii'|
jj-ug.
-|
i__ jgtł
Ii Iir
ji
EÜLI Lu ljh I
r '
. Üi'l'l'l'll|'l'| Ilfili' . u 'lllll l|'|l.ńI||||r.i lrlrl'
lu-wi-fu ii
¦lI|Ii.||'I'iil 'linie-I||ii'r l¦'I'l|-I-| l'lrI"'i.||i|ll'|a||' 'll.l.hiHI|'|i|-jfiil lF|'|'|i'||fi'|'¶l"l'-|'l"¦l'ÜIlll"ll||l'1-rr II¦l¦'I'l-'ll'|rrI|ll lu-|'| iiI|llIl.llIl'I'|'llllu ixpln' lin-un.-r.|-Ł .|lih'|¦l'I'|lhhi|.I.l"¦l' 1łI'|i.i|I' li-|r1|.|;1r.ra'r'r 'I'H!-'t|'|||i|r'l'|.|||'l-na
nei
""l:l'I'F"'-
|"|'||u.f lrlallnil il.-.-.-r
""'-"""_'r"' r"":_'_ '--_ .'_E _"l'«"-"'i'reriu -
_
í'l"'fi|"ł|'l'|I|'l.lfl'
'łri
_
_'_
_
_
Í'
--lnu-ii_'4Ê'l'I :_
lij-'s. 1155- 'Widok skomplikowanego interfejsu programu Access i prostego interfejsu | !
j_
łilatiiralną pcilrzebą sta`_ ' stworzenie __ ` interfejsu ' " jnakładkij ktora udostępn je się
nie niezbędne fiinkcje a ukrywała do'-itęp do pozostałych Dodatkowym atuterri
ii' j _ =
" ' __
_
mozliwosc zaprojektowania takie j n akładki by była ona bardzo łatwa w obsłudze. nad poprawiioscią wprowadzanych danych i miała dobrze widoczne przystępme _pmyciski`. 'Ddpowiedzią na taką potrzebę jest forniuiarz Zamiast skomplikowau ejsu prograniu Access (rys. 2155] formularz oferuje mozliwosc zaprojektowaniaEE” w obsłudze okna. w któryni znajdują się pola do wprowadzania ,F wyswietłania i kilka przycisków z tziezbędnjirni fin1kcjan'ii_ Rysunek 2? 55 przedstawia forni rzony do wprowadzania imion. nazwisk i dat umów dla tabeli Wykładowcy
l wcześniej szycłi przykładach-
-Å L
ÍiTl'll.“ łiÍTl_| li A liA.LÍf "|'” l.l'A l'~l"f'lÍ_` l'ł W l' l1`t'lĹli.`. li _"". lyl l l'Í _bl łll |¬l'l"lE.t`il"`ł` A LC E 5 li-
i="'
formularz Microsoft Access ofenije kilka opcji tworzenia formularzy w zakładce Tworzenie: fomiularza. fonriularz. forrriularzy_ iiaszyiri przykładzie posłużymy się lilreatoreni formulamy. który po uriichomieniu mozliwość wyboru tabeli. :h pół dla przykładu wybraliśmy Imię. Hazwieko. Holt_zat:r:ud;niein:i..ei
j Twa
-
nie '
Baneznmetrme
............Ê.:@ r
rrrfolra' F
Fi¬a.|'eli'ta'|'r.|nle
F
nr
'mw
ilozinlerzrzanle
Forriulr
Ê game' l Ê'"'*°"°"““'"' .í.**' Ü “'I.....;.. ......
rorliulurlrorriiiui-rrr laW"ff"łl""""'“"" l"orrh|.il-III
W rldleiiu rlełffl mi
'I
'H'
_
í
_lżldíl
" -_
Z
"'
Ê
Ęiśrir _
_H __-___."|""'¦.ł`5l1'¦ _Hm
iriiepzirriiirarotir-irsrrmrzirrrrrararr nrrerr-itratqrriraailriiiioritoioe-art.
E1-
joe
uuiririo ri'trrł_lIiz.iwr""|IlI=
||¦|ii±_n=I'riiho'i
._
M En'
łl'.5ti. Dkno lśreatora forrnularzy
krokiem wymaganym przez kreator jest określenie typu formularza: l'l
owy.' wyświetla I w polach formularza pojedynczy E ' rekord ,
ny: wyświetla tabelę złozoną z wybranych poprzednich atrybutów danych: układ zblizony do tabelarycznego. any: układ zblizony do kolumnowego. dokonaniu wyboru przechodzimy do kolejnej strony kreatora za pomocą przycisku okna kreatora umożliwiają wybranie nazwy formularza oraz czynności. która
zostać wykonana w kolejnym kroku. Do wyboru mamy: mozliwość dalszycli modyfonnularza jhriodyfikuj projekt forniułarzaj lub uruchomienie formularza w celu . wprowadzania lub modylikacji danych.
j |
'Jill Iiiz1| zł l|'I"ETlfir'| h'lf_|'I|
BAZY DANYCH l SYSTEMY BAZ DAl"ł"'i"CH
_
Í
Š_..1Ã_'l|.'i.'_.nl-'
'-
í
í
í
Rys E5? Wybór żródła dla forinułarza [tabela W kład _
będzie dotyczył
íría ílí
: _
I
{r'i'r':j.'j
“mz
køittmrt
-lp-
l--l
Illlll ll łlł łl l l Il llllllll Íl[ĹĹÍl l łl Ill iill
:mm
if' ___.'l'I' ip'-.r.|.|.i.¦
Illllllllil l lłlfl |-|'|-'l'|.
|
F
filfirnzlliziiirh l ßŰłfll`Ili|'nrr_ ___
lłys ..'t?5¬! Widok układu formularza
lm_'i~_n'i'u'
|
Rys 25' 59 Ustalenie tytułu tbrmułarzai prjlecenie otwarcia .zaraz po utworzeniu
5Tllł_lł'lTtłłśA l`ł-_¿".`?_'_"i" DANYCH W l'l¬l.'fJlĹil¬l."'ił'~'lll: li'iltÍl~iĹͦ'l:HÍ.lf"`f A.lĹCEl'lEi
_'_ . :. I I
-l'Ií'{l' í-_'m
aktualnie edytowanej forrriularzem przebiega za pomocą strzałek dolne2I".ól`_l]. tirticbomionego formularza mamy do dyspozycji: Widok układu [daje ri1odyf`ikacji i równoczestiego podglądu widoku formularza] oraz Widok prozinodyfikować np. do forinularza. stworzyć własne przyciski nawigacyjne. inne modyfikacje. wyświetlając siatkę. która wykorzystywana jest w celu
rozmieszczenia elementów w obrębie projektowanego interfejsuj.
Nowak 1|
1
__
1'llIJ'l|
I
_
_
i'-"j'il_r_a.rrtirir¿|_tirj'rnriaji_
]'||_ _ __
_
_ąş--im
_
rr
:"±"-'I"-I"-I-rIl'-|I"r-'¬i¦lll"'|'.|łÊ'|'If '±"l"l_|-I'II'|'I"i"l|'-r'_ 'I"||..`L-L'- "Ê_.__±.-.
.
_ęíí--í-
¿__
_
__
j_Ł
-._-I--lu-h-zl-_Bri-`Ł.'l'-ífi'-¦||m"|LIl'l
Iakladka z gotowym forrnularzem
l Ż_|-'l-1-'
|'|-l"
i
l'|-|±l'||'|
|-|
i
i
i
lT
_
ll
HFH
Hll'
I
|.í'rí_u | .l I | I I .-
II .| I 4 | | A
Å
I
| I | | I | .-
ii
gr-'az wyra: uiuriu Ffilflfil
_eriiinisu
'Å
1-
I
I
I 1'
_
' ş
'f
ll
" l"
` "li
l-
Ľ
.'J'. __ `_`Jí" _ ..l¦-: IL "l.í`Tíl'_
__
a' .' .' J r r' a
n'l1'I
k"..".`.'.'*;'. .
'~' . -"t*"ŠtiĘ Í” il l" Ÿl ` T l l il- li
'łllybianie okna projektu urriozliwiającego dokonanie mody fikacji forititila rata
anie formularza tabeli Wykładowcy dodamy kolurnnę '1'ytuł_naulcoiry. W tym celu projektu formularza wybieramy przycisk Dodaj istniejące pola. a następnie menu Lista pól techniką drug und drop przeciągamy nad projekt interfejsu for-
pole Tyt:uł_ii.a.i.'dcoi'ry.
-11-
I 1-
Ĺ.r_ 1I1-¦'
-IŁFE
.
I :
__ 4.1' 1 -_.*._¦-
_
sazr oa1-n'r:H I srsruan' z.-'‹.z oaoserl
flduuznilocfilłfiflfl-Hlflnm
Bzrrenflonfizurij' Ilraedril Ilfifs J
ffltooo [Ê moł
'ru
|:j|ÊlEš`
:man ;Š' :___ '_
_
ku.'z.|:
" Ê“""""'W'='fl"'
U-Š Cl '3
lfin-Iejnošł
1`¿f1HÍ=!i
Iouwlm rss Í
| 11;; _
Ffilfł F I dnlirgpne-wijm I
T
lderuşrlestor | =` mm Í; = . 'Ś _ _.Ĺ _ -.'. Tu' ':ř`=`E`
_ P
|"||-!|1'|I||11l||¦|
Ê
¦I
¦
_:El
Fh:'.l:_l:l|:ru:|n|en|| I5|'tu|'_|r|||';_I*|-I:¦|-lrlrllro ` I
Z
dm
Rys. łT".452. Ükno projektu formularza
!
Po wyicorranei operacji mamy mozliwość rozmieszczenia elementow przez z F i przeeiagnieeie kursorem myszy w wybrane przez nas miejsce formatki. Po '
czynności formularz w progamie Access będzie miał postać :
="'r'."›'›1=-'-1
FL _
'urlszlzz |_
í
H|úl|'_.l.1'Lru|¦.|'r|¦||"|'|.1.
|
T'|r|'uI_r||uho|.'.'|,'
._?'
" _ _ _Š _
Å
_` I
Q
15135!
I
Rys. 2163. Emodgrfikowanşf formularz
Ihiodyfrlcacje formularza moga dotyczyć rowniez kolorów tła lub umieszczenia W głowica grafiki. up. z logiem firmy. Czynności te mozemy 'wykonać po zaznaczenia mentu formularza, ktory chcemy doskonalić, i wybraniu interesuiaeei nas opcji z menu lub menu kontekstowegor
Możliwości proiektowarria formularza jest bardzo 'wiele i czşftelnik moze sam Í
wać o uż}'r.:iu każdej z firnkejoualnośoi programu Access według własrrşfch pomeb
rziohrşfm treningiem są proby tworzenia formularzy z wşfkorzşfstaniem kazdej z d opcji i sprawdzanie uzyskanego efekm za pomocą lfireatora formularzy przez wjffbúr = z
stałych ustawień formularza: tahelarşfezuego, arkusza dariydr, wyjustowauego.
Ż~Ł`T`F'-il. It l`l.lt."'t E¬."'tr"'t f_`1'_-1-.`“'t`r`tÍĹT'f "ó. I'lt'|Ĺ`¦t_".l¬l""'. "'.| li
""--ll".Í!-li.II*_"Ãf..I|l-'T .-'t.±`tĹĹi'Ĺ"¦b-
'l_""_
_ _
. _I
I
__
_
_
.
Ź
_
__-_-
__
:_
I
:_
Ż
'hlmfiu
._
1
|
|
|
fr' --
j
'_-
_
_
I
eee _ 'I=|I'I:|l'|'_
_
Í-F --
____
._
-.
I "
_
Er" '_-" "
11Ĺ.|Ãa" ...--|..-_..--'.| ł
I
l'|I|¦Í'2|ltI|."l|IIn|'g]| ||||1'5
Z FÍI "'__¬_l-¦:':"-foto
.E'|¦I|:'|'l'fill¦|¦I¦l.|' ||.|'I!||||
H-:I,*.|.n1
-
nu I¦|g|nn||."|r|.|et|rt-|n1u|un
'
Tfişinmrwm _
|
'-"-"n"'-'I-tt'
-
|'||| _nu
|
Ł1' HH mi
"
.. ll, '!'}||.p1.|'w | ut' U jz-r| t1|.'n'||
_ '__-_
_
'|'|'
_T41 1
t _|||.l.-Iq||:||l;|m'||'-||'ul_:'||' h|nn't|pg'.|y,-u_ur
.La
|.||;|_|,||-
'Hagan-erremşdírršr '
""""'|'="'=='r'
ja """“='
í _:Í-imię
.-I
iwona
_
rmflmu'm"F"" =Š¦ l""'|r=""r-1"|¬'n'|'.-r.|'1[Io.
I
__
|
.
' """"
'
I
Bül.
Hu"h.-"H'm"..._ .Hm
!l'=r¦:|'|||'|'|'|'l'r¦|'|m4;|l'¦||t1|L|'lq|':|'.||
5
I , mnlrfl 'FW
|
j
`|Ü'|~\l
35'. B-1. Modyfikacja tła formularza
|
wymienionych powyzej opcji dostosowania interfejsu programu w postaci spersonego widoku dla bezpiecznego wprowadzania danych - formularza, Access oferówniez mozliwość zapisu danych otrzymanych drogą zestawień i selekcjonowania. Eapis moze mieć forme wydruków lub generowania plikow PDF. Podstawowa róznica pomiędzy formularzem a raportem polega na interaktywności fonnularza i braku interaktywnozci raportu. Formularz oferuje mozliwość przeglądania -.lmodyfikacji wybranych danych. Raport daje jedynie mozliwość prezentowania danych 'ttokreslonym formacie zoptymalizowanym pod kątem zapisuFlmkcja tworzenia wydruków w postaci samodzielnie zaprojektowanydt forrn moze być użyta np. do automatycznego adresowa nia kartek pocztowych. Dane w postaci imienia inazwiska zostaną pobrane z bazy danych. umieszczone w formatach zgodnych z wymiakartki pocztowej i wys-lane do drukarki. Tworzenie spersonalizowanycb zestawień 'sprazfoadań z inforrnacji uzyskanych z baz danych jpoprzez tabele ikwerendyj nosi nazwę raportów. Nalezy pamiętać. ze o ile formularze to spersonalizowarra nakładka do przeprolndzania zawezonej grupy operacji na danych [najczesciej wstawiania. modyfikacji i ka'a1waniaj. to raporty są tylko sformatowanym wyprowadzeniem informacji. tzn. nie mogą zmieniać danych znajdujących sie w tabelach. mogą jedynie dokonać obliczeń.
I
_ | | | _
Tworzenie raportu
lj
_ Í | | | ¦ | l
I
_ aby stworzyć raport. posiuzymy się ttreatorern raportów. Podświetlamy obiekt, z któ-rego zamierzamy stworzyć raport (tabele lub kwerendej. następnie klikamy kreator [rys 2'.T".ó5}. Nawet jeśli podswietlone pole zawierać będzie kwerende. z której nie chcemy tworzyć raportu, mozemy to zmienić. poniewaz kreator udostępnia rozwijaze menu umożliwiające wybór pomiędzy wszystkimi obiektami typu TABELA i HWEj REM DA. ř Kolejnym etapem jest określenie, z których kolumn tabeli lub kwerendy chcemy sporządzić raport. Kolumny wybieramy poprzez podświetlenie nazwy i przycisk ±-. l E-*peracje zatwierdzamy przycisluem Dalej. | ilfolejnyrn pytaniem zadanym przez kreator jest określenie poziomów grupowania eraporcie. ' jeśli chcemy. aby pracownicy firmy w generowanym raporcie zostali pogrupowani we- | dlug mtulu naukowego, dodajemy jako pierwszy tytuł naukowy. U tworzy to raport podzielony na grupy profesorów, doktorów i pracowników bez tytulu naukowego. ittfeamątrz tych
3-205
oazy r.~.anrcH tsrsTe_'-.1ro.az o.-tr-tt'c't-1
Ê tt. ¦
-11 Ü'
Ä
l¦
"'.'| ' ' Emi' 'I='|'T_r-I '.l='._r_|
Marzę-=|z|a olownr
Twm".|'rn|-'±
Dane :|.'wm¦'t|-ro:
_ i
'
_
'-"'
EI|¦'l|.I
j
'-._
znuree-;-lnt '
5':|blor'.y _
Ê
lĹrH|1:-:||'
Fl'I.¦1|r|'.t
Ź
3 Ęnsezrramtllsrsy
'='
__ "
_
-_
_'_
=
Ż
ĘŻ_
--
í
_ . .-..
_
í
.
_
_
_
i._-__
í
_
Í pr|¦':|:|'-'|.'||n.'y_r|o'.'|'1.l|
í
____
1
Ĺll
___
'
_
_
'Ł
__ _
_
_
_
_.
_t` ř! I 'H
F'u1e|.'
n|¦|.;||1o report F'_¦_|_|:-art..-
I
____
_ _______ .
Llill
__ . __ _
._
_"_ !
. oraz
'
'§
_
..
___
_ _._-_-__
-
.
.
-I
_
__
__
'
|
el'-_qtvorlyet ..|
|
"
'
.-'F"=z'*"e*'*='~'=~'
Šā tr'11"""tfi="=t'='-Hi'
3
_
'
:
f'Ff|1Í_|""El-Ü5'fi"l'
_ _ _
-_ ryu.lJ-e¦_n-n-.|-|sa=-
W
I
|j
. _
_ 3 _
'
_'_ -.e„u:'_'__|_ 't=ae-;_±_;j._- j
. I
Rys. Eltiii. Ükno ltlreatoro raportu programu Access
` j _ _Í |
grup pracownicy zostaną posegregowani według wartości kolumny Nazwisko (drugi +ziom grupującyj. jeśli zdarzą się pracownicy z tym samym tytułem naukowym i o 'samym nazwislr|_|. wówczas zostanie wzięty pod uwagę trzeci poziom grupujący - imię.
I
E;t'e"='_:e'="='.'m
_
li
j |
"
_
_
_
`
`
_ _.
'
I
I-I
_
_
'||
't." _
_
__
|Imię.1"'Iero.ürn
. "
'
Í
' -
1I¬.":-lt l""ojel'¦l.'
' fi of
. |
E Š__jt¦l_r.-:nr-:_
Fn|'rou|lr.|1'
IĽ
rm_:_
m .¬›.t›.......s
|3""'=""'t='I'o=| ' _
l¦"u.|-'ty
|.'.|w|'r|'f|.|'-,t
_
.
Ftol-rtlrt
;=---
rorrntslstzz rorrnulnn: Ê """ltfi'=| I'nr|'|'| -IH-far '
lI1L1fj|'stki|:EŁr't|'±l¦:_|y_Ę«_*|_5'_5j|:ar_|1u__:Ê__.,_ _'__. __ lt?|:_|'|tzjrł'ą__|_p_-__.¦:rt_j|'|'.r _
| _
F
'-|rr'|':I1|z
t'-sure'-to lowzrenoy
1-|:|ei-r
_'Ê
.
=“"
tno-eli
Ílünlł F"n:||'t'|il l.1:Il'||'nr|'-'|fl'l-I|'|l'u
-rr-'III H.|' "
_Ę
hlurreüzu o-Leydarq-zh
í
.I
3-I-|-l' _
|
'li
_ '
'
i
. . ||
í.l.|
...
._ 2
-¬_il
_
_ L3
r-'
I
'
Rys. .i?'.óó. Wybór poziomów grupowania raportu
'
W ilustrowanyrn przykładzie dodaliómy tylko jeden poziom grupowania - tytuł naukowy. it-'Ĺolejne okno kreatora umozliwia wybór sortowania w obrębie atrybutów poprzednio nieobjętych grup-owaniem. Do wyboru mamy sortowanie w sposób rosnący i malejący.
I
STRUKTURA EAIY Dlütlf'~l"f'ĽIH W P-RDGRAMIE HICIÍÜSÜFT AĽEE55
I'| '
'|Jl'.'.'-'|¬.'-'
"
'
I-.Í
.'..'
'|'
. _
1..
._ _*Í-'
I
F.
Dkreślenie porządku 5ortow*ania"ifitIIłtI111
pytanie dotyczy układu raportu - rrramy do wyl:-omlrrokowyt blokowy oraz'kon'Zmieniając układ r'apo:rtu_ mozemy obserwować lewą ikonę. I.ll_'.h
_-.____|_l---
Wybór ukladu raportu
_
zalozrtodtżi od potrzeb -wybieramy -określony układ
-kałuainwrt isstwiflaamr üarrafis'-wt
Bo stworzeniu raportrz istnieje możliwość npj. dfit5lIü`Bowzníu_ koloröwfia.
ptājfliłfldzie
"Ê-“"°'l'=' _
jego'-Ł'-t1'_tI1Ľ|¦Lt1'y 1
to
__
Í
ma
zi iii'-.icit i=tz~¬|t-'_'t-ii" o.-tz tiat-ii'c|--|
eat-or raportów f
|
iw-±'±efeiu'==asw j-|=T'‹-za-=i="_»-zy _
".'
_
_
'
¦
' =fi.':ł~==w=-wt' ' owo'-ua"" |
' F r'
_
re I -_J__l¬ee e _-lee
Rss łlióšl' Wybór tytulu raportu
f'|'|'|.d |-|".|l'l."'w"|' |"l.|l:'.'."',I.5lik-
lb'|i'Łk| Ê»
i¬.;|¦ hhrnlu Flwnl 'fi'ojrJ1||cl'I
Iihiilenicz
lhhrhu'
1'|'||.'|'_niiL|'I~|.|mn Htl-.hvhlio
I31.rI.n llowiih Horlfll_j_
'in-Ł i ||3'l'l|fl.1i
|'1""r
-U"=l""'1ir= Ń'|"'-lilii H:.rl"II-I'
nu-ion: un
T1' '.l'_ "|.|u|-o".'.'|.' Üłtltniilu
'T"|¦'
l¦n|rs=|'l.|.|'| llldfl |'l2l'IH'|||
Elinli
F'I|l|"h_I|':|ll
Ęlitlltl
'|'||"E|'ll1nIi.l
l|hrI'|.i|o
W'fiI¦lú¦:I'|.|:InH
'll|I'oi:l'|'|:lt|
Rys Ł? Ffl 'Dkno przedstawiające raport
|
W obrębie ra portu doszło do grup-owaii_ia danych zgodnie z wcześniejszymi Pracownicy zostali podzieleni na oadmędrie grupy. dobrane pod kątem t¬'r1.i.ili.i wego a następnie alfabetycznie posegregowani po nazwiskach Warto anii tać ze P if mozemy tworzyć nie tylko na podstawie tabel. Dość powszechną praktyką jest raportow na podstawie kwerend. Podobnie jak w przypadku formidorza. równiez menu podręczne raportu oferuje liwość edycji widoku raportii za pomocą opcji Widok projektu
Ÿl!:
.=t~:T|..ii.-i Fi.-i'zi-'_ii.-it-ii"tźH w i='iinc;ii_-ii~.'i|it rtiirzr-:osf.›Fi aiżcrss
I
||| -I
'.'
_'Č _
".'
I
'I_
'-'1
p'=iyiiiriu__'e.`II ""_¦ ___ .__
"¬'=f'_
llqtlri-___'
el`
I
'_-i-` '
_
l-'rl'|.'.i¬.'.
. '_ *__'
1
_ ."."'-_"-"_ _ |'___'____l _:___|
_ t_l_'l-i-|
__:
H
i
..|;__..
11:
. '_'-'
_
' l¦¦|
_____ .-.__"___'.¦j¿_. __ ||...5..
taooillou Š Et tII _ ! .Ÿ':"_' '-' . |. _I l-'Ill-ll.-_
'1'-'Å
_
I-'-'iii-ir iaziniiu
..
_ _-__.
_ _ ___
_
_
__ '
'
_ "i"'
I -Ż--
'
_
_ __i' "Imię 1' ""1"
-
-
I
_
1B' -
'---
-
,-_-_-
__,____ __
łS"_?I. 'Dkno projektu raportu
_ _
.řrzędstaiiiiony na ilustracji widok projektu daje mozliwość mndyfrlrsęjj j W-_¿,,¿j,¿.j______________________ według określonych preferencji: wielkości pól. odstępów. koloru tła iip. 'lliiorząc raport. jako danych zródłowych mozemy uzyć tabeli (jak w pizylcładziej. Darie milf*-' Pfldjodzić z kwerendy. Kreator umozliwia wybrai'iie kwerendy - jako ±rij.i_-Hg _ pomocą rozwijanego menu {`I'abele_ƒI{werendy}.
_ __-
"
;_ :si i e .'-.ez-: *F
_II
I
I
"
'_
irgg--_-¬,__-„__--_-_-_-_-___~__- -rze
__..__:
I'
.'.'......_...
'
-_-r-"'=_'= 1"i|_|'lt'|iiI'l1'H'ii:.yH'-t-"i'riii-on
-_
-'.-."
.
".I"_';.'_".__¦:_I
_- -' . f `.
:'.¦'-'
E”
' -
.__
-_
..|'Fl-'.'|I| I
“I
-
I
'
Ê -I _
.
t
_
I
fi
| _
II
I
_
`
'-¬'
ll
_ _
'
I
`
"
J-mi-i_
h
ai-'I
15'-Tł. 'Paiorzeiaie raportu na podstawie kwerendy
Proces tworzenia raportu na podstawie kwerend jest taki sam jak w przypadku yyypüy-_-___ Lnego z tabel.
¦
Eksport raportu do pliku
_t
Raport mozemy eksportowaií do arkusza kalkul ` E j ' “ PDF lub wysłać jako wiadomość e-mali m dI;I;lI;IyI1Í_I__¿IIŜ[;'____Ŝ_Ę_f__'_Ŝ_;__I;'1_o_ij._i_'_E_j_p_ko Plik tekstowy
Í | _
--_t
_
;
._=_ 1 Wflłfl
' III
_ j
j
¬"|_u_.
e±i¿s!tif_ijp:_igi:a_niu aI_ trio? -I____
"""-"15'
liiriiiliil i..Hii-i =i-'I'I'i|- ---."=-t'~|.i=;..u.i'.'i_-.'..-_|.
EÊJ
ól ,M
;spi lit? šāl
j j
1
_ . __1l"'i- .`›!?.I"3. Eksport raportu do pliku
I
_ _
_
ir'-:n none'-if I Il. na . .. l._
|
--i_.-
_
_
__ .
"'
Ą
'_
tl':1|:¬ort_uj
.
'
I
_:_,________________________________
_
í-
_
|
.-._Å
|.._.¿
_¦ __ _'
31 ...„'.' __ ___ | Ii. 1
-_
__
Ę 'Biwak pi-|;|_|-||ig|,|
ii]
i-rr
__
:F
tt=
I-H
:
|.lJ.l.|-|Ż
'
il __.jj
_
j |
.
rrl'
:_:. |
. ._| .'-
'...
BAĹ-?.`“r` [Ŧ'.'f'|.I'~I"r`LÍ|-I I 5'|"f'i`¦`EM`i' BAZ lŸ,'IAI`~¦`r`Ľ„IH
11*
Msscmş' rúwnießł utwurzyć s rspcrrlu stronę HTM L lub wyckspnrtüwsć gu ds pliku cc prezentują opcje na ilustracji.
"ss_T,ř-"i
_ ="`¬i ' “if '
Iamlrnü podgląd w1n;IruŁu_
s ss
__
_
pcrrtuj uqrhranj' nhicht dn fnrrmslu RIF
yfsta prngrl-rrru 5harcF‹:-int Ęffi Eirspnrtuj wybrany cr-i:2|rr=|r1. us |sr-sgrsrriu
5r¦srePc"|nrJ`aŁ:u Irscç ,_
Bam danych Qüflfi Eksporłuj zalrrscżunjf c~|sr±=.'I'.1 'ilü baz;-' c1sn3"ci'| DDEC, rshicj jak baza programu SQL Ecn-'±r
Dnhuuuslfllłll Ełrs|¦nrt|.|j zunarxursr nhlekt du rinlrusrenhs l'|'=|'I'ulŁ Plik programu gfiase ' `
Elcspsrruj :zacrrsrzurw unretr cl':› pliku |:'rc~qr:|rru_| dE|s.'5E
Rys. 1.7. F4. Dudstknwe nscrżliwusci wycksportnwsnia rapnrm
SPRAWDŹ sworą WIEDZĘ 1. jak dsfiniuis się klucz pndstswuwş' w Micrusnft Access? 2. Du cssgn służą icwsrsndy, fnrmularse i rspsfly?
l
STI ¬iL|l~'.TL'Fi."". B.*`=.H"¦` lŹi.='il*'i"r"¦Ĺ|'l W |"'lii..1'i_Ęl`~'..~"'riVll|:':` i"-fll"ĘÍ|'lĹ`-*í'iiĹ`rl"|` r”'i.i.`ĽÍl-'filii _
.IAGÅDHIEHHL
I Implementacja reguł integralności referencyjnej 'I üp-cje do oloeślenia stopnia uczestnictwa w związku I Implementacja powiązań jeden do jednego, jeden do wielu i wiele do wielu Tiforzenie bazy danych opartej ci więcej niz jedną tabelę
z projektu relacyjnej bag
tlanycłi. Bazę' danych norrnalizujernjr na etapie projektu, abş' uniloląc anomalii, a wjrniuormalizacji jest tworzenie dodatkowych tabel. Projekt bazy danych mozemy przedw formie graficznej. w ktorej związki pomiędzy taloelamj reprezentowane będą za linii. Przjrjmijrnjr. ze tworzjrrnj' baze danych dla insijrlfucji edukacyjnej. Projelctu~
tabele. ktora może zawierac informacje o wjfkladowcach i prze'.irniota=:h. Iesli kilku dowcciw lzi s dzie u srrs ło te o same sr' o rzedmiotu is n _ w Pnif' rz acllcu duze1 uczelni lciane w kolumnie Przedmiot mogą sie powtarzać. nb? tego uniknąć juz na projektu, utworzj,-'mjr osobną tabele o nazwie Eajeiceia. I
wp
_
.liutnnulfeqlziaunflll
ri.l'|.lto'i'ii',|'
Toirst
E
Telrst TE'lost
mnie Lzurislro ›1r'ti'|'_tajei¦
'I
E|tiliczerii'oia1' Licrhl
_
pola
i |d_raj|¦|i _ l'ilat='u'l_.n|]iji¦ .
|
Typ drrrdi aurunumeeowanle Tekst fë
15.1. Tworzenie dodatkowej tabeli w celu uniknięcia redundacji Ęnormalizacjaj
Í_`_lÍ:il}ele zostaną połączone za pomocą klucza głoumego tabeli Zajecia.. ktory stanie się olżicjon w tabeli Wykładowcy. W tym celu w narzedziach bazy danych uzjfjemş' Relacje I'
e -I-
Tworzenie
ā J
|-I!-. . _1|'
napraw
'znosi Uruchom Basic mak ro l'u'Ial-rrci
2
._.___r_,í
1Tworzenie wielu tabel . w programie 1 Microsoft Access
I
j
Done zewn etizne '
Fteia 'e Iaieznoiei ah ol::ie1cl'.1.| Re I acj e
ii `
Narzędzie I:-szy' daiwcii
Dotumentetoroazqroarnzh
Š .i!'.r'|z|`1zu_|= uąrdojnošć
.Ł "'4`|'řll4Í"i'.lÊ fihflf .il-r'| aliza
Ê -_
Firojeirtowonlfe ` _
""'J
sql
W *I
Baza danych
ä ni' 'ii
SharePoint
Senrer programu .Access ' Prze noflerrie danych
Włączenie interfejsu umożliwiającego wprowadzanie związlcow pomiedzy tabelami
Dodatki
' Dodatki
112
ir.-czy rr.-int-'r:H 1 srsrifnr ii.-iz1_i..~.si'cH :Å
¿
.
Å
í
mi
_Å
.-í
._
Å
i
Å
aby powiązać obie tabele związkiem. zaznaczamy kursorem myszy klucz podstawowy tabeli zajecia - Id__zajenš i techniką przeciągnij i upuść jdrogond rirop}upuszczarny1 go na identyfikator kolumny Id._pz'or'radzon3rch za.jęc".*.
¦ -
Wykładowcy 'Ê Identy1'iIratoFr_ I
_ _ __
j
j
Maz-nina
I
RoIc_zatruclnienia T1i"tL|l_irnie_n‹t|z'|-'‹'ir-ko Ic|_prowo tizonych__
l _
j `
_
"mg
|
l Ê
-_
rrt'.ił_nru|±owlr
_
_
_
_._______„_
_ __
_
|"'lanu'z_zo_|e
|'. _ e _
'- - "
_
[¬`:ys. 13.3. Tworzenie powiązania klucz podstawowy-'klucz obcy
W oknie Eclytowanie relacji mozemy następnie określić wiezy integralności jreferencyjf nej] pomiedzy tabelami zajecia i Wykładowcy. "
¦
I
j
J 1.
Icl__z-sjąć
l_' l'i.'oslra'dowo elzuallzirj pola pokrewne
5 _i
I' rasiaosna'oa.i_|&'.'f.ei»sřay oai-=ra'.'.n'¿ _
_ _
_
-flI"l.Í|.Ij.
"" I_drprowadzonych_
_
_
Í
-
I
I
_
_
_
_
_
_
Í
Iłys. .`Łi'i.-i- Edycja powiązania Pola. które mozemy zaznaczyć, to:
Ę Q
mg
1 Wyrnuszaj więzy integralności, u Kaskadowo alciualizuj pola pokrewne.
„ | Ê
1 Kaskaciowo usuń rekordy polcrewne. Ponadto mozemy określić typ sprzezenia {rys. 23.5] właściwości powiązania. właściwościorn sprzezenia mozemy określić uczestnictwo w związku jako:
_ Š
1 Cibowiązkowe po obu stronach.
j " ¿
1 Obowiązkowe po stronie zajecia i opcjonalne po stronie Wykładowcy. 1 Übowiązkowe po stronie Wykładowcy i opcjonalne po stronie zajecia.
- _ ‹
' Iardwno w programie Access. jalr i innych programach, np. narzędriadi CASE. kierunek przeclągania idenlylilrztordw kolumn jlulr cza nia kolo rrinj przy tworzeniu rwiązkow pomiędzy la|:|alami1.'i'j'znai:snyjest od klucza podstaiirowego do lrlucra obcego.
l
?Ľ¬"l"liiili l"l_.li."". l'i.=¬1.]':"."i' i..|'i*i. l*~i"r'i'.¬_l-l W F"l"'."Í".H"¦l"i_"l.!"'.lll"¬_Í l"›'illÍĹl¬`-'.i_I'.':li1Ĺ.`il-"l"„~'i.'fÍĹEi'ŠŻ'i in-
_
Å
_
__
.
_im
mm-
H_Łi'ł.'|'Ii iwości srirvezenia
_ 'I
Å
`¦_
Å
---
-|2|
I 'II
r-t iz oznciełidsrflan-yaasaa,-nio'irrchsurean1epus_=ao.i taineis-ąrdwria.
ci _
i ¬.~;"'*'.-í'i`i"“'*'wszrs '*“
-o-_.owa -ii” asiĘkŻ..._ć ii
:ii
___J-aw 23-5. Właściwości powiązania
Warto zwrocić uwagę na typ związku w oknie Edytowariie relacji. jak prezentuje to i'ysuma . _ _ _ . _ _ _ my do czyniema z typem jeden do wielu Üznacza to ze wielu wykładowcow moze tego samego przedmiotu [kolumna Id_pi':oi'ra.dzon'y'ch_za]ac będzie zawie powtarzające sie wartości] jeśli chcemy aby związek pomiędzy tabelami okreslany był
jeden do jednego, wowczas w tabeli Wykładowcy musimy zmodyfikować koliunnę _F zoi'radzony'ch__zajcc': (klucz obcyj i użyć ograniczenia unikatowości [SQL - UNICÜNSTRAINTSL W programie .access wykonujemy to, zaznaczając indeksowanie jąc opcje Tak [Bez duplikatćiwj. Wówczas typ związku określony zostanie mianem do jednego (rys. 233).
Hazwa pola
Typ danych
_ _ __ Imię
_ Nazwisko
Tekst
_ F.ok_zatri..|driienia _ Tytr.rl__ir1'|=Ią_r'| azwisko
Uczha Üblicreniowy'
Id_prowad.ronych_rająć _
_
Tekst
Liczba
_
„Wiasc|woi._r_¿poia
- _ fl*z'='i.a_'_zsia
;Format _
_
__ __L'.=í'.1="_`_'ai =-_'"=|"`r¬'li Íā`_
`
_
| Iuliąjsrą dz.lies__i«j':t|'ie
I
_ auto
_'“"*'*='=a""'i1'¬.'1'=+¬""1i'=l-`=='='.'.“." ' Wartość do¬rrş'_t_l¦ria _j_Iłeg_i.j'i-l ip§._poprowriośr_
_ _
lÍF'*Í`F|_"¦`!|':lłl1' 'W' F"°F"i""'Ĺ _ ._ _
-j.: tiieleirs-rr'i'rzr'i-e _.fal H ÊÍ'-"ii _"it."=."*_i`e:¬=_'_'›.'¦Ĺ"'=_ "Í Hi' .".'o'f'i'i!'r'!!1!s'=i!=ia__ .T*'H'="-'
_
. "i"
'
_
23.13. Zmiana właściwości kolumny w celu uzyskania powiązania jeden do jednego
Podczas projektowania tabel na potrzeby ins tyiucji edukacyjnych mozna spotkać sie dkiem, gdy jeden przedmiot w rocznym cyklu kształcenia moze mieć więcej niz jedwykiadowce. Zmiana nauczania przedmiotu w trakcie połrocza ma miejsce zazwyczaj idku, gdy prowadzący zajecia weźmie urlop. Sytuacja. ktorą rozwazarny. zakłada. ze wykłaclowcow moze uczyć jednego przedmiotu i kilka przedrniotć.-w moze być wykłaprzez jednego wykładowcą. Przykład, ktory zostaiiie zaprezentowany, bedzie przedpowiązanie wiele do wielu. Typ takiego powiązania w programie Access mozna osią stosując porniedzy tabelami trzecią ta bele łączącą jnazywaną tez tabelą połąmeniowąj
j
E."*.Ê.`r` I`J_*kI'¬-l"i"Ĺ"ĹI-I I SYSTIÊI'-'I"r' lřli'-"i}Ê'. l}.'i'1.I'¬~I"r'CI;'l
Iři`h;'l1¦Ii'.'.i¿ili|i': |"|_~I.ii. ji _.__-f_¿_-_Š-_ -_
- '.-'|-Í.-_.ą;_::.
i
IĘ_:_E
._I|ę-I-.,. I-.'.. 5- _.. j--¦I_. ;I ._.¦ . . ___.___.__¦_,___._¿_____.:___.!Ĺ_
_
I
Ioiecio .
'
"='_.ai±=s
I'-_ _
'_
-I.
LE.
_
71"? tilityldaelooicy
-
'
'___'.
.l__°_
_
__
'11" I' '
ll.
.
_-_
|:_
__ '_'-:'..r›_'==-›-'a=='='==+=1w¬_' _ _
_
_ I
1_.
_ _ __ _ - _:___-_ __
akt-ialiwlaala-solkwre
'-ŜI'-¿_í__i,-'-_':_-_s--,ir
._'-
-___
_
-' ' _
I
,___-_____
____
_
-
_
_'
__.
-_
_
I
" '
iśoslpidowo ot=_'.i|"il_1'śki1~ifi;lś'|i_'i I-=r_i2'-i".'ri=i
_ '__"
-
'
¬-
Rys. .1E.?. Widok zrnienionego typu powiązania
_
jeśli tego typu powiązanie będnemy chcieli przedstawić na przykładzie tabel zaj
iflykł adowoy. ilzyjemy trzeciej tabeli I'lylc1adowcy'_zaj acia, zawierającej klucz
tabeii zajacia i klucz obcy tabeli Wykładowcy. 'i|¶ItIt'|"I¦li¦Ii|\r"tz|',_Ejei:ia=
_____
'E ia_pn-wiązania id_wyktadowty Id_za_tec
Vofklaflofiiw
_
Identyfik ator Tytui_n auk owy lrnię
._
Han'-iiko
I"'lazwa_zajęć
iłolr_1atri.|dnlenlr| '|.'j,rti.ii_|n'||ij,e__nazi.i|i'lrlco Ii:I_prow'adzonycl'i_zajęć
‹
Rys. 13--ti. Dkno edycji powiąmń niiędzy tabelami programu .access “__ Narzedzia głowna'
Twprzenle'
Ľiarie
`Ntilzij¦i¦'iIit|`bazy diinytti ¶Ê
I'
..
Ê Xwrflracukiad
Eürłw iāaapn relacji
relacje
'lpg Naizeozia
__
Fyfiflt
,
Ê
'I
I
| Proj -
ue 'Ł is i
II' I' 'H Relaoe oezpoirednie
_
_
cant-lg EW'-==r±tk'± rflaofi asia zje
Iafflkflii
_
_ _
iiyi-i. 25.9. 'Generowanie raportu relacji
Podczas tworzenia powiązań pomiędzy tabelami została zaznaczona opcja 'i więzy integralności powodująca zmianę w graficznej prezentacji powiązania, j jąc jedynkę po stronie związku „jeden” i znak nieskończoności po stronie ,.wiele"_ zaistnieć potrzeba stworzenia w formie 'wydruku raportu z projektu powiązań j tabelami. izby uzyskać taki efekt, należy użyć znaku projektu. Powyższe powiązania zostaną wowczas przygotowane do druku w formie zaj wanej na ilustracji:
s'rauicTi.'aa sazr' u.ar~ii'cii w iraooi-maile niicaoscii'-"r access | 2-IIS
_|:io'i|'rie.iia'ia _ I'
Trlutnolwwr
_
!"'“,., _, , „_, „,_,.
Ia=a__zauur±ia1is
'
I z
iicaia
- =
"”“""¬"iI'*¿
Tjrt|.|I_p1':ie_rioz|'i|eico ti:I_j:Ios"iadi¬onycI'|_zaji¦ć El
Łys. 2S.1I'_t. Ükno z raportem relacji
W praktyce zawartość tabeli Hy'k1adowr:y_zaj ecia moze połączyć kilku wykładowz jednym przedmiotem i jeden przedmiot (Id_zajecj z kilkoma wykłaciowcami, jak to zaprezentowane na iiustracji ponizej. ' "
-
Id_'|WItl&doi|roy- I
'-›
IId__[eo'
I j
=-"jiliriri, 1
fl'Il.I'l"|ł"I|l '|.Ii-|' -'l
...cfi ._
HHH
23.11. Powiązanie pomiędzy tabelami w związku wiele do wielu Łflifl' 23.1
Å
Å _
Ti
Å
Å _
|
Powiązanie tego typu {po wypelziieniu treścią tabel) można zaobserwować na przy-
|
kładzie. rozwijając kazdą z krotek tabeli zajecia. jak zostało zaprezentowane na rysunku ponizej, Biologia została powiązana z wykładowcami o numerach
= z =
iaaniynaseyjayah 1 i 2. I¬'t|I_"|3=I|l'Š`:
HB' I I ziira__zo}ęc
,-..,
|d_ qF _ 'I' II
i
aayaaaaa !
Å I; [No'wy_¦'
___I
___|Ei IEI
I
I
I Chemia
s Fizyka 4 lnfonnatyka
Rys. 23.12- Eikno przedstawiające tabeię Eajecia powiązauą związkiem wiele do wielu
- Podobnie w przypadku tabeli Wykładowcy, dr Witold Nowak został przypisariy do zajęć o identyfikatorach 1 2 3 (Biologia, Chemia, Fizyka).
_' I_
sazr oanrcn i srsrsnr saz oai-i'i'cH
i
idootytlkatoii
Ę
ld_p-owiazanto
I
#2
rioulkc
ld_zo_lac
_
Iitariiiilsko --1| |triit_zirtn;|di'
itkltirib
tH=='i""rl
Rys. 23.13 _ Ülcno przedstawiające. tabelę wykładowcy powiązaną związkiem wiele do wielu' 1
I I
I
sraawnż swoja, wieozą 1. jak w programie Access implemeniuje się reguły integralności referencyjnej? 2. jakich opcji użyjesz, aby określić stopień uczestnictwa w z¬ir'rią2.I<'.ui'
__
3. jak zairnplementujesz powiązania jeden do jednego. jeden do wielu i wiele do wielo?
213
i'..a:ti' |'ia:~.=~.'t'_+| I si-'s'i'i?r~ii' ii.-ir i'i-i.n'i'ij:H
I':¬"-'
1
--_ii-Ę
m
I Wykorzystanie Visual Basic Ilr.GåD'H IEHIA
I Użycie fiuktur "d"BilI.
I 1 I li
Ftożnice pomiędzy funkcjami i podprogranrami Manipulowanie danymi przy użyciu VBA Tworzenie interakcji pomiędzy użytkownikami a bazą danych Übsluga wyjątkow - tworzenie własnej obslugi blędow
1 wstępne informacja: na ieri1a'r'irsa±eij'r-nysa, pojęcie aniie'miej'i'aułaj, 'fiinzeje" I podprogramy, pojęcie procedury publicznej i prywatnej, konstrukcja tablic, zestawy rekorddrit-_; kontrola obiektow, okna dialogowe I inforrnacyjne, odpluskwianie, Error Messages I Sposoby ochrony VBA
I Używanie makr o Procedura dodawania przyciskow komend pochodzących od kreatorow o Użycie opcji Dofimd Üsoby zajmujące się bazami danych oraz pisaniem interfejsow dla baz danych III informatycy mający wykształcenie i spore doświadczenie w dziedzinie program
Ümawianie podstaw VBA można zatem teoretycznie uznać za niekonieczne. takie w niektorych wypadkach moze okazać się błędne. poniewaz są osoby. ktore wykształcenia inforniatycznego mają niewiele wspolnego nawet z elementamymi mi pisania programow komputerowych. W rozdziale tym zostaną jedynie przybliżone
tody programowania w VBA. Poniewaz nie jest to podręcznik do VBA, czytelnik uznać prezentowane informacje jedynie za wprowadzenie do pisania makr i po: się V BA. VBA to slcrot od Visiial Bascic for F'rplications_ jest to jęmfk komputerowy ktory na pisari_ie programow bedących rozwiriięciein aplikacji. W naszym wypadku
będzie Microsoft access, natomiast programy pisane w VBA będą służyły dos Accessa oraz zaimplementowaniu w nim nowych Funkcji. Częściową Funkcjonain ośčr rą uzyskuje się. twomąc kod VBA, mozemy osiągnąć. posługując się kreatoreni i malcra. Zasadnicza roznica pomiędzy używaniem makr i VBA polega na tym. ze daje mozliwości wykorzystania jedynie funkcji oferowanycii w rozwijanych menu,
czas gdy Višin pozwala na osiągnięcie znaczenie większej funkcjonalności i ela poniewaz kod funkcji piszemy sami i dzięki ternu mozemy tworzyć procedury i ktorych program nie udostępnia. Praca w środowisku VBA przebiega z uzyciem dwoch rodzajow procedur. ir Do pierwszego rodzaju należą: procedura publiczna i procedura prywatna [s oddzielny zasięg działania określany jest za pomocą słowa public lub private. _I-L-Å-
_'_ - _
nnciczaani au-'_a.'~.=t1-1 naz i_.'›_"¬.s'i'c'}t w jt;z_ys_ac':|-i 'a-"¬'sakit5ca 1f'c'=ziurui_' __
__
_
_
__
__
_l2ÍI9
Ê-*F'tÊ'ͬl'¦"3Í_l__.'5'.lĹl'.-7"'.li_'_ "'i›'_E_"lt _l"'¬li'¿"i ___ _ ___ '
___
___|____ I
| 1 Dnişm radzajem pracedur są Funkcje {t'unctian}, które padaizinie da pracedur mazerny padzielió na publiczne i prywatne. Twarzenie minipragramów w abrelaie Bazy Access na ma ceiu wzbagacenie tega pragramu a zautamatyzawanie i ułatwienie pracy araz wiekszą elastycznaść w dastasawaniu Accessa da indywidualnycli patrzeb. Stasawaae w VBA praceduiy araz padpraceciury nie zwracają wartósci tak jak funkcje. PIacedura sub ta seria instrukcji Visual Basic która wystepuje w lciarnrze zaczyna' ce si '
H
l
_ ` I _ _ =
'ii
sub i zakańczanej and aula. lej zadaniem jest wykananie aperacji w' mamencie gdy
wywałany identytikatar znajdujący sie bezpaśrednia pa sub. Paniewaz jest ta u_ra. agranicza się jedynie da wykanania instrukcji. które są w niej zawarte. Pracedura sub ma -zasieg akreslany pmez sława kluczawe stające bezpasrednia przed
" | =
private alba pl:|1::li‹:`_
¦
Pracedura Functian. padalanie da sub. muze być paprzedzana sławem kluczawym 'rata lub public. Funkcje w VBA maga być zhuclawane z użyciem parametrów |rw'any-1:11 da Funkcji. Padpragram ta zestaw instrukcji urucharnianych z paziamu ji jw naszym wypadku pragrarnu Access). Padalmie da sub. pa sławie kiuczaw¬_ym
l I Í
tían występuje identyf`1katar funkcji. a cała iimkcja zakanczana jest przez and j an. Na tym kańczą sie padalziieństwa Funkcja, w adróznieniu ad pracedury sub, _ pabierać wartaści. które występują jaka parametry, i pa wykananiu aperacji na da- Š pal:-zanych jaka parametry zwraca wyniki. Padczas pragramawania VBA stasuje sie l :je zapisu idenl¬yfikatarów_ np. Functian LiczbaCałkawita_ Paniewaz VBA nie jest | l 'na w'iel_kaśc? liter, ta praktyka taka paprawia czytelnaśc kadu. j "W alaielctach typu maduł mamy dwa radzaje madułów: ¦ raadui' jmaduł stanclardawyj, Iuaduł klasy. ' III|n|_' ze'i'.'i'u¦¦lnne ä
'IH
| |” Í
Hnrzcuzta bnay' danych
__
__'
_- -
-="
_ 3
l
'Elite-.'ił|ar!ar||'nuIi|-_|''
Ettewinaaa '
Ü
'fa
ß
1'"'
'
Íąliłlillarrasrarsnrtu
3-l H Etymty
-
- 'ji
l
'lfiliiadul
!
'-F i|!'_‹_'. Manu tuaiy 5 5
lnatnr Pr-:ijest Farruulsnz Piajękt Pusty' Hnaart F':uJ¬:|et Pu1l',|' hpzrzna husrzncty Iarmullsaa Iarrluiisrs 'Ê '|""""l"F'H Íł¦'|'fl'|lll'l'1Zt' ' ¦'.s¦:iartu rupart Ihztenfly Ĺ Fartuulit-|'.nr _ Ftapaity
huiaa
¦ l'Ífi""|i'l"1'l5'1|'PF : Hum i Jean '
¦| li
29.1. Zakładka Twarzenie pragramu Access
| _ |
=;j.'|2iÍa.rta zapamiętać, ze kad urnieszczany w madule standardawym dastępny jest z każdega a bazy danych Access i nie jest związany z zadnym akreslanym abielctem_ W prze- | ` da madułu standardawega_ maduł klasy zawiera kad związany z akreslanym _ np. farmularzem. rapartem, tabelą. Funkcjanai nasó mad ułów kia sy apiera sie na " ¦ u kadu w adpawiedzi na akreslane zdarzenie. Maduł klasy alcreslanega i"armu~ l Ę muze zastać uruchamiany np. w chwili użycia zaprajektawanega w tym farmularzu | " iiulzi w mam encie umieszczenia w t`arrnuiarzu danych. które mają zastać zmady- 2 3 ad razu pa wprawadzeniu. Maduły klasy nie są zatem dastepne z paziamu całej l Access, tak jak standardawe maciuły. tylka z paziamu wylaranega abiektu, którega da` ltfiazna pakusió sie a twierdzenie. ze razpatrywa ne pad tym kątem rnaduly prąfpami` działaniem wyzwalacze {triggar)_ Na etapie twarzenia kadu VBA nalezy zwró" na róznice pamiędzy ikaną dającą dastep da madułów standardawych a ikaną j się slawami kluizawyrni public i private ma szczególne za stasuwanie w pizypadlai madułów klas, paniewaz alnasla dastęp lub prncedury w obrębie akreslanej klasy lub pasa nią. W przypadku madułów siandardai'.'ycl'| jgiahalnycltj dastąp da funkcji L|zyslti'i'i'any]est z calej bazy danych 'ulec funkcje r pracedury 'a' nich zawarte są gjabalne przez sama umieszczenie ich iu ma-
___
_
_
.__
_
_
_
_.___
_
l
|_
_l_. I
__-__
220
I
lt_""i.':"1 Ü.-"'.?'~"“r`f_`Íl! I *'š`"|`F~`l`l7¦"-'l`1`l-i_-"tÍ"`_ lĹ2'.~'!'.`~l"|`I_.Ĺi'i
dająca dastęp du madułów klasy. Dzield temu unilcniemy pamyłki i kad umieścimy zawsze we własciwytn miejscu. Gdy użyjemy przycisku Maclui' klasy w lewej części interfejsu edytara madułów, zastaną \'wy:-_wdetlane datychczasawc' maduły kias i muduły standatdawe. Ta menu umazliwia uzyskanie łatwej-ga dastepu da kazdega z madułów przez wybranie gu za pamacą kursara myszy i umieszczenie ad~ pawiednich fragmentów kadu we właściwych miejscach.
eng T'-'lacluł Ê i'-'lĽII3ll.-tł lclíčlfiy' I _ 1
_l"i"""`- 3""'-75 lküflfl flłüiłüi'-1ł=li"5Y 'müdułu fitandardüwfigü lglübalflegül 'Ii.i|i___
Šfillz
Ęclit
"_i_"'ie'-ai'
Ęnsert
Qebug
;".
.II __' __-.|__ .ei
""'
Ê
Dutahaselz [I¦|iaza_u|'tel-
ià r-eiaui 'I
Ęun Ÿ`“
Iaats I'
u
gad-lns
1 Ł-I
'¿'|ncIaw
:F
Łielp
G
jlliflnurrllj Üptzan Campus: Database
MÜDUŁV STANDA
E ifi Class |"1adules
E Üfil iu
MDDUŁY KLÄŚV
lit-'s_ I-łiJ_i_ Matin-_ily klas i maduły standarclawe pagrupawanc' asabna przez prapjrarn Access
Twarzenie kadu VBA Stwórmty własną fiinkcje w Visual Basic Far Applicatiuns. W tym ceiu 1-'fykarzystarny iuladul w zakładce Twarzenie_ Pa uruchamianiu tega przycisku pawinna ukazać sie akna Micrasaft Visual Applicatians jrys. 29-5). Dasd istatne jest, aby widamna była przestrzen _ __ umażłiw1`ająca natychmiastawe sprawdzanie clziałallia
""`j
jutnduj
_J Mahm M
Müdułklāsy Visual Basi; i
ak” ma Rrfi 15'-4 TWÜFŁÊIIÍE müfiifliü Standardüwfigü
Pierwsza z Funkcji będzie misia na celu cladanie ` ` prze k azanyc h ja_ā ' k paraätry ' _ F un kcja ' Ęyarjrusci asc przez swają nazwe - 1 entyf tar z rysunku jeśli funkcja zastała paprawnie napisana. da pala lmmediate i natychmiast przetestujemy
dławy Aby ta zrabic. musimy wywałać name jąc przy tym parametry. które chcemy dadai-E.
która ma zastać wykartana. paprzedzamy (P). a całasc aperacji kanczmy, naciskając Enter. Warta zaznaczyć. ze padczas twarzenia identyfikatarów w VBA nie ma zwracania uwagi na wielkaść liter. Fawyzsza funkcje z pawadzeniem w następujący spasób: '?DaDawat'l:i.e'i {5 _ El} . Fadczas stawiania pierwszych kraków w VBA w pragramie Access kazdy ny macluł ma autamatyczrtie wpisaną linie Üptian Cam pare Database.
PłiÜGRAMC}WANłE Ĺif"i?.'. TJANYCH W jĘ.T_'_.Yl<ĹACi-i WYBÜI'-ĹIEGŁÍ) PÜZIÜMLJ
2
NA I-*'iiͬ"`_Yl<.ł__ADZlE VBA
"
-'I'¿'I-FÍ"
.-'.-
._ _
i i' "'i."r¦"
-“' "'=-
.__._1.
_
'-' _-
_
__ _
'. " I -'__" . _
I
__
_ .
i""*.-'ll' - - 5"'-1; .'i , I I I"" -.
_ __ __
. .. ._ 'i
'I
Ü Ê Ê°""“ _
Hefin itian
I
_
_'_
_ .
.
-
' -'Il'
ÍÜÜŜ
ifttj-
Qbjcct Brawser
[J
F2
Ctrl.-G
I
Lacals Window
. .-l .'|'ą
.'=
1 ši
_ -i |____,____
__
5l"$ift¬-F2
___ *Cl lmrnediatewindaw
__
-_'_
|
ai
__I.']-
_ .r _
_- -- _-
EE &'_›_„_'}$*_j'-_?,|'f_:.'~" _Q i_.~.s_c‹=|1
Šluit- H
Lab! l':"r.'-stllr.'.'jj|_
'
. ., _
_. __ _____. ___ _ __-'__'i.-_nt _ _ fi__-u_-___..«_.'~___ __ '±.__ “~' __
j
Üpt: za III
I""¬ '_"'|. '|.|
_
i-*r-*Ł-`~I: “'.' `-'E2-:5-'_ i -_'z'-'"'l'.' -'-'._'.' _--_._;'I' f:-'-'-'.=f'_-ej' 2..-_iI'-_1;';~"i"-.i ""-sj:_i:¦:ati;"-' -r'tj.'-'tissjj-.--'. -;:"':¦-'. -:¦' 'i"i ..
Fi'
fJ,l_.11cc1
(General)
_ _,::"_
""I'.' _______ -___
_
_
__________ _
_ii Ĺ`~_i:¦`. ĹI_i '_i _iŠ3__'i-Ĺ'_i _-7_'iI:1i_ÊiI_i:¦` -_ EŠiI: :¦Š?."-'51
'.ÍaH- 'E.t.icg_ .-
ciut-L
Erajeci Esplarar
Ctrti- R
_jjšj gi' Prapenisiwinaaw
ta
___ _ _
._i§j.;{f:`.___i=i:1`i-'z`-
'_ `.:¦`
_ ._ `=_
f
f.29.5. Ü1-:na edytara VBA 'I'
__
'
-ut
fiatttlßajjşjata ?F¬'InF_l¿fl±
I-I'In'H-\l¿Ii'ën
lüaneratj
niz
Żalhßhn
251: ian Catapuze l3'a1'.1ab_as_'.e Pflbllü Functian dadawunie[n, Y) dodawanie _ (3 + yj End Functian
l'
29.6. Przykładawa funkcja w aknie edytara VBA
Ptrhlic Funtati-an daciawflniciat.
Y)
dadawania = tz + yj End Functian
'=' 11* ' _ ..- . _
_ .
_ . _ ..
_ _
.'.
,
_
. _
_.___ _ _ ._ _.
' ' __. . _- .. . .. . ____
_ ' ._.
_._ _ ._
A ' _.
_.
.
_._
'. __._
' ' ' _____|___|_.__|__________ | ' " . . ' _.____¿___u__,_|_í_.__,
?daduwan1e[1z3,3z1) -
'Hd
I.29.2 Przykład działania funkcji VBA
Instrukcja Optian Campare akreśla. jaka metada porównywania łańcuchów zastakuzytaw abrębie madułu. Diatega musi być zastasawana na samym paczątku przed stkimt pracedurami i funkcjami. Dastępne są trzy apcje: Binary. Test. Database. Ÿiilpcja Database maze być uzyta tylka w pragramie Access. Parównanie łańcuchów uza__ _inne jest ad parządku narzucanega przez lakalne ID bazy. ______t_Í)pcja Binaty - porównywanie łańcuchów - apiera się na binamej reprezentacji zna pw. Natanuast apcja Text aparta jest na lakalnym ustaleniu systemu. _Sława kluczawe publza aznacza. że pracedura jest dastępna dla całej bazy danych.
_
BAÊ"'i' lII'Al“'i"i`i'_`_l~l l F."rI5TlÊi'y1"i' BA.Íf'_ [lAi“¬i'“i"L__ł-I
Sława kluczawe private aznacza. ze pracedura lub funkcja dastepna jest tyiku diainnycb pracedur i funkcji w tym samym madule.
Ükna Immediate umazliwia wykanywanie abliczeń w trybie interaktywnym:
? Eiffi 35'
Rys- 29.3. 'Wykananie działania matematycznega w aknie edytara VBA
Pa wpisaniu '? 6*E i zakanczeniu aperacji przymkiem Enter pragram wykaria ablicze-' nie. zwracając wyuilc. tak jak przedstawiana ta na ilustracji. Gdy utwarzymy mudtlł. za pamacą przycisku Zapisz - jak zilustrawana ta na rysi_u -" `-'*
i'
iii-.iiłli "'i~.i'i.'l łí_i-_zi |Ii›i_ .l`j._i[_.'¦¦i_._i¦_1i__i|;|.;.
ÊIH' Elite
Ę-sl-lt
j'|rj_euir
[ns_i'±i't_- Qciaufi
Łii1f_'±._¦i _l.|1'-!|z|i_'
Elan
Ê__""¦lä* R fi__ _-'L-1! ii"__'i'ü 'Íi 'F' _ El
i.±l¦_iif'i - |"'I'i_ri:]1J|r'I |:'l_:|¦¦'|}1j!
_[auta
Add-lns
flindaw
jjela
_F A ii li äi.-5' '51' '* Ü -.!.ii.a.I--c_i=i 1-
acl|zniai1[i\Ľ'HEHA[H}
_ _
-
izi r:|i-seemrrucsedazsaeyszis
-
'
[;.,_LJ- lj Hclziules Ü Class i'~'t=ai:|u|i:is
' j|¦¦'tE^"'g""'*fl'i'__i1'ii:|i:li.il
I-T1-Ęaaiiahasetzthaz i_iiiiietetabeu _
izi i'3_~_ii ›i.sii.i±.-._
Ij
_
‹i=¦=¦inzI_iiie1
Rys. .`-1'i.i_'El'_ Zapisywanie muclułu VBA
mazemy wskazać nazwę dla twarzanegci maclułu jnp. piiaz'i'raa'_'¿*__u1ad.ulj i w chwili uzyskaiř da niega dastęp za piamacą menu abiektów.
Ęitil-'i-'."-i=
_
_
_
ii-
E """_r'="'e'_r-"'¬' f""'i"""" 5 Ę:i:i¦ii;|
nn w ae
Tabela |='ra_|'i¦Łt I.ii|:_i|i' |:ii'i:igi'a|'i'tu
aplikacji '
tiiiarli
Szzib-|ar1'_.' Í
5l'iiir':Fi:ii'it'
li'.r±|.ti:ir
l'Ł"iii'Łi'atid='_|i'
'
'“'
E Ci
Farniurarz
P1-ujeiit
Puslzy
Fl'a'.cia
fnrmuliiizli ruirnuiiiiz łāI""""'¦'='H "='"T"-'ii'"1¦|'f '
'
'_;"-'-e¬'s="'_;'_-
.._.¦_
1i'i"y'|rliicicr~'iIcj.r_z.u_iccla
5 'n.'yiiii=u-u.-sf
_
Farhiulaizc
_I1-
_wşzyslht atiiiilini- pra-gcatn_u ...E1 H
'
Prajeht
iii'-iiininia su-'standy ¦
Tltiule 11.-.Í
"- ¬
"""_"'="*"s""=""=_'f""'-A' _ _ _
ĹŠĹ'-_jj¦_Š I' IiII
____.'.".
--'-'.`- _t-'_ 1-. '
_____=__ -__
__
__.
___
__.
__
_
_ I|I'l"l"'-"ł_*""i|i'|l"¦""""`l'
_ E
|i"'.|'¦.i'|i:|'ricla'i|-i'i¦:y
...EĘ
|:i|eiriii.i-.i:i:|.i'_i'rii:i'i¦|i.iI
__ -te .l
'""'¦
_
fi I,
______
I
jwirfll _
Nariuisiia
_,_._i
'-'-
' l'
'Ê Ia_|eci-ii
-_____._______i'___._,__::
II _
_____
Haii'-.i ak
iityi-._ ł'_~l_1'L'i- Uzyskanie dastępu da madułu za pamaca akna abiektów pmgramów Access
_ _
_
lI"'l‹lÜ'l'.]i¬i__A_l"..'[lĹ`l|'l.l'.. "i.`“~lll
FAĹ iĹ`l'A"'¬.`i'¦Ĺ l-l W ]lÍ_..7"`l l'-.ACH Vi"i"il'.ÍJ|l'i.li_'l.'.i'Ü l"lÍ_l.-ĹlÜ'l".›'ll_» "~.""'. I lłE`“rl~.lAl`J'.Ÿ"lF ". BA
ntaize VBA pracy z madułami VBA bardza pamacne jest kamentawanie kadu zwłaszcza
działa w abrebie bazy danych Praca z gatawynn niadulami jest a wiele łatwiejsza. __ _ acl jest apisany w kamentarzach Fiamentarze w VBA razpciczynamy ad apastrafu ny naciśnieciem przycisku Enter Prawidława skanstruawany kamentarz bedzie tyczrue aznaczany kalarem zielanym i ignarawany przez kampilatar Ľczlp-p__IE Ducagase Sim t"l¦ci3jaE'::cri:e'cii.ini|¦]i __
_
__
ca ;ie:i1:. ii.'i:ii:ii-i:i'i.t-iiizz zai:zyi1isa_,ąey .szer act apanczazu 'i-' cr-_. ¿¿cri.ti. 1cai¿¿z_. sie ;pracedura
cr E"u:iiic:1:.'i.cin I'!a]aĘF'i.|±iił:i:;jnt]i
zadelclnras-rana _'ji:z1: fi.|..nIi'.'i:"'u a ialencyfllcacar ie
Ha i:iF_.tezĘ
l'tmc'l.'..'Li¦in
1911 iíamentaize VBA
danych w VBA daje mazliwciści deklarawania zmiennych w lacze Üznacza ta ze w mamencie. gdy
jakiejs zmiennej wprawadzając da niej akreslaną wartasc. zastame autamatycz
kl arawana. np z = a + b będzie delclaracj.-_j trzech zmiennych a. b ii Nie ma kadelclarawama zimennych jak np w jezyku Pascal. gdzie przed uzyciem zmien iiaiezała akreślic jakiega będzie typu 29| Typ'3' dan IF ch
Ruzrniai' Il bajt
Liczby całkawite ad Ü dci 255
Ebnw
'Wartasci lagiczrie True (prawda) lub False [fałszj
2 bajty
Liczby calitawite ad 32 i"Ei3 da 32 FE?
4b¶w
Liczby całkawite aci 2 14? 433 EAB da 2 14? 433 E-4?
4 iiajiy
Liczby zrriiennaprzecinkawe pajedynczej precyzji ad 3 4üE323E3B da 'l 4Ľll."!93E 45 dla wartasci ujemnych ad 1 -=l'Ell29BE-=l5 da 3 4ü2323E3B dla wartósci dadatnich
E bajtów
Liczby zmiennaprzecinkawe padwójnej precyzji ad l i"9i"l593l3-435231 EEDS da -4 94055645341 2-'=li"E-324 dia wartaści ujemnych
_
_I
ci-cl 4 Š'4Üfi5fi45B4IlÊ'¦l'Í"'E 324 clü Il ii'B'ÍEB3Il 343fi'ÊBF.E3Ü3 Ella 1i"ii'.t'lI'|IiD'ŠI:|
dßclatflicłi
B bajtów
Duża precyzyjna liczba maze zawierac li-I cyfr. w tym cztery na prawa ad przecinka Vifartasci z przedziału ad 922 33? 2Ü3 535 4}'}'5B1Cl3 dci 922 33? ÊÜJ 635 4?? SBB?
1 41=›‹_' ajt_'.w
_
Bardza duza. bardza precyzyjna_ liczba. maze zawierac 29 cyfr araz da 23 miejsc na prawa ad przecirilta *iltfaizasci z pi'zedzial'u +ƒ ?9 223 152 514 154 33? 593 543 950 335 bez pizecinka dziesiętriega +_i'-Í 92231E25l't-254-33?5tl3543!i'5i}335 z 23 miejscami pa przecinku Najmniejsza wartaśiř niezcrawa ta
na um mi
m
I
l'lA.'_'Í"r' l_I_"'i i"i`i"í_H [ ':i`i"':i'l"|;`ŠVl"i" BAL-Ĺ Li."'iŻii`i`L`ll
ans-
I ii `i:i a'ju_'i ;'i
batj' 'i gaiizrny;
j
Il
Übject
; string
` ia lÜE|'diii 31 'gi"udriia'9'El¬!"?§
4 bajty
Dawalne adesłanie da wartaści typu Übject
ró -tiajiziw +
Tekst-is zmiennej ałagasei -aa ii aa iz wslisraaw -znaiiaw
liczba -znaków I I
.j-._-._ _ _
String
Liczba znaków
Tekst a stałej dlugasci ad 'I da E5 il-iIl'lĹ`i znaków
Variant
15 bajtów
lfiówalna 'i'ira'i*tci'sif iliczbiawa 'w-z'akre'si`e iiikreślariym 'iilla typu Iii'-'F'
Variant
22 bajty + dłu-
Taki sam zakres jak dla zmiennej długasci typu String
gasc ciągu
iüeliniawany przez
Lit:-zba wyrriaganz przez
uzytkawnika
elótrrërdty
Eakres 'kaiżdega elementu jest 'taki sarn jak -zakres typu danycli --11: 'e|¬errieril:i;i `
za jiicirnacą strulrtury
Tin'
jesli chcemy. aby zmienna zastała zadeklarawana zgadnie z ustalanym dla niej wówczas używamy sława kluczawega diiii jdiinansian - wyrniar`_i_
ş"'”§:" ;;_
.- _
Eipcian Caisipsire iiucisbusin Clpt icin E:-11:' l.1`c'i I; P1.iJi:il.1i: F1.mc.'c.1an ceacljpaznmecc .lin Incagez] Dim müj&Em1:nnfi A5 Intnger
mcijnřrnienrie. = E I"
Ľ-EĘIĽ-1
"
IIĘIBHIEĽĽ
rl' I[lI.Ż|:|EI.ii'.I1¦i1E“1'Ll!1.'tl
End Funfltifln
Fcencljlzj za
Rys. 19.12. Deklaracja danych w VBA
= _ _ 5 2 I j
f _
Pawyzsza 'ilustracja prezentuje zadeklarawanie typu integer dla zmiennej inicijaāiiii. wewriątrz fiinkcji teistl. VBA daje tez mażliwasci definiawania własnych typów przed zadeklarawaniem .in _ nej. Delclarawania zmiennych dakanujemy. padając identyfilcatcir zmiennej (pie ' znak idenlyfikatara nie maze być cyfrąj araz sława lduczawe Asi. pa którym wyst 'i _' nazwa wybranega przez nas typu. który będzie adpawiedni dla wartaści przecł'ii'2iWjf"i"ia . -.. w zmiennej. Gdy piszemy pragramy w śradciwisku VBA. ismieje mazliwasč. że nad przygut _ przez nas bazą danych pracawać bedą inni pragramiścl. których zadaniem będzie nt ii fikacja kadu VBA. Dlatega warta. twarząc iclentyflkatciiy zmiennych prcicedur i ii stasawaó pewną lcanwencję-_ Wprawadzeme reguł w wybarze nazw - ident'jfłIikatóró1'r"` zmienriycli. uzasadnia sytuacja. w której jesteśmy zmuszeni edytawaiž l zmieriiaif -:-_=
' I kod pa kilku latach. Zasada. którą zaprapanujemy nie jest nawaścią i na pewna .ii "_ l |
J .
__
-_
-_
_-_
--
lWHHHBAhHlWAbHF BAÍlŁANYCll¶fjĘÊTHAC}iŃVY5ÜHlEG[}PüB|ÜNHi -Å
_-Ż
...___.--'
.
---
.
-...
_
._._-
_.__-
_
:__:
..-_---
._..--
NA_PREYHŁAÜIlEVBA ___-__-_-
__-
_-___-_-
,,.___-_---
___
'_
. zwłaszcza bardza skómplikówanegó kadu - nie tylkó w VBA. jeśli twórzymy ident óry dl a zmiennych. `którym " nadajemy ' ` typ. warta użyć trzyznakawegó skrótu nazwy zmiennej. pa którym występuj e dawalnie wybrana przez nas nazwa. np. zniiannal _ dem stósawania takiej zasady dla zmiennej jzmiannalj typu: Byte. String. Date. następujące identyfikatóry'
einnal . strzmiannal . datzmiiannal _ -Łatwa zauważyć. że gdy zachadzi pótrzeba użycia zmiennej. ta sama nazwa pódpawiaznam. jakiegó typu jest zmienna. Clprócz zmiennych mażemy również deklarówać stałe z użyciem sława kluczówega Używamy w tym celu następującej składni: cianst idsntjgfikótór stałej As typ _
Przykład deklaracja stałej .1_i‹:.z1aa_zawóc1nikaw:
_
st lic'.zba_z¦awaidn:i.kciw As Iritegiaiir = 112
I
Deklaracja stałej w przeciwieństwie da zmiennej pówaduje. że za pamócą identyfikaadwółujemy się da stałej. której wartóść nie maze zastać zmadyfikawana (tak jak -przypadku zmiennej) i próba przypisania innej wartósci skóńczy się n_iepówódzeniem_
blice w VBA pózwala również na użycie tablic. które deklarujemy padabnie jak zmienne za pa' sława kluczawega c1iii'i_ Różnica w deklara C]1" t -El bl'ICY PD 1 Egål I`lEl l..lI`lŻ11'lí'SZCZ('i'I'11l__il ` ' PD atórze tablicy nawiasu. w którym za pó_mócą liczby całkówitej akreslamy. z ilu
entów będzie się składać tablica. jesli twórzymy tablicę da przechówywamia wartósci String. które będą dniami tygadnia. zadeklarujemy tablicę za pómócą kónstzukcji: Dim maja._tabJ.iaa (7) As String. Przykład użycia tablicy prezentuje póniższa ilustracja. Sanarlü j üppian Campac e D a tan ana
_
Public Funacian HajaFunkaja(pacameccz as Inceger)
j Dim Ľabliaaj7l An Btrinq l tabliaajll "Paniedzialek" l aahliaajżj Ń "flcarek"
i esniieatai tablinajsj _ t:eiJcil:l.c'iaĘ5j _ tablinalól ''I tah11nai7J
I
Ĺ
ll
rrśrüdarr
Ż
"Czcuartek"
_
_
"Piasek" "Banana" "Niedziela"
'
HajaFunkója = caniiaajpazameceaj
j
End Functian t 'l
?HajnFunkajajBj Htarak
i
29.13. Przykład zastasawania tablic w VBA
`
Tablice wielóelementówe twarzymy. óddzielając przec_inkiem_ padczas deklaracji defiiówanewartósci elementów dla każdega z wymiarów tablicy: j- im ta.b1iaa_dwuwymiaz'awa (2 . 2) .As Integiz-z' -' Ifstótnym zagadnieniem padczas pisania kadu jest czas życia zmiennej. który zależy ad i.l'i'iiejsca jej zadeklarawania. Ź
I
..-
__
_
-
-
.--í---
ií-
-;ji
E.-*1.?Ź`1 ĹI'.'1'tt~."r{f,iEI5`1í7'TĽ“‹.'[" EE-'ŁÍ D"'.`\'J`“|C1¦|
]cśl1 zadcklarujcnfry mnlsnnc wewnątrz prnccdury lub funkcn wówczas dna zrnicnncl będzna' mnzna uzyskac tylkc- z procedury lub filnkcu, wcwnąnz ktdrc] zadsklarnwana (np zrnrcnnc :"¦ 1 y na Ituatrac]1} Icslr znncnna znstannz' zadeklarn ginbalnrc - znucnnc wzzk 1 :|.rn:|.n , wdwczas dc-stęp dn n1a| rnnzna uzyskac z I miejsca wpnsywanagn kndu {[Gumu1ü _.|'
¬1|`¦"l¦ L'
üptinn Eumparc Database
|
'Ł' '-
'
s-5-'Ę wpz1nn Ezplrnzc
. 1; 1' Ĺqf;
Dam filek L5 Incflgar
Fuhllc 1m1c as Etrlnu
-'Fă
uåfl
Fnhllc Hub nrncaduratpnrnmétf as Integerh Dam z an Inceqnz
" .1'
`'ͦ¦¦; =-'±-_*_.'.fl"`. „'-`_ .r _.
| - -"
|| li
II-
ws li
›1
End Sub
Puklac Functian nnHa_funknjn{nazum=tr an ÍEEĘQĘEJ 9 na Incegez
.-'. l¿'.
-fit
Enfi Functlfln
Itys. 2*! I-ft Łmœnns Inkalnsu glnhalns - spasnhy dafinmwanta
Na tym ctaprc przystąpamy dn twnrzanra prncsdur 1 łítnkcu Zdarza ¦¦=`t'řÊYŸU"=1'ÍlEYPÜ sr s e, d dczas twnrzerna kndu P 1sana P rzcz nas PÜFT1 pad cza Inna dnść długa Ha tyle długa, ze rue nnascl srę na ekranu: Üczyvflsclc lntcrfcjs VBA wia plsarus nawet hardzn dhlglch llnn ]ednak aby ]c przeczytać mus 1 rny pn s'tu grwa przyclskrcm przcwnanra u dahl uI'cna Aby pnjcdyncza lrnra była knntynunwana nd
wiersza tak aby w całnścr była wldnczna na ekranxa, a knmpfiatnr zastał pnrrrfnrmnwany knlcjna l1n1a kndu tt: kuntynuac}a püprzsdnre] {a n1c nnwa l1n1a} stnsujc' słę znak ślcnía _ [undzrscnrra Żaknnczcn1t-1-hnu w VBA następu}c' z chwüa przs]scra dn knlegnej przez użycrs klawisza ENTER Wówczas knnlprlatnr uzna|¦-1' hruę za zaknncznną Przcśladźrrly tn na przykładzrc Dpcinn Ľnmarn Dazannae _ _ _ _ H Puhllc Fun:a1nn pubßddananzzlzntāmzznnal As Intaqaz. zntłmaennał hu Inteqerj puhüudaflanac I zntłmzennni + zntāmicnnni End Funccinn
Rys. 2915 Przykład kndu VEEŁ
Lima rnzpnczynajaca sa: ad Publzc Functian ;est dnśc dluga Sprúbuşmy ją na dwa wrcrszc kndu, stnsując znak pndkrcshnka ]ak 1Iustru}c przykład na rys 29 16 tcc1'u11ka knntynuaql 11nn przez stnsuwanlc krcślruka dzrała bez zarzutu Pnznstawrcnlc na knńcu luan podkrcślnlka 1nfnrn1u|s knmpflatnr. ze llma nic |cat knncznna 1 ma ]ą knntynunwac nd kcwtqncgn ¬w1crsza kodu ' Gdy dekłam|smyzm|en|1.ą wraz r nl-:reślsnnem Je] rasuęgu - slowa Itlucrawe puhl :i.c'.. wawrzas me u1yfi'amysłmuaI¦I| Imiennz za|:|a'k|arn'|'|'ane ginbalnle | punrfinna słnwcm Hucznwym przvltfi dastępns są t'_|'||tr:- | '.\"_|'łą'|:zn|a' wewnątrz
w którym rnslały radeklarmnnne
j_ PRÜC§Hif'.1'y'iLii‹"L"_'ü„|`~ilE H.-“".Í"Ĺ DANYCH W IĘŻ`t'i{.¿".l'_ÍH ".ir`TSÜi'ĹIEC1t_JF ÜEIÜTVILI NA FRŻ`fi{Lri.iŦIi'ŜiE VBA
pani”|'.¦o1or.-io Butnnlle
Public runoezon :_
F-
"_
plahflodaunntetinisłlzemul Ju _
Lnceoez, innlrttennla Ju Inzeşezi nuhßodrwutte I _i.nt.1tl1e:|1.nn1 _ + ancltna en-Dal End I"1.tno¬|::ton :I
4
.___.._____L “
""
_
""'
-*
_
?:|HlI:fI1\o'¦I.ltr'¦n.1.l¦['l',".I']
ts
Iultí-_ Zastosowanie p odk re si ni'k a w ceiu przejścia do nastepnego wiersza edytora E . _ rn ciągłości kodu
kluczowe ME -jest odwołaniem do obiektu w kiasie_ w ktorej w danym momencie wykonuje się koni zastosujemy słowo mo z kropka, np.: nie., pojawiają sie podpowiedzi dostepn ch if _ metod jw ramach tego obiektu] oraz nazwy obiektow podrzędnych. psmsfl _ łü _ _ _ _ _ wanie s wa nas jest zalecane. gdyz przyspiesza prace 1 redukuje Iiczbe błedt'iw_
w VBA pozwala na stosowanie petii Do while. āšfitruktura Do Hhile stosowana w VBA rozni si od ch e ty znanych z języków: Pascal
.zy przypadek, ktory rozpstrzymy, to konstrukcja: .I.
Do Hhile [warunek]
Do lJnt._¬i_1[warunei‹:]
instrukcja pierwsza
5 Instrukcja pienrrsza
Instrukcja druga
I Instrukcja druga
Il'lI
-pfq
Loop
5 Loop
przykładzie kodu VBA powyzszy schemat przedstawia się następujące: Cg-_r|p.n1-E I1a1.:o_¿_=aoe -Flahllo Function przelot: lu Lnlzeqerl "';I'1.n1irr:-Ša poízaera -parametr 1_zedei:1'-s::o1.ra.rÍ5" ;ofe rncleizez. 'Ilo ll¦I1:l1|± I 'c ¦|.Dt¦| 'rozne-częste 1:-'pala bo iiizctle 1 oiu' '1 -_J I it + :Lu Iñop
'anacrokojn wykonywano 'sr ['onł':j_1_ na :nan warunku: n s IÜÜ
pablo 1' I ;ud I'|.1_ot:c.'ton
'funkcje gdy wartość: parametru będzie mniejsza oo IDG 'dodaje za pomoca pech. wartość Io. 'Pn wykonanych znstrukojacn zoroez Hazcoāo z
'slowo kluczowe Leon uzuwcne _ }e:o do zakonczeniu kodu penis Do Hhile
F. Przykład pętii Do While w VBA
wariantem tej pętli jest zastosowanie Until -|
.
--
-'.
._i..
__
_
,.___-
._
E._¿"tE"t' DAHTĽH I SYSTEMY E-.ftł ł`_ĹI.~"I'|.I"~.|“r"C|-| ml-I__-D11
t:I|.r:u¦'| 'Dennis-oiu DHŁIDIHĘ
Publro Funocion peelntx no Inceoeei Do Dncíl 1 o 1Dü 1 = 1|. + 1D
Loop patlctflrt Ę.|:rr:lE"|.rr:||::-'l::icr|:t
r' í ,:__
|'
-
-
_|_|_í___|._'_'i'.|'í...,-.
'
_.
'.'
._
1
1
:
.
_
speers rar sos Rys. 29.13. Przykład pętli Do Until
Q SPRAWDZ swoje UMIEJĘTNOŚCI `I. Dlaczego znitieniliśrny warunek rc sf. lüü na rr. Za' lüü. aby przy pararneizrze
wym 9 i`unkc¬ja zwróciła wartosc IÜEI. podobnie jak w powyzszym przykładzie? 1. jaka jest roznica urir-;dzy znaczeniem słów Iilhiler ii'Jnti1? Warunek mozemy równiez umieścić bezposrednio po Loop. gdy kod bloku rozpoczniemy za pomoca Do. Do
¦
Do
_ Instrukcja pierwsza
Instrukcja pierwsza
Ż Instrukcja druga
Instrukcja druga
Loop Until [wa ru nek]
Loop Iiihilo [warunek]
PłłI¬I"lĽŁ.ltD 15-1 Dpzion Doqgorn Dutuhooe _ Public Function petlail Lu Inzegerj Do 1 = 1 + 1D Loop While l c lflü petlu - Ľ
¿
End Eunozron
Rys. 19.19. Przykład pętli Do... Loop Wliile...
ł
W powyższym przykładzie biok instrukcji pętli rozpoczęty został za pomocą słowa czowego Do . po którym moga występować rnsŁrukc|e ' ' wykonywane za kazdyn'r
t
`
-
pętli. Analogicznie do powyższych przykładów kod przedstawiony na ilustracji zawiera zrnieniony warttnek rr: Za' 10D.
l
iZ
_I
l'RÜGRr'tI'yiÜil“.-'EHIE BPtĹ›'!'Í i_If_'“'tI"i"r"Cl'| "tT‹" |Ę2Í`i'iĹ."'.Cii "J.""i"5Üł'Ĺ|EGÜ l""'ĹÍ|".í'“_Í|lI`Ż'|'¬rl|;.l :`""I|~”". I""i'l.]r'Ĺ"r"i'=-Ĺł_.fitlJÍt'ͦlÊ "t"H_'-'t
Qgtion Cgpare Database ___ Public Function pctlatn na Intcoccj Do z I n + 1D Loop Until z o lüü pctln = 1 End Function
29.10. Przykład pętli Do Loop Until
Dość często pętie zawierają instrukcje o charakterze zabezpieczenia, lnóre dbają, aby nie przechodziła w nieskończoność jzapętlenie programu). W takich przypadkach umieścić kod, który zakończy działanie pętli (wyjdzie z pętli).
.Rozważrny następujący przykład: 'Option ¶a_r:e Database
Public Function petlajrt na Integetj Do I I n + 1D
If tz: =' 55) Then Exit Do Loop Until 3 3 1DD
petlo I rr End Function
19.21. Przykład kodu VBA z zastosowaniem warunku logicznego If
jesli parametrem wejściowym funkcji będzie 2, funkcja zwróci wartość 11232. natomiast parametrem wejsciowym będzie 9, wówczas instrukcja IF js =5'I-i] - jezeli z jest równe *otrzyma wartość true, tzn. zostanie spc-tniona i wykona kod Errit Do, co spowoduje z pętli i zwrócenie wyniku 59. Wyobrazmy sobie sytuację, gdy kod wygląda następująco: tion C e Databaae Public Function pctlajn na Inteotri Do z = z + 10 Loop Until z I 1DD Doblo-= n End Function
Ípfitlllül lflfl
.'-ran. ko.-I funkcji yes "Gdy wprowadzamy wartość zero, pętla dodaje kolejno wartości ID - czyni to dziesięe - do czasu osiągnięcia wartosci 1t}ti_ Gdy ją osiągnie, wykonany zostaje kod til :tt = IDD oraz potla = rr.
"
-Co się stanie, gdy np. wprowadzimy wartość jeden? Na kolejnych przejściach pętli r będzie osiągać wartosci 11,21,31,...,Et1,i{i1,111.__. Poniewaz nigdy nie osiągnie równej IÜÜ, dojdzie do zapętlenia. -
IIr'....-.-.-.-ii.:-..
.
_L
iEI..'*'ftI'Ĺ`r` Ei'."l'ti"~š'i"i.Íl-i I 5`r`!'lTI:ÊI"~'i"r" E-_*EE D.""ti'~I`“r'i.ĹH
qption Compare Database ___„fi„_ Public Function petlajn na Inteoeri Do
z I n + lu Loop Until n I lüfl FIEĘ-IH I .l'¦
_
ten Function
=
_'=2-
r
___ _ ""'
' =
'
`
-
,, ,,„,,,,,,,,ą., 1-="i'¿'=_-.«`*.PÍ-'¿='Ÿ'.l ,¿,,,„,fi,,,,,
Inetlailł
!Ĺ"ss¿ze_Í [ fi¬'='___I IE Ľ- 'rr' I Rys. 29.13. Przykład funkcji, w której _doszło do zapętlenia
Stosując instrukcję Ertit Do, mozemy opuścić pętlęi unikać sytuacji, w której modóby dochodzić do zapętleń_ Dzięki tej technice mozemy opuścić blok irntrukcji Do, zawsze gdy zajdzie taka potrzeba. ÜEEłEE„EEEEŁE_E“FPP“"=
Public Function netlat: ze Inteoeri Do n I I + ID If [3 }= 1DDDj Then Exit Do
-
Loop Dntii n I lub petla I I
?pet1o{2j
IDDÊ
I-tys. .'›łEi_.`Ł‹t_ Przykład kodu VBA z uzytiem EEIT DU Ürnawiany kod mozna wykonać równiez za pomocą pętli While iiiiend i wówczas
dzie mieć następującą postać: Public Function petloin ee Incegezj Ubile 1 c- 1DD I I I + 1D Hcnd pctla = I End Function
Rys. 29.25. Przykład pętli While Wend
Blok pętli rozpoczyna się od While, po którym 'występuje warunek. itolejno wykonytli ny jest blok instrukcji pętli zakończony słowem kluczowym Hencl. Hhile [warunek] Instrukcja pierwsza
Instrukcja druga Wood
. I
I
Fl¬t‹'I_"ii."_il3l.'*'r|"'-'IiÍ_ÍI"ó."'i'f'ii"~.¦l|`: lirfil |ÍHl'ii*\i"t"'L`il W j_l¬j}'I"r`łf-'..¿'tl.Íl-l `W`i'E`itIil'~Í|i"*`IĹŜlÍ_`l Pt`JĹE'_'.liÍJ?~f|Ll ?‹i.f't I-*lll'_'Ĺ`r'l"'Ãl_r5i[i`EllŠ` `*‹`E›Pt
Kolejnym typem pętli, bardziej elastycznym od poprzednich, jest popularna ¬ znana języków programowania ~ pętla For. Po słowie kluczowym for występuje liczlrtórego zadaniem jest określenie, ile razy zostanie wykonany blok instrukcji for. Public Function netlat: na Inteoezj Dim y na Inceqer Fuzjy _
'Il
Holt
1D Toşn
_ I I +
"
'_
H-|okntsb'irk.cjiFcl' rl.kofi'r'.t'ii|:ry jairtdowaoi l'.l'r.|-r.*r'|i|w¦|.-'|'|1 Hut
petla - rr Eudihuumdon
19.16. Przykład kodu instrukcji FÜR
Podobnie jak w przypadku pętli Do While Until, w wypadku for równiez mozliwe wyj ści e z pętli` za pomocą słowa kluczowego Ęitit. słowo ' po którym umieszczamy ` For - Eitit For. Analogicznie do Eitit Do przed Eitit For równiez powibyć umieszczony warunek. np. if rr = 1D Then Estit For.
| |
Eption Ęggpnrc Dntohone
Public Function petletit na Intei¦er} Dim y nn Intcoer For y I 1 Io 1 If Z I lü Ihcn Elit For n I I + 1D Holt petln I I End Function
29.22 Przykład uzycia Eirit For
_____, Rozwazmy powyzszy fi'agment kodu, wprowadzając wartości 9, ID. 11 (np. '?petJ.a{9}j_ Pytanie do czytelnika: jakie wartości zostaną zwrócone przez program
i dlaczego? Podczas pracy w VBA zdarza się, ze mamy kilka pętli for, np. pętlę w pętli. zaznaczyć, do której pętli for: odnosi się stosowane aktualnie słowo kluczowe bezpośrednio po Haiti: umieszcza się zmienną stanowiącą licznik danego For. Public Function petlnjn he Inceoerj
Diirr y .tie Inteoer Diiri z na String For y rtI.it
Ł
For: :Iz
To I
-|'-
Toy +
Hent I
Holt y petln =
End Function
Przykład uzycia bieirt
,
I
I
,
.
I
I 1'
P32'
id.'=`t`.]:'_"|" Dif".t'~i"i“iÍłi I *:i"r'l'_i"|¬lÊl"r1"r` E-."1't?Ĺ D."'\.?~I"t"IÍĹI-l
F'l¦tI"I' IĹŁÅD 19.1
_
_ :Ĺ
i____
Pytanie do czytelnika: jakie wartości zwróci funkcja dla parametrów od 1 do Eli?
j
Warto panriętac, by zawsze po Hart uzywac sprawdzonych i właściwych identylika Ĺ; rów. Üdwołanie do nieistniejącego identyfikatora moze powodować problemy. Gdy w 9. iinü kodu zamiast y' uzyjemy ii, wówczas zobaczymy komunikat błędu: Piiblic Function pet lej: Do Inteuezi nie y' ;Pis Inteoei: bio ii as 5 Lil; .Lo For y I l To 3 1 I I + l For: :li I l To 1;' + l I ' I Next I Helt I petle I I End Function
I
Ê
Ewrlp'-EBM:
I
Iiwati-ii Noir contra-I 'ir-rrilhieratertntt
-
Rys. 19.29. Prnrkład komunikacji błędu w wypadku uzycia niewłaściwego identyfikatora
_ j
'iifarto dodać, ze pętle nie mogą się zazębiać, co oznacza, iz pętle wewnętrzne m być zakońmone przed zewnętrzriyrrii_
j Składnia If Podczas prograniowania w VBA, gdy zachodzi potrzeba zbadania warunku i - w z od jego prawdziwości - pózniejszego wykonania instrukcji, stosuje się słowo kluczowe Konstrukcja warunkowa rozpoczyna się od słowa kluczowego If, po którym i warunek. a następnie słowo kluinowe Then. Then wpisujemy pomiędzy wamnhem gicznym znajdującym się bezpośrednio po If a instrukcją (instrukcjami) majdiijącą
” ' ; Ê
pmed End If. jeśli warunek jest spełniony, jest to równoznaczne z przekazaniem do
wartości true i zostaje wówczas wykonana instrukcja lub grupa instrukcji ziiajd =
pomiędzy If a End If. IF [warunek] Then
Instrukoja„ End If `
Dot ton
'-- -- -
Database
_
Public Function unrunelitllennfi Do String) If Ifiieflfll _ 'Ę neoc' Then warunek I 'Hpinełeå ĽteŠĆ“
'
End If
ran '_-:unctronl
= r" _ ¿._,______-__i-',_..-.'_.|., _ _;..,. ._
_._iíí__: ___-
-_---
|
Prrarunek t'cz est¦"]| opiealeś oześe
Rys. l'f}_El'ü_ Przykład kodu z zastosowaniem instrukcji warunkowej [t` Then
Powyższy program operuje na zmiennych typu string [zrriienna na string). wadzona wartość ma zatem charakter łańcuclia znaków, dlatego wprowadzana jest 'iitl (znakach cudzysłowuj. ' I
-.-.--
-Ł
'I'
á
_
Piiot:s_riisii'iiyssiii' sir osr¬ii'ci-| w jązri-:ar;H iirrsoitiscci so:.r|i'ir~.ii_1
Í233
l"iA l*RÍ`i“'l¬í.ł_._i'tL`¦'.7f'_|iE ll BA
_ If pozwala porównywać nie tylko liczby, lecz także ciągi znaków. co moze okazać się F-far gólnieuzyteczne podczas tworzenia programów dla bazy Access. I _`_Üsoby znające inne popularne języki programowania wysokiego poziomu z pewnością '.' tezyto. ze w "-r'EA występuje równiez słowo Else. Używane jest ono przy składni I:E. jeśli chcemy zaznaczyć, ze pewna instrukcja ma _Ÿ'«"~. wykonana wtedy, gdy warunek nie będzie spełniony. Działanie takiego kodu przedir ' `ono na ponizszym przykładzie:
I j
_i____ ..|;H
l
I
I
.-1 -l .F
= H
'F
Uption Ľopsze Database Public Function nprawd1[cyfrb.AH Inteoerl
Dim wynik As Etring II lcyfra }I 1D1 Then Hynil I 'podales cyfra wiersza lub rownq 10" Else Hynik I “podnłes cytre mniejszą od 1D' End II sprawdz I wynik End Function
I
'im Psprawdztăj
podsles cyfra taniej sza, od iu'
19.31. Zastosowanie słowa kluczowego Else
,_ Warunld logiczrie, których mozemy uzywac, tworząc programy w VBA, oparte są na po" _
ch operatorach:
Farsz Hill
1
PRAWDA
1.19.31. Üperatory logiczne w VBA
_
› - - 19.1. Üperatory logiczne I
=
Służy do porównywania, sprawdzania, np. czy a-b
:-=-
Czy wartość po prawej stronie operatora jest większa
-t
Czy wartość po prawej stronie operatora jest mniejsza
="=
Üperator większy lub. równy
e=
f
I Mniejszy lub równy
-cs
j
Rózriy
AND
Ę Ę
Logiczne i Å
ÜR.
4. .
¦ Ê _
__
. .
| Logiczne lub'
NÜT
IDR
I
I
Íaprzeczenie
I
|
5
iii: or Alternatywa wykiuczająca
I H
_
j
_.jj _
BAÊTIIANTĽH I5T5TFMk`BA?lLzMTĽH II
Uzycie kilku operatorów w instrukcji If moze mieć nmtępującą postać: üption Ľomare Databpg5m_ Public Function spraudrtcyfra na Incegerj Dim wynik As Etrinc If [cyfra c lub and cyfra F PD] Then wynik I 'eodales cyfrę r przedziału od Do do lub' Else
*
wynik I "Podales cyfrę poza przedziałem' End If
sprawdz e wynik End Function
Rys. 19.31. Przykład uzycia kilku operatorów w instrukcji If
użycie case W VBA mozna strosować równiez instrukcje wyboru Case. instrukcja porównuje zmien' ną pod kątem występujących w bloku wartości.
I'{onstrul
_ Przykładowy kod. za pomocą którego mozna sprawdzić działanie instrukcji case w VBA, ma postać: Ešme"
`
'"`“_"T
PPP 199 "-`*=¬==='t=:'=== '?e_=_eees's_
Public Function piotrektcyfre na lncegezt
Dim HfniĽ_Ls String
Select Case cyfra Can: 1 To IDU
HPDII ' 'püdllee fiertosc od l oo IDD ' Case IDD To Edu
HPĽLI 1 'podllcs wartosc od lub do Eno' Easc EDU Í o IUUD wynik I 'podalus wartosc od sun do inoo' End Helena piotrek I wynik End Fühdtioo
rm '
Ppiottektluol
`
Düüllfifl HĘIŁDJC od IUU do EDU
II-III
_-H-;|
iłys. 19.34-_ Zastosowanie instrukcji Case w VBA
Powyzszy przykład pozwala pmeśleüić działanie Funkcji Case dla wartości mieszczą-_ cej się w określonym przedziale, np.: fragment kodu Case lüü to SUD wskazuje na:przedział dla zmiennej cyfra (Select: Case cyfraj. jeśli zm'ieii.n.a cyfra będzie ._-'
ł
F'ř`‹“.fĹ1ł.'_łi'"~'.f*".f'~„!'ĽÍ}"F«".L'~.f“~¦lI" |-1."“'.? ]`!.~'*'.i'~¿"r"Ll'i W [ł:_".-5"'.`1["-'..f"'.LÍ1[ł'~'łf"!|:"Ź¿.~i.Í.`!E'f„lłÊ'EI„'Íl' P'¦Í_}Í'ÍIÜł"-«'1LE `.`-1.fi'. |“ł"'łE`1"ł{ł_.›". Ĺ`J`.3"`łF "»"`i¿i.-“L
ewywać wartesc z wymieninnegc' przedziału. wówczas zóstanie wykonana inja znajdująca się bezpośrednie pu Case lüfl te SDD, tzn. dc' zmiennej typu string
jm -i-łl I|l. ;lTl. l.|-1.21-|.l
I-
I
identyfikaturze wynik, znstanie przypisany łańcuch znaków „puclałes wartusc od 1Ü'Ü
Sillü”. Zamiast przedziału Case lüü te 5ĽID, muzemy uzyc pnrówanania du pojedynwartuści, np. üptłgn Cnme:e_EEEahene Public Funecien selekejułxj Select Case 1 Case 1 z = 1 + lüü Ľene 2 1 - 3 + EDU Ęese Else 1 = “Wpisz 1 elbe 2' End Select selekcja 1 I End Functian
Ítys. 29.35. Przykład działania instrukcji Case
Punieważ nie zadeklaruwałiśmy wcześniej Hniennej z, zóstanie zadeklarnwana w Iócie,
_mz w mórnencie przypisania jej ókresłunej wartósci. jak ilustruje pewyzszy przykład, funkç_-ja-mcize zwrócic nie tylku wartósć Liczbnwą, lecz takze wartnsc typu string - ciąg znaków.
VBA w praktyce -_ W pmgramie Access Ęülü wszystkie twórznne przez uzytlcównika elementy - typu tabela, jurmiflarz. kwerenda. rapórt - nuszą nazwę ubiektów i kulejuy dnstep du nich uzysłciwany jest przez stnsuwanie znaku urjfkrzyknika. Gdy mamy dn czynienia z nbiektarni predefiniówauyrni
;przez system febiektami. właściwesciami, rnetndamij, wówczas stnsujemy znak krnpki, Fózcniularze !n1cij_fermulerz łniej etóeteda _ wez teśó Łatwe zauważyć, ze ciprócz wykrzyknika w wyrażeniu występuje równiez znak krc'płci_
fflnteli przyjmiemy. ze tabele. kwerendy i fnrmularze są ubiektami twórzenymi przez użyt=Ĺ¿l_rswniI-za, tu pó krópce wystepują wartósci. metndy. którymi dyspcmuje system - w nasmfm przypadku Accesst ł imiynai słnwy. prójektant bazy danych Access stwórzył baze danych - nazwał ją Ę-Ęsprzedaż. W tej bazie danych utwnrzył nówy óbiekt - tabele i nazwał ją thlłtlienei.
|'-žā ' numer- - l _
|
'
Nazwiska - ;
__ | ___›
2 Wujcłech 3 Ewelina
htüwa-Iskl łtwasnik
_ __'
4 wnjciecłjš 5 kamil
Król itulwal
* ł
imie'
' pltührqf. nbydndnó ~ EIDD.D|I}zl' Sfllflüfl lülüüfl
E'Ľ1'-2},ülJrI
iflflwfl
29.3ó. Przykład tahełi
_ Dla wygody pracnwników w firmie, którzy wprewadzali dane, utwórzył Fórrnularz
Íi""nazwał gu fermltlienei. Puniewaz chciał sie dnwiedzieć. iłu klientów tu knbiety. iitwurzył dn tabeli kwerendę - nazwał ją kweltebiety. Aby pndzielic sie wynikami
swnjej pracy z zespnłem, twórzył rapert drukujący spis knbiet spesród klientów firmy -
-
Ĺ ---
.
.
-mmm
mi -
I
-
iii...
_ .__ 'Í
:Ê
sazr oni-.'¬rcH 1 srsrslynf snz 'I
|
|-
[Ŝłf-"il"'l't'CH
.
I
i 1
-zj
_
ŠÜPÜŰ Utwüfffi HH podstawie l'r¬werendyj i nazwał go rptttueEohiet1r_ Iesli nasz
»-
jelctant zechce stworzyć kod w VBA. wówczas. tworząc formularz poszczególne E1.,=¿mP:_ W küfłu PÜWÍĘŻE I Rkcjarni formularza.
`
»Fill_snnmnutn Flzrlullrr ro|'=='u4a|'r _
___ j±@'='._._±.-e.-.¿._s_'.~;.;-r.-..,j_'~--" -
_--
I-
-
_
j-_
'Ê .
i: _ _, _
l
l
1
hf
Fll-'H"flEf
1-. irz
-
`I l_'. rwn . Harwliho DE
“ ''
_
I f “_
l
_ `
J
__lH1.u||u_:,jg_'
Pe
_
l _l
_
Ĺ:
fl'I'_IŁ1'|-Ę
¦ J.
_
5-
HÜÍÜIÍJ
__
Ifll1r¦'|'±rd|.'||r1'_H¿r.ml'||_pru'l| _~
_ _Ll
_
l
__
i__ rr _L1 |
ITIÍĘ
-' _ _
_ -
52 _
__
. . . _ . . . , _ _ _ __
_ ;_
_|"5ly__
j
___
_
Í'
_
f 'T
_-_
_
?Ľ'.";."'r¦.'¿;Í.Ĺ'„.”"._'"'„._. s"""'"';"".;.¬. ."'_ zł
__
___
_ _
Z
_"
_
____
Å
-
---- --
_ _ '_ ___
_
ni
--
-.1
_-___
_ -¬
Ê}'H› 19.31 Przykład tworzenia kodu VBA dla formularza
W Hifiükfl P1'-`°ZlE1=l'-11 formularza klikamy oznaczony strzałką lewy gómy 1-<5g__ 3 ną. ' 5ł"'ÊPI"E W P01'-l P'-'=-Iz' hifiżflflffm zda rzonre ' V"}'b1era_m)' * ________________: ___ _______k E _______________E______________ ______Z_____________ zakładki _______________(___________ oznaczony* kur'-soren1_._
'l
_-"---:-Å,_'| e . 1.. Ń'
._Ü_-*_.;':___
_
-_
_-._.
i _ I I
_ __
_|__r._;_._l-'It
¦':_._1|'
.
-_
:'|."_|_ñ_:r_._|_____ -
--
_
'
_
.
:.-
.
___.¬ _
|
I
l
.
í=`e"~r__' Rys. 29.33. Wybór łronstruktora kodu __:_
_
_En
._.__
_
-
_--_____.-_-.__-_-_-_'-
|_'
___-__
_
:____i'ñ&;¦_..,_„.._„„.¿_-.,ą' _ -__1____.____:-_-_;__:.____'_-__________
W
Hm ÅŸÊT-
Pr-l"1"l=! SFD Ft'-'nn Cr|.r±.-±_n1;|;j E'
_ _ _
I-f |'Í'¦f+füI'lfl'|I'l¦I'¦¿.'ł'q1|1± 1 3'.|;|{|= Inn"
_
l"'-Iofiol 'dnzieşf uziem-
_
ĹIIIIIIEIĽ
Í
Ęl¦||¦l5¦|-th
Í
'I
Rys. 29.39. Fragment kodu VBA _C
_.
I
||ÍI'|'_||1:.'|;1¦.|-,|¦,.||-'||-|_;.;i¦,[lfi-|-,|¦._-1
-zozn | i _
_:_
EE
"H'Hl5l¦I
_ I
_
_-Ę
Å-Ê
Iłlłílłíf-l{±f"rl'.ltĹll.'l_"A|`~¬'ll;I llA_E flAN`t'ICl-f W [ĘFĹ`t'|'~LACH W"t'.EltĹlł'ĹllźĹIt¬J lI*lĹI_`|E“Ĺlf.ll".'ll..Í Ĺ:
1
Å
--Å
'_
_
235
HA l"lłZ`t'l'~Ĺl-AlIlĹ-'Ĺ.IlÊ VBA
_
-
Å-
_
Ż
il-|.l .í_i.|ż-_, xl
Po wybraniu opcji Rona trulrtor kodu (rys. 29.33] i zatwierdzeniu czynności za jaomocą przycisku OK umieszczamy w oknie konstruktora następujący fragment kodu VBA (rys. 29. 39).
Przykład kodu VBA zaprezentowany na poprzedniej stronie sprawi, ze podczas przedania kolejnych rekordów. gdy natrafimy na klienta. dla którego wartość kwoty prze30D, program poinformuje nas o tym w postaci okienka (MsgBoz] z napisem dobry klient.
ruin'EI1'Ľ'.`l' r'r|_'rr|E|'
__ za.. -, t'
'-
|3
sm;-__-, "' _
_
_ '
-- ------ -_
___ __ ."'||'-5|I'n'tslr.-:¬
I Ľwgljnjh
Hwüta
__'__; ____-:__ 5tj|'[},E|'Ę'_¦z|
do-ł:|t'yk||u¬|t
j
_III ____I II
,¿,'¿
j
_ ___-____-___ I
Rys. 29.40. Przykład działania kodu VBA podczas pracy z forruularzcm
' Makra ¿__PTodczas pracy z programem Access dość często pojawia się temat mal-cr, który poruszany równiez podczas pracy z arkuszem kallrulacyj nym i innymi programami, gdzie zach_opotrzeba zautomatyzowania pracy. Makro jest programem uruchamianyrn w środowi-
ýfsltu innego programu i realizuje pewien algorytm działania, który polega na wykonaniu Šäciągu instrukcji mających na celu zautomatyzowanie i usprawnienie pracy z programem.
;jldakra pisane są w językach skryptowych - w naszyrn wypadku językiem tym jest VBA. řPodsumow1.ijąc powyższe stwierdzenia, mozemy uznać, ze makro to rodzaj skryptu pisa-
Ĺrtego i działającego w ramach określonego programu, np. Access. Ezcel, AutoCAD. jezeli zachodziłaby potrzeba np. policzenia wyrazów zawierających .,ó"` w pracy magisterskiej
łttlajdującej się w programie Word, wówczas piszemy makro zliczające wyrazy - poniewaz program moze nie mieć takiej funkcji.
L
Makra mozna tworzyć za pomocą kreatora i jest to najłatwiejsza metoda. Mozna je rów-
_ pisać w języku VBA. Wymaga to znajomości podstaw składni tego języka »_ _ Ha szczególną uwagę zasługuje to, ze makro mozna utworzyć za pomocą kreatora
Ł'.l"przel':onwertować do kodu VBA - co przyśpiesza pracę i zwiększa elastyczność tej funkcji. .
Dla początkujących programistów VBA będzie to spora pomoc. gdyz mogą analizować
VBA. który posiada rnakro utworzone za pomocą kreatora.
'Tworzenie makra utworzyć makro w programie Microsoft Access 2010. uzywzmy zakładki Tworzenie. 5-'z której wybieramy Makro:
I
BAi!"'iI fÍlAI'*'."'i`CH I 5"|'I5'lIIII-I_l`yl"i' IiA}' ĹI.lAi*~l'i't.¬.łI
- H
'1'
'Í' ' 1 'II
--- -._ - ._ I'_lii:I..|..iÊ:=='|-.ͦ|.|ll' I
-:"""""""*""""""""'
"'""""""' I '¦"""'="""=r'fl'=1"
roorlmiuolumn
--tt
noi
Ê"fl|lł¦l'l'l-'I-1-5-'I..r'|'|:|lł"||'-'.l1[-!.i¦|:± |,ʦ|J¬'
Ę li-ultol rlijm-|'Hi¬n. 3 [high
ÍÜITIIĘII
iuninrq-
'I"l1'l=|.ih|¦|.|.
ŁŁW1,-jfigflfn
rue-
„HM "nm
Ę Hg,-
"""""""
Iz |łI|u-|'u|.
Rtfl 19.41. Zakładka Tworzenie programu Microsoft Access
Następnie przechodzimy na stronę kreatora maks Akcję makra mozemy 'wybrać z wysuwanej listy combo lub ze znajdującej się po prawej stronie _wyszukiwarki akjzji. Dla naszego przykładu pngiużyfnjf Się pyügqmj mgjq-Em Wybierzemy następujące wartości. Czytelnik dla własnych potrzeb edukacyjnych pnwtnien przetestować większość dostępnych akcji malrra. jednak aby zaobserwować jak działa makro, wystarczy kilka prostych akcji. Wybrane akcje to: Pokaz klepsydną i 'Dkno komunikatu. Kolejną czynnością jest zapisznie makra przez wybór z menu kontel-rstowego: Zapisz i zamknij. I H 'Il + t'.'l ' lu'
im-'nrmhiifl'-nr | ___
' lrlinrrloflfirceu.
Menu:
mi-'elflmiou
Ę] Pdit' i wnro Holt
-I Ę loriwłrtl-:I 'futro rui .Ił¦.I'l 'ifttuili II-iiiir 'I"'“5I""""
I
'i'Hzj|_'Ÿ
Hrrennnrenrzefi
Q3 _
.|.
_ 3 FI!-l|.rii'i'tn 1"'|'irH'i
3 flttizlinn
"'l"'Êłl'
Hirrotlrii
E rr
:_
ŸiŠÃ¦..=eŁ«.rŬ|}II'
__' Ê
_3 Iwlilj
'llfiłl' 'l'l"flI'i|Íl'I' 'Ii'l1|iĘ|'lI'¦ł'.|ł
„..|
_ _ __ " II
,..i"
bł* pfih; i|i|'|;|¦¦¶:Ł'r±
""""" "'
itrlft-"=c“.fI.iiio1
mw----r' y” _'_ __ - _ ___ - _ |
E Tiitn-iri
_F1
I 'IlI'“I'“““'Ê"_'_ _
-'Å-_iii
-
G"-I't1="I'
'=-='‹~
'
I
F_,_-3 Fuümfifllnfllmhlmmlflł
I
______||_,. Dflfifl
j
I
I
Ľi¦|l1!1l¦"¦l'|'|'¦l'lFl'7=il5r'1'|;|l1'll‹ł!'-¬i'i't!i't'r1
j..:-' Fnhaitiilrinfi-iinelteeoruy i-.IH Pflflútfllwzrrndę
'
j
| j
13" U'ii.i"'rHtti'!.-:irt=:"i'i'i|i'iilr
lit' wşuuiejiii-:ani
joufineroaeie
¦ś=" Łiiittoi.|.n'l"i|'ti
üdtwrultehuiu
I
I
Dtnoltoluinthltu D1i|r|!i'izFo|i1ii,ili|i1
t¦|t'iu'ü'rr'łii|¦|-rlr F'oi¦Iot'|rMI'i'±oi:u
oeaąjiu. nuztzrrrr
j.'¦" '|i"i|'l"ii|1¬tŻ¦Ili'-|'It'ł='I-'B-l.|1'I`. "
H “"Ü FonfifH=I¦'ivorzritl'r
j j
¶HH
I'I.'|¬I|'1".|'.*l¦ia|1'|¦I=|'|i-|:.!t¦.|E_u'|.|.|I [Elf] Ilthrrlrtrtiorşrt-nr1yc|¬
_
HŁ'
F'r¦'r_|'±tDn F1'1l'_I-i¦l-í'EI'¦'Fn-r1'r|-|n'tu
Êrs l'‹J.-tz. Akcje oferowane przez program Access
Ir'tl¦H±l1"Illtt¦1tflj|“Ft'|'Itolll Ii"|'l;|'¦I±lł|¦'Ł'n|`flEE] l.|'l|¦I"fl'l'I.'.||'Ekl'I¦HllÍ'!|l'|'lj|'I¦|"| Eksqtl-cl!-Iřtlmtlluinrirlefl t.¬.""' lHHpHHlfi@
otwaeespae
1l'rl5l:|II¦I'.|J'fl'F|-ltorrlu
„j,-2|' __-.
t'ł"'
'I ütwólzlwertnnr
l¦"r-Hill-|"'|¦||li'¦I'||I|I&
j,|¦-"* U11¦'l't'||ł°'|l\:r
,..:=' urizevunzwnnwmouq
|¦Ii¦Iib|lI'I'i!'t
I
i_,':" oni-nn-naraz: ,,.t" otnaizr-mms;
|
lnu 't'j|'.tn|!łI'-l¦|.ij'|ĘIri;riuti li'rt|'i|.|'llhzrfi-Ęttlznn I hl'-|in'iq|.|,'|E¦l'o
Ílíl
E _„___
jDoI¦If'l,lH-t=i"i=i.i
üttflrlflřemlnnlnirrm
'“"=""*"“'
|
II-Hn'ilij|I.'¦ii1IlI:IIl'r'|l|.i1~i|iiit¦'i'|,|'ŁI.¦i|¦||[
I'I“*"'“i"5""'*`¬' E'='I'l'°lE'*t"""¦rUF'r
_
zz'
'l=r11..|li.|,|It!ll'l¦'Ę_!'lll"
cen-iijznenyni-r‹.u|=iu
__
E: F|"'E'l'¦I'ÍltIfIll'1¦l¦l*I'II'Ir'll'|'taT'.I¦ii'qr|l'ri,|
=
im j
H
ümhśgfiflfl
dr' Dotwieruiseii-i _.tr Dtnúrzfninutae |
H.-"' Üfiúlzfllpon
Paocaauoxtfanis BAZ DANYCH W jszrkaci--1 wrsoi-usco poziomu _ 2 NA F'RZ"i'ł<ĹŁADŻIE VBA ___--
...
:_
--
___-_-
--'-
¬
_
1.
_...-.-
_-1.
-
Ir I _
_-_-
_
_
-¿___
--
.I
__
_
.
_-......__
-_
._-
-
_ _ _ _ __
-___--.
Vlłszystlrie obiekty progra... (Š rr -I Fś'=`_=T_
'
lwa'
I
III-
_z-_Ê_'1'=|__5.____________
I
e j«°~ I '_'-Ę _-'-="_Ij
__..--
_...
_I_I_I
A na ~ '
I
e
I I
II
ä Tabtlal
Kleprydravrnączona Tak .'
--
Ê
'
-:- _
__
Makml
1-=-_.*I
üknnßon-||I II "MI
.E
_ _
_
I
II
A _
I I
Komunikat _lñłykonpje makro 4
Sygnalizuj dźwiękiem ' i'
__
_
Nie
__
_
Typ jüstjzeżeniet __
_
_
_
_
Tytuł ?i.iwAoA _ Rys. 29.43. Przykład zapisu makra '
_L
1-!
.`
".__
í
_
_'.'
fsšystikie obiekty p_rogra.._
swe? Ĺr.L.l .__.__
If
raeriai `
“].0
tt* IIIII
II
¿_;¿_
I
rr
¬"
. .
|,
.
__
.
. .
e
.¬_-_
-
'
-
- -.---
e IIÜ 2"='*›'-I
'i--_----
--_ .'|_a_í._-
I
P I' i
zamknij
_ '""I'I”ŸVd'“`Ÿ" Ü zagjrnijwnyrtrrz IEI Oknoltomu
Rys. 29.44. Przykład zapisu makra
Po kliknięciu malcra powinien zostać wyświetlony 1
fi.
Ê Tabelal __
-_
lihlin
¬
_ -.__
_-_Ł
"
" _ ---
- -`_."›'
Ê
i
Wyicoitujemakm
I J I I
Rys. 29.45. Wykonanie Makra ›' W zależności od typu kursora myszy podczas wyswietlania komunikatu może być wyświetlana ldepsydra. Makr takich możemy używać do operacji na danych w tabelach.
: I'
-ł
~
SPRAWDZ swoja WIEDZĘ 1. Wyjaśnij pojęcie Visual Basic 2. jakie zadania wykonują polecenia sub i function? 3. Wymień rodzaje modułów.
4. 5.. 6. Z 8.
jakie cechy posiadają następujące słowa kluczowe: public, ae, me, for, next, if? jakie zastosowanie w Visual Basic ma podkreślnik? jaką funkcję pełni instrukcja Exit Do? Czym są pętle While Wend, Exit For, Exit Do? Co to jest makro i jak się je tworzy?
I
sm
H1'1".Í"|` [ZH"'.|'"~Š`!"|I_Íi-I I ŻŠi"r`5TEM"':” [if-"›.`.-"' ÍII±"'~|'*~‹.i"¦”Cl¦
_
__
i
*-
_ Uzycle skryptow w bazach danych I
Ü
I'
|
|› IŁGADHI ENIA
1 Uruchamianie slrryptu SQL 'ur MySQL I Uruchamianie skryptu SQL w Micrflsnfi Access I Uruchamianie skryptu SQL w PostgreSQL ¦
Aby uruchnrnić skrypt SQL w śrudnwisku Access 2010. należy wybrac zakładkę Twerzenie,_
;
a nastepnie pn:-jekt kwerendy. Penizsza üusnacia pmecistawia pasek menu zaldadki Fru'
jel-rtewanie. Wybieramy z niegu SQL.
| E e - ef -1-.= i
u
¿
SQL
'si
H=.a|zedzia çiłúnfne
Twnnenie
Dane zewnetnne
hlarzeclzła uszy rlenyflzzh
'
Prsjelnewsnir -.-I
5
Ü
"'
'
_
_
'I.'_`fi`J'5I:ładajĘLfl
Jiflvuístawąęflş.
'
Ű Pmekazugars
fe L1..-in wnui
Winch U:u':=i':'rn _ Wwhgläłšgåzz Duł-sr: ålrhxalizuj Hrzyfzewa Usuń Ę-ž__:__________________________1_¦_______:_____
| ł
Wyniki
_ízi-__I:_=.'=;:
:_,___ł~______________!±_____I_________
Typ kwerendy
_ _ __l'¦enffl=
|_w‹;zy-nlşiz qsieuy prugran1u._.._Ei=___‹¿'ę__ ___ _ _ i
Q
Rys- 3ü_1- wybranie wideku SQL dla kwerendy
Kolejną czşmnüśstią jest wpisanie pülecenia SQL [lub wklejenie - knpiujƒwkiefl w szaf 'pnleceń SQL. |
|
`
Narzedzia prúwne
.
Twurzenre
' '
wiem: uruchnm „. wynnu
__
'.'
` `
Narzedzia bazy chsnych
Ciüshzladsjfinl '
Ü Frzekazująca
Prejefirtnyrsnlr
' zi: uiwfirz Dołącz Aleuslizuj sm.-:uwa usuń _ MI-:az „hm gz uffimes eenych = twe.:
Wszystkie-ebie_I|;ty__prngre±nu...iE'}
1 ł'~1'==="s;~; ._
Dane zewnętrzne
_ Ê
_ _';_"'~›
Ty P łcweren 'H
SELECT hlezwrslre FRÜM W'yh:Ild›nwq|';
Tfll-llfil'
lłys. 3l].E. Eciytc-1' SQL dla kwerend w prngTan1ie Access
` Ê
W naszym przypadku zapytanie SQL {kwe1'enda} ma pestac: SELECT Hazvriske FREE Wykładewey; Pn wpisaniu kwerendy klikamy Uruchum {iknnka z czerwcmym wyl‹n*zyknikiem}.
_
1' I
j
l' li (J l' l li .fi "\-l t, _l W-'la “sl l if li .“\
l 1 -“lt iii `t" 'L .Ĺ l I `\?¬'.f I |'. if' 'T' li Å Ĺ' l l
lt" fi i",.1 if-Ĺ l l"" 'IJ Ę 'J l'* Ü L-""`. l tli M l__i '.
|'
.
I
I
".-'I
I
I'
ll ł
lsr`\ llli if”. f is l. 'H l.*.".ll L1-------.Ü 1 I
,
.
H
'
'
I
~. li-.t |
. '
'
Wynikiem polecenia lsedzie wyświetlenie zawartosci kolumny Wykładowcy. Za pomocą tak uruchanlianych kwerend mozemy tworzyć, usuwać, mo‹.lyt¬ikować oraz odczytywać infiírrrriacje z tabel. Istotna własciwoscią .kwerend jest 1'r1t;1zliwosć ich zapisania. Możemy napisać kwerendę, ktora będzie tworzyć nowa tabelę pod określona nazwa i uru~ charniać, gdy zajdzie taka potrzeba. za por'r'1t':ctzj l~:l.ikni.ecia. '
" --
'_'-"'--' ' "r|'
..|
__:..__í___.
-H
Wszystkie obiekty programu ...esi rs
„- ;f ' ' Nazwisko ~'
'Wykładowcy
l.'ÊDWEIl5kl
__„¿,m|], mi " |'l :". ,_._,_,„_,_,„,¿,_,„ ,_
_fhrlarkiewicz -Ê; jwojciechowsk Wusruowski i 'Hak 'j ` Chatas
Da?
;-_-.ulą
Z| i|
¬'- ,=›¬e=1_¦¿‹:|e¿'.-_a
j 5, ri
-_¬_
.-___
Š= - ,Nowak -_, -_ Kowalska i j Pawłowska -: ' 5: ¦ N-owak ¿l l'~'.oweIs'kI 5; _ itowaiski
_ j
__
łtwerendaf
-j¦'›'~'lf=-'La":=.‹¬.
Nowak Ĺ__=.
tcowałski
Rys. Ętl- i. Wynik dzialattia. kwerendy SQI.
W lt/IySQI.., aby uruchomić skrypt SQL, .mozna zrobić to na kilka sposobów, np. 1 wkleić zawartość skryptu SQL w okno konsoli MySQL; 'I uzyc narzedzia phpMyAdmin, urucl1omić opcję konsola SQL i wkleić zawartość sk1yptu; I uzyć następującej składni parametrćuw po_l_ecenia mysql: mysql -h 12'7.0.Ü.l -u root -p -t nowa 'c te±s.t.s=q1 Polecenie to spowoduje uzycia skryptu SQL zapisanegtii w pliku test. sql w bazie dartych o nazwie nowa. Opcja -h umozliwia połączenie ze zdalnym liostem ¬ w naszym wypad ku łączymy sie z lrostern lokalnym 127.Ü.Ü.1, zatem mozna smialo ja pominąć. Uzyta została jedynie dla przykładu. Cflpcja -u root oznacza, ze logujemy sie jako uzytkownik root. jesli posiadamy inne konto na serwerze MySQL, uzywamy własnej nazwy, np. -u woj tok. Dpcja -p sprawia, ze nasze logowanie będzie przebiegała z podaniem l'1asł.a, o ktore system zapyta przy nastepnytn kroku. Opcja -t oznacza. ze precyzujemy, z jaką bazą danych chcemy się ptiłaczyć w celu wykonania skrypm. Znak c powoduje, ze plik znajdujący sie po prawej stronie (test. sql) zostanie pr:›'.ekazany na wejscżie polecenia. Przyklacl uzycia ww. polecenia przedstawia ilustracja ponizej.
Rys. itl,-t. Wykorlanie kwerendy wpisanej w pliku przez SZBD MySQL
l .' |' .'
||
I
| '|
Ere
i
lłi-'"iiÍ:'.`1
ll.-"-¦`“¬.`iĽ_`l'|
l '“_ł`|“:¬-'l'lĹ|”-']"
H.-"'..-Ĺ' l"t."\.:"*¬i"|ł"l|
Zawartość pliku test- sql:
Itys. 3i`i-S. Iawartość pliku z kodem SQL
Uruchamianie skryptu w PostgreSQL Program PostgreSQL udostępnia linię poleceń, w ktorej mozemy wykonywać instrukcje SQL
Za pomoca narzędzi Pgřtdminlil oraz phpPgAdmin mozemy korzystać z konsol SQL ot'wieranych w tyclt programach i tam wykonywać poleceniaSkrypt SQL zapisany w pliku, analogicznie do przykładu z MySQL. wykonujemy za
pomoca komendy: psql -h 12'? . Ü . 0.1 -U postgres -H' -f plikzeåkryptem. sql ba.zs__cLanyeh
jak ilustruje powyższy przykład, składnia - mimo podobieństw - jest jednak inna od _ ł |
znanej z MySQL- Bardzo wazna jest wielkość liter opcji: -U. -'i'l'. -:E przy stosowaniu polecenia psql.
_ relacja
j tabela
atrybut
kolumna
krotka _
plik Ąj pole
l wiersz
I
rekord
5
Skladnię polecenia SQL omówimy na podstawie ponizszej ilustracji:
i
--
¦'.!¬
_jř-2.-IE
ii?-_'-_'rL-Eric..-,.z'.:
5-:L
:-r _.';-.-_'f-,'-;':;í_j,-"_';;_-_:f‹5_7
_fi;_'-;;'__-j 3-5'
lt-J'.l"l
'
s
_._„___zo:y
co jesz komenta: może zajsc kslka
_Ê
l'.|‹I'.|'J.'-|›
j .
5
=
-ESELEÜT ;misy nazwisk¬ `TFRflH parjenr; E'i'i`I-IE¦H.E '.-.'i'.=.i-': ID' ED;
línsiek
'H
Rys. 3[l.ii. ifiomentarze w MySQL
_ f Š l ¿ ' "
Pierwszy wiersz ma komentarz stosowany dla tekstu zajmującego jedna linię. Wiersze trzeci i czwarty zawierają znak komentarza I* stosowany w przypadku, gdy zachodzi potrzeba umieszczenia komentarza w kilku linijkach. Select. From iwhere to słowa kluczowe w języku SQL. identyfikatory imie, nazwisko, wiek oznaczają kolumny jatrybutyj tabeli o ideotyi fikatorze psoj enoi.
Linie 5, ?, 3 zawierają ldauzuie SQL. Srednik kończy zapytanie SQL, zwane rowniez kwerenda. Nalezy pamiętać, ze l=:werendy są stosowane nie tylko do odczytu danych. lecz: takze do tworzenia i usuwania tabel, modyfikowania danych itd.
SPRAWDŹ SWOIĄ WIEDZĘ is
`|. Co jest charakterystyczne dla skryptu SQL uruchamianego w Microsoft Access? W sposob mozemy uruchomić skrypt SQL w MySQL? 2. Za pomoca jakich narzędzi mozemy korzystać z konsol SQL w PostgreSQL?
lł "-
`t
l" '=. "t `| '-
I i
l .r-`1 “~'l': ""-1 `1
li
l
" '
2| Ĺ|
I nstalacja PostgreSQL ZAGADNIENIA
u jak instaluje się serwer PostgreSQL w systemie Linus Debian? I Rola PostgreSQL na tle innych systemow bazodanowych I Instalacja serwera PostgreSQL w systemie Windows
Instalacja serwera PostgreSQL w systemie Linus Debian ogranicza się do wydania lcottteltcljr. apt-get install postgresql-I "l-
_|..l-_- -.-:|_- I.
1. i|'r_ 1;..±l.Ĺ |.
;|
_' I
I-tę..-. i¿.l. instalacja serwera PostgreSQL
gdzie X jest wersją PostgreSQL. jeśli chcielilryśmy zainstalować wersję 9.1, komenda miałaby postać: apt-get install postqresql-9.1 Podobnie jak w przypadku My'SQL, instalację nalezy wykonywać. korzystając z uprawnień roota bezpośrednio z konta administratora lub przy uzyciu sudo. Aby połączyć się ze świezo zainstalowaną bazą danych. wydajemy polecenie:
iii-¬' il..-`. Łączenie z systemem zarząclzania bazą danych i wpisujemy hasło rrioia.
Po połączeniu się z bazą danych PostgreSQL wpisujemy: CREATE DATHEAEE bāzālí
Ü poprawnym wykonaniu polecenia świadczy zwrocona przez serwer ini'orn1acja: CEEATE DATAEAEE
iirs. F-1-3. Tworzenie bazy danych w PostgreSQL
li¬›.¬¬'. iii,-t. Tworzenie bazy danych w łyly'SQ`L.
:-
|ss'['.»t 1 i..;t't s |~1|¬':'e.- ra .a sr. L"- rr rr. 1|
5 j 25?
Należy pamiętać, ze pes tg:'es=# jest zgłeszeniem systemewym serwera. 'pedebme jak w pmypaclicu serwera MySQL myfsqll'-".
itşs. 515. iíensela MySQL Pe wykenaniu lrernertdy CHEATE DATABJLSE serwery wykeriują nieee bardziej rezsze-
raena instrukcje SQL. Mianewic-ie derriyślnie ekreslają typ lredewania znakew w tabelach
"
eraz uzytkewnika - właściciela bazy danych. Ked wyl':enywany przez serwery przedstawiene penizej. Tabela 51.1. Hed wylrenywany przez serwery
easaez eaeasasz żeasal area et'ras'.z = peaegree
' easaez eaeaeasz usazal" ¦ ezsaeze eaasaerfzs sze r..a.eI1~t1 eezzaez
nreeerse = 'uefs'
j 1ee±a1_=wse.±=11_e±;
TŁBLESPLCE = pg__c1efe.u11: LC_ĽüLLATE == "p1_y:-1.ut:E'-B'
U53 "};¿=¿]_*,-
HŁFTÍPE = *p1_p1.utf¬B'
_
eeeazerren L11-|:r'r = F1;
5
Üba serwery p1'zeci1ew"L1ja dane w miejscach przedstawienych w tabeii: Tabela Eli- Miejsca przechewywania danych przez serwery
Pestgreā I' Dane przechewywane są w irataiegu: fyarflibƒpeetgresqlƒā.1,"1:n.ein (gdzie "-lt jest numerem wersji F'estgre5QL}
W I-catalegu ƒvarƒlibƒmyeql zestanie utwerzeny pedkataieg bazal wewnątrz tege katalegu zestariie umieszczeny plik
i
- as.ep+.-.. w kia'-ym earas będzie pfzerhewywsr ' j infermaeje e kedewaniu znakew default-eheraeter-set=1atin1 im
_
__ ____
_
_
._-___ _._
`
clafault-cellatien=1atin1_s1'rladish__e¦i __m-
Serwer F'esŁgreSQL ma jeszcze jedną wiasciweśrf. W memerlcie pełączenia zwykłege 1.tżytkewr1ika znak zachęty zamiast peetg:|:'e=.'s=# przybiera pestać peetg1'.'e|s=$. Przype-
| mina te reznice perniędzy zgłeszeniern shel] dla reeta i dla zwykłege u:i-.'.yŁl
Uzyskiwanie infermacji e wersji serwera
'
W ebu systemach, zarewrte Pestgre5QL, jak i MySQL. działa peiecenie SQL elcreślajaee wersje SELECT version H ;
| E
'|"-
"||"-|"-a|'.!
'
'
iil
itis. :`›.t.-I.'= Uzyskanie 1nt`ern1acji e wersji nprngramewania Pr›stj__şre5f_`QL
't. ¬ .." .`-` L_|zyski'w'a11ie infermacji n wrrrsji epre„era1|1n¬.'.-ania lt.'iy-'SQL
Wybór systemu zarządzania bazą danych l'
.Í
[PestgreSQL na tle innych systemew bazedanewychj
I
F'estj;reSĘtL wspiera standard strukturalnege jezyka zapytan zgeclny z 5QL.łt}Ü-H. Pesiada j architel-=Zturc' klient-set¬w'er.
DEM S PnslgreSQL zaprejektewany jest tak. ze zapisujacy 1 ndczytnjacy dane mejąa pracnwac jedneczesnie. nie l_i1ekujac sweich sesji. 1'-'estgre5'QI_ charakteryzuje sie rewniez 'wysekim stepniem rezszerzen i ketifiguracji, n1e;_jar:y'cl1 wspcilpracewac z wielema typami aplikacji. dziel-ti czemu ma hardze duza skalewalnesrž z rezszerzeniami pedneszacy mi uzytecznesc* i wydajnesc bazy danych. Ü papularnesci systernu swiadczy te. ze PestpreSQL wyke|'zyst11ja takie firmy jak Apple. B.f\5F. Genentech. |i'~.'iĽ`.'B-ce|r1. 51-type. l*~ā'l`l". Yahee iThe Natienal "'."i«'eatltet'f:še1¬rit:e.
Instalaeja serwera PestgreSQL w systemie Windews Wyrnaga pehrania instalatera serwera ze sLreny www. pestgrescdergƒdewnleads
¦`_'c'|'.-'-.'r|iue||1-'-.
`-"'f' "f"'
I ]'crw|1lcirirl'.¬|1us.l|_jre5í__j|'L í_2||:||'|;-|f¦|i'-;tril||1l`|u||
15|I'||f"L-1'
"i-.|-'. _ _ '||'|l'|- .' 1 i--'-1 I Lir I e JJ r.-':'I`--:'-.i=tdr ;.-
The' c-cire n1` the ='rist';Ire'_=H-"JBL elaielst-r".'|':|1.mf|-.=|l ü-I11L3|I'-55-'I' I"""a"|-¦|'¦I'¦"""“f1" '-'-"=1'='I¬I I=' -EW-1'|ü|I'|'ł 'F' 't'“"'+|'ł| _ 1.'.=n'r=:e e-nd l:.|-"|z|r'.' terrrlaiz-
=-Ie El'-:iwser
fii“""T FHĽHHUEE Pre-|:n:||t lz-|r|sr'.' |1-zicl-_-1-;|es -.tre -1'¬'a||-:=t'|i-. Fur a |'-I.-rT||:'er et -'.1-|'f":!r'H"! ~›I¦-"-*' 'ł1"-|F"E| f".'5"ĽE"-¬'.=
I' E'f'?-E' ':|' e'
I`¦ -'-I-“H _-L' m-. -__ '_'¿_'-'-|-
.
-u '_'r:u=" e-
|:"_|'_|_:_t"¿|I_|"|;.;_¿ý¿:._.'F-_-_1-_|-._..'
i |' nt .iz 't.5r'||1||r¦'.'¦ L||'|u.-.
e '___-_e_~_|;-¿;:|¦'_| fiI'|"l|_|r'L'|'H.rr.
'=' '_-'_Ľ'_'.1_'Ż:".-1 |-""'-'~ and Ĺ”-ee|¬E¦u.'5E l¦I'|Z|
Liri'_|=
1 I-lzc =Ĺ=E 'Í
Hi
J'
La'-¬
'H-
iz:
I'
:-|"|-I|""
I'
"."|" i"' "Ii -Íl ""-'_'E_
Strena z pakietami instalacjrjnynii Pns'tp„re5Ql_
i-.. |
. -
l ..
259
'dl-'si'ed iiistalaterew dla reznych systemey.-' eperacyjnych y.-'yhierairiy "i`íJindews. a na"1tepiiiel]'ew|iieai'l the installer ire.'n Enterprise ÜB. Une rzliel-t inst nller Tl"'E' '3'|`|'i* |1'l|'~`-lff 'f|5l3'5ll'řf` If- 1Íl'35|';Ir|ed te he as streightřerwerd es pessihle ericl the -*estest way te get up and |'ur'i|'iil'|I; 'H'-|'I`ll'| F'-'_"5lZ|'.|rr:'Ê-'.ĹjL en "."|."|nc|i:||.-'-.|5. Ę'|'¿e.'."ilci-Eilżl thrf' I|'|s1Ie|llE'r'iI'i'_'irr|. En1:e'r|;||'|5i3E2|E| für i3|| 5|_|.|13jzi|;|r'|:.±_n_'_j '.,.'3|-'-5.||;||"|-‹_',_
lij-s. i-ł.¬' i"c|l}ic'ra||1e l7"c|slj3_reĽi-'Ĺ_}L
Pedczas pierw'szepe lep,ewania de kenseli F*est':i're5QL meze zajsc keniecznesc wykeÜ . tiania niewielkich niedytikacji pliktiw keifgiiracyjiiych. lflensele PSIIQL uruclianiianiy z katalegii instalacyjnege pedkatalrzigu bin.
litr'-ti "17-3Ĺ.li.'. Frzejscie de ktttrilepii instalacji Prislgret"-ĹQL |
Legewanic nastepuje przez wpisanie pelecenia peql z |¬ymi samymi ripcjami. z kterymi psql imichamiaiiy lziyl w systemie Linus: -1
¬'
lin.. i.-'..i i. Liriiclieniienii~ kniiseli PÊQL w sj-sleinie "'Jl.«"iriclcii.'.'s Í"
'Gdy pe wpisaniu hasla i.it".'."erzeiiej_¬şe pedczas instalacji zeliaczymy keiniinikat deiyczacy streny lcede wej: í
-
l
.
lli'¬'. iz E.-'. líeniunikal de1ycz..=jcy ustawienia slreny kedewej dla prngramu PŚ-QL
rneżemy peshizyc sie plikiem wsadewytii. który timieszczainy w lratalegu uzytkewnika jkentiguracja w Wiiidew-'s Ê). lÍ1'ernyslny kataleg instalacji Festgre5QL te e: křregram files. Zadaniem plilcii jest wykunanie pelecenia ehep zrnieniającege strene kedewania kenseii.
F'|fi'. Erl'_.-'‹:¦|-:|' Fefmal' W-clcil-: F=':i'rr|ec
Ęłeche e'FF __' -:I-|¬-|'.i lz'5e 'I:'~,"|='|-ngriiii |='i1es"'-¬„F-esti,1r'i=sr1|_×._'2i. Z"~.t"iri'¬.,ps::ą1 -Li _r.'esr_':j|¬e-Ł -i.-r |=='l'|i'i
Ľ|r'|
| Hi-s iii ii. Lltwerzeiiie pliku w's¿idi¬ii.'--'i~j;ęti dla PSQI z ustawieniami wlasciwej slreiiy kede"„".'r_'j
.I J i I |
I
L
260j;
BAZY ÜANYClllSYSTFMW'HåZllÅNYCH
ji _
.I
"
-~---J
J
Pe utworzeniu pliku wsadowego i uruchomieniu go możemy używać polskich znaków w konsoli PSQL.
Rys. 32.14. Wykonanie pliku wsadowego z ustawieniami strony kodowej dla PSQL
| | | | | | |
| | | j ,
| | I i | | | i i | I | | i | .
|
I
| | | | , I
I | I I i . | .I
|
. 'i i . 4
I I
.I 1'
|
.
W systemach operacyjnych uzywajacych baz danych PostgreSQL, MySQL bez względu na to, czy mamy do czynienia z systemem Windows czy Linux, warto na etapie instalacji spełnić kilka istotnych zaleceń. Zmienne środowiskowe i łańcuch PATH w Windows powinien być ustawiony tak, by przeszukiwal równiez katalog instalacyjny /bin PostgreSQL i MySQL. Umozliwi to wykonanie poleceń i łączenie się z bazami danych zaraz po otwarciu terminala. Praktyka ustawiania ścieżek dostępu ma zastosowanie nie tylko podczas obsługi baz danych, lecz takze gdy na platformie Windows instalujemy PHP czy Zend Framework. W systemie Linux domyślnie przeszukiwany jest /usr/ share / uer/ local, dlatego MySQL i PostgreSQL instalowane w tych katalogach przeważnie dostępne są od razu po otwarciu terminala.
.I
I.
f.|
.I
|' r
1' J
_I
'I'
l_..¦l
J
.
l...} i -i
sesawoz swoja wiesza
-I _ .'Í J' .
|
› I'
' ¬.¬,
.I_
-|.i¬_i-.¬.|-_ i_1¦_|¬_j-5.
I-„¬_1-___-' 1__. ._
J' J i' J
_I .- I||
|
| |
l'-t 5. 1'
|' |' I. I'
I
I |
`I. jakich komend użyjesz w celu instalacji serwera PostgreSQL w systemie Linux Debian? 2. Czym charakteryzuje się PostgreSQL w porćiwnaniu z innymi systemami bazodanowymiř 3. jakie są najwazniejsze wyznaczniki przy instalacji serwera PostgreSQL w systemie Linux?
lfwi ¬¬"Ê`-'i
" '
|
if
E- EŸÍ "'
'
t
i
Uruchamianie i wyłączanie serwera baz danych MySQL i PostgreSQL w systemach L Linux i Windows Iåfiñ D H I E I"iI I A
e Zasady uruchamiania baz danych MySQL i PostgreSQL w roznych systemach operacyjnych PostgreSQL udostępnia takie narzędzia jak pgetdminlll i psrjl dla systemow `w'indows. Linus. Solaris. Uniz. l'IP-UX.
t
wiem il I
I. 1-
|
|
Ry.-.. ii. 1. Łączenie z konsola FSQL PostgreSQL pozwala uzytkowttikein pracować rta danych i uzywać snapshotu (aktualnej kopii] bazy danych az do momentu. gdy transakcja zostanie zatwierdzona.
PostgreSQL wspiera proceduraine języki programowania PLj'pp'_,5QL oraz MVCC (Multitirrsioit- 'Conettrreitey Control) - mechanizm kontroli wspołhiezriosci. Ügćilna koncepcja
MVCC sp1'owadza się do untezliwienia jednoczesnego dostępu do tych samych danych wielu odbiorcom oraz jednoczesnego wykonywania operacji. PostgreSQL oferuje rowniez dobrze rozwinięte rozszerzenia przestrzenne Posttfl-IS tttnozliwiajace - zgodnie ze specyfikacja Üpeiifjlå - zapisywanie danych geograficznych wprost do bazy danych. Rozwiązania te znajdują zastosowanie we wsparciu takich prodttktow jak CAD. Pełen standard dotyczy definicji otwartych interfejsciw do wymiany infonnacji geograficznych. Übejtnuje on trzy profile. m.in. profil SQL. ktory opisuje wielowarstwowe API pozwalające na manipulacje obiektami przestrzen nyini między bazą
danych a klientem. jedna z mozliwości całkowitej realizacji specyfikacji dla profilu SQL. z uwzględnieniem rozszerzenia FostGlS, jest połaczenie bazy danych PostgreSQL. PostGI5 i systemu GRA55 GIS [Geographic Resources Analysis Support Systemj. Üpisywne prograniy wydane sa na licencji GN U GPL. Uruchamianie i zatrzyrnywanie serwera MySQL i PostgreSQL omowimy na przykładzie systemćiw Linmr oraz Microsoft Witidows 1 W Panelu sterowania Windows F' odnajdujemy Narzędzia administracyjne. Następnie uruchamiamy opcję Usługi.
-.-'. t'i .ii i' i -.i~-iii-i~. .~:.-t.=" t--i.=-.tt it
w
ii Panelateroiwann ii 'ilirizyitltieelerrierityliiiinelu sterowane ii
Ľi-ostosuj ustawienia komputera
_ú
|_|1.;1iz..;1¦.i..._1r'¿_14-iii;
.i'i'.'ira Free iftnti'-rirLr:.
_ Ĺentru m '¬,'ricl'|roni.zacji
Ü 'Cei1tr..|fl1i1lāi.'wiEi"' iIlEi5H.“jC-*ll
"* E .±|_1 r :ju l |r'i.-'|
H
ł.lI'.'.'¦ii:k
t_,s.;|_i¦1-, pulpitu
'|-ia iÍiii_-.pa |:ler".c-'.-'.-.s
Inietrt 'Stan oo.-ar
|__=_±¿-_| .i.'1.'a '32-tiii-iw,-'i
I'.,io"|¦|'c'l¦.'| tr_;|','I,'1|'r|=_'ItIrFi '
'- H
- ' " ll'_
'
'
-
'
'JF'
l-ti '¬ ii .il W".hor itarzędzi administracyjnych Êjfj Usługi ltii- :ii i Liruclfioinieiue opcji Usługi
Ie'-ili serwery' MySQL 1 PostgreSQL inairiy zainstalowane jako usługi w systemach Win do'-.is aby zatrzymac usługę. wystarczy zaznaczyć ushrgę serwera. ktora chcemy zatizy inac i za pomocą inenu kontekstowego 'wybrać Zatrzymaj. jezeli chcemy uruchomić -od powiedmo wybieramy Uruchom.
ii-
. 'lfiutomacynny
it, Üchrona oprogra mowania
System lokalny Uslugi siecioera
Uiuc hero
-'. '¦Iidnajdyi.'.i-.=i nie S5-DP
í¦."etrĘr|'i~iij
_ 'Üffice Sottware Protection Fłfitform
Usługa lokalna
.
t"'|':-r'ie1.'-.'
_
System toliiilriy'
Uruchom ponownie
'
U-sługa lokalna
,.- ł1|iltitr'_|"|¦ii.i offline
Plug zincl Fi-:iy -- P'o|:Istz|i.'i'oir|",' il Fi oral filtrowanie
Pol' c enia sieciowe
Wszyslzhe zadan-ia
l'
Systeni lokalny
System loicainy *System lolurlny
.ji Porn-oc 1F' _h Pomoc T|¦ÍF|'.."Il¦' I"let.EiIÜ'5 _.ei i i'
Usługa siecioirrl
'tI'il'sI'.|".i.'y'ma5
Üztswiez l.Ser".'er'ši..l.
RD
i
Lishiga loltalrsa
.".p-eitoiei
_.H Program uruchamiająry piecu semrera E"¦ÍÜI'~"l
Pomoc
Usługa sieciowe System lolr.aii'ry
.¬ Protokoł uwierzytelniania rozszerzonego [E-'iiłłi
unii: n..-
System loitalny
f, Program mitpcrwariil |:|'ur'il'cIcn'.r końcowych 1-'ii'y'I-"'|'fl"iiII*i Ê-F'Ĺ
t-tt
ii t Eaznaczanie 1 zatrzyinywa nie uslug sirrwera PostgreSQL
W systemach Limo-t i BSD moga występować niewielkie roznice w procedurze startują cej serwery li-ily5Ql_1 PostgreSQL.
l-ti
i:`- _'i Zatrzymanie i urucheinienie serwera PostgreSQL w systemie Linus
|-..|
Urucliamianie i zati'zyinyi.'.-'anie serwera hazy danyc.li Postgri;'5QL i listy-'SQL w systeiriach Linus j' Uhllłt oclhywa się przez tizycie sl-tryptow w katalogu ƒetofinit- d. Skry pty to odpowiediiio mysql i postgresql, ktore uz-".ywane sa z parametranii start. stop, restar`t„ reloari.
5 ki-._ _'iii' `.?f.atrzyinaitie i urtichoinienie serwera l".rlySQL w systeinie Linus
W tlomyslnej konfiguracji. aby wykonać tc' czynnosci, nalezy posiadać iiprawiiii-:iiia ' roota. “iii-" dystiyliurjacli Li huntu _ Debian mozna posłuzyć sie programem =--r np. j sudo ƒeteƒinit _ dƒpostgresql start
Polecenie powoduje start serwera PostgreSQL.
sudo .feteƒinit _ dƒpostgresql stop
Polecenie powoduje zatrzymanie serwera PostgreSQL-
sudo ,fetoƒini t _ dƒmysql start
Polecenie powoduje start serwera l'-.ily5'iĘÍ¿"L.
sudo ,."'etc:,r'ini*t:_c1,."'ii11i,'s'ql step
Polecenie powoduje zatrzymanie serwera MySQL-
sudo ƒeteƒini t.d,r'i:iiysq1d s tsrt
Polecenie w dystryhucjach Red!-lat Linuit [Fedora Core_,r` Cent 1135].
'sudo ,i'etc:;"init_d,r'm1rsq1d stop
Polecenie w dystryloucjach Fiedl-lat Linus jFedora Coreji Cent iĹÍi'5ji.
sudo se.i:¬.ric.'e mysql stsrt
Uruchomienie serwera MySQL za pomoca komendy seririce-
sudo ser¬i.ric:e mysql stop
Eatrzymywanie serwera MySQL za pomoca komendy seruice.
sudo se:c¬irit:e postgresql start
Uruchomienie serwera PostgreSQL za pomoca komendy 5Ľ"I"t."lCE.
sudo sertrioe postgresql stop
Zatrzymywanie serwera PostgreSQL za pomoca komendy ser¬.iice_
263
'|'
:i
'
`¬ i "-" l
"|
_`
'
|=
l'
Uruchomienie i zatrzymanie serwero".='¬.' My'SQL i PostgreSQL moze być realizowane rowiiiez za pomoca komendy service. Czynność ta została prezentou.-'aria na poiiizszych ilustracjach:
l-11.-Ł. i_`i.`F. Zatrzymanie i uruchomienie serwera l"rly5Ql_. w systemie i.inu:-.' - polecenie seryice
t-tt.-.
'.|.|'l'
-_-'I-'
'.'
Zatrzymanie i uruchornieriie serwera PostgreSQL w systemie I.intit~t - polecenie service
Š PostgreSQL w systemach Linus:/Unix Bardzo wazna kwestia _jest rozrozuieiiie uzytkowtiika systeinti Linuit o nazwiepostgres od konta administratora bazy PostgreSQL o tej sarnej nazwie jp-ostgresj.
=
Ę 5 ;
U zytl-:owni k
Hasło
postgres
-chasłol :.-
_tlzytkowni k postgres
H Ha słe -r_hasłoZ:›
C-.dy Iogujemy się do systemu Linus. uzywamy konta. np. root. pawel. wojtek- SZBD PostgreSQL na etapie instalacji tworzy w systeinie Linuit konto uzytkownika o nazwie post-gres. Dodatkowri inozeniy się zalogować na to sairie konto. ale juz do Systemu Zarzadzania Baza Danych: PostgreSQL. jesli zecliceiny zalogować się do PostgreSQL w systemie. na ktorym jest oii zainstalowany. wystarczy. ze znamy systeinowe jLinu_'-towej hasło konta uzytkownika postgres. lilomenda su postgres logujemy się jako uzytkownik postgres i bez konieczności znajomości hasła dla koma postgres. ktore znajduje się w SZBD PostgreSQL hlastępnie logttjeiny się do bazy za pomoca komendy psql.
Iiis. iii *`.i. Logowanie w systemie Linus na konto ttzyrknwnika postgres. a następnie uruchentiettic programu PSQL Å
Å
.
i I
l
._
,
.„
|H..¦;._|
Fołaczettie z systeinein zarzadzania baza danych z konta uzytkownika systemowego Linn:-t e nazwie postgres nie wymaga uwierzyteln iei1ia_ Rodzi się pytattie. po co stosować hasło dla konta bazodanowego w' syslernie PostgreSQL. C-rly zinienimy hasło konta postgres w systeniie Pr.istgre5Ql... np. na postgresl, to będzie orio wyniagane przez SZBD. gdy hędzieniy łaczyć się baza PostgreSQL za pomoca Pgrf'tdininlll lub phpPg_¿“¬.drnin. Zniiaua hasła dla konta postgres wymaga zalogowania się na to konto i uzycia
polecenia: HLTER USEH postigres WITH PASSWÜRD
thatsło' ;
l'l¦i's. ii- Iii Zntiaita hasła dla uzytl-towttika postgres
lijs. it] l- llrticltatnianic programu PSQL z perpeł-ttywy uzytkowiiika postgres w systemie Liiiuz
Do tworzenia bazy danych w PostgreSQL ttzywainy polecenia: CREÄTE DÊTÄEHSE müjabëtāāl ,'
gdzie mojshsssl to dowolna nazwa bazy danych. Lltworzyć bazę danych w PostgreSQL inozcrny rowniez. korzystajac z linii poleceń systeiiiowyrli - w pi'zypacll-ut 'iJir'ii1do'¬a=s to criid. a limura - shell. Frzelaczaiiic pomiędzy bazami danych realizowane jest w zaleznosci od SZBD w rozny sposob. W mysql uzywamy polecenia use ł:rszs__c1snyoh. nalorniast w postgresql - polecenia kc t'.-szs_cLsny'ch. gdzie bzizs_cisny'r:h _jest itazwa bazy dariyclt. z ktora chcemy się połaczyć.
Et _
Å
l-.i.""tzĹ"i
li.-"".Ÿ`~i`|"t_Źl'i l l'-i`i S l`l' li-'l't l"¦r^t`.?" l`l.-”'ti`-i`i`|._ll
ÅJÅJ
MySQL i PostgreSQL I - testy wydajności i optymalizacja IAGADHIENH-'t.
1 Narzędzia do przeprowadzania testow wydajności il jak skonfigurowarž program jlirteter do przeprowadzenia testu obciążenia serwera MySQL za pomocą wybranych kwerend? 1 Funkcje programu Iiilunin umożliwiające śledzenie obciążenia serwera MySQL W czasach gdy iniiormacja i szybki dostęp do niej odgrywają zasadnicza rolę. wydajność systemow i ich optymalizacja stają się jednymi z najważniejszych zagadnień podczas tworzenia systemow czy projektowania baz danych. Aby osiągnąć poządana wydajność. zwiększona jest pamięć 'r`-triitlirt lub stosowane są dyski o więksą-'ch szybkościach zapisu i odczytu oraz dostępu do danych. Wyniogi wysokiej wydajności stawiają spore wymagania juz na etapie projektowania systemti baz danych. poniewaz sprzęt powinien być dosto sewany do spodziewanego obciązenia_ jednym z riajbardziej znanych załozeń jest reguła trzech kliknięć (klient uzyskujący informację powinien otrzymać ją po rnaksiiiium trzech kliknięciachj czy szybkość ładowania strony. Badania dowodzą. ze uzytkownicy i klienci niechętnie wracają do witryn działających wolno. To saino dotyczy oprogramowania i baz danych. 'Üczekiwanie na odpowiedz oprogramowania potrafi zniechęcać. zwłaszcza gdy osoba. ktora na tym oprogramowaniu pracuje. po kazdym dodaniu informacji musi odczekać ponad 3-'ll sekund na odpowiedz i mozliwość przystąpienia do dalszej pracy. Üdpowiedzią na te problerny są testy wydajności. benchmarlci. czyli tuning bazy danych. SZBD bez względu na to. czy jest to MySQL. czy PostgreSQL. posiada pliki konfiguracyjne. mające po instalacji pewne domyślne ustawienia. ktore mozna modyfikować. zmieniając tym samym działanie SZBD. Üptyrnalizację plikow konfiguracyjnych PostgreSQL i MySQL powirmo się poprzedzić testami wydajności. aby wprowadzone modyfikacje były uzasadnione i celowe. Ľ'-oskonalac pracę serwera baz danych. musimy określić podstawowe kryteria optymalizacji: 1 jak duze będzie szacowarie obctazenie sprzętu? ir jak wiele srodkow mozemy przeznaczyć na sprzęt? 1 Na jaki kompromis pomiędzy szybkością działania aplikacji a bezpieczeństwem danych mozemy sobie pozwolić? Dla testow wykorzystamy dwa narzędzia: Iylunin oraz Ill-'Ieter_ Apache jl'~."teter jest narzędziem napisanym w języlru ja'-ra. co oznacza. ze aby je urticliomić. nalezy mieć zainstalowaną obshigę plikow _jar. tzn. jayaTI"rI Standard Edition lštuntime Enviromnent_ Warto rowniez dodać ściezkę dostępu do katalogu ze środowiskiem jaira do ściezki dostępu zmiennych środowiskowych. poniewaz ułatwi to uruchomienie programu jh-'Ieter.jar. Drugą czynnością jest pobranie oprogramowania jlyleter. rozpakewanie i umieszczenie w katalogu sterownikow jaya dla PostgreSQL i MySQL. Rysunek 34.1 przedstawia i
..-_...
Å _ _ _ .
. . _
..
i
|'ssT,f=.1_A‹:;s stiswesfl. sze |i1~.~"t-n"‹:t-I
:'=?H}'I'tenznie tych czjrtinüści w systemie Windüws '?. W systemie Lintu: kunfigliracjs jest şffipdebtie. lecz wjfkenuje się ją W kstslegsch |__;¿,f1;1er;' share! jmuetuerƒ lih .ƒusrf share fmysql -_ƒusrƒ share fpfie tgre sql
:ter-2.? 1' apacł'|'e¬'jme!:er-RJ I' liżb I' nihiiełece. 1'
'I'
1
|"'Iezwa
IQ peztgrezql-s.1-sn2.jes=4 Ê my'sqI~ cen necter-java-5.1.21-bin .
ih
ltys. 34.1. Umieszczenie sterowników Jzvs dla PestgreSQLi MySQL
'Ps dedsniu steruwniłcs dl:-1 Pestg1'eSQL procedura testu przeprnwsdzznz jest tak same jak W przypsdlttt MySQL. W tjqn rezdzisle, aby nie pewtzrzeć infernlaeji, zastanie emće winny test na senverze MYSQL. I' Feneł stefewlnil 1 Wnşstlrjs elsrnenty' Panelu stetewnniu lr System
Å _`
f¬=-_ . .."'.':='¬='-
;mm 9|¿,.,.„¬_, p,_,,¿;¿, fihemfienřfl
'
'_E“:¬=-"J
E |',||¿;j_|,;|±¿f|__";_-;|¿±;,|¿¦\
. _ _Ę
Ê Usłe'u|ńer|še zdalne
`
Ê .łerfllnsenmneustefiimis
*3"'Ÿ“"'“"
' --1"" ¬--- =~'.'fş;'T"'¬"=."t*'¬¬F -
-' --¬'-
'.!.._'.¬-.f1:
_
--'
IÊ
__.__
' :sign
'
wguşfi
Jentf... e±¬F'nnra=nF1==t:esiş=z=1±ssfs±==t.. e@znum¶m vąssatszflfnfifiivetfletelumłtrßfln
IL. --H»-" I 2|'lu'r|e
Wertnłć
Path
Ľ:'|JNl1dnr|s'|s'f±turt3E';C:1Ę|ihieun;E¦L _ _ -I--__ -_ .-.-_.- j.-:.:.-_
'
Ĺentmm lłtqí łfiñndmes Update mi jeuydljnflfil _ __
"|'fi|-
-L
|
F1'
_-_:; -I-l_
'I
` .
Ii-'I
__ I
' '-" Z Ę Pnttw ._._.___________ _ .5"|¦i'I :Ľ: 'F1-'fifl'-U|'| Fles [Jt!E15fi`||,1r|.ra1¦h'1e?"flJr\ ' `
Hez|'|'arnte|'=n¦'j: " I '||ll4It|¦d=|E ±|1'h'Iʦ _
'*""'=”"
l|
Í
1_.'›«‹.-«-._._J-
Rys. 34.2. Ustawienie z11'1ien.t1¦,'¦.'_h śrüfiuwiskewşfch
Ptegram Ihtteter püsłuży tie generowania zapytań SQL de bez danych, będzie rejestrewzł wjmił-ti na wykresie, netemisst bardziej szczegúłuwe wyniki będzie mnztis prześledzić -Å
HW
253
aazr trasa-'tźli r ~;'1's'¦'|=rt-ati' aaa r1.as~.'c¦i
¿ j I j e
w programie Munin. Dzieki temu uzyskamy' odpowiedzi na pytania dotyczące obciąża nia systemu operacyjnego, zasobow sprzętowych. obciążenia SZBD oraz czasu reakcji. Informacje te pozwolą na dobranie optymalnych ustawień dla plikow konfiguracyjnych Postgre5QLi MySQL.
Eeich 'tl|_uehem Qtllüfl Pnlnur: l_-:¬ W
'F
E'-¦j'j.='_|'
_ HTBHI Gl`lJl.|]l
Ham
jz.-_.„„j„j|;,¿
aanuntsumgwtąąey uzínnwnnunaa ar-mp _ I
z
Ê
;
|
i .
I
Eaplaz zaznaczenie jako... _'"-'r ' Iapiaz wljzełialtonhrazetr cuz-s
i E | 5 _ ¦
5131
şlfilfilfl-l'I
l'||I.|\'ll|-Im Ĺ-Illrl
l'lh.'l-.I-I.-l.|'|.|.l
|"l_| |. ||"|. ..l.l.
;re Procesamr
Estow
Fm" pmwmw flsaerota Siluehaeze
í _ 'Í''Í''Ü'Ę".'
F
Rys. 34-3- Uruchomienie [Meter w celu przeprowadzenia testu wydajności
|
I
W grupie wątków ustawiamy np. lEI'Ü Ltzydcownikow -' generuje zapytania IÜEIÜEI razy: E; ä Ftaoteotow
;`
P' I"
i .G'"""”i ""'“M"""
' ;Jose cunnzeum cmiiaareen Josceaqusu
_
¿- alazwaz |j:¿g._-gjm_ajt f jm*
. Í'-1@'fi'=F='==="-'~==' El ormn sezon
¦=
_
onrnuenaa|=mana‹±aaaus=|r--- - '
.
§= -wane _ ' tjezuawalaauturtsuwwrarfinritua ,
lkllehunwłfiefllteukundpjo
|
Liczhapuwtñrzañ: []Fnmunr jtasno
j 5
L
__ _
Ej'-'s. 3-1.4. Uatawienie liczby watlcow jsjfmuiowanjfch uzjftirownilcowj iliczhj' powtórzeń
Koiejnynt elementem lconfiguracji jest dodanie elementu iconfiguracjfjnego IDBC Eonnection Configuration: Hastęptlie ptzystępujemşf do konfiguracji połączenia ]'l".'ieter z serwerem MySQL. _
2 2
Seurhttçuelunfllnełefinnrr
---- wym
.
1|
E !
W
i' wm]
E
WE
' '
Hngfituiüi
I
unii
_ 5
;Ej mwñnm
li-za
Lßsrsflfeflaf
nas
Q
'Q1-„.f
" „_ .___I.-.||.sh.~_L|_lLe_J_ 'rtemrauaunerauls
TÜTIET
_¬„_._-
nm numaay
Hrn= c-ma uznana
;j:j||_+5¦¬m_.Ľ
5-l'fl'l'fi'
HTTP'
PIIHFTĽIĽBEIIIH
|'Í|TF|'H=å=I'HB=l'¦I=lflBI'
|fiÜ`l7l.ĘEI`
tlqjqti.
' Shmtizeza
Rss. 34.5. Konfiguracja połączenia ]DEC
" I"'l"U"'l"I"
.lauaflaquastttarautta
|Ÿi ........_.. _
Ł
iJ`~if'Ŝ`i`r\i..f*t(Í_j.."\ f:śEi.i{W"[iI{.»*\ ti.f\`żÍ. l_`J.ßtl*'~i`t“`ĹÍĹH
ŠDBC Connection Configuration _
_
-'_'-|-
fltlazwo:
t_:›n_r¬'et:t|ort oonrtgurat|on|_____W
-..-|1""'¬BíIi¦ _ _______ __ _ _
_
__ __ _ __________
|"||.||'t!'|'IüI!I'i'B5 Hania Hfltłtiol [cl Fclul
I' 1' I
_
--- -----'---'-""
'trartalzta nan-.u=|Ęfi`:Í`
_""`fÍ
.Ľunnnflmn pm, 1-_¿nmm,m|n'n`ĹĹ`_Ÿ._._ __`_"_"ĹÍÍĹ_QĹ_`_`. j Itilatt Number of Cunnqottons:
F'
I ____ __ _
_¬. _¬ .?_¶ _
j
FoolTttrtoostr
;
1' I
_
lata ctosnup Internal (ma): eauea .
"___
J J
¬
ttutq 'Ęq|n|'t`tlt: True' Transoetton tsolatlon: DEFnuLT
'
'
¿-'comaaeonaanuuttonttyeoot-----~-- -- -_
True"
W* C"""fl'=fi'=fl HH" 'Ľ'"fił= _§_'íĘ_E'_2__:__=___„____________m vauttattnn auarja sş_._r_ę_¬,¬t 1 __ ;'Datat:|'ass Connection C¶'l_l'Ig¶al!u_o f-Ĺ-'If "
Ę
' '
"-' 'f'
Database URL: jlqlat. ntyäjgftloc ajhçqst: 3 3 [1Eƒentt:1_':¿jrtĘ_s¿:¿¿ j-IDBĘ Drtvarlclass: Ę_p_m'. _Í _ i Username: r
J t
!_=,'5!"_-"j=r¬t='f'l=iIwm_-_ _ _ __ Rys. 34.13. Konfiguracja parametrów połączenia IDBC Plitt
Seat ch Uruchom Quote Porno: _-j
I 3
-j._¦::'l|-|_.:"I-" " Í"I'-:-.'.:¦_'.:I: -.¦.'¦ f'
Wyttntl
eat-a.
.I łiolaltli wmgj
cm-c |¿„j_.__«
.ouptteate Hgsejuj qui ¿ usuń
a ........_..
L'1'tt'=wf‹tr'=""fi"
t j..
Elfimfifif Hflflfiouruiaw F 'Ij "NET Ê Pre Procesory
Í Seal
Iaolsrzttznaezonia lotto... _ _ Zatflsz wezełiatto ohrorett c=t.|.a
.-
i "
|"¦¦_'L`. 5 "|.
.'L._'._l.:'
ii -
` " _
tr _--_-_-_---¿_-¿-_¿¿-¿¿_-
flrrfias ma sam:-'lat Post Procesory Rflrsrßie
jj
łúw
tzn' zm- .z z..±..±..
-. I
rg saansnatt ssmptar
' l
Iti HŠF EHIHIIIEIÍ
Samolot e"'="fl'_==" _________"@ Dahuq FTP Request jýwmhj ..-.___i
Ljnłha wąjkúj HTTP Request .tous Request jurughnm W
a 1..._...__ _....._.. ....._.. ........_.. ...... . ._ _._ ,, ;z Rys. 34.7. Konfiguracja zapytania wysłanego do bazy danych
'Ł-=
I
'-=-'==r='~=='===f- =="='-===~-- -f
.'
W polu Variable Name wpisujemy MySQL, następnie Database URL: jtztbo. .mysql : / / looalhost: 33Ü6ƒemployees. Wpis ten mozemy modyfikować, jeśli łączymy się z innym hostem niz locaihost, jeżeli np. MySQL pracuje na innym porcie niz 3306. Gdy nazwa naszej bazy to np. rnoja_]oaza, wówczas W polu. Database URL należy wpisać
_- _ _¬_,_ .,
jdho .mysql : //looalhost : 3306/moja_loaza. W polu |DBC Driver class wpisuje-
i' J
mjr ootrt . mysql . jclbo . Ľtriver.
Username to pole, w którym umieszczamy nazwę konta uzytkownika bazy danych, a Password to miejsce, w którym nalezy wpisać hasło do MySQL. W przypacllcu PostgreSQl.. Database URL: jdbo : postgresql : //adresHIP: danych?autoReoonnect=true JĽBC Driver class: org.postgresq1.Driver Username: username (postgres) Password: password
Port/nazwa;baz¶_
||
ii.-'1'.ÍL"'t`" lĹI'.f".Í'*¬l"t'tÍll l ¦Ei"t'T¬;Tf='*-'l"|` Ft-"-ak' l`J."'.¦“."“r`{ E-l
Kolejny krok to umieszczenie zapytań do bazy danych, generowanych automatycznie zgodnie z parametrami, które zostaly ustalone w oknie grupy wątków. W tym celu wybie ramy opcje: DodajƒSamp|erƒ]DB'E Request. W polu zapytania umieszczamy klauzulę SQL dostosowaną do identyfikatorów jnazwj tabeli kolumn bazy danych serwera MySQL, na której przeprowadzamy test. Poniewaz łączymy się z bazą danych podaną w URL: jdbe.mysql:ƒƒlooalhost:Sflüfifemployees, warto wczesniej sprawdzic, czy wpisywana przez nas klauzula SQL nie zawiera błedów. Mozerny to zrobic w konsoli l"riy5Q L: mysols sstscr * room employees WHERE Ľhire„oare - otrrh_oate} s emo_no; Rys. 34.3. Test zapytania przeprowadzony w konsoli serwera
jesli wpisana przez nas l'-:werencia jest poprawna, zgodna z testem, który chcemy wykonać, umieszczamy ją w polu SQL Query okna ÜDB5 Request. Narzędzie potrafi symulowarf liczne zapytania scisle określoną kwerendą, dlatego znajduje spore zastosowanie. zwłaszcza wsród programistów aplikacji internetowych połączonych z bazami danych. np. systemów CMS.
--%BC Request jeszuzz post: eaquaet
litera:
_
_
__
j'ti"ariat:t|o Htntie lšlountt to Pool
_
jtrarnota nmmjtosor
__
'-Süt_'Etue|'_t,r-
_
j
_H
`!t1'tt.lttr3.rT3||ps:j5e|e=|:lE`tl=ti_tem'e'tI_
_ _
" '
i jse|_EcT ' Faoa emmowes wl-te ss tn|ra_aa1e Ítz|Ftn_t±Íí±E›i`Š Ê.ł`;_š`_ͬ`Ł›`_` I R1.-._ 5~t.*J'. Umieszczenie zapytania w oknie j[Ĺ'.lBC Request programu jlvieter
jesli nie mamy wystarczająco duzej bazy danych. aby obciązytř serwer. przykładowe bazy danych mozemy pobrac z serwera https:jfƒ|aunchparl.netj'test¬db. Haze uzytą w tym przykładzie pobrano właśnie z tej strony. Aby miec mozliwość. śledzenia reakcji serwera Mj.'5QL na wykresie, nalezy dodac jeszcze jeden komponent Graph Results. W ostatnim kroku uruchantiamy test za pomocą przycisku Play. Ümówiony powyzej sposób testowania serwerów baz danyeli ma plusy w postaci przenosrtosci kodu programu jlyleter, który mozemy uzywac bezposrednio w serwerze
Linus jf Windows. Do zbierania informacji dotyczących a_l
issraiacta '_~.i~_i¬:"r.i1-=ir=. sos o.ir~i¬i ii
šsii' l.I¿ui:hr||ii fii'E_js___t1"_t_inioe
wym;
to i
W
-
__
Lwem»-H ivftizj-ef"-¬='~.i›~
`eiorttoiitIii=t'-flafliiiief 'ÍIIEI'
ggłljfi
._.
Ęlugam
_
FIE PIll'l¦l.'¦='.i'it¦l'H'
'1|| '.:-h|l1.".
Rfimuj gu
'ÍTTT
Eafimhf
PostFroi:esofj.r
| |j¦1||'|
"l"'f
l'.|-|l1'l=
oi..a„_ sie
`
`
nltritlosibiatlt
|=:.Í:ř. -_ _ft _. -= ' a=ae1anaie'Ia Eiea|'|5I'ts'lI.i5tte.lteI' _ .wau _-
zapisz ¦szi'i:ooro=|1tojoEIto...
H'
'|_| I jm wqtitfiwt ĘF U l Ę Euiijoiisioli .ltsasrtton '|i||'ioiialiI'i!'l thiełuimwctanu tttaiio zat|:is'go'iiiena
Eariisz 'iueletlałto 'tit=tt'IIt.'t|'t IH' Iapiszsttrolijołiootiraeelt 1"l'I~"¬h""= f'
urzoii poiiitiirz
Í-F 'I
eonerate 'siiiiinioiy Riiflilts
Fi-'_
I
;¬_-
l r"`¦n.'.1-.'ro..|-zi-nl
ul-I
Rys 3 l ]iJ Dodanie interfejsu generujątego wykres wydajnosc:
.I -I 'J
-I
T_+ Ź _Jm
'.
I-
są a i."="'=' lszi njsrlsl
--
-
I-'U
Hg '
11
I
'IĘ4 m
eroph Roautts mm; 'Jta pn _Riasujis Ź
mi
ze-ii=iiir:iz.'tiiii"i'i'fi=i=|='II=t'_ iiimnniiiu*
_
¦|_1"=-r'-na jraoiniidfihoaaviaaisflaohnt Eieiw Ela'
eniomtoniiiiiiiif Fiona |.El|i'.-tiroiin telionom Ereeaian tšttistiiiiitiinil IDIIIŹIEI [Ü
.=_7___._.._._ =›=--t¬aí-¿'-_:1_ H toiuisliriiiiio iiiooii
iioiiirsinijiiu taras oiiwiiitnii stiori
tiiruoqiipiii
i im za-iiminuii
-
H
aiiifltił łflzü' ieniiein i
Rys 34 I i Przykładowy wynik testu obciążenia bazy danych
-Ęiilllom I'l'|'t'|fi'i
1- |-..|-1|-q -._ -il-I .|- 'i.'i.;|'l '_'-'
_-
__ ___ ___ ____
__-__
__
'all ti."|'i'|
_
._ ....._.ífm'-il'
J--iu-'niu
.-
Il¬|¦|Il'|'l'll"|l'|'||-||-
ł||i|.l'|"'|.|'n|||ll|
. ...
2222.'
Ľ "-'I'
Ę
1: 'i
'I'l'
I-fl'i'h.¬"l
lfi'l'l
it'
__-__
iii
lttti
Il
:|'li-h'I".I:!i3i.I.t
i r"|"|
FHĹ'
¶
lg-
ql
I'H'l' lI'II
'I'|' 'I I.'
IE-
Rrs 34 il Ükno prograritii li-'iy5QL Workbench monitorujące prace systemu
2
ł
272
sazr oasrci1isrsTrmr ssriiasrcu
Program Munin moze dostarczać np. informacji o znzşfciu cache'1.t ciyskow: Binaişfƒfielay Loga - by ciay
i
Lo as as
1|'
*
13.?
as o.s na
Leg activity
"
ĽLEI l¦|.¦
o.:|. D. D
. unii |¦l|¦Z¦I:1'-.'31
piq zzno
Ê
I ainlaq one!-u oi_~z|t us'
_í-3---że lflh 1i¦fifl
Š
I Bi.r1`l.c|g Ľ'-|l=|:i1I till'
I flimrr Lwa fii==="
sses 3333
seen 3333
neon?ÊEEÊ"
El Relay Log Spice
opupš3333"
lłşs. 134-13- Ülcno programu Munin przedstawiające monitorowanie zużycia dysków
Ważną informacią jest rowniez podanie na wykresach, ia1-cie komendy są naiczesciei uzzrwane. Dzieki temu w testach wykonywanych za pomoca ]Meter mozna dostosować typ sşfmuiowanych kwerend, a i¬},'¬m samym stworzyć realną sirrnulacie obciążenia serwera. Command Eounters - by day 1.1
second r'
Corr! marldsprl'
`
1.1 'LD
I'
BJ l¦|.E
|'|
I
¦¦|-`J' D.E l15 ü."l E13 ¦I.2 fl.1
I¦i.l¦I'
pr.. rano
I
mh oaon
5-¦|b1ID'|¦|
,=.=.
HI
I Ľielete _ Irtfinrt I I|"'|'flli'l¦ select
El Load 'Ľlltli I I=l.'1p'La±i
sessĘ3333" PFUPFP 333333
I &|:|`|'.lcl il`l.'l'|:1:
eesäfišsssgs"
fi 5'l'|.l'.-et I l.H:I'fiI"l'.l
I Upclato multi I Hilfltimfi
season 333333
sens 3333
üflåfia
ten
fiseeeežssssşs"
ttşs
Rys 34.14- Wykres prezentujący' najczesciej wykonywane typy zaciari Ponadto warto zapoznać się rownież z programem Hagios. ictórşf mozna znaleźć na stronie htrp: ƒƒwww.nagios.orgƒ.
Ümowione powyzej nuzeclzia stanowią. jedynie przşfkłarişf sposobów sjşmiulowania 'Jilciązenia serwerow w ceiu optşnnsiizacii ich iarjfdajności. Narzedzia monitorowania obciążenia systemu podczas działania baz danşfcli stanowią
dość iiczrią grupe. Oprocz omawianego w poclręcznilcu programu Iviuriin istnieja rowniez. inne rozwiązania. takie jak NAGIÜS, ICIHGA. CACTI. Rlłlltool (Round Robin Databafifi Tool}.
iusimacja seswssa saz oasrca jj273 m,.____
_.
_
--|._--.-
_
-
__
-
___-__
1.-
_
--
-__
1.-p
,
_.
1.1.:
-
---
1.1.--J-u-u-p
='|'---_¬.¿.
J I |
i J |'
|
-I
|
I
|
1 |
'
u 1 1 1 1
Poniżej znajduje się zestawienie odnośników do stron z ww. oprogramowaniem. NAGIOS http://www.nagios.org MUNIN http://n'1unin-monitoring.org/ ICINGA https://www.icinga.org/ CACTI htlp://w¬ww.cacti.net RRDtoo1 http://oss.oetiker.ch/rrdtoo1/
_J-I'l.
1
i
ji 'i ,. .. ..
i s
.,í__.
SPRAWDŹ swoja WIEDZĘ 1. jakie znasz narzędzia pozwalające symulować obciążenie serwera za pomocą wielokrotnych kwerend? 2. Czy bezpośredni wzrost szybkości pracy serwera baz danych umożliwia rozszerzenie
| 'l'_ i_ż. ¬_I :.`:.|' ji
;.' ""` Ii
. 't 4
.
I
;o.'¬L.' `›.' .' ,.
'pi
f'¬-
[Ê lł
-ru-
11: '': ai:|
¬'-' ,.
pamięci dyskowej czy operacyjnej? 3. lakich narzędzi należy użyć, aby śledzić zużycie zasobów serwera baz danych przedstawionych za pomocą wykresów?
'_-|-.__-;___ __¬|_"--"'=. _'_.|¬ 'li ."'
|
,¬'| '|-
;I '
|'| I"I
27
Bazy DANYCH 1 srsírrwlr s.-iz D.-m\"Y'cí|-I _- ._ -_ -
-I' -un.-u \.I¬-u
._._._¬..._._._¬_._._._._._ ' ..l_______í____________________-____..__-_._r__.______________________________________________________ __
_
_
_
________________ I
Optymalizacja konfiguracji serwera baz danych I _I |
'.--__-____________
__
I I I
___
_.____-__.__
ZAGADNIENIA
I Wytyczne dotyczące takich zasobów sprzętowych jak: pamięć RAM, dyski (i ich podział) system operacyjny, połączenie sieciowe ` _` _` ' ` `_'.I:I' --------í----------.¬.-..I
I'
.I I' J .I .I
I' I' |' |' I'
I'
|
.I I' ' II I' I' I'
I' I I' I' I' I' I
.' '
I I
I' I' I |'
I' I I I I I I_ I
|_ I I' | I' |' I I' I |' |' I I' I I' I |' | |' I |' | I' I'
I I I I I I I I I I I I I I I I I I I I I I I I
.'
'_
5'
I
|_
I
I r | | |' | | | | | | I' , | | | | | | | | | |' | |
I I I I I I I I I I I I I I I I I I I I I I I I I
I
I
|
I
|
I
| |
I I
I
.I
|
I
, I
I .'
|
I
I |
.I I _I I I
| I I | I I I |
I _I .' I _' _' .' _I
I
_I
| ,
._I
_I
I
_._
_.___
¬_
_
._._______¬____________
_
_
____
_
_
_
____
___________________¬_._.
_
_._____.
-I I
I I I I I f I I I
I I I'
I' I I
wysoką przepustowość.
seaatyiiz swfoią wisnzs
|-:_ :.'
.¦._,'_±]¦ .I¦'_
_-__-__
Istnieją Wytyczne dotyczące konfiguracji sprzętowej serwerów baz danych. Praca serwera baz danych w znacznym stopniu zależy nie tylko od projektu bazy danych, lecz także o CI.. zasobów sprzętowych, którymi dysponuje SZBD. jeśli posiadamy wystarczającą ilość pamięci operacyjnej, aby wczytać do niej całą bazę danych, wówczas jej działanie będzie o wiele szybsze niż w momencie odczytywania danych z dysku. Warto unikać stronicowania, poniewaz odczyt i zapis na dysku są znacznie wolniejsze niż dostęp do pamięci operacyjnej. Warto używać pamięci RAM podtrzymywanej bateriami. Planując sprzęt dla serwera baz danych, musimy rozważyć również użycie dysków w RAID1O (sprzętowych) lub Wyższych, przy czym użycie RAIDS i RAID programowych nie jest zalecane. O ile to możliwe, warto oddzielić system operacyjny od bazy danych nie tylko za pomocą logicznych partycji, lecz także przy użyciu innego dysku fizycznego. System operacyjny, który często wykonuje operacje zapisu i odczytu, może spowalniać pracę bazy danych. Wybierając dyski, powinniśmy zainwestować W dyski o dużych przepustowościach, np. SAS, przy czym w zastosowaniach RAID mniefsze dyski pracują szybciej. Tworząc RAID, musimy zdecydować się na rozwiązania podtrzymania cache RAID-u za pomocą baterii lub kopiowania zawartości CACHE do pamięci flash przy utracie zasilania. Użycie takich technologii ma na celu ochronę przed utratą danych. W systemach Linux warto rozważyć zastosowanie systemu plików XPS, który to system w przypadku baz danych może okazać się bardziej wydajny niż extž lub eXt3. Użycie 64-bitowych systemów operacyjnych pozwala na instalację większych ilości pamięci RAM, co korzystnie wpływa na wydajność baz danych. Wąskim gardłem dla serwera może okazać się również niestabilne lub mało wydajne połączenie sieciowe, dlatego warto rozważyć użycie kart sieciowych i urządzeń oferujących
.":--'III
7"-źli .I 1 ._-.__',j
-.-_.-.-.._--_____-_______-_ _________._____._._.__._._______-_._
_
|_-_
I' _ I'| I-' :| .I-' ""|
--`¬¦
tz' .___¿¬_!
I-.;'ͦ¦
": I ."' ¦|
-4.'
,I"'."_|
I'-¬.-I ".I
ii .'i¦
1. 2. 3. 4.
Na co należy zwrócić uwagę podczas konfiguracji sprzętowej serwera baz danych? Co to są dyski RAID? Co to jest system plików XFS? jak połączenie sieciowe wpływa na działanie serwera baz danych?
.I I_II I I i
I'
|.-.s I ai ..'u_:j..-¬. .~_¬i;I-tu.'i=s_.-¬. ss;-' os. r-..=r-'.¬|-1
I Optymalizacja _ bazy danych
j ZIIIIĽIĘDHIEIIIIIII
l Pojęcie optymalizacji 1 Efery oddziaływania bazy danych I Środowisko bazy danych I Najczęstsze problemy przy połączeniu z bazą danych I Staclia planowania i projektowania bazy danych I Wielkość pola I Testowanie stworzonej bazy danych I Istota audytu I Co to jest optymalizacja Złąflefi?
1 Rózne rodzaje złączeñ: jt'JIN5, :łączenia wewnętrzne (Inner joinsj, zewnętmne [üuter joinsj, lewostronne złączenie zewnętrzne '[Leł`t Üuter join), prawostron ne złączenie zewnętrzne [Right Duter ]oins), :łączenia krzyżowe [Cross join), partycjonowane zlączenie zewnętrzne I_'Partitionecl Üuter join), pełne :łączenie zewnętrzne (Full üuter join) ___-
____
..-._
_
___í___
Tabela mająca więcej niż jeden klucz obcy Podczas tworzenia tabel zgodnie z zaprojektowanym schematern diagramów związków encji istnieją przypadki, w których zachodzi potrzeba umieszczenia w tabeli więcej niż jednego klucza obcego. Dzieje się tak w dwóch przypadkach: 1 pierwszy - gdy chcemy z tabelą połączyć więcej niz jedną tabelę. musimy użyć kluczy głównych dwóch podrzędnych tabel jako kluczy obcych naszej nadrzędnej tabeli: 1 drugi - gdy chcemy zaimplementować relację wiele do wielu. Więzy spójności pozwalają kontrolować spójność danych w momencie ich umieszczania w tabelach. Podczas pracy nad opiymalizacją bazy danych w pierwszej kolejności należy wziąć pod uwagę główne wytyczne do przeprowadzania procesów oplymalizacyjnych. Należy upewnić się. czy: 1 indeksy zostaly ustawione prawidłowo. 1 zapytania - kwerendy zostaly zoplymalizowane, 1 narzędzia, które służą do monitorowania i optymalizacji bazy danych, zostały w pełni wykorzystane. Wytyczne i techniki optymalizacyjne przedstawione w tym rozdziale są uniwersalne dla takich środowisk jak Access. MySQL, SQL Serwer, Üracle, PostgreSQL itp. Bazy danych mają stale zmieniającą się formę (nie Ina identycznych baz danych). W założeniu tym należy uwzględnić procesy opiymalizowania i ulepszania bazy danych, które powinny stale zachodzić. Projekty powinny być rozwijane i testowane stale.
j ŻÍ5
li- .'”-". Í 'T' IJ ."-'t H T'-'._` H I ř'i"| bz i l-. i*-'1"¦" ii ."". :Í l.`="r"'t TH: T Ĺ." i I
Nigdy nie powinno się stosować nowych pomyslow, rozwiązań technicznych i ich wdrożeń bez wykonania wcześniejszej kopii zapasowej bazy danych oraz rzetelnego przetesto-
wania nowego rozwiązania. Podczas tworzenia kopii zapasowych należy upewnić się. że są one prawidłowo wykonane i urnożliwiają dokładne odtworzenie bazy danych. Założenie to jest istome, zwłaszcza gdy baza danych zawiera na przykład kilka tysięcy linkow do grafik umieszczanych w serwisie interrietowym. Gdy wykonujemy kopię systemu i położenie grafiki ulegnie zmianie lub zostania ona utracona w wyniku awarii dysku, okazać się może, że kopia samej bazy danych jest niewystarczająca, a odnalezienie kilku czy kilkunastu tysięcy plikow graficznych - niewykonalne. Po wykonaniu kopii zapasowej i jej odtworzeniu należy przeprowadzic testy. czy baza danych daje się przywrocić do wcześniejszego stanu i czy w sieci obciążonej zgodnie z szacowanymi wartościami pracuje poprawnie. "'F"."aż1'1e. aby nowe rozwiązania i pomysły opierać na rzetelnej wiedzy. dokumentacji. opiniach innych fachowcow. jeśli nie jest się pewnym skuteczności rozwiązań technicznych, warto wstrzymać się z ich wprowadzaniem. 'Dptymalizacja bazy danych to proces rozpoczynający się już w chwili projektowania. Übejrnuje ut-rzrymanie bazy danych w talcim stanie, by oferowała maksymalną szybkość działania przy zużyciu minimalnych zasobow sprzętowych. Brak znajomości sieci, w ktorej baza danych będzie pracować, oraz jej przeznaczenia, a także prawidłowo szacowanego obciążenia nie tylko liczbą zapytań, lecz takze ilością
danych, to podstawowe problemy, ktore dotyczą procesu projektowania. Kluczowa staje się znajomość tzw. wąskich gardeł i słabych stron projektowanego systemu. Üptymalizacja jest procesem podnoszącym wydajność bazy danych w stosunku do wykonywanych przez nią operacji. Üpiera się na stosowaniu najbardziej optymalnych rozwiązań dla napotykanych problemow i ograniczeń. Üptynializacja bazy danych dotyczy: 1 przestrzeni dyskowych systemow plikow? I szybkości dostepu do danych podyktowanej rownież uwarunkowaniami sprzętowymi;
n wydajności kwerend: 1' efektyvrmości i prawidłowości ustalenia indeksow. Podstawowym wymogiem optymalizacji jest dokładna znajomość środowiska bazy danych, sprzętu, na ktorym pracuje, systemu operacyjnego i systemu zarządzania samą bazą danych. Wiedza ta pozwala na przeprowadzanie optymalizacji środowiska bazy danych tak, aby zapewnić jej wydajna prace. Podczas optymalizacji rozważane są nie tylko operacje na danych w obrębie bazy, lecz także operacje dokonywane w całej sieci, w ktorej baza zostanie umieszczona. jeśli baza danych używana jest przez system CMS, należy rozważyć rnozliwość kilkunastu tysięcy odwiedzin w danej jednostce czasu i testować wydajność pod kątem szacowanego obciążenia.
Na środowisko bazy danych mają wpływ: 'I EPTEĘL
1 połączenia sieciowe. o wydajność serwera, 1 szyfrowanie oraz wykonywanie kodu w obrębie baą' danych jmin. kodu 5QL}, 1 stosowanie indeksow. Stosując indeksy, powodujemy, że system sortuje dane w momencie utworzenia indeksu. jeśli nie korzystamy z indeksu. dane sortowane są za każdym razem, gdy wykonujemy
zapytanie.
ll“¬l.':'l`l`.-"'tL.~'f'.1¬'_`Íj.'*'. !*:'l_¿lł“'.`i"."`lll'l'..'¬". li.'l'..7f l_`1=.'l~.:"¬i`i"í_`l'l
lstotnyrn punktem optymalizacji jest uświadomienie sobie, że wydajność indeksu jest zawsze rodzajem kompromisu pomiędzy możliwością częstych aktualizacji krotek tabeli a szybkością wyszukania w niej danych.
Częste problemy Do częstych problemow należą problemy z połączeniami z bazą danych. jeśli z bazą danych możemy połączyć się lokalnie, jednak mamy problemy z połączeniami sieciowymi ja zakładamy, że takie połączenia będą nam potrzebnej, wowczas dość często spotykanym problemem jest niewłaściwa konfiguracja portu bazy danych. Problemem
może być nie tylko brak wpisu lub błędny wpis w pliku konfiguracyjnym bazy. Bywają przypadki, że połączenie uniemożliwia firewall lub inny program wykorzystujący do komunikacji ten sam port. 'Üprocz problemow programowych możliwe są rownież problemy z samą łącznością fizyczną lub prawidłowym zaadresowaniem sprzętu w sieci. Ügranicze-
nia mogą się pojawić. jeśli system plikow określa np., że maksymalna wielkość pliku nie moze przekroczyć 1 GB, natomiast baza danych będzie przechowywać informacje w tabelach, ktore będą plikami i swoją objętością przekroczą 1 GB. wowczas nalezy rozwazyć użycie innego systemu plikow na dysku. często rownież innego systemu operacyjnego. Może się rownież pojawić konieczność określenia maksymalnej wielkości pliku z dziennikami systemowymi jlogfilcj bazy danych. Zdarzyć się może. że czas wykonywania kwerend będzie zbyt długi. Wowczas należy
skorzystać z komponentu. w ktory wyposażono większość systemow baz danych - analizatora zapytań. Analizator zapytań tworzy plan wykonania kwerendy i analizuje wyniki.
Serwer to program przeznaczony do oferowanie określonej usługi. Llruchamiany jest zazwyczaj z chwilą startu systemu operacyjnego. Bardzo ważną cechą_. jaką powinien charakteryzować się serwer, jest wysoka wydajność. lstotną cechą serwera jest podniesienie bezpieczeństwa danych, zwiększenie kontroli nad bezpieczeństwem przez określenie
polityki ograniczenia dostępu do danych. Serwer oferuje mozliwość łatwiejszego zarządzania danflii, ponieważ w architekturze klient-serwer dane są scentralizowane. Serwer umożliwia pracę wielu środowisk systemowych. lstomą cechą w połączeniach sieciowych serwera jest umożliwienie 'wystarczająco szybkich połączeń, ktore zapewnią szybkie działariie w przypadku wyższych szacowanych obciążeń. Serwer powinien mieć wystarmające zasoby sprzętowe, aby sprostać wymaganiom związanym z wysokim obciążeniem. Pomiędzy serwerem a systemem operacyjnym, pod ktorego kontrolą pracuje serwer, występuje zależność. Gdy system operacyjny zawiedzie. pracujący pod jego kontrolą serwer rownież przestanie działać. Architektura klient-serwer nie musi składać się z jednego komputera pełniącego rolę serwera i wielu komputerow klienckich. Coraz powszechniej spotyka się grupy komputerow serwerowych z jednym centralnym serwerem lub kilka komputerow serwerowych, z ktorych każdy dedykowany jest dla innej usługi, np. jeden komputer zostaje skonfigurowany i przeznaczony wyłącznie na potrzeby serwera baz danych (mowimy o dedykowanym serwerze baz danychj, a inny - na potrzeby se:rwera www. Taka polityka sprawia, że awaria jednego z komputerow nie powoduje odcięcia od wszystkich usług
serwerowych. Maszyny serwerowe mogą rownież mieć swoje duplikaty (wierne kopiej, ktore przejmują ich rolę w chwilach przeciążenia sieci lub na '."."ypadek awarii.
277
li =1.?`i` l`J'.f'i!`“~l"i"l._¬_l-l l STSTl7l'~-'l"|" l"!..¿'..T" Ľ'.'A`“~l`*r"t`l-l
Stadia planowania i projektowania, gdy za pomocą schematow (np. modeli konceptual-
nych, diagramow ER) wizualizujemy bazę danych, sprawiają, ze zaczynamy precyzować: o jakiej potrzebujemy bazy danych - jakie będzie jej przeznaczenie; o jakich tabel potrzebujemy, jakie kolumny znajdą się w tabelach",
1 czy baza danych będzie pracować w sieci i jakie będzie jej szacowane obciążenie: 1 jaki będzie przepływ informacji w bazie danych i jaki będzie wygląd tabel; o jakie kolumny znajdą się w bazie danych i jakiego będą typu. Wszystkie wyżej wymienione punkty powinny być potraktowano bardzo poważnie, po-
niewaz jednym z najważniejszych elementow optymalizacji jest sam projekt. Analizując diagramy związkow encji, mozemy przez śledzenie powiązań pomiędzy tabelami określić. ktora tabela ma klucz glowny, a ktora - klucz obcy. czy związek jest typu jeden do jednego, cm' też jeden do wielu. Zależności te wskazują, jaki jest przepływ
informacji. Zemowienia
"="fi"1 , Hy.'_¬. 56.1. Połączenie tabel związkiem jeden do wielu Klucze głowne mają nazwę tabeli, co ułatwia modelowanie związkow, gdy posiadamy wiele tabel. Klucz glowny, ktorym jest I{1ientID w tabeli Klient, jest kluczem obcym
w tabeli zamowienie. Taki projekt obrazuje, że informacje o klientach (ich imionach, nazwiskach itd.) będą przepływać z tabeli Klient do tabeli zamowienie. Pierwszą zasadą optymalizującą pracę nad modelowaniem bazy danych jest używanie nazw kluczy głownych opartych na nazwie tabel, z ktorych pochodzą. Istotne jest rowniez,
aby w nazwach tabel i kolumn nie było spacji.
Definiowanie wielkości pola jak zauważyliśmy wyżej, optymalizacja bazy danych powimia być wykonywana juz na etapie projektowania. jeśli dla kolumny Nazwisko użyjemy typu '*Hi.It.t':I-ti¦iIt{12B}, wtedy
baza danych dla kazdego nazwiska zarezerwuje 123 znakow. W przypadku. gdy w bazie znajdzie się FÜ osob, operacje będą przebiegać wydajnie, jednak gdy zaczniemy operować bazą danych zawierającą kilkadziesiąt tysięcy lub kilkaset tysięcy klientow, wowczas operacje wyszukiwania pochłoną o wiele więcej zasobow, niż gdybyśmy zdeiiniowali kolumnę Hnzwi .eko jako np. `l.f.i¦iItCHi¦i1ł{45}. Warto rowniez na etapie projektowania stosować
nazwy kolumn niezawierające spacji i znakow specjalnych, jeśli nie jest to konieczne. Łatwiej posługiwać się nazwami: Godzinyjraey lub Godzin1rPr.=aey' niz „godziny pracy”, ponieważ w pożniejszych etapach w rożnych SZBD może dochodzić to konieczności specjalnego traktowania takich kolumn na etapie wpisywania instrukcji SQL.
tr¬ts't.=t|..›'›.tí:J.~. stfss.-'ifii.-ft sat 1.1.-tsytftt
Na etapie projektowania buy danych kluczową rolę odgrywają następujące czynności:
Ülcreślenie, jakie da ne są konieczne jniezbędnej. np. umieszczając w tabeli Klient nurner PESEL, nie musimy Lunieszczać dodatkowej kolumny i tworzyć sztucznego klucza
I
głównego, gdyz nie ma dwoch osćib o jednakowych numerach PES EL, zatem koltmina zawierająca numery PESEL moze być kluczem giciwnym. Poniewaz w numerze PESEL jest informacja zawierająca datę urodzin, nie ma konieczności tworzenia dodatkowych kolumn, by umieszczać informację o wieku czy dacie urodzin, poniewaz wszystkie te dane mozna uzyskać na podstawie numeru PESEL (numer PESEL posiada rćtwniez określenie płci- mowi o tym przedostatnia cyfra jparzysta - K, nieparzysta - Mjj. Wyznaczenie kluczy gioymych i kluczy obcych oraz związkow pomiędzy tabelami nie
tylko pozwala uniknąć biędow, lecz takze obrazuje przepływ informacji, dlatego opty~ malizacja bazy dartych rozpoczyna się juz od optymalizacji modelu konceptualnego.
Defmiowanie właściwości typów kolumn i relacji odgrywa bardzo wazna rolę, gdyż wpływa na ilość zasobćiw systemowych poświęcanych na magazynowanie kolejnych krotek oraz szybkość wyszukiwania. Ükreślenie przepływu informacji na podstawie stworzenia tabel połączonych związkami oraz ich znormalizowanie.
Wlaściwe zidentyfikowanie kluczy i upewnienie się, ze nazwy kolumn nie zawierają znakow specjalnych, spacji oraz są podane poprawnie i czytelnie. Unikanie danych, ktore są niekonieczne. lub takich, ktore mozna wyliczyć na podstawie informacji umieszczonych w bazie danych. Üstatnim elementem jest przeniesienie tych wszystkich zasad do projektu bazy danych. Projekt bazy danych składa się z elementow. ktore powirmy zostać rozwazone pod kątem optymalizacji. We wstępnej fazie nalezy odpowiedzieć na pytania: jakie inforrnacje będą umieszczane w bazie danych? jakie raporty będą generowane? jaki będzie przepływ informacji:
8 itto wprowadza informacje i jak często? ut Kto gromadzi informacje?
u tcto i jak często będzie generować raporty? 1 Gdzie będzie uzywana baza danych [czy będzie to serwer w sieci lokalnej czy moze host internetowy przeznaczony do świadczenia uslug webowych opartych na bazach
danychj? Üptyrnaiizacja bazy danych jest zwykle rodzajem kompromisu pomiędzy celami, jakie chcemy osiągnąć, a zasobami. jakimi dysponujemy. Zasoby, ktore mozemy poświęcić jako przedsiębiorstwo lub firma, mozna określić, odpowiadając na pytania: 'I
jakimi zasobami sprzętowyrni dysponujemy (moc obliczeniowa komputerow, pamięć operacyjna, pamięć dyskowa, wydajność dyskćtw, szybkość łączy internetowych i sieci lokalnychj?
I
I
jakie środki finansowe mozemy przeznaczyć na urządzenia uzywane do kopii zapasowych baz danych, jakie posiadamy systemy operacyjne i jakich będziemy potrzebować. czy będzie się to wiązało z koniecznością zakupu licencji na oprogramowanie? Co jesteśmy w stanie wspierać {czy mamy przeszkoloną kadrę i dział IT, ktćiry obshizy ww. systemy, czy posiadamy odpowiedni sprzęt i oprogramowanie, które mozemy wykorzystać, czy spełniamy wymogi zabezpieczeń danych określane przez ustawyj?
Projektując bazy danych zawierające np. dane osobowe klientow, jesteśmy zobowiązani je odpowiednio zabezpieczyć.
j 279
230
sazi-' o.-ist-'t':ti | si's'|'t'-'f~.-ii saz. ii.-'tras-'=. 1-1
-_i_¬--¦
Bardzo istotnym elementem jest zainstalowanie i skonfigurowanie narzędzi monitorujących oraz właściwa konfiguracja plikow zawierających dzienniki pracy SEED (pliki z logami systemowymij. Załozeniem oprogramowania monitorującego jest dostarczenie jak największej ilości informacji o pracy SZBD oraz o pracy samego systemu. Trudno poruszać kwestię wydajności baz danych i optymalizacji bez omowienia zagadnień testowania. Idea testowania opiera się na zebraniu informacji o zachowaniu serwera w trakcie normalnej pracy, zwykłego i skrajnego przeciązenia oraz pojawiających się blędow.
Testy są odpowiedzią na pytanie, jak szybko SZBD moze przetwarzać zapytania, zachowując nadal stabilność pracy. l"‹la tej postawie jesteśmy w stanie przeprowadzić symulację.
jak zachowa się projektowany przez nas system w trakcie maksymalnych obciązeri i jaka jest jego maksymalna wydajność. Üptymalnie zaprojektowany i gruntownie przetestowany system zachowuje się zgodnie z naszymi oczekiwaniami w momencie skrajnego obciązenia- W przypadku, gdy zaprojektowana baza danych nie zostanie poddana testom, nie
mozemy oszacować, jak zachowa się w chwili wdrozenia. Nie wiemy, jakie obciążenie jest maksymalne i czy pojawiają się błędy oraz jalcie obciązenie powoduje. ze system odinowi dostępu do zasobow. Wadiiwe oprogramowanie moze zrazić klientow, choć istnieją firmy. ktore swoim istnieniem pmeczą tej regule. Zagadnienia optymalizacji opierają się na redukcji problemow z oprogramowaniem i sprzętem.
Problemy generowane przez oprogramowanie Zbyt duza liczba działających aplikacji [kazdej z aplikacji system operacyjny przydziela zasoby w postaci m.i_rt. parnięci operacyjnej oraz czasu procesora) moze generować problemy. jeśli uruchomimy duzą liczbę aplikacji, powinniśmy brać pod uwagę zachowanie systemu, gdy uruchomione aplikacje zuzyją część zasobow, będą generować błędy, mogą stanowić lukę w zabezpieczeniach, gdyz ich kod moze pochodzić z nieznanych zrodeł.
Mogą tez same nie być przetestowane pod kątem bezpieczeństwa. Problemy z uszkodzonymi plikami- Do uszkodzeń plikow moze dojść w wyniku uwarunkowań sprzętowych, wad dysku lub w gdy nagle nastąpi przerwa w dostawie
zasilania. Wazne jest stosowanie zasilaczy awaryjnych wraz z zaim_plementowaniem procedury zamykania systemu na wypadek dlugo utrzymującej się awarii zasilania [gdy czas wspomagania przez UPS jest krotszy od spodziewanego czasu awarii, system powinien w bezpieczny sposob zakończyć pracę bazy danych i wyłączyć się tak. aby nie doszło do uszkodzeń plikow). Problemy uszkodzonych plikow wiązą się rowniez z brakiem zapewnienia odpowiednich warunkow do pracy dyskow twardych, np. wstrząsy, pole elektromagnetyczne, brak ochrony przed przepięciami w sieci itd. Pliki mogą być rowniez uszkadzane przez wirusy lub inne oprogramowanie typu robak.
Rodzaje testow baz danych: 1 Testy obciązenia polegają na uruchamianiu rownocześnie wielu aplikacji, ładowania duzych zdjęć, obrazow i obserwacji zachowania systemu. 1 Testy wydajności słuzą do sprawdzenia, ktory serwer jest lepszy. 1 Testy obciązenia probnego wykazują, jak duzo zapytań serwer moze przetworzyć, np. podczas 2Ü sekund. 1 Testy przeciązenia (test warunkow skrajnych) to malcsyrnalna liczba zapytań, lctorą serwer moze przetworzyć w ciągu godziny.
1 Testy pojemnościowe badają, jaka jest maksymalna liczba jednocześnie pracujących uzytkownikow. 1" |
231
I bi S`"|`fl. l.,"`it_` l ."'t S li l¬t"','if` l:Ĺ ił .ft li =f". .}'." lJf"'. "'-i `|'"'f."Í ll
1 Długoterminowy test przeciązenia skrajnego. 1 Test przeciązenia pojedynczej Funkcji polega na tym. ze np. stu uzytkownikow wykonuje tę samą funkcję bez czasu oczekiwania. 1 Test podstawowy nalezy do najwazniejszych testow bazy danych i powinien być stale przeprowadzany.
aby rzetelnie wykonać test zaprojektowanej ban' danych, mozna postępować wedlug ponizszego schematu. | 1 Dkreślić narzędzia i urządzenia przeznaczone do monitorowania. 1 Zidentyfikować typ problemu, czy jest to: 1 problem środowisko'-.yy [duza liczba uzytkownikow, wiele zapytań pochodzących z sieci); 1 problem sprzętowy - uszkodzenia dysku: 1 problemy z siecią [brak połączeń sieciowych, błędna konfiguracja sieci, niewystarczające parametry połączenia sieciowego itp.}; 1 problemy dotyczące pamięci - liczba i wydajność użytych pamięci dyskowycb i operacyjnych.
1 ilość kodu umieszczonego w bazie danych, widoki, schematy, funkcje. procedury. obiekty.
1 Sprawdzić, cm' kod umieszczony w bazie danych jest poprawny oraz czy funkcje, procedury i skrypty nie generują dodatkowych obciązeń serwera. 1 Dokładnie przeanalizować posiadany sprzęt: procesor, pamięć, dyski, przerwania, wąskie gardła sprzętowe.
1 Frzeanalizować projekt bazy danych: 1 Üptymalizacja zapytań jbrakujące indeksy, aplikacje połączone z bazą danychj.
Podniesienie wydajności podczas pracy w sieci Podniesienie wydajności podczas pracy w sieci wymaga odpowiedzi na zasadnicze pytania: 1 Czy senyer bazy danych musi odpowiadać na pakiety ping dla wszystkich hostow w sieci, czy wystarczy, ze będzie udzielał odpowiedzi tylko dla IP komputera administratora systemu i sieci?
1 Czy konto umozliwiające dostęp do bazy danych i „F lub serwera moze zostać zawieszone po trzech nieudanych probach logowania?
1 Czy serwer wyposazono w narzędzia alarmujące administratora na wypadek prob przełamania zabezpieczeń (SQL injection, Cross-Scripting - }{SSj?
Podczas analizy projektu bazy danych istotną rolę odgrywa uzycie tabeli, w ktorej przedstawione będą uprawnienia uzytkownikow. Pomimo ze analiza uprawnień, jakie nalezy przyznać uzytkownikom w obrębie bazy danych, to zajęcie zmudne, jest jednym z najwazniejszych punktow w zakresie bezpieczeństwa.
Audyt bazy danych audyt bazy danych rejestrujący wybrane zdarzenia i zapisujący je w tabeli moze okazać się pomocny podczas wykonywania analizy projektu bazy danych. Statystyki serwera, ich generowanie i szczegołowość nalezą do kluczowych punktow optymalizacji baz danych.
Dokładną konfigurację dotyczącą wielkości plikow tymczasowych generowanych przez serwer baz danych oraz wielkości plikow zawierających statystyki pracy serwera warto rozwazyć pod kątem miejsca pamięci dyskowej, ktore mogą zająć. Wydajność to test, jak szybko serwer moze odpowiedziec na zapytanie. Testy wydajności wykonuje się przez umieszczenie identycznych baz danych na dwoch roznych i-
232 E
sazi-: i_i_a.:~iwżii r sr-;'t'1fr~.-ii' aaa riar-:i‹'t|
i
serwerach i sprawdzenie. jak szybko serwery są w stanie odpowiedzieć na określony typ zapytania. Występują testy pracy przy szacowanym ohciązeniu i testy pracy przy skrajnym obciążeniu.
i
Zrozumieć audyt Ê
Audyt bazy danych pozwala na uzyskanie szczegółowych informacji dotyczących dostępu do danych, które powinny podlegać szczególnej ochronie. 'Ľ`_Ízynność ta oparta jest na ob-
;
serwacji operacji przeprowadzanych przez uzytkowników bazy danych pod kątem bezpie-
Í
czeristwa. Kluczowe czynności audytu to:
_
I Zabezpieczenia samego serwera bazy danych. 1 Zabezpieczenia sieci ipołączen sieciowych. I Zabezpieczenia dotyczące kontroli operacji przeprowadzanych na tabelach. 1 'Ograniczenia dostępu do modyfikowania przywilejów. 1 Nalezy unikać konfiguracj i sieci. w której serwer baz danych byłby widoczny z sieci internet (brak bezpośredniego dostępu do portu serwera ze strony sieci publicznej). Ieśli serwer baz danych przeznaczony jest jako oferta ustug webowych jw połączeniu
z Apache. NGINX itd..}, powinien być tak skonfigurowany, by akceptować połączenia jedynie ze strony serwera web - pozwolenie na połączenia tylko zaufanym adresom IP.
Prowadząc politykę bezpieczeństwa, musimy pamiętać, ze 90% strategicznie waznych danych dla przedsiębiorst¬wa znajduje się na serwerach bazodanowych. Akcje audytu przebiegają zarowno na poziomie serwera, jaki na poziomie bazy danych. 'I' 'I 'I
'I'
I'
I' I'
Akcje na poziomie serwera: dostęp do serwera, logowanie, wylogowywartie. Akcje na pozionrie bazy danych: operacje z uzyciern języków UML i ÜDL Akcje na poziomie audytu: dokumentowanie i przeprowadzenie audytu. Do czynności audytowych wykorzystuje się: Wyzwalacze jtriggersj w tabelach posłuzą do udokumentowania momentów, gdy na tabelach lub w bazie danych zostaną wykonywane operacje, które powinny stać się przedmiotem zainteresowania osoby audytującej. Zainteresowani znajdą bogate źródło w internecie pod hasłem: Audit Trigger. Üprogramowanie zewnętrznych dostawców firmy Enforciye przeznaczone do audytu baz danych, www.softtreetech.com itp. Llzycie procedur przechowywanych w bazach danych. Śledzenie zdarzeń umieszczonych w dziennikach, logach.
Optymalizacja złączeñ 2 Ę
2
Podczas łączenia tabel mogą zajść okoliczności prowadzące do dodatkowego spadku wydajnosci. Sytuacja taka powodowana jest: u zlączeniami tabel, z których jedna moze nie mieć klucza głównego jednoznacznie identyfikującego krotlci; 1 złączeniami tabel zawierających puste pola. Aby uniknąć takich sytuacji, nalezy pamiętać, ze zlączeń dokonujemy na tabelach mających klucze główne, aby móc wyznaczyć związki pomiędzy kluczem podstawowym i lduczem obcym. ]eśli dokonujemy zlączenia na tabelach, w których dane nie są jednoznacznie identyfikowane, moze dojść do eksplozji danych, co negatywnie odbije się na wydajności bazy danych. Zlączenia oferują informacje pochodzące z dwóch lub większej liczby tabel. jeśli złączenie dotyczy dwóch tabel, np. A i B, to dla kazdej krotki tabeli A musi być sprawdzona odpowiadająca jej krotka tabeli E. Üptyrnalizacja kolumn uzywanych w złączeniach join
i h l'."t 1. A Cl "r H ii ii "'.'i." l' |¬' .-". J- A Í' l_]'r"r i"¬l `“r`tÍ i-i
Í Indeksy
IÅGÅDHIEHIÅ
I Definicja indeksu
I Zasady stosowania indeksów I Modyñkacie danych w obrębie indeksów I Iależności między indeksami e podnoszeniem 'u›"ydajnośt:i
Częstą praktyką 'wykorzystywaną w celu podniesienia wydajności baz danych jest stosowanie indeksów. indeks najprościej mozna zdefiniować jako strukturę danych uzywaną do kojarzenia wartości z wierszami przez bazę danych. Zastosowanie indeksu ułatwia znajdowanie wartości i dzięlci temu system baz danych nie musi przeszukiwać całej tabeli. Indeksy nałozone na atrybut organizują dane, dzięki czemu operacje przeszukiwania wykonywane są szybciej, gdyz zmniejszają ilość o-dczytywanych danych. Działanie indeksu najczęściej tłumaczone jest na przykładach ksiązki telefonicznej. Zorganizowanie danych przez alfabetyczne uporządkowanie nazwisk orm umieszczenie spisu treści przyśpiesza odnalezienie abonenta- Zainteresowana osoba sprawdza w spisie treści przedział stron dla danej litery alfabetu i znajduje abonenta szybciej. niz gdyby byla zmuszona przeglądać kolejno wszystkie strony ksiązki telefonicznej w poszukiwaniu interesującech ją nazwisk. Indeks jest dodatkową stmkturą danych przypominającą skorowidz. Gdy indeksujemy np. kolumnę zawierającą nazwiska, mozemy ograniczyć wielkość indeksowanych pól. powiedzmy, do trzech pierwszych znaków. Taka praktyka powoduje wzrost szybkości indeksowania pól. a co za tym idzie - optymalizację szybkości realizowania zapytan. Stosowanie indeksu wymaga zapoznania się z clokumentacją DEMS, której zamierzamy użyć, poniewaz nieumiejętne uzycie indeksów moze nie tylko nie podnieść 'wydajności baz danych, lecz takze niepotrzebnie przeciązać system. powodując spadek wydajności. Poniewaz większość systemów baz danych automatycznie indeksuje klum: główny, praktyka nakładania indeksów na klucze główne tabel świadczy o braku elementarnej wiedzy. tladmiarowy indeks powoduje większe straty spowodowane niepotrzebnyrn obciązeniem systemu. Należy pamiętać, ze mechanizm indeksowania nie ma określonego standardu. a sposób jego realizowania w róznych systemach bazodanowych zalezy od rozwiązań technicznych przyjętych przez twórców tych systemów. Indeks jest strukturą, w obrębie której dane są posortowane. kazdorazowa modyfikacja danych w obrębie indeksu pociąga za sobą konieczność jego aktualizacji (ponownego posegregowania danych). W związku z tym zalecane jest świadome i ostrozrre korzystanie z indeksów, szczególnie tam. gdzie ich nakładanie na atrybuty moze spowodować większe straty wydajności systemu niz zyski. Podobne zjawisko spadku wydajności systemu ma miejsce, gdy indeksy nakładamy na kolumny. których wartości kolejnych krotek to przykładowo bardzo dlugie ciągi znaków. System w momencie indeksowania kilku tysięcy wierszy'
-
I
i
t Z "
|
l
a.-'tzr o.-'t.'-irrzn | srsrt-:rur s.-'tz oai-l'r'r':H
o sporej długości. n p. yarchar jiüüj, i ciągłych potrzebach aktualizacji indeksu związanych I z licznymi zmianami. moze ponieść większe straty wydajności niz w wypadku. gdyby indeksowane byly niewielkie ciągi znaków lub cyfr. Stosowanie indeksów nalezy rozwazyć, gdy mamy do czynienia z kolumnami, w któ-
rych obrębie dane mogą się obficie powtarzać. Klucz indeksu moze w takim wypadku wskazywać na wiele rekordów, co spowoduje. ze korzyść indeksowania danych w takiej kolumnie będzie znikoma. I ndeksów nie powinno się stosować w tabelach o bardzo niewielkiej ilości danych. w których odczytanie danych z uzyciem indeksu jest bardziej kosztowne dla systemu niz wykonanie tej operacji bez indeksu. f `
Stosowanie indeksów powinno być poprzedzone zebraniem informacji z zakresu pracy
.
bazy danych, zapytań, ich częstotliwości i obciązenia systemu. W systemie MySQL i Post
= j a
greSQL mozliwe jest rejestrowanie zapytań. których czas wykonania pmekracza pewną zadaną wartość.
I I
long'_q|.rary__tima
| 1og_min_du:cation_ata.t›am|ant:
¦
= ¿
Üha narzędzia są bardzo pomocne podczas optymalizacji pracy bazy danych. ponie-
| '
waz pozwalają określić nie tylko, jaka fon'na zapytania SQL najbardziej obciąza system,
' j
ale przede wszystkim zapytania, które mogą być zadawane z wielokrotną częstotliwością. W tym drugim przypadku mozemy łatwo stwierdzić. czy nałozenie indeksu na określony
j
atrybut przynosi istotny wzrost wydajności. Podnosić wydajność mozemy równiez. sto-
_ y | = l . .
sując taki kod aplikacji. który będzie nas inforrnował o tzw. wąskich gardlaclt (fragmenty kodu programu zuzywające najwięcej zasobów i potrzebujące na swoją realizację duzej ilości czasuj. lstome podniesienie wydajności bazy danych mozna osiągnąć przez przeniesienie indeksów do pamięci podręcznej. Aby utworzyć indeks. stosuje się polecenie SQL: CREATE IHDEI.
I
sraawoz swoją wrsozą 1. Podaj definicję indeksu i wyjaśnij. jakie zastosowanie mają indeksy w bazach danych. 2. jakiiżoi zasada mi naleą' się kierować podczas stosowania indehów? 3. W jaki sposób indeksy podnoszą wydajność bazy danych?
| Å
Å
Å
Å
--
Å
Å
Å
Å
Å
Å
Å
Å
Å!
ÅIÅ
i i
j|
I
l
ll\l.“~'ll`,f *'.lf1.ilf\“'-[i¬tlJ'tř|'¬.`\l1\.-"'IÍi\l`“-llitll .. Ĺ.`. Š l "' 1"' ..f- "` .' "_`Í
__
1
.
1-
-
-1
_.
'Í
.
ł-'IL
I |fldel(Sy
l' PostgreSQL
*
=l zAGA|:m|E|'~||a
t
1 I I 1| I
Zasady administrowania uprawnieniami przy użyciu pgAdn1inI|| Definicje indeksów i ich typy: B-tree [B-drzewa), indeks haszowany, indeks GiST, index GIN Identyfikatory indeksu Usuwanie indeksów Rodzaje indeksów: indeksy wielokolumnowe, indeksy nakładane na funkcje, indeksy nakładane na wyrażenie, UNIQUE, indeks częściowy (partial index) 1 Zasady usuwania indeksu za pomoca narzędzia pgfltdminlll ._
..
.
_
, I _ = ¿ 5 l
.
j .= _s j i
_ -_ ._ _¿.
J |
,_ |
I
| .
I
I
indeksów uzywa się w celu zwiększenia wydajności bazy danych. Zasada ich działania podobna jest do indeksów stosowanych w skoroszytach, ksiażlcacłi. Indeksy nakładane są na kolumny tabel. PostgreSQL - jak większość SZBD - nakłada indeksy automatycznie na klucze główne tabel. Trzeba pamiętać, ze po nałożeniu indeksu nie należy go aktualizowac, poniewaz jest on aktualizowany automatycznie po każdej zmianie dokonanej na danych należących do incleksowanej kolumny. Automatyczne akt-ualizowanie kolumny indeksu przez DBM S może wiązać się ze spadkiem wydajności bazy danych w przypadku,
' , ,
¦, l „_ j'
gdy indeksujemy kolumnę, której dane są bardzo czesto modyfikowane. Spadek wydajne-
5'
ści związany jest równiez z indeksami, które potrzebują dużych zasobów pamięci. Indeks uzywany jest automatycznie po nałożeniu go na koluirtnqr. Zwiększenie wydajności baz danych przy stosowaniu indeksów wystepuje, gdy indeksujemy kolumnę łączącą dwie tabele i używarny wielu kwerend zawierających złączenia
; Ê l l "
mh_*_:
jÜlN przy użyciu tej kolurnny.
Indeksy nakłada się równiez na kolumny, które używane sa do o,_=;'_,raniczania liczby za-
¿ ;_ í -im.__.
pytań.
Typy indeksów
¿- t
e B-tree (B-drzewa)
¦
-_. Å_
__
Ten typ indeksu używany jest najczęściej dla zapytań zawierających operatory porównania: większe od, mniejsze od, więlrsze lub równe, mniejsze lub równe, różne, pomiędzy
. ¿ "
(s1_:'rwsEN),1s NULL_1s NOT Nu'LL.
e Indeks haszowany
Stosuje Funkcję przekształcającą ciągi wartości klucza o dowolnej długości na wartość o ustalonej długości. Indeks haszowany wykorzystuje się w bazach danych, gdy wyszukiwanie jest oparte na równości klucza. e Indeks CÍST [Generalized search Tree)
Indeks ten stosowany jest przede wszystkim do bardziej skomplikowanych. typów danych i operacji spoza podstawowych porównań oraz określania zakresów. Wykorzysty-
_
f =
wany jest głównie przy uzyciu geomehycznych typów danych.
.' L-u_lim¬.-
-
292
.
t=.-iz |".-'~.
s'.;||| 2--i s | t-*-.11' H. -ir. ft' .-1 ts i -'fa
1 lndez C-IH jßeneralized Inyerted ihldezesj
indeks jest ~.s';,'ko1'zystywany'. jądy zachodzi potrzeba zmapowania wiel1.1 wartości w jednyrn wierszu.
L|z¬_.„¬a.':it1y jest ;głównie przy tablicowych typach danych. np. intej_jer[]. ,gdzie w kolejnych krotkach kolumny znajdują sir; tablice. Należy pamiętać, że umieszczanie zbiorćw.-' danych jnp. tablicyj w miejscu przecięcia się wiersza i kolumny tabeli jest sprzeczne z pierwszą postacią normalną i tabeli takiej nie można nazwać relacja. Aby utworzyć indeks. nalezy posłużyć sie następtijącą skladnią polecenia SQL: Create Incleit ident:yfi]r.ator_inc1elcsu Ülii nszwe.__tsbelijnazws__]col1.1u'tnyj : ldeiityfilcator indeksu to nazwa wlasna indeksu. której bedziemy używać, aby wykonywać operacje na ntworzonyrtt indeksie. instrukcja nakładająca indeks na kolutmie imie:
|'i¬.'s_ fii'_5-l _ T'wnr'.-Title i|1dŁ'l'-tsti ss' F'cs'Lg,1'FÊiQL
Domyślttle twot'zony jest indeks typu B-tree.
.=f~.li¬y utworzyć indeks haszowany. ttżywamy polecenia SQL: 'EREJŁTE IHDEH goscie_im:i.e__hssh__inc1eks DH goscie TJSIHG hssh t[i1:rci.e]| ,-
Å-
_Ÿ
t-tys. 33.1. Tworzenie indeksu l1aszou.';|iiep,ri'a- i*r:1stc,'re5QL
Roznica pomiedzy dwiema instrukcjami SQL polega na dodaniu slowa kluczowego TJEIHG i nazwy typu indeksu jrnetody indeksowaniaj w miejscu identyfikatora tabeliZamiast goscie (imie) znajduje się hash{imie'1 . W podobny sposób unneszczarny indeksy (L}ll*~l oraz Gl5`l`: CREATE IHDEI goscie_imie_gin_inc1el-cs DH goscie USIHG gin tirniej ; jezeli chcemy wytj-'pować określony schemat, do którego indeks ma należeć. wówczas umieszczamy następującą instrukcję SQL.: CEEPLTE IHDEI nazwa_schemstn.icient},rfiicato1:_inclelcsu DI-I nszus_tsł::'eli {nszws_lcolu1rtr11,f]' ;
W powyższyni poleceniu w miejscu na.zws_sche1rtstu podajemy ident¬yi_ikator scliematu. np. pttbliiş. po ktorym musi zostac umieszczona kropka oddzielająca idetityf`1katrir
schematu od identyfikatora indeksu. Na pojedyncza kolumnę mozna nałożyć indeksy różnych typów; f
His. i¦";..t. Üpis tabeli jjościiz' ' zawierający iniorniacje o indeksach w tabeli
_Å
2
_
_`-:-
-__¬___
-_-___f__`
--_-<
__
vw»
.
»
.
'
'
jak przedstawia rysunek 38.3. na kolumnę imię zostały nałożone dwa indeksy: hash i btree. W obrębie jednej tabeli indeks określonego typu, np. B-tree. można nałożyć na kilka kolumn.
Usuwanie indeksu Aby usunąć indeks. używamy polecenia DROP lN DEX. Możemy przy użyciu jednego polecenia usunąć więcej niż jeden indeks pod warunkiem. że identyfikatory indeksów oddzielimy przecinkami. Przykład polecenia SQL: DROP INDEX indeks_kolumny_imie, go8cie_imie__hash_indeks;
t¿ş¬ %>»4 Usuwanieindeksn
Indeksy wtelokolumnowe jesli w obrębie tabel na dwu kolumnach bardzo często używane są zapytania zawierające warunek AND, możemy rozważyć. czy poprawę wydajności osiągniemy, stosując indeksy wielokolumnowe. jako przykładu użyjemy tabeli px:ac_p_pomoc: racownikl imie l nazwisko l wiek eger =charą_ç_ter vacj Character va|l_ l
j
biowak
34
.Ê
\Jc'j':iech
Kowalski
30
3
Michal
M1 emcza)-:
23
-'1
Renata
Zawadzka
25
5
Irena
'Szal omska
5S
6
hiik co r 1 8
Kor.: al sk e
7
Bozena
PLz¬,'l-zosclns 40
3
RM _t.*±.^'›` Tabela prac_p_pomo‹'
jeśli wiele kwerend zawiera warunek AND pomiędzy kolumnami imie i nazwisko. np. kwerendy w postaci: SELECT wiek FROM prac_p_pomoc WHERE imie=' Jan' AND nazwisko='Nowak' :
lut 3% ‹› Przykładowe zapytanie clotyifząre kolumn
wówczas możemy zastosować indeks wielokolumnowy za pomocą polecenia SQL: CREATE INDEX indeks_imie_nazwisko ON prac_p_pomoc (imie , nazwisko) ,' ._.i
293
294
|i-*-.'i |'¬-
i'. I-1 - si =- | Ł-
¦'.-i
-f. |-
ltrs. Eif'.i..7. l`-lakładanie indeksu na dwie kolumny
'Gdy pracujerny w ił`tistgre5Ql. i nie parniętarny identyfikatora indeksu. możeniy wyśw'ietliiÍ iiicleksy liałriżritir' na knltininy wyliranej talieli. tiąryskttjąt' jej opis pcilec.t+|*iietn
hd nazwa tabeli.
His `~'.'-"ś.~'“i. Üpis tiihcll prac.. p..pnr1u¦'‹::
jak przedstawia powyższa ilustracja. indeks wielokolumnowy w tabeli prsc_j;:-_pomoc nia itlent.yi`ikator incleks_imie_nazwis}co. jest typu El-tree i został nałożony na kolurnny imie. nazwisko. indeksy mogą być nakładane nie tylko na kolumny. lecz także na wyrażenia i Funkcje wyliczane z pojedynczycli kolumn i p;rup kolumn.
Indeksy nakładane na funkcje leśli na danej kolumnie wykoiiy¬a-'aiia jest czesto lcwerenda zawierająca Funkcje. nplower jj , wowczas opłacalne może stać sie nałożenie indeksu na łiitikcje w odniesieniu do kolumny. ktora używana jest w lcwerendach. tip. polecenie SELECT lower {imie} FF.C|ł-'!ł goscie;
wykona ftiiikcje. lower 'U na każdej l-trtitce kulut|"itty imie:
I
lłis ii*-.'.t l.lżyc.ic' funkcji loy'.'c'r ii' I`*nstprc'5'Ql-
Aby w przypadku wielu kwerend zawierającycli tę Eunkcję zoptymalizować czas wyszukiwania. nakładamy indeks poleceniemt 'CREATE IIJDEI inci.el'cs__na_fur1l-:cji DH goscie 1,' lower (imie) Ĺl ;
His. i?'i.l'¦' ['~«|alr_iżei11cirttli_'l-;sil na l'nnkcj+,'
-mr:
_
Å
Ż
Ż
Å
indeksy nakładane na wyrażenia Üprocż hmkcji w licznych kwerenclach dotyczących tych samych kolumn tabeli może pojawiać sie określone wyrażenie. Wiiofcżas możemy rozważyć' celowość indeksowania wyrażenia. lłrzykład wyrażeiiia dla tabeli goscie:
lłys. i¦"i.ll `l'al_iel.'.t t__?,_t':|sclc'
SELECT id_goscis FEÜH goscie WHERE Ęimie|j', fllnszwiskoj = 'Msrek, Howak'; i
iii-s. ES]] 2. ¬tL"y'rażcrtiie użyte w tabeli ,"¿oscif.'
.ftby nałożyć indeks na wyrażenie, posługujerny sie następującą klauzulą SQL: CHEATE II~1'DEIl'I iric1eks_ne_i'ryrszeniu BH gosciełłirniej 1 ' , ' | lnazwiskojj ,' H" ATE 1HDEk indeas_na_wyrsżen1u on goscieĘtjmiejj', '|jnażwisko}}; i-tys if.ł.t i Przykład nałożenia indeksu na wyra;›".t-'nie
Indeks unique indeks Lli's'lQl_lE nakładany' jest na kolumny w celu dtidatkowcp,ri wymuszenia unikatowości zawartych w nich danych. Indeks ten może być nakładany na po jedynczą kolumnę ltib grupę kolumn. I-Ĺalecaną prakt¬yl¬'.ą nakładania ograniczen na kolumny jest posługiwanie sie typowym ograniczeniem ADD ĽÜHSTRAINT... Lit'-HQIJE. jednak nakładanie indeksu tttiikatow'ep,o jest rownież dopuszczalne. Należy pamiętać, że jedynie kolumny li-tree nio,-e;ą być indeksowane nnikatowo. Dla przykładu poslużymy się tabelą p_bhp. jid
j imie
nazwisko
j wiek
.wiek___dziec|i:ał
jt"='=fls": :]'=ietłflH'_="*r`ezií"i ¦=*'=f"s"='=_=f.r"r*"'itiś!?it!is11?'='*'fi*t-!1ii'?f==t=t II
iS
-.I an
Hora aa
za
1 :':¦
'-Jo] oaeeii
5-Ioireisi-: 1
so
].E|
H-ar. 1. cut
l*ł'I|1-"'eLlt
Ź'¦":¦
lE
Harcin
Tcecz
.ło
Liř'
Ewa
ti]-: :nec
J
lo
His- _i-ti I-1 Tabela p_bhp
.
li.-`s.r"t
l_`}.-"ii's"'i"i_`łł
l T"i"i"*i_l'l""Ll`t
ł.ł.""tĹ-"
li""'.:`*~i“|t`l"l
jeśli zachodzi sytuacja. w ktorej nie chcemy dopuścić. aby w firmie istniały dwie osoby o takim samym imieniu i nazwisku, dodatkowo chcąc nałożyć na kolumny imie i nazwisko incleks. rnożemy posłużyć się klauzulą: ĽIELEIŁTE UNIQUE Inctea: nioj-_indeks__unikatowy Üi'¬¬l p_bl'|p'[imie.nazwiskoj; mojaba:a== ĽREATE UNI
ca_EaTz rr~ii.'e:'..
_
iłys. }.*:l.l'i. hiałożenie indeksu UHIQUE
Po wykonaniu tej czynności proba dodania do tabeli kolejnego jana Nowaka lub Marcina Tracza spotka sie z odmowa.
Indeks częściowy (partial indez) Gdy wśrod kwerend bazy danych często zdarzają się zapytania na określonym fragmencie danych, np. zapytania tabeli p_bhp dotyczace krotek od id = 2 do 4. wówczas możemy podnieść wydajność przez nałożenie indeksu częściowego. Gdy kwerendy dotyczą wybranego iragmentu kolumny. a pozostała część jest często rnodyfikowana. wówczas nałożenie indeksu częściowego może okazać sie optymalnym rozwiązaniem: CREATE IHDEJĽ trioj_incłe}cs__czesr:ioi-ry' tlltil p_bhp{ne.zwisko} WHERE ici EETHEEH 2 AND 4; ¬njnhü?a=H EREo`i '-Íł7.E±".TE .[.l"«llŦE`!":
IMÜEE mo]„1ndek5_c:ss
His. itslti. l“~iałożenie indeksu częśi'iowegri
indeksy możemy tworzyć rownież za pomocą iiarzedzia pgśidminl ll. W tym celu zaznaczamy w prawym menu tabel-:;_.', w ktorej chcemy utworzyć indeks. iz menu kontekstuwego wyl1iera.my Nowy obiekt, a następnie Nowy indeks___1qbdĘy?j
iobmosyflenmwo
_¦ '
Nccatlf-a
ijl_ I!"
Cldśilrreż
Ed [Hi
Elicz
E ga.-_ ., ' 1 pt -,-, -J Üšj, .tj i Fifa
|_Isi.11"ij'sle|sui... Ekesoyrarttokasliodone... übcleoe Ctbclęoe li_asl'-żelowe
Nowetalade... Nowa lnołurnna... htowyltliaczołncy... litowe oçeri-o.'e|'|+o 'i'rj"łth.moj-`.ące. .. litowe oçp'e|'iiczonto unikalna...
ji,
Reset robot statystyk
Nowe sorawdzerie...
'i jaa I
UC:
ist-
'-if. FI-'-"|l'=fi¬F .i
|
Eh.
“W
P” U E
l.
_ d l
usa.,
_
l"low'y' trtooer...
p|F||"I'I'|l'ł"l"
I-tys. "`›¦'il-[Í" Użycie indeksu w programie pgetdrriinlll
Pierwszą czynnością. jaką wykonamy. będzie wpisanie ident¬yf`ikatora dla indeksu. np. nowy_indeksDo dobrych praktyk należy stosowanie nazewnictwa. które w przedrostkach albo przyrostkach będzie zawierało skrót iiiformttjący, iż jest to identyfikator indeksu. np. imie_ na.zi'ris1co_ida., gdzie ich: informuje nas o tym. że wybrany obiekt jest indeksem.
1r-is|'-it...~tf-'|.-ti si-'ii.w1fit.t |.'...iz 1.ift.st'r_:i-i ____
Å
í_
.
__
.ii
area-aa`|neeea.|iaiaaii1"so j' tiaeoa
-..Ę_±í_
'Ê
jho'-.~i"_"¬1=l@ eli-
j
¦
_
l
-1 Rys- 33-13. Wybór identyfikatora dla indeksu
Kolejną czynnością jest określenie. które kolumny mają być indeksowane. Dla przykładu użyjemy kolumn imie i nazwisko-
“if-uaaeiiuoeu | iiefincja.
jest I
Inne nazwisko
.üifiii .ASC
|_.'¦'.ST LAST
sama
mm
Fame'
F__"_"?`*íÊ
iaaaiai |_-'__-_:"_Ê| T'
NLLte
'l"Fmsr
_-- 1
;j
Ê'
f""|.iśsT
_--» 1
Rys. 33.151. Wybór kolumny do indeksowania
| 5
łśolejnym kroiciem jest przejście do zakładki Definicja i wybranie typu indeksu. jaki
chcemy nałożyć na wybrane poprzednio kolcunny. Wybom dokonujemy za pomocą rozwijanego menu pola Metoda dostępu.
8 |
I-saw-I za I jcdomyśha tabtespacoa'
E 'I
_
btroe l_hl-r.słt'jr H
.flfiłiflf
_'_
_._
hash
_
||;|'ş1; gin
I ¿ : j
5
_
_
_
Ê'
ł-`tys. ł3.Ílil. Wybór rodzaju indeksu
Zakładka Definicja umożliwia również tworzenie indeksów unikatowych jzaznaczamy pole Unikato'wyj. jeśli chcemy utworzyć indeks częściowy, tzw. partial index. wówczas w polu Dgraniczenie wpisujemy warunek. np. id BETWEEH 1 AHH ii. Słowo kluczowe WHERE zostanie dodane do ograniczenia automatycznie.
I . '
H
j j , ` j
í
ł'
253
sw.-:.i' n.-isi:f.:ii | st':s:|:i=.rui' aaż tfnt-~i'r=r-':i-i
±-1
f
¦
Å
, ā
Å
mi
ki.-.
:Å
Å
'="=='°"'=t-='I'i-a'-'=.=¬"'1i'|.=ś'- l
'
saaiiaiaia
I
czwiügwpdrimfla.
Š |
Lhlidar
F
ltlaster
F
Jedrioczosi'iat'Htorzenie?
Í-
Š
'
jiafistwesn I anna
-I
Rys. 13-11. 'Dkreślenie dełinicji indeksu
Całość tak utworzonego indelmu mozemy sprawdzić. przeglądając kod SQ L w zal-dadce SQL.
-
aj
iuswetfilnenoijaaumy B1 I
il _
F'l"t"|'ü¦H±H¦|'tk:zj"l:|-i 'Ľ'l='I.|l.TE i]lII'ĹIł.lE IHIIEI noI.r5'_Lud-„elcs
U31 '|;|r:'.'-'cie ĽJĘIEIG htzr-ee |j1.lti.ł.' .iiāłf I'i|JLł.5 I-.ii5`l", nuiiriaito ASC ił'L|'L¦L5 I.J|.5T¦| Ľł|HE¦RE .td IĘIETREEIJ' -¬- JLHII -L:
`
Rys. 33-22. Widok kodu SQL utworzonego indeksu
Usuwanie indeksu za pomocą narzędzia pgAdminl|I Aby usunąć indeks za pomocą narzędzia pgrfidmin III. należy zaznaczyć indeks w prawym menu w gałęzi Indeksy i z menu kontekstowego wybrać opcję Usuń ,f5kasuj... z
j |
si
ra'.-ze m
IE i-T] cami:-
ai =i'-ji raurmyrai
I z
s-J IH 'Dorariiras-iaitj El Ę Iridekiy t2¦I
Ü
Š' Inrlel'is_na_'.-".'yr-az j
-
Wyzwdacze |¦I¦Ŝl_`¦|
j = `
l Ę
El _
¦
| ' ¿
' -
' ` ”
¦
tt-'i _cio D is F-'_-'_t p-ntoe lffi _ ltl
'
L
-"': Fi'-1=aLlr 'tül'
Ę
I
li-ał:|'ele|_r'i¿|i:łri1!t¦"d'“|-a _ uczniowie
zawody_wod1ei|'si'.|e ._ FLl1l'=.1e wyzraolfiy Ęlilj'
. . -'-' - Ię›I " . . . ._ 1'
_ _í.___._.í__ Í łłl
ai _ wew: tu
"|.-G..-.ha ..||.|__ |z'Ł__,¬, , |'.l|\
Rys. 3t't.I-E3. Usuwanie indeksu w programie pgsdminili
srsawoż swoją wn-żozs 'Co to jest indeks i jakie są typy indeksów? Do czego służą identyfikatory indeksu? jakie są rodzaje indeksów? :'l“:l" l" '.-' Do czego służy narzędzie pgflidminllłi'
*'-
:-¬.
l
Fl.›'iÍ.`t' l_ł."'."'~l`1"lŻ`l-i i §"i"r'f~i`l l-l"‹'l"|` l-i.¿'i`r*. l_`!."1'|l"¬|"|"'I.Íl-i
|
l
I
Ĺ Podział zagrozen i dla bazy danych | sposoby przeciwdziałania im l
|
|
IAGADHIEN IA
1 u un 1
Pójęcie standardów bezpieczeństwa teleinfórmatycznegu jakie są typy ataków na bazy danych? Na czym pelega zapewnienie ciągłości pracy systemu? Ftejącie ataku i terróryzrnu elektrómagnetycznegó
Wraz ze wzróstem peptilarnósci baz danych i cnraz czestszym ich używaniem w bankach. serwisach internetewych. agencjach rządówych stają się nne ceraz bardziej atrakcyjnym celem dla krakerów araz esób i instytucji, dla których dane te są cenne. Ataki na bazy danych te nie ryllce próby ódczytri chróniónych infcirmacji, aie także próby mndyfikacji danych iub ich zniszczenia. Üprócz zagrózeń wynikających z bezpesredri ich działań ze streny człewieka. meżna wyróżnić zagróżenia związane z awariarni sprzętu. óprógramnwania eraz brakiem własci'¬fi.'ych zabezpieczeń systemów in ferrnatycznych przed awariami lub edcieciern zasilania. ]ednyn1 z najważniejszych zadań na etapie irnplementewania baz danydi jest właściwe i kempieksewe zaprójektewanie zabezpieczeń. Frójekt zabezpieczeń systemu baz danych pnwinien elirninówac jak najwięcej zagrnżeń systemu baz danych, być elastyczny w zakresie jegó rezbudewy eraz zawierać precedury póstępnwania na wypadek awarii. W rózdziale tym zóstaną przedstawiane i sklasyfikewane zagróżenia dla systemów baz danych, rnetódy przeciwdziałania im óraz pedane inferrnacje clótyczące spósebów zabezpieczania baz danych (MySQL. Pc¦stgre.'_"iQL, Access}. W ceiu usysteniatyzewania zagreżeri i technik echróny danych epracewanó standardy bezpieczeństwa teieinferrnatycznegu. Paniewaz ramy tematyczne i ebjetóśc tegó pedręcznika nnierneżliwiają szczegóiewe i pełne ümówienie pelityki związanej z bezpieczeristwern, istatne kwestie zestaną ennówinne skrótewn. a czytelnika zachęcamy de zapoznania sie ze szczegółami deknmentacji eiektrenicznej znajdującej się na pnrtaiach peświecnnych bezpiec zeństwu _ Standardy wskazujące na najlepsze praktyki zabezpieczeń: BS W99-1. ISÜHEC ifi3.35 należą de grupy wytycznych dla bndewania systemów. lstrlieją również standardy bezpieczeństwa. na których bazuje sie padczas przeprewadzania certyfikacji: CC, ITSEC. TSEC. B5 W99-2. W Pólsce: PN-l-13335-1: 1999. PI¬~i-iSÜ,ilE'C 15403-1:2ÜÜ2. PN- ISÜJIEC i??'Et"šl:1t`J'Ü3. F'i"~i- I-Ü?'.?"-.FJ-212005. Ügraniczając szereką tematykę zabezpieczeń kempnterewych de baz da nych, zacznijmy nd charakteru baz danych. dla których zabezpieczenia bedziemy prejektnwaó- Innych zabezpieczeń wymagają bazy danych banków Ęprzeclieymjące numery kart kreciytówych. dane nsebnwe. irrtbrmacje cr przelewach elekrrenicznychj. a innych bazy danych z tytułami książek demewej biblieteczki. I
_I
v
Y.-×1=t¿1/i¬u¿‹.2,t:~‹t,±\ mz o„\NY‹;u
› .Š › 4
z -1-vi
' i ¿ Í I t '
!
N Í j f Í j l
j Ę Ê 2 , J j j ; I
I l
j y l Í t j
1 ?
__
-_
__.<Ą
_%___.-.
--Ĺ
__._„
Ÿ
-ý-...Å
m--
e
f
ý
,_
~
Ĺ*
»_
Administrator baz danych ma obowiązek odpowiednio zabezpieczyć dane podlegające ochronie ustawowej (dane osobowe, utwory objęte prawami autorskimi itd.). Przeprowadzanie ataków na bazy danych przypomina charakterem znane typy ataków na systemy informatyczne. Ataki można podzielić na dwie grupy". 0 Ataki pasywne polegające na prowadzeniu nasłuchu sieciowego, podglądaniu. Szczególne niebezpieczeństwo tych ataków polega na tym, że atakujący może: 0 podejrzeć hasło wpisywane na klawiaturze, śledząc naciskane klawisze, ø nagrywać moment wpisywania hasła kamerą (np. ukrytą w okularach lub długopisie), z umieścić urządzenie lub program keylogger, który rejestrując przyciskane klawisze, pozwoli atakującemu odczytać hasło, 0 prowadzić nasłuch w sieciach radiowych, telefonicznych, 0 przechwytywać e‹maile lub pliki. 0 analizować ruch sieciowy i na tej podstawie dekodować zabezpieczenia (łamanie klucza WEP używanego do szyfrowania sieci Wi-Fi opiera się na analizie przesyłanych drogą radiową danych, zapisaniu ich na dysku i deszyfrowania za pomocą programu, np. Aircrack-ng, co w rezultacie skutkuje wypisaniem przez program klucza WEP szyfrującego sieć). Poniewaz ataki pasywne bardzo trudno wykryć, należy dołożyć wszelkich starań, by im właściwie zapobiegać. ø Ataki aktywne wiążą się z modyfikacja danych i ingerencja w obrębie sieci lub systemu informatycznego ze strony osoby atakującej. Najbardziej znane typy ataków aktywnych to: 0 podszywanie się pod osobę, komputer, urządzenie uprzywilejowane. co jest dość często połączone z użyciem danych zdobytych drogą ataku pasywnego (osoba. która rozszyfruje zdobyte drogą nasłuchu pakiety w sieci szyfrowanej kluczem WEP i odczyta klucz, może ustawić w swoim komputerze adres MAC komputera, który w tej sieci ma autoryzowany dostęp. następnie użyć otrzymanego klucza i na tej podstawie podszyć się pod autoryzowany komputer tej sieci), 0 powtórzenie - to posłużenie się danymi przechwyconymi w sposób pasywny i na tej podstawie uzyskanie dostępu do określonych zasobów, np. osoba, która za pomocą keyloggera przechwyciła hasło skrzynki e-mail, może logować się na cudze konto, 0 modyfikacja komunikatu -to zmiana fragmentu oryginalnego komunikatu lub jego opóżnianie. 0 blokada działania usług poprzez przeciązenia. przeladowania. zagłuszania lub fizyczne zniszczenie medium transmisyjnego (np. przecięcie przewodów). Iednyrn z przykładów niezamierzonych ataków przerwania dostępu do usług (D05) był incydent odcięcia od internetu na 5 godzin większości terenów Gruzji i Armenii, którego dokonała 75-letnia Gruzinka szukająca miedzi na sprzedaż - 28.03.2011 r. Oprócz przeciwdziałania atakom ze strony osób mających intencje uzyskania nieautoryzowanego dostępu. niszczenia bądź modyfikacji danych, istotnym elementem zabezpieczenia systemu jest zapewnienie mu ciągłości pracy. Nawet dobrze zaprojektowany system wyposażony w awaryjne zasilacze (i / lub agregaty prądotwórcze) powinien mieć również zabezpieczenia w postaci odpowiednio często wykonywanych kopii zapasowych, a w przypadku szczególnie istotnych danych kopie zapasowe powinny być przechowywane w odpowiednio zabezpieczonych miejscach. Ważne jest. aby miejsce przechowywania kopii chroniło systemy na wypadek klęsk żywiołowych, kradzieży i ataków terrorystycznych, w związku z tym miejsce przechowywania danych powinno być odpowiednio odległe geograficznie.
¬i`"`
`
" "
" “_
"
` `i" 'i
7'
~'
Ą'
-nąi
Ĺ
"
`
i
Š ' , ¿;
= , i ,j H , 4 * f t I ± ' . ›
it
t
‹ I
t
I
, l . `
* _ ' , Ą 'Ÿ 7 y Ä „ 'A j 1 t
t y ; t
ā t
, l ¿ Ê
'Å l l 1 I
f
WT"
ĄA
IO
i B.-"'ti':'."r` l_"Hi.'*¬l`t=iÍli l 5"t'STF|`1.il`t' lł."tÍ lfiót-"~l"|`i.`_`l-l IJ
Í = _ =
Üprócz powszechnie znanych typów ataków dość ciekawą grupę stanowią ataki elektromagnetyczne i terroryzm elektromagnetyczny. Pomijając zakłócenia elektromagnetyczne (stosowanie jammerów), stosowane są generatory mikrofal, bomby elektromagnetyczne. przenośne generatory' mikrofal. ataki polegające na generowaniu pola eleictromagnetycznego mogą powodować również niszczenie danych i urządzeń, wpływać na ich wydajność. generować błedy. Technologie ataków elektromagnetycznych czesto wykorzystują zjawiska podsłuchu. nasluchu elekuomagnetycznego w celu podejrzenia obrazów generowanych na monitorach komputerów stacjonarnych. a nawet laptopach firm bądź instytucji.
j
| |
które nie są zabezpieczone na taką ewentualność.
¦
_ l | j ş ' j
j ` | ¦ ' I
I i Bezpieczeństwo i autoryzacje =
j
Podniesienie bezpieczeństwa serwera można osiągnąć przez modyt`1l
=
guracyjnych..
j
Üpcje mające wplyw na bezpieczenstwo: I 1 authentication_timeout (i nteger) - opcja określa w sekundach maksymalny czas. który = ma klient na uwierzytelnienie. Klientowi. który nie uwierzytelni sie w zadanym czasie. serwer zamknie połączenie. Ustawienie to ma clrnonić przed dużą liczbą zawieszonych I
' -
Í l _ ;
F
połączeń.
ssl (boolean) -' powoduje włączenie bezpiecznych połączeń SSL pod warunkiem użycia protokołu TCP,›'lP oraz uruchomienia podczas startu serwera. 1 ss|_renegotiation__Iimit (integer) - wartość podana w powyższej opcji konfiguracyjnej wskazuje na ilość danych, jaka moze być przesłana przez połączenie szyfrowane SLL przed powtómym negocjowaniem połączenia i wymianą kluczy szyfrujących. Ustawie- ' nie takie ma uchronić przed możliwością złamania szyfrowania ESL przez osobe dys-
i I _ š
. I
ā
panującą odpowiednio dużym zrzutem szyfrowanych danych. Domyślna wartość tego ustawienia to 512 MB. natomiast wartość zero powoduje wyłączenie renegocjacji. n ssl_cipl1ers (string) - uzywane jest do selekcji algorytmów szyfrujących. których można użyć w celu zabezpieczenia połączenia - opcja password__encryption (boolean).
seaawoz swoją wleozs
I Í
l '
1. Co to są standardy bezpiemeństwa teleinforrnatycznego? 2. Podaj przykłady ataków pasywnyclt i aktywnych.
3. jak powinna być prawidłowo przechowywana kopia zapasowa danych? 4. Podaj przykłady terroryzmu i ataków elekuomagoetycznych.
I...--' I
Å
_Å
Å
Å
Å
Å
_-Å
Å
---
Å
Å
Å-
_í
.il
Ft li li }'_'. F I F l."`.'“'. i" b- I r"| B Fi '.ć. l`r."'i bi `r` Lili
_
303
I
Zabezpieczenia dostępu do danych (zarządzanie bezpieczeństwem) IÅGÅDHIEHIA.
1 Iasady właściwej polityki poufności przy administrowaniu bazą danych 1 Pojęcie uznaniowego systernu kontroli I Definicja roll 1 liorrtrola dostępu do danych oparta na modelu Bell-La Padula
1 Praktyczne zabezpieczenia baz danych na przykładzie ll.-1y5QLi PostgreSQL I Tabela uprawnień
Prowadzenie właściwej polityki bezpieczeństwa w administrowaniu SZBD wymaga określenia kontroli dostępu do SZBD i do samych danych. Do najważniejszych zadań należy określenie dostępności. spójności i poufności. Użytkownik bowiem powinien mieć dostęp tylko do danych dla niego przeznaczonych. Dzięki polityce poufności nie będzie mógł podglądać danych przechowywanych przez innych uzytkowników i tych. do których nie powinien mieć dostępu. Polityka zachowania spójności wymaga nałożenia na każdego z użytkowników ograniczeń dotyczących modyfikacji danych. do których zmiany uprawnień nie powinien mieć dostępu (np. zmiany hasła lub usunięcia konta administratora bazy). Właściwa polityka dostępności natomiast umożliwia jak najlepszy dostęp do tych
danych. do których uzytkownik ma przyznane uprawnienia. Strategia określenia dostępu do danych to również zapewnienie fizycznej ochrony polegającej na przechowywania serwerów we właściwie chronionym budynku. obiekcie. Podstawowym sposobem ochrony danych jest wprowadzenie odpowiednich ograniczeń na wykonanie operacji na obiektach bazy danych. Przyznawanie uprawnień realizowane jest za pomocą klauzuli SQL - Gls.aHT. Uzytkownik o większych uprawnieniach (np.
administrator] przekazuje (uznaje) bądż odbiera (klauzula HEVDHZE) uprawnienia innemu użytkownikowi. Taki system kontroli dostępu nosi nazwę uznaniowego. ponieważ jeden uzytkownik uznaje prawa do obiektu na rzecz drugiego użytkownika. aby ułatwić mechanizm nadawania i odbierania uprawnień, w większości systemów bazodanowych definiuje się role. Rola to zestaw uprawnień i ograniczeń (brak uprawnień) określony dla wyznaczonej grupy użytkowników. Üefiniowanie roli następuje za pomocą klauzuli SQL EET HÜLE .
E .
I i
304 `
L
.L
Li.'f".z“'-"|
i.`ti"t.i“'i"'t`f-ĹII
I ¦'i"|'.STiŸt'~'|`1" Ii."".?- il.-"'."*~i"|`tI`_`ł'i
Model Bell-La Padula I
Tai:-ela 411.1- Kategorie bezpieczeństwa w rnticlełu Bełi-La Faduia
_ St:_tśietajne
_ Top secret
_ Tajne
. Secret
_ Foufne
_
_ __
_ _'¿_Źp_n_iidentia|
_ _
_____
I ___
E _
__
__
C
Do uzytku wewnętrznego
Ęestricted
D
jawne
l.-Inclassified
E
Ühowiazkowa kontrola dostepu bazująca na inocieiu Hell-La Padula opiera sie na następujących zasadach: 1 Elernentoni przypisywane są stopnie kategorii bezpieczeństwa uporządkowane liniowe: Top ssorstzāsorstbfionfidentislzflsstrioted}Uns1sssifisd 1' Podmiot ma okresiony poziom uprawnieńu Eezwala sie na odczyt infionnacji tylko w cloł. nigdy w gore. S nia prawo odczytu do Ü,
adr Lina-ll‹t~==}
L ¬ łeyel
Poziom uprawnień [Leyeh podmiotu S jest wiekszy lub rowny pozioniowi [L] obiektu Ü- Eezwata sie na przepływ informacji tylko do gory. S może pisac do obiektu O tylko wtedy, gdy poziom uprawnień S jest niniejszy bądz równy poziotnowi uprawnień Ü uraz S nia prawo zapisu do Ü. W tym wypadku połączona jest obowiazkowosc (ma-n.¿istory t1t:±:ess'} i uznaniowostž- Ltniernozliwia to podtniototn zapis infortnacji do obiektow na niższych poziomach {no write down]n Podmiot z przypisanyrn poziornein uprawnień n-ie nioze kom unikowac się z podmiotem, ktory nie ma przypisanego poziomu uprawnieńModel ten nie zapewnia spojnosci danych- łiontroluje tylko to, kto uzyskuje dostep i do czego. Nie określa ponadto zasad zarządzania kontrolą dos tępu, nie dopuszcza mechanizrnow zrnian praw dostepu i nic nie wspornina o kanałach ukrytych. Waznyni problemem pozostaje rowniez wspołdzieienie plikow.
Praktyczne zabezpieczenia baz danych na przykładzie MySQL i PostgreSQL .May uzyskac dostęp do bazy danych, nalezy uwierzytel nić się za pomoca nazwy uzytkownika i hasła. Proces taki nazywamy logowaniem- Dostęp do danych przyznawany jest i odbierany za pomocy dwoch klauzul SQL: GRA!-IT i EEVDHE- F'-Ze wzgledu na to. iz dla bezpieczeństwa baz danych przydzieianie i odbieranie użytkownikom uprawnień odgrywa kluczową role. zostanie ono ornowione własnie w rozdziałach dotyczących bezpieczeństwa na przykładzie baz danych My'SQI.. i PostgreSQL. Serwer MySQL inłcwtnacje o przywilejach juprawnieniachj do baz danych i tabel prze¬
chowuje w tabeii user w wewnętrznej bazie o nazwie mysql. Uprawnienia te rnaja po' stać kolumn o typie enum i niozliwych wa rtosciach N i T [H - brak uprawnień, T e przyznano uprawnienia)- Tahela use: przecliowuje rowniez hasła uzytkownikow w koiutnnie password- Hasła szyfrowane są domyślnie algorytrnettt MDS- Jesti uzytkownik otrzyrnałby
z.ti-it;'zi'rr='i::zi1r='ra. ir-iz r-i-".r~.'i't-'H
jållh
I
dostep do tabeli user bazy MySQL jedynie do odczytu. wystarczyłoby to do odkodowania
'
hasła i przejęcia upraumień administratora- Najprostszym sposobem jest wyszukanie haszowanego ciągu kolumny password za pomocą wyszukiwarki Google. Przy domyślnej instalacji w I-.inuzie Debian. Ubuntu pliki {user.1'!!flI:r - przechowuje hasła. user .I-HI, user . frmj znajdują sie w katalogu ƒvsrƒlibƒmysqlƒmysql- istotne jest. aby do tego katalogu przydzielic dostep jedynie dla procesu serwera mysql.
= Í
. . i _
' 'istne ru-i-.i.'nt-E-|.-1 upeearea User
|
Tu wpisana jest nazwa użytkownika-
= I
fea-aware
1-i.-ze . |"ł|J. '1FoiseaFozsarzezscoreseaosssosaaeeessisr _
E
I Sełe'r:t_priy
Prawo do odczytu danych.
I
_ lrts'E!rl._pri"r ni
Å-
Prawo do wstawienia danych.
.--
Ź-.
Å
Update__pri'.' je
i
Å-
_
í
5 I Å
Å
í
Z
mi
ííl
Prawo do modyfikacji zawartości tabel.
Ź iż-i
-
í
Å
-
Å
Å
| _
- -
í
Å-
--
il
j DeIete_priy
Prawo do usuwania.
_ Ereate__priy
Prawo do tworzenia.
I Drop_priy
Prawo do kasowania całych tabel.
j Reload_priy i L
Przywilej uprawnia do używania składni Flush. ltomenda reload przesyła . do serwera informacje o powtornym zaladowaniu do pamieci tabel grant. jest synonimem flush-priyileges ”
-Å-_-I-_.
-
Shutdown_priy ' Process-_priy File_priy
_
.
I
E `
mi
_
Å
Å
í
1| I
Prawo do wyłączenia se rwera lylySQ L.
j
Prawo do użycia klauzuli proces. np. .snow ERDĽEESLIST.
l
Przywil~;umoż|iwiający_odczyti zapis plšfiw na komputerze, na ktdr¬j.'h':j _ zainstalowany jest serwer MySQL.
C-rant__priy
E Przywilej umożliwiający przydzielanie innym użytkownikom posiadanych przez siebie uprawnień.
-
Å
Å
_*_
i Rel'erences_priy l|"tdett_priy' -_
I .a|ter__priy
I.
Å
Å
Å
Í
mi
m
Å
Å
Przywilej nieużywany jtworzenie ograniczeń w postaci kluczy obcych, ktore odwołują sie do klucza głownego innej tabeli albo do klucza unikatowegoj. I Przywilej dający moăycšf tworzeniaçteatej lub usuwania jdropj indek- = súw dla tabel. I
I Przywilej pozwalający na zmiane tabel - ich modyfikację.
Sh¬ow_db__priy
Å
_
I
Przywitej pozwalający na odczyt nazw baz danych przez użycie polecenia I EHÜH D.¦l.T.lłiEJł.flE5_
|-
-~ -1: _-
lfl uper_priy
Ĺ -
_
Ż
-
Å
-
Å-
F'rzywilej zezwalający na użycie poleceń: CHHIGE I'tlIIr.5TE.'.R Tü, HILL lub ¦ |:rç¿'sqlaclmin__lci11. by zabic procesy należące do kont innych użytkownikow. Pozwala rownież na modyfikacje globalnych zmiennych systemu- ,
wych za pomocą SET GLGEŁI., wykonywanie aktualizacji nawet w trybie , resd___on1y' jtyll-:o do odczytu). Umożliwia uruchomienie i zatrzymanie ' g
replikacji podrzędnych seneerow. wykonywanie połączeń nawet przy wy-
I
msu_oonneotions-
czerpaniu iimitu jednoczesnych połączeń ustawionych przez zmienną | I
. mi
ii-
_Å
---
om
ji sie
I í--|_í-Ź
H .""r 17'. ir' l`Il'."t "'i TI." I-I i f'-i"|" ST li l'-.l "r` ii- .""'. `r" iÍ}.'“". bi `r Ĺ' |'i lIí-I1L
Ereate_t1'np_tabie_,priy'
Llprawnienie do tworzenia tabel tymczasowych, tj. takich. ktore istnieją jedynie na czas danego poiączenia. Tabela tymczasowa nie jest dostepna dla innych użytkownikow.
Lock_tabIes_priy
Przywilej pozwalający na korzystanie z komendyLćićIIĘ TLELES [zamknięcie tabeli przed zapisem i odczytem z tabeiij.
Eirecute_priy
Umożliwia użycie komendy eseecute. Metoda esreeute pozwala na wykonanie polecenia SQL przygotowanego dzieki komendzie preparrejj ' tworzącej uchwyt polecenia.
F-.ept_sIaye_priy
; Przywilej REPLIEŁTIDH SLiltr.¬ti"E powinien być przyznany kontom używanym na podrzednych serwerach, by mogły połączyć sie z serwerem nadrzędnym.
Repl_c|ient_pri'rr
I Przywilej pozwala użyć polecenia SHÜH I'rl1¦rS'I'E1ł STATUS i SI-IÜH SLiIr¬ti"'E¦ STATUS oraz w wersjach l'r'lySĘlL 5.1 .tiri i pożniejszych polecenia SHÜH EIIIHEÍ' LÜES.
Create_rriew_priu ,_
. .-
Przywiiej jżrozwaiający-tworzyć
Show__yiew__priy'
Przywilej pozwalający odczytywać zawartość widokow.
Ereate_routine_priy
Pozwala tworzyć procedury, funkcje składowe {1=tDTJ'1'It'IlE`j.
Aiter_routine_pr|'rr
Przywilej modyfikacji proceduri Funkcji składowych.
Create,_user_pri".-'
Przywilej pozwalający tworzyć, usuwać i rnodyfikować użytkownikow oraz odbierać im wszystkie uprawnienia {1¦tE'tr|"Ľ'rS...'S ALL P1¦t.I't.i"ILE'SESj.
Eyent_pri'rr
Pozwala tworzyć. rnodyfikować i usuwać zaprogramowane wcześniej czynności administracyjne w postaci event [ktory jest w l'."1ySQL odpowiednikiem skryptu umieszczonego przez administratora systemu w ceiu ułatwienia i zautomatyzowania czynnosci administracyjnychj. Automatycznym wykonywaniem errentow steruje erir'rsnt_sr:l'reclu1err.
Trigger_priy'
Przywilej umożliwiający tworzenie wyzwalarzy. _Iest niezbędny do tworzenia, usuwania i wykonywania '-"n'z¬r'rraiaczy-
Create_tabiespace_priu
Przywilej tworzenia przestrzeni tabel. [Jane bazy danych są przechowywane w tabelach znajdujących sie w przestrzeniach tabel ttablespacej. Przestrzeń tabel może rozciągać sie na wiele plikow, jednak pojedynczy plik może należeć tylko do jednej przestrzeni.
rnozo or-zyyrno-ooo -.-.onoroi 'rrnr', zso'-r, 'sr=Eciriso'.
ssLJype
|
ssLcipher
, Ükreśia liste, metod szyfrowania, pozwala na uflcie aigorytmćrw, np- TripleDES i Ełlowfish.
z5t}9_issuer
kolumna związana z uwlerzyteinianiem na podstawie szyfrowania asymetrycznego opartego na kluczach publicznym i prywatnym.
z5{lÊl_subject 1
.
mart..c-juestio ns
Ükreśla. maksymalnie ile razy w ciągu godziny użytkownik może użyć koma ndy SELECT, ktora służy do odczytywania zawartości tabel bazy danych.
maz_updates
Determinuje maksymalną liczbe modyfikacji danych za pomoca komend
zrrszaz. ueoaze. ktora uzytkownik moze wykonac w ciągu godziny.
307
I-Ê.-“'rill¿`r"'.i*iI¿CÍ:`f;`i*~li'i". FŜ.f"rri'- lJ'."'riy"“r`f,`i-I
-
L
maz_connections
I Maksymalna liczba jednoczesnych połączeń ze strony klienta. Ükreśla, _ maksymalnie ile razy użytkownik może połączyć sie z serwerem w ciągu godziny.
maz.-user_connections
' Maksymalna liczba jednoczesnych połączeń. ktorymi użytkownik może j rozporządza ć.
Plugin
l Serwer MySQL umożliwia autoryzowanie użytkownika za pomocą wtyczek
I
a
,
j jpluginowj identyfikujących. Szczegćr-towe informacje znajdują się w dokuÊ mentacji 6.3.5- Pluggabie Fruthentication. authenticatio n_string
itolumna przechowuje informacje związane z uwierzytetnianiem za pomocą piuginow. jej zawarto'-ić to auth__str:i.ng. Ten wiersz tabeli mysql user pozwala systemowi baz danych dopasować nazwe konta klienta. nazwą serwera w celu określenia sposobu uwierzyteiniania użytkownika.
Przykłady przydzielania uprawnień pokazano w dalszej cześci ksiązki.
sreawoż swoja wiz]]-ze . I Ĺ "
1- jakie są najważniejsze wytyczne co do polityki poufności przy administrowaniu bazą danych? 2. 'Co to jest uznaniowy system kontroli? 3- Wyjasnij pojecie roli. 4. Podaj zasady kontroli dostępu bazujące na modelu Bell-La Paduła. 5. jakie znasz praktyczne zabezpieczenia baz danych?
'
I
Blilß
r ir-"'. zi' i:.'.±.=¬:rr::ii | s'rs'|'rfy|i snz r_i.-'rr-.i-'rżii I _
Å
Å
_
-Å-.
Å
-Å
--Å
Å
Å
Å
żí
Å--
Å
_
_„ir
. j _ Schematy
_ .__- L- -_IÅEÅDHIEHIA
I Czym są schematy? I Istota schematu public rrr Zasad ii tworzeniai usuwania schematow ru Zasady przyznawania i odbierania uprawnień użytkownikom . `l
Schematy to struktura przypominająca katalogi, poniewaz miajdują się w nich obiekty
bazy danych. przy czym schematy nie mogą być zagnieżdzone [nie może wystąpić schemat wewnątrz innego schematuj. Übiekty wewnątrz schematu to np. domeny, tabele. wi-
dol-ti, funkcje, typy danych. Schemat w bazie PostgreSQL przedstawia poniższe ilustracja. El
5-ci'rr¦r|'re ty lt] Parrlrrilrnflnla [DI
Q ono-_-rrytrrzr @ tie nřiguracje FIS lit]
H si:rnr›'rr|1-zrrrstrn Ę Ftarrrrry FIS litr] Szablony Fl'5 [lij
'Ę Funkcja tej Ę Seirtwtnqe [El
Ę roiroro ni '+1
:a'rrrre'tl'|'_w¦rtllter'lide
Ę Funkcja rrnnrrrralarry [aj
liå widoki rrrzr i'-tys- 41.1. Schemat w PostgreSQL prezentowany za pomocą narzedzia pgndminlll
Schemat jest przestrzenią nazw. Istnieje możliwość używania tej samej nazwy obiektu w kilku roznych schematach, jednak po nazwie schematu, do ktorego się odwołujemy ' używany przez nas obielctj, ` ` uzyc' znal.-ru kro pkijw ktorym wystepuje nalezy jeśli podczas tworzenia obiektu (np. tabelij nie określimy schematu. do ktorego dany obiekt powinien należeć. wowczas domyślnie obielct umies zcza:-ny jest w schemacie public.
.aby użytkownik mogł uzyskać dostep do obielcrri bazy danych znajdującego się w określonym schemacie, powinien mieć odpowiednie uprawnieniaSchematy używane są, aby zapeymić użytkownikom bezkoniiiktowy dostep do tej samej bazy danych. Każdy użytkownik może tworzyć zmiany we własnym schemacie lub
schematach, do ktorych ma uprawnienia.
_ __. _-jiI I
.
I `-"..`t li I-
iii E i'
i'
I
¦__: t
ji "=, że “-.- r
|-|
I
.firby utworzyć schemat. używarny polecenia: CREATE SCHEMŁ.przykladow3_echemat; jeśli w scliernacie prz}¿'l't1ac1crw¬_=¿r___sohemat chcemy 1.itwoI'zy'tf tabelę. wowczas uży-
`
wa my konstrukcji: CREATE TABLE przykladowy_sehemat.moja_taba1al
Id Integer PHIHaRI KEY, imie oharaeter variablejfiüly nazwisko Character variablelfiüjy
i .' Aby usunąć schemat. uzyjemy polecenia: DEÜP SCHEHA przykladowy_sehemat;
Nalezy pamiętać, że jeśli schemat nie jest pusty i zawiera obiekty. np. tabele, aby został usunięty, rnusi zostać użyte dodatkowo słowo kluczowe CASCADE. DRÜP SCHEHA przyk1adow¶_sehamat CASCADE;
l_I.'tytkownik mający prawa do tworzenia scliematow może przyznać uprawnienia do utworzonego schematu innym użytkownikom.
I
_
|r.".
.
I
' '
r
`~
'
"~' "
ii
_-'.
I-'-
`: 'Ĺ
I I
I
Nadawanie i odbieranie uprawnień PostgreSQL IAGADHIEHIA
I Zasady administrowania uprawnieniami przy użyciu pgndminlll rfrby utworzyć użytkownika w PostgreSQL. używamy instrukcji SQL Cree te user. CHEFŁTÊ USER witrelc PIPŁSSWÜRD 'tajnrehaālol
HÜIHHERIT LÜGIH;
1 CREATE USER - polecenie tworzące użytkownika; 1 HITEH- identyfikator użytkownika. nazwa konta. 1 PASSWDEĽ ~ słowo kluczowe. po ktorym występuje ciąg znakow będący hasłem użytkownika .
1 HÜIHHEHIT - słowo kltrczowe zabraniające użytkownikowi dziedziczenia uprawnień konia osoby tworzącej r|ż'.ytl-:owrrika
r' LUBIN - uprawnienie do zalogowania się do PostgreSQLTworzenie scłierna tu: CHEATE SCHE1"tl.iI.r sit:he1rr.at__}:rierwszy' AUTHÜRISATIÜH witelc;
W przypadku. gdy nie istnieje użytkownik nitek.. możerny posłużyć sie rolą.
i-1r-- t.-i.t _ Ĺitwu|'zr'1¬rie roli witek oraz schematu schernat_pir-'rwszy -
'pestnret "
Ii-'iIi.a-ici'.'r'1:rt.¿
El katalog. Ę;_=']
+
Ê Horrzerrenra jtjr
'
Ê' 'Fri' henirty [Ej *
Ü crubiir:
i
za-'Hi
'I."r.|lair|rir'|
I |
Fl ¦`-I'orr:r'.rr.r'.r'.ąr'.|;| |¦|¦]]
'.r'.nLr¦|-
rrct Elorrryś-Ina tabelą _Fr_1IL
-=.
Ill.: Usrfltfrrtfll IN stoen-|-i Frstoj
s'_'i|e|'nł|:_j:ner¬r,'r.|:'i:¬_,'
.. c:r|r;' 5'
I
Ê* I"I ¦rI'rF|-¦|uraLIe i`lS i_|.Ęr¦I
wart-nić
l-ierwa
__- -__,E_
il'.`¦.
__-_-.
__r_:____._____-,_ _:¦-Í
-___._-.___-____'|_l_____ __
____ş_
-e.-.-=
-- ':`-r;i'reIr|n:
__:l__
'
_
__
__
__ -
_.____
fi L..|..r; ..._-.E .: ;Luc-:|.1_
scl'rt='r.1.=¬rt pierwszy
l--Êr P'a"ser'.r I' l5 |o¦|
-
S-.rrrbi-o|'r3 Fl'S I¦I'J]
'Ł |'r,r.".|- ._y¦ [oj
EHEATE SEHEMA schomat_pierwszy AUTHÜRIEATIDH witek;
Ę' '5eI~"rr"r!-rrcie lift]
'fi' rat-.oto tej Ê-' Funt-'cje '.r.r'y.¬'.r.'.1|a-Ę zy '|ĽIj' 'l|"\l'lĽiĽlF"l [El]
iii.-_
.i. Sr lieniat w pg-flrtirninlii
[I'ił'ilF' '.¬'Ĺ"Hi:`l"r'.I". 'Ż-t'i"ro1=n:-_i t__t;-1'-"'i".'r'ríI"'y',
'=:.'-=I-:Fra-iz'- 1- '.Ÿl ł_r",¿='Iri=
_
E."'rl`iE.`.El7'ilÊ'IĹ`Eill'¬~ll."5r i?r.'i'rÍ¿'. Ürårl*-¬l`“r"i'_ÍH j
Gdy za pomocą powyższych poleceń utworzymy użytkownika i schemat. nadając użytkownikowi prawa do schecnatu, efekt działania poleceń można sprawdzić dzięki narzedziu pgådminlllbiowy schemat można utworzyć rownież za pomocą narzędzia pgndminll I. 'T ""Ei""'
Ę1:
ti-1
o-ms..?'iłf"“".'Ir="'r1
_Ędprąe
Ętyrrlti
Ljrrialr
_fl;ar¬r1¦rltia'
If-'rr'r'rra¬r,",
it' fiilitliez
'
pastgres rrrat_ple nurty wit rlt
I siawniie Frsrrn
ltys. -1.1-3. Tworzenie schemat.-u.za pomocą narzędzia pgadrntnill aby utworzyć schemat za pomocą narzędzia pgradrrrinlll. należy wybrać z prawego menu pozycję Schematy i za pomocą menu kontekstowego wybrać l"'low'y schemat... aby dodać do schematu użytkowniltow, z prawego menu narzędzia pgñdmin wybieramy Iarejestrowane Role, a mtęfpnie z menu kontekstowego - opcję Cl-dśwież. jeśli utworzyiiśrny nowego użytkownika, w fistemie powinna zostać wyświetlona rola. jak w poniższym przykładzie (rola witekj.
E | | r
I' |. l'
L I
Szahiony FIS {Iil]
Ê- Funkcje (D1
Ę sokwer-;yo rrr) Ę Tabele {ll]
Ê Funkcje 'rrrytwralatry
|i`Tj`-,j wrota to it Slony Replicatian fill] ±I
l
Š;
li
lÊ| Przestrzenie tabel [E]
,Ê Grupy Hril [tr] ._
pastg rer
2., wrtrit
Rys. 41.-rl. Role użytkonmikow w PostgreSQL
Gdy do nowo utworzonego schematu chcemy dodać konto uż'ytkownika z widocznego
na ilustracji menu kontekstowego, wybieramy opcję litowy Login roli... W oknie edytora roli w pozycji Nazwa roli wpisujemy nazwę nowego konta użytkownika.
I
r
FiF'.F!"'r'l`_I|'.¿"ll*'l`1"Cl-l I Ê'š-`1"5`I`I¬Ĺl".'l ir' H.-IF. l"_'¦"'\N'1"IĹl-l .
-|
__
_
'
BW
"=""¦"L°1P""'=fl-
W 'ai' für
'= 1 -"""'='f-W mi.nn-nu= Í
'
¦
'
Í `
' "
_fflfil
. I
Il
.| ąl
'_
.r-
R}'5_ 41.5. 'Wybór identyfikatara dla rüli W FüaŁg1^E5QL
Hasła dla ralí zmieniamy aa pümüfią zakładki Definicja. B' W
HnwL›=nfi='rniL__
-=
„gi fg; gi
="="""~=" ..
1|
|"Il|.l'
:-"'
.-.'-
I
I
_-'
_
-'I'
-'Ę
¬
"
'
I
--'-'-
'
'
"
'||`;`
-aa-_ _;¬_¬_ ____ ___„ ___l±'5
Rys- 4ł_ü_ Ükraślanie haała dla ruli
Ükreślenie upra¬wr|i~'_=_'ń dla fali użytknwujka 'ivylcunujemy za pc-mocą zakładki Upraw nienia Hali.
'= I
'~"="f"~*'¬¬"~"*' '='""'
='
1 '_=~'_: ai'-'=‹ H' ¿.'_±:" 'l*ii!Šl!'§*'ř'!'*
-±_›' "'ff-fwfifi-H='Ľ›1-afi1"wa-;
_ _
}_T__}*!|i'1||=¦;'_|'íriili.=.= |
F.
- _ _
I
'
l
_
._ _
'__
'ii
T
il
_.
1--
_il"=."'=
|1
H
'|
-
_' - _ _
.__ - -",
.
. _
'_
n
,_ -2|'
_ 1
_
.
-
Í' ` "
fi-'_- _ 'ÜL'al_='='. 1., ' 'Ê-T *Ł ‹ß1'Li±:i.==i:iai_"_-iż;-.=="'-i=a›--'=‹1'-=r1";~=¬' I
Il-.."
"'.
'~ l,_'¬_Ł_'=_=_=1_.¿ _-':
'_
--==---. _¬i-_-..-
'
I'
'.I.
.
'
_
I
'F'
--.¬l-'-.r_ ' -Łić
_
I
f"-
|'|-
_.:|
=',.."ł_.~*'-¬r¦'1-_ _ __
Rys. -11_I"_Ęik1"aśl'.=:nie uprawnień rali I I
“aiĽ
Pal
_
-TJ"
!
E_-"*.i'iEÊlÍ'!`E'¬'_`Í1'_ET“~ll_-""t li.-"'.}". l_II'fl'.|'"'i'1“|Z__Íl-|
li
Üpcja ta umnziiwia módyfiitację ról w zakresie uprawnienia du lógówania sie. dziedziczenia praw ról ródziców, snpertiżytkównika hsórzenia óbiektów bazy danych, twarzenia ról. bezpóśreclniej madylikacji kataiógu, inicjówania replikacji stmmieniówych i kópii zapasówych_
Naprawa uszkódzenej bazy danych Pódczas pracy z systemami baz danych rnóze dnjśe dn uszkódzenia tabel baz da nych. Sytuac`a J ta sprawia 1 ze kónieczna staje się naprawa uszkódzenej bazy danycl1_ Aby przeprawadzie czynnsści naprawcze. wartó wykonac kópie bezpieczeństwa uszkódzanej bazy danych. _ _ _ _ _ ___hI Kólejną czynnnścią jest urucharrnenre prógramn shlzacege ds naprawy bazy dany Dla bazy |"~'iyE".-Q L rnózemy pósłużyć się np. narzędziami: 1 phplyiyådmin, I Adminer. 1 Linia póleceń_
_ _
Naprawa baw danych za pemecą narzędzia pł1pIyIyfi.dn1i11: Wybieramy bazę danych, której tabele zamierzamy naprawić (rys. 42.3). phpMyAdmin
sz li 1. „_
I
I
I Í
I
s ¦ "“"H-¬1~=f- timi :l.s-=- -_'-uw-'‹s'«s nas-n ws-‹' ir_'1-=_-'--'- 5' a'~_1".-1"~"4- H'
_ __________________: ' l_.i~:¬tawier|:|a |:'r}':'Er|e ¦I |¦c-|1aru1auu||4 1' -. *_ _I_III_ ____-___ 'Ś hr"
`"[ I Bmuşuipdqpzunifzuunuuri 'Q Ê_fl'l__pru|-i__s|
_=||f.iu«›|1i=n_1-=1¬-mi
'il
-- -- --- ---'-
_nl rl'||1-1
`
'
--"' '="""""""'='~"=""""'
+="fif=H*‹\f1`_-=¿r='ifl1"~'=1f'a5f=_1='|'-'_ .1=
' '
-I1
I |"=|'m1'-IM
' `
`
Ę
_i1-żżl
_J lnl
__
Ü_`J-|'z|i'.L.l|':'pnlglfl
_F'|.'ll-In--F'nh|1
_
u:-:l
l I 'Ü “*“f' !__"'_"*"“____ I
1' |1't-¬|¦'|'|'|J|:_:|'4;1|':'|'i|| ¦E2I.
'I
' I
i
'Ft 'ü"|"-1'-try I.-1Il'|ll'||"'
Rys. 41-3- Wybór bazy danych w prngramie pl'1plviyA_dmin
Íaznaczamy tabele, które zamiemamy naprawic (warta pamietac. ze puwitmy być te tabele óparte na silniku MyI5AM}_ Nastepnie za pómecą rezwijanej listy wybieramy ópcję Napraw tabele - tak jak przedstawiane te na rys. 42.9. ł'- -- G ¦“1'-1'|'t1n'|,-;.|-|-r-_-...:-'.r-_'|rt-=._|:r.;--sz.-mr.-.t.r.„r¬-LF'-h-rrł'_-|'H'||| |-'H'_--1'=_'.':-_1|n_-_' -'.
_-_
í1.--
.
.
1 _-ą-
phpMyAdmin Ę I 1- łł -
¦
I
II
5.-gę seanse..
j¿¿|'_'|i.|j,
_I
I
4., ;fazą _
_.i ;rI|_|n~i|±|IuI
_ _
I _ _
l '="-_' -_'*-- "¦"""!"í' '
hu - ----
_
'¦___
¿||:r|'|nllł
I_I
_ H
_
_I__
J
r'=
_
' f
ƒepşnuqn
` ` ` _ I_
l
' .LĘĘ
- -
II
1
.ß |='unIuiu'I|-|it|rnhi:_j
I
"
“
"
.-
`-.JHĘE-:-2 1.-
¬=""¬*"-F"_ ' "~" '
,l
_ *
I '
m.u_' |.n.|
'i mag pnnidiuqut |1±||hHi l.¿||muńp'=nh-n|'|i.1|e1ł i f'ł1R*fl.1?!?_!_|I.I_E'!!'1'_E'!!EU'_ _t
Rys. 41.9. Zaznaczenie tabel przeznacznnych dn naprawy
'|=±'='T '
_'
ll
'_ -I-nlm|11l¦|1||q
' " -
' '
'E
_I_I_d__I
LE
;__ " "-"'¬"-PT'
I
15|. :input
- _„___ "'
I
"'
¦
_
.
p_______________
--_ 5| tłnu'-:||_1'1u›¦-lg H-If'-'I
_ _
I iiłllrl-I'='ł¦\iI'l'||l'n' ' .E :nrnl-tzn-"|'n1' :E-_'Für'
____ __
I '.-|'rrl1'I|~ Pada I '|'|' MI'
_
||,',|.n-pu:
_
.,`_ ___' " __ - I
1|-:"|:|: -|r"..'1lI|'H " C||!|'|"|I"r I'|-|:'|"|fl"|r I
_
_ -'f
_
__ -'*
_ _ --'
_
t
i`t
t
I
t-: --'t r i fi -1.
'i:ft-| I ~¬'y~¬' | |'¬.1*=-' t-5 -1. ;f |'=_-i .'~_ '¬ :_ tt
Program do naprawy bazy danych w przypadku MySQL to rnysr|lcheck_ jest an instaia‹ wany automatycznie wraz z SZBD. Składnia polecenia prezentuje się nastepujace:
mffiiłlflhfiüłfi
lł'._'¬'_ -i-i-
________________
nazt-ru__haz¦j|r_da.ny'oh
-¬re.'pa.i.r:
--databases
"“P'=i“'i”
--sit-aaousssaa
nuz'ira__ta.be'.`l.:i_
.Ê
ltt' Polecenie myscjlcheck - opis składni
Grupa opcji w pierwszym bloku oznacza zadanie. które ma wykonać mysqlcłieck: 1- --analyze - analiza bazy danych - sprawdzenie, 1 "repair - naprawa tabel baz danych (opartych na silniku MTIEAMI. n --opti-mi ze - opt¬_rmalizac.ja bazy danych. Ľ|'rugi blok określa cel działania programu- Üpcja --databases nazwa_Ibazy'_ danych spowoduje, ze program będzie pracował n-a wymienionej bazie. Gdy uzyjemy --a11¬c1ata1aases_ program będzie pracował na wszystkich bazach. Przykład uzycia programu ilustruje rys. 42-11.
l't1.'s_ 42. |'t_ Naprawa uszkodzonej bazy danych, której nazwa to baza
Warto zapamiętać, ze polecenie to wykonujemy z linii poleceń - konsoli systemu ope~ racyjnega_ a nie wewnętrznej powłoki konsoli mysql.
sPR_aw'Dz swoja wi'-Enzig 1. Ca to jest sclieniatř
E. jakie są zasady tworzenia schematów? 3. Za pomoca jakich komend udziela się i odbiera uprawnienia użytkownikom?
_
_wt-';':i|ts‹'‹_f¿'t=.\¿t«\ tzw' i›t\_t\;*.'‹._zs
l j 315
‹ Kopia zapasowa T i odtwarzanie i _ bazy danych ZAGADNIENIA
u Tworzenie i przywracanie kopii zapasowych bazy PostgreSQL w linii poleceń
I Tworzenie kopii zapasowej w PostgreSQL za pomocą narzędzia pgAdminIl| 1 Tworzenie i przywracanie kopii zapasowych bazy MySQL w linii poleceń
I Zasady tworzenia kopii bazy MySQL za pomocą MySQL Workbench I Sposoby odzyskiwania bazy danych MySQL z kopii za pomocą MySQL Workbench I Najczęściej popełniane błędy podczas tworzenia kopii zapasowych Strategicznym elementem planu konserwacji bazy danych jest wykonanie kopii zapasowej bazy danych i planowanie procedur przywracania. Istnieją przypadki, W których warto rozważyć zatrzymanie pracy serwera baz danych przed przystąpieniem do wykonania kopii bezpieczeństwa. Kopie zapasowe umozliwiające odtworzenie bazy danych są istotnym elementem zadań administratora podnoszącym bezpieczeństwo danych. W bazie PostgreSQL administrator ma ułatwione zadanie. gdyż może korzystać z narzędzi wiersza poleceń, np. pg_dump. pg_dunq›a1l i pg_rest:ore. Użycie tych poleceń skutkuje zrzutem danych na standardowe wyjście, które może być pizekierowane do pliku za pomocą systemowych symboli przekierowania >. "-''-__.~._t›'t«
ez __~-'t '~r". j i'-r_ ~t"¬T-'LJ' ›z;_
'i
._ »__' ._.›j_'„.
.~¬-
'¬.'-t'7‹;'il I
,.f -'1_'1
'fi
~ '
't'w'_7_ '_»¬ 18;. _'-
t. r-_ _ 'w-›_'t r
..'t›
.„:'T1'-"' _ .'_': ._ t_._"'1'-_
Rys. 4 tt. Przykład tworzenia zrzutu bazy danych w linii poleceń cmd systemu Windows 7
Dość częstym błędem w przypadku systemów' Windows 7 jest próba zapisu zrzutu do katalogu. w którym dany użytkownik nie ma praw zapisu. Zwykle działanie takie zakończone jest komunikatem o braku praw dostępu. Polecenie pg_dump używane jest zazwyczaj, gd y chcemy otrzymać zrzut wybranej bazy danych. jeśli jednak interesuje nas kopia wszystkich ini`ormacji bazy PostgreSQL (całego klastra), należy użyć pg_dumpall. Warto pamiętać, że poleceń tych używamy w linii poleceń systemów operacyjnych (Linux / Windows). a nie bazy danych. Pliki zrzutu tworzone prezentowana metodą to skrypty SQL. które po uzyciu programu psql odtworzą bazę danych wraz z danymi. Aby użyć narzędzia pg_restore należy wykonać zrzut binarny. -Q duma -U oostnrea -FC mo abaza
v c:\Users\ r:emek\ba:a kosia
Rys. 4-š_.'“__ Przykład tworzenia zrzutu bazy danych w linii poleceń cmd systemu Windows 7 no restote ~H
L
_
_.
°
"'
l
zostores ~d moiahara ':\Jzer5\Pr:emek\ba?a koiia ,_
_
`
^'
\
i
t
'
,_
F
Rys. -ti-3. Przykład przywracania zrzutu binarnego bazy danych w linii poleceń crnd systernu Windows7
ł
I
li "". `.F`1 |_t.~". "“-| Ti ` I ł I H '1 H T I-'
I
't |': .-"-. Ę-” li
¦¬-. 'i |`j'i
|
ş g
' _
Do przywracania kopii zapasowej sl-uz¬j' połecenie pg_reatorePolecenia linii komend są dość atrakcyjne, poniewaz mozna uzj='¬wać ich w skryptach lub plikach wsadowjfcb. au tornatjfzując czjfnności administracjrjne. Aby wykonać kopie bazy PostgreSQL, mozna rowniez posługiwać się narzędziem pgßidniiriłłł. Po zaznaczeniu w prawjfni menu interesującej nas bazy dan;-,fcb wjiliieramj' z menu kontekstowego opcję Tworzenie kopii zapasowej... I 5'¦rt-'¬'erG'ru¦:r
Ę sewefe-ati;
sj 3 sasioesot s.zttaral¬ast¦s4zz} FE! I _t Bfiwdansch IE]
E1 ._`_'| f
El |
_ _
_
Ftozs
_
fijaut
F
bi] Ę āšbe
=
_i upałatoíł
ł
aieestfzente =
__
ä fawesfil to E „_ _ łfltetestrow-
F |'-'J
_.¿_í '
'|.
.
" -"
"
`
Ii
_
l¬t3.-¬-_ 41.4 Tworzenie kopii zapasowej bazj' dan'j'c]1 za pomoca namędzia pgndminlil
" z
Narzędzie umozliwia wybor m.in. nazwy pliku. Forinatu kompresji. kodowania. W zakłaclco Durnpi mozenw dokładnie okreśiić, jakie obieknt maja zostać ujęte w kopii zapasowej.
|
~` 2;-.ELEE Í
Hazvuaplm
Ikaaia
Fü:n=|'|ał|:
Et-".'1|'f'tł'ş' LI“-'jftkownilfaā _
'|Hs|iEiczr|1ith¦Irn'osi| Hodcris'-s|':io '
Nazwa-roi
I
_
I
_
_
_
'fl
His. 41.3. wybor metody' kompresji kopii zapasowej bazj' danjfcb w programie pgrftdminłłi
Kolejne zakładki kreatora kopii zapasowej pozwalają dostosować ustawienia do indjfwiduzlnjfcb potrzeb- jesłi cbcemjr, aby baza była odl¬warzana po usunięciu poprzedniej. nalezy zaznaczyć instrukcję CREATE DATABJŁSE. jesli obawiam;-,f się. ze podczas odtwarzania bazy danych na serwerze moze istnieć poprzednia uszkodzona baza. nałezj' zaznaczyć rowniez polecenie: Eawrzec instrukcje DEÜP |`JnT.fi.Bå5E jrjrs. -='l].§'].
|
T.-'tłi-ł'.3"_|“|łÊĽÍÊ`łÍ"'~}ł_"". Id'-"'-".Åć ['J'_f'~ł"'~"1`jLÍł'ł _
.
_
_łF_'Bkib',|'_
I I
j
¦
`
__
_
e I
F' I"
'
F'1='‹eaea=o1aa=yn1 F
¶I$fi
;_ _.I !!_ __
mfifllš
1ł¬_,'e_ .15_t,_ tjpçje kopii zapasowej bazy danych w programie pgfltdminłli
5 I
kolejnym krokiem jest wybor obiektow. ktore mają zostać skopiowane. dzięki czemu mozemy sporządzić kopie bazy danych z wybranymi tabelami. jest to szczegoimeluzyteczna funkcja. gdyz w obrębie jednej bazy mamy tabełe zajmujące duze przestmeme dyskowe. z ktorych nie musimy sporządzać kopii zapasowyc|1 (rys. 43.3). '~_
ada
| Š j z
-' ¬
| Ruiwoaereazzeyęcneaizoarefiaflž
i _
l"' z-a'.oa=e'raeu=ej; Door' oaraaaw
Ê ;
ł- U21-'lw'.st'.av.iefibub.nru1
I
__|'* ue-;'j=p=o=eui¿o±asnasa .f-'*""“'›*~!|."-'-¬*±1""'~."
_ “
`
Í- '|.".f;.'.'5"."-,'ta|:r'..-.'
Í
I_i__se=_=±"_"f""s
__ _
'saeearąala
'
_
_
i
Å
I
z I' LI=rz_¦_łT'.ie2'.i'.-?tor.|»¬=.I.r|1-|=:1_Fr„tI|"›'r1':"_I'l 'l"' zoio _
F Szuoqúlowahznläilfitif
ltys -1_i__?_ Dodatkowe opcje kopii zapasowej bazy danych w prograrnie pgzfitdminłli jşí Baza danych 1n'|:'iabaza g,_,|¿,|j„¿ FF goscie
-lzp_bhp
_ =
=
.'F7 www p_|»-a¿Ľ_p_pÜn'|.|:||:
2---[F pracownicy " IF ta|:'eia_n~ad|'zecIf||'1-s uczniowie
_ |
-
¦ ¦
z.s'.fizo1:ły_w'e':Ibe|rskie:
t¬t¬.-~¬ 43.1%. ii-elekcja obiektow dla kopii zapasowej bazy danych w programie pgfitdminiil
`
e..t.ri tr-2'-='i':'.~-| t ~~¬1~¬'r| ni |-1 tr-ir-sit _=| Iííml
Tworzenie kopii zapasowej inicjtljemy za pomocą przycisku ttopia zapasowa.
lÍ='¬`7 'Í
I' I
'C'-it?-H'-`l'=_
I
Porrtpc
011'-Tl'B Elumtā #1 ütifiieütjii oz I
I" ttopiazapesowe I
onulu]
I
Tits. -1i_'i Przycisk tworzenia kopii zapasowej wraz z zakładką podglądu ktirniinil-tatr'iw
l'~'.opie za pasowe MySQL rnozna tworzyć rowniez za pomocą konsoli systemowej. W tym celu nalezy ttzytf ttztzedziët mysqldump. jedną z mozliwości jest wykonanie zrzuI't1 ze wszystłtítdt baz danych polecettietrtt
t~'.y -¬- -t _i_ IH I"Żo|'.'ia wszystkich baz danych My5Ql- stworzona za pomocą linii poleceń cmd w systemie Witidows F' W powyzszytti przlylcłmilzie po parametrze -1.1 powirźtrta wystąpić nazwe tlzytkownlką
wykonującego kopię. Üpcja -p' spowoduje. ze program zapyta nas o hasło uzytkownika. w przeciwnym wypadku sprobuje uzyskać dostęp bez hasła. co moze skończyć się niepowoüenienic Podobnie jak w przykładzie z PostgreSQL. takze w wm przypadku polecenie wykonujemy z linii poleceń systemu operacyjnego z ttzyciem znaku sterowania strumieniem danych :-'. blazwa backup. sql to nazwa pliku. ktory zostanie utworzony i będzie zawierać skrypt SQ L do odtworzenia struknny bazy danych wraz z danymi. [Ítoktttnentacja MySQL zaleca zatrzymanie serwera MySQL lub zablokowanie tabel w trybie tylko do odczym. LÜCBI TAELE5 thl list HEAD;
szosa 'raaass ~t;:e1_1s.az; Działania takie mają na celu zablokowanie kwerend. zwłaszcza modyfikujących dane podczas tworzenia kopii zapasowej. Polecettie FLUSH TABLE5 jest potrzebne, aby zapewnić zapisanie aktywnych stron indeksu na dysku przed rozpoczęciem tworzenia kopii zapasowej. jeśli zdecyclujemy się wykonać kopie lyllto jednej ol'-Ireślottej bazy clanych. mozemy poslttzyć się poleceniem:
los -¦`i_tt_ Kopia pojedynczej bazy danyclt My5Ql__ stworzona przy uzyciu linii poleceń cntd w systemie Wirtdows Í*
W tym wypadloi nazwa bazy danych to rnojahaza. Üdtworzenie bazy danych wykonttjemy za pomocą polecenia: mysql -u rtaz'a'e._uzyt:ko1›rniira -p nazt-ra_baz¬_i,r -'-'I ne.zne._pliku.sql
'-I
'ii'
l_'- I.
l' l l-_ t" .Ê l_' l*¬ I
l'. ;lt Íf' I .'_-"'. bl `r"-_' l l
Fti s. -Ł i_i Ł Przywracanie ba zy danych Myăfil L za pomocą linii poleceń cmd w systemie Wi ndows 3'
Warto pamiętać. ze odtworzenie bazy danych ze skryptu sql sporządzonego wedlug powyzszych przykładow mozliwe jest, gdy baza danych istnieje. Gdy zostanie usunięta, nalezy' utworzyć pustą bazę danych poleceniem CREATE DATAEAEE tnojabaza; anastępnie uzyć poleceniazmyaql -u na.zn*a__uzy't]'cot'rniica -p' nazwa_baizy' 'c nozwa_pliku.eqlKopie zapasowe mozna rowniez wykonywać przy uzyciu zewnętrznych narzędzi. np. pl1pl¬.'ly."ftdmin w zakładkce Eksport.
- Bazy danych
:__: 5-l:t'L
_Ł Ełatus
¬¿=i' Procesy'
¬ Uprawnienia
='- Etgsport ro
'F' Win-ce]
Ezporting databases from the current seryer lP'Tl?'='“i!"*_1_"~fl't'F"=|¦
_
_
_ _
___
1. zrytikn - y'.-yswtettaoe są tyttto rnti'-'rr'-alne opcje _
Fonnitt:
- set
tfzjstom - tiisplf-ty -ai! posstbte optloriā
____
_ ___
____
'
to s -tf-_t i. Kopia bazy da nych lyiyf-QL stworzona za pomocą narzędzia phplylyiadmin
Üpcja Custom pozwala na wybor bazy danych. ktorej kopie mamy wykonać, natorniast Format jest ustawieniem sposobu zapisu bazy danychistotnym ttstawieniem jest ttornpresja, ktorą warto zaznaczyć w przypadku. gdy wykonujemy backup systemu CMS. Gdy wprowadzimy wszystkie ustawienia dotyczące kopii bazy danych. uruchamiamy przycisk WIEDHAJ. Za pomocą przeglądarki zostanie pobrany plik z kopią bazy danych jrys- 4I'i.l5j. Godiiym uwagi narzędziem do sporządzania kopii zapasowej bazy MySQL jest lyly5'Ę_tl. Workbench. Uzywamy do tego celu zakładki Server Administration {t"ys. 41".-.lojPo ttrucliorttieniu połączenia z serwerem lyly5QL wybieramy z menu po lewej stro-
nie opcję Data Ezport, a następnie zaznaczamy bazę danych, ktorą chcemy skopiować jrys. 4.'-i.l?j. Ctperacja odbywa się bardzo podobnie do omawianych poprzednio narzędzi. Üpcja Menu. ponizej Data Ezport, sluzy do odtwarzania bazy danych z wygenerowanych plikow kopii-
-..-í
_.,.›_..ş:-2
_/i ›_.¬~.'Y‹¬ íí
_
_
z'
_
ÍŻ
í
›
ir"
m__í
______
__
.íí
__
______
I
_
l
ll
Q Cuâtnm
drtpliry all possrbla options
s›_'._e_'»_-_zs'›= _
_
íí
íí
l
l
l
'
_ j
Zamarz wszystkim 1 Usun zamurzenße
jtn|onnation__sche‹m
P
P I *.'t
"Wüll l pcrformaocgschcrna
Ĺ
phpmyarknčn I tast
l
'
t | í-
__--
j
*wm-_=_
A
,_
__
__ ___
_
l
O ...
1
__
l
O Save output to J ftte
_ _ j
_
Í
Fflo name template O
j
.QSEKVERĘ
1 użyj tym wartości dla
Oćżniojstyth ekmponów
~
Kodowanie pliku
j _
ş
Comprossson;
' l
j
... Vøcw output as text
l Format: j
01
i
j j
l
Rys. 43.14. Konfiguracja kopii bazy danych MySQL dokonana za pomocą narzędzia phpMyAdmin l
I
li
l _
_ l
li
l
I t , |
L__.
__
___
_
"
l
Rys. 43.15. Przycisk Wykonaj i widok pliku z kopią bazy danych (przeglądarka Google Chrome)
° Server Administration
j j
› |
_
G localhost.sql.zip
l
j _
ý
_
Conftqure vom database server. setup user xcounts. browse mms vviabtes and sem: logi.
Ê; Server Adnhistratton
t
i ~
r l Rys- 42.16. Program Oracle MySQL Workbench
›
t i
ll 'i
~
j ^ l _ j j
Uwaga Czynność kopiowania bazy danych należy poprzedzić licznymi próbami tworzenia kopii i odtwarzania usuniętej bazy danych z kopii. Istnieją liczne przypadki. w których kopie baz danych byly niewystarczające do odtworzenia pełnej struktury danych potrzebnych do funkcjonowania np. serwisów internetowych lub oprogramowania korzystającego z zasobów baz danych. Wypadki takie zdarzają się zwłaszcza wtedy. gdy baza danych korzysta
l Ą l ›
Ij
j i ‹
z'_aif.tizi'|r-ir zi-ata if.-sz r'i_-twrtżet _
_
__
T_' `¦.'."fi'*."
Ĺ-' -1 -`
'
I'
` 321 ..|_Å
7:- .' I
'Å
Dataízport f'flfi.H:l||.fiHt'ÍH7l
Ü S-tt'r'u'|'r 'Status
flbiwtfilhsfiflfl jaora-zaecooansjasourteragzaoj
H srzrtto r srruto-:om 5
Ê 5talt'|.tl lrlcl System 'ttfartatałas Ĺ '.i-|tt"«H¦r loga
coraftotrnanou ƒf Qgfinng |=||¿
'5ćl'tIt1'tl ' ""="l'¦"li"“"i" |1'f¦rf|¦"
_
Ľl
Ĺ_' mw
Ê
_J Ę_:_;l='tI'l'n'tHt't'.I-|!__'E'I:l'tt:lt'I't'!t|
5.iI¦Í1..l'lt.l'l"|"
j
-I Lliars and Frwllegez
i
nara czeniu .f t'.ss¬tolc ,L Data Ir|'rpo=ri:|"l¦tt:iłot":
Rss. -15.1? “wybor baz danych. ktore zostaną uzyte do kopii zapasowej
l =
z zewnętrznych plikow (np. odnosniki do plikow graficznych umieszczonych na dysku]W momencie awarii dysku odtworzenie samej struktury ham danych bez mozliwosci ponownego umieszczenia plikow z graliką będzie skutkować błędami. Sytuacja taka jest najczęsciej spowodowana brakiem wykonywania testow ze sporząüania i - przede wszystkim - odtwarzania bazy danych- Testy te powinny obejmować odtworzenie struktury bazy danych i poprawne ponowne umieszczenie w niej danych. Istnieją ogolne wskazowki clotyczące wykonywania bezpiecznych kopii bazy danych. jedną z najwazniejszych jest zasada dotycząca sposobu wykonywania kopii. Powaznym błędem jest brak użycia odpowiednich narzędzi do kopiowania bazy danych przez kopiowanie bezposrednio plikow z dysku, na ktorym znajduje się baza danych. np. Cckpostgreākhaoe
lub w systemch Linus ƒsrarƒ 1:i_bi" pootgreo ql . ƒozrƒlihƒmyoql. Ryzykujemy wowczas uszkodzenie bazy danych. poniewaz program kopiujący {np. program do wypalania płyt CD uzyty do wykonania kopiij moze zablokować dostęp do bazy danych dla SEED. co w trakcie wykonywania modyfikacji danych moze spowodować ich uszkodzenie-
`
_
seaawoz swoją wisozs 't. Za pomocą jakidi narzędzi mozna wykonać kopię zapasową bazy danych w Postgre-
ł
sos? z. Do czego słuzy MySQL Workbenchř 3. ]akich błędow należy unikać przy tworzeniu kopii zapasowej bazy danych?
l t'
l