You are on page 1of 260

Wodzimierz Dbrowski, Przemysaw Kowalczuk,

Konrad Markowski
Bazy danych
ITA-101
Wersja 1
Warszawa, wrzesie 2009

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Strona i-2
2008 Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski.
Autorzy udzielaj prawa do bezpatnego kopiowania i dystrybuowania
wrd pracownikw uczelni oraz studentw objtych programem
ITAcademy. Wszelkie informacje dotyczce programu mona uzyska:
pledu@microsoft.com.

Wszystkie inne nazwy firm i producentw wymienione w niniejszym
dokumencie mog by znakami towarowymi zarejestrowanymi przez ich
wacicieli.

Inne produkty i nazwy firm uywane w treci mog by nazwami
zastrzeonymi przez ich wacicieli.


Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Strona i-3
Wprowadzenie
Informacje o kursie
Opis kursu
We wspczesnej informatyce coraz wiksz rol odgrywa przepyw
informacji. Dane s gromadzone i przekazywane w ilociach dotd
niespotykanych. Od umiejtnego sterowania przepywem danych zaley los
wielu wielkich firm. Odpowiednia automatyzacja procesu przepywu
informacji daje ogromne wymierne korzyci. Bazy danych i systemy
zarzdzania bazami danych su wanie temu, by mc przechowywa
nawet ogromne iloci danych bez naraenia na ich utrat oraz by mc
odpowiednio szybko i wygodnie sterowa ich przepywem.
Bazy danych wdary si zarwno do sieci lokalnych w firmach, gdzie
gromadzone s dane na potrzeby pracownikw, jak rwnie do Internetu,
gdzie dostp do nich maj miliardy uytkownikw na caym wiecie.
Dynamiczny rozwj baz danych implikowa powstanie wielu nowych
technologii programowania ukierunkowanych na jeszcze wydajniejsze
wykorzystanie baz danych w aplikacjach.
Z kolei administracja systemami zarzdzania bazami danych staa si osobn
gazi informatyki, tak jak administracja systemami operacyjnymi
komputerw lub administracja sieciami komputerowymi. Wielu
pracodawcw poszukuje wykwalifikowanych specjalistw z zakresu
okrelonych systemw zarzdzania bazami danych (jak Oracle czy MS SQL
Server). Znajomo zarwno teorii baz danych, jak i konkretnego
rodowiska pracy z nimi, jest wic okazj podniesienia swoich kwalifikacji.
Wykorzystujc moliwoci systemu zarzdzania bazami danych Microsoft
SQL Server 2008 postaramy si w niniejszym podrczniku zilustrowa
podstawowe wasnoci baz danych (w szczeglnoci relacyjnych baz
danych) oraz systemw zarzdzania tymi bazami.
Mamy nadziej, e podrcznik pozwoli Pastwu na blisze zapoznanie si z
tematyk baz danych oraz systemem Microsoft SQL Server 2008. yczymy
owocnej pracy z naszym podrcznikiem.
Uzyskane kompetencje
Po zrealizowaniu kursu bdziesz:
Zrozumie schemat, zaprojektowa i zoptymalizowa prost baz
danych,
Administrowa serwerem bazodanowym MS SQL Sever 2008 na
poziomie podstawowym,
Zaimplementowa prost baz danych w systemie SZBD opartym o
MS SQL Sever 2008,
Tworzy skrypty w jzyku T-SQL,
Monitorowa i dokonywa tuningu baz danych,
Dba o bezpieczestwo systemw SZBD w podstawowym zakresie,
Uywa jzyka XML w procesie komunikacji z SZBD,
Tworzy raporty przy uyciu MS SQL Reporting Services
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Strona i-4
Wymagania wstpne
Aby przystpi do pracy z podrcznikiem musisz:
umie obsugiwa komputer z zainstalowanym systemem
operacyjnym Microsoft Windows 9X/NT/2000/ME/XP/2003,
zna podstawowe zagadnienia dotyczce programowania (m.in.
wiedzie, co to jest zmienna, procedura, ptla),
nie musisz zna teorii baz danych - poznasz j czytajc wykady
zawarte w niniejszym podrczniku.
Zakres tematyczny kursu
Opis moduw
W Tab. 1 przedstawiony zosta opis moduw, zawierajcy podzia na
zajcia. Kade zajcie jest zaplanowane na 90 minut. Wykadowca moe
dostosowa harmonogram do swoich potrzeb.
Tab. 1 Zakres tematyczny moduw
Numer modu
Tytu
Opis
Modu 1
Budowa diagramw
ERD
W tym module zajmiemy si pierwszym krokiem, jaki
naley wykona projektujc baz danych. Bdzie nim
identyfikacja encji i narysowanie na diagramie, zwanym
diagramem ERD, zalenoci midzy nimi. Prawidowy i
przejrzysty diagram ERD jest kluczowym czynnikiem
sukcesu dla zaprojektowania, a pniej eksploatacji bazy
danych.
Modu 2
Instalacja i
konfiguracja MS SQL
Server 2008
W tym module znajdziesz informacj o podstawowych
zadaniach administratora systemu bazodanowego. Do
zada tych naley instalacja serwera baz danych,
konserwacja oraz aktualizacji serwisw serwera.
Prawidowe przygotowanie rodowiska pracy zapewni
stabilno oraz pozwoli na poznanie systemu
bazodanowego od podstaw.
Modu 3
Definiowanie i
zarzdzanie baz
danych
Dobry administrator Systemu Zarzdzania Bazami Danych
wie wszystko o bazach danych. W dzisiejszych czasach
rola administratora nie ogranicza si do zarzdzania
istniejcymi bazami danych, ale rwnie wymaga
umiejtnoci zakadania, konserwacji oraz aktualizacji baz
danych znajdujcych si pod jego opiek. Modu przybliy
wszystkie te zagadnienia
Modu 4
Wewntrzna
struktura bazy
danych
W tym module znajdziesz informacje w jaki sposb w SQL
Server 2008 przechowywane s dane oraz w jaki sposb
przechowywane s podstawowe obiekty w bazie danych.
Modu 5
Jzyk SQL - DCL, DDL
Jzyk SQL zosta opracowany w 1987 roku z myl o
relacyjnych bazach danych. Skada si on z trzech
skadowych: jzyka definiowania danych (DDL), jzyka
sterowania danymi (DCL) oraz jzyka operowania na
danych (DML). W module tym zostan wprowadzone, a
nastpnie przedstawione na przykadach podstawowe
instrukcje jzyka definiowania danych jzyka SQL DDL
oraz jzyka sterowania danymi jzyka SQL DCL.

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Strona i-5
Modu 6
Jzyk SQL - DML
Jzyk SQL skada si z trzech skadowych: jzyka
definiowania danych (DDL), jzyka sterowania danymi
(DCL) oraz jzyka operowania na danych (DML). W
module tym zostan wprowadzone, a nastpnie
przedstawione na przykadach podstawowe instrukcje
jzyka sterowania na danych jzyka SQL DML
Modu 7
Indeksy i transakcje
W module tym znajdziesz informacje na temat dostpu
fizycznego do danych oraz optymalizacji dostpu.
Poznasz indeksy i ich rodzaje a nastpnie dowiesz si
jakie operacje wykonywane s na indeksach. Dowiesz si,
e jest to parametr niezbdny do zapewnienia
rozsdnych czasw wyszukiwania informacji. W drugiej
czci poznasz transakcje, ktre su do zapewnienia
spjnoci bazy danych i maj wpyw na wydajno bazy
danych. Dowiesz si, e obsuga transakcji nie jest rzecz
atw i wymaga rozwizywania wielu trudnych
problemw.
Modu 8
Programowanie
zaawansowane
w T-SQL
Programowanie w jzyku zapyta to wana umiejtno.
Powinni j opanowa zarwno programici, jak i
administratorzy. Rne dialekty jzyka SQL oferuj rne
skadnie, jednak reguy, jakimi powinien kierowa si
tworzcy kod, s te same niezalenie od SZBD. Bardzo
czsto opanowanie w zaawansowanym stopniu skadni
jednego jzyka pozwala w przyszoci na atwe
opanowanie innego. W module tym znajdziesz
informacj na temat zaawansowanego programowania w
T-SQL.
Modu 9
Procedury
skadowane i
wyzwalacze
W module zostanie zaprezentowany sposb dziaania
oraz podstawy tworzenia procedur skadowanych.
Dowiesz na czym polega rnica pomidzy zwykym
zapytaniem T-SQL a procedur skadowan oraz co to jest
kompilacja i rekompilacja procedury. Zostanie
wprowadzony rwnie specjalny rodzaj procedury
skadowanej wyzwalacz.
Modu 10
Bezpieczestwo w
bazach danych
W tym module dowiesz si, jak naley rozumie
bezpieczestwo baz danych oraz jakie s poziomy
bezpieczestwa. Ponadto dowiesz si, jakim zagroeniom
naley przeciwdziaa, a jakich nie da si unikn oraz jak
naley planowa implementacj poszczeglnych
poziomw bezpieczestwa w aplikacji bazodanowej.
Modu 11
Praca z XML
Wymiana danych z relacyjnymi bazami danych moe by
utrudniona ze wzgldu na rnice programowo
sprztowe itp. Rozwizaniem jest jzyk XML, ktry jest
niezaleny od standardw sprztowych / programowych.
Modu 12
Praca z Reporting
Services
Aby osign sukces na dzisiejszym, konkurencyjnym
rynku, przedsibiorstwa gromadzce due iloci danych
powinny wprowadzi rozwizania biznesowe dziaajce w
czasie rzeczywistym zapewniajce bezproblemow,
skuteczn wymian informacji pomidzy wasnymi
oddziaami, swoimi partnerami, a take klientami.
Microsoft SQL Server Reporting Services jest
rozwizaniem, ktre pozwala szybko i komfortowo dzieli
i udostpnia dane biznesowe, przy niszych nakadach
rozmaitych zasobw.

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Strona i-6
Modu 13
Budowa interfejsu
W module tym napiszemy aplikacj , ktra bdzie
wycigaa informacje z bazy danych Prace Dyplomowe.
Zostanie pokazane jak za pomoc Visual Studio
utworzy baz danych, jak poczy si z baz danych w
jaki sposb wprowadza dane. Nastpnie stworzymy
aplikacje Windows, ktra bdzie korzystaa z tych
danych.
Dodatek
Podstawy
W tym module zajmiemy si zebraniem
najwaniejszych informacji na temat baz danych
niezbdnych do zrozumienia i penego wykorzystania
dalszych moduw. Zebrane, najwaniejsze pojcia nie
zastpuj penego wykadu na ten temat i nie zwalniaj
Ci z przestudiowania wykadu lub podrcznika z
zakresu baz danych. Maj one jedynie na celu zebra i
utrwali najwaniejsze elementy potrzebne do
wykonywania kolejnych moduw. Zazwyczaj pierwsze
zajcia laboratorium s zajciami organizacyjnymi.



ITA-101 Bazy danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Modu 1
Wersja 1.0
Budowa diagramw ERD
Spis treci
Budowa diagramw ERD ...................................................................................................................... 1
Informacje o module ............................................................................................................................ 2
Przygotowanie teoretyczne ................................................................................................................. 3
Przykadowy problem .................................................................................................................. 3
Podstawy teoretyczne.................................................................................................................. 3
Przykadowe rozwizanie ............................................................................................................. 7
Porady praktyczne ..................................................................................................................... 12
Uwagi dla studenta .................................................................................................................... 13
Dodatkowe rda informacji..................................................................................................... 13
Laboratorium podstawowe ................................................................................................................ 14
Problem (czas realizacji 40 min)................................................................................................. 14
Laboratorium rozszerzone ................................................................................................................. 16
Zadanie 1 (czas realizacji 45 min) ............................................................................................... 16
Zadanie 2 (czas realizacji 45 min) ............................................................................................... 16

W.Dbrowski, P.Kowalczuk, K.Markowski Modu 1
ITA-101 bazy danych Budowa diagramw ERD
Strona 2/18
Informacje o module
Opis moduu
W tym module zajmiemy si pierwszym krokiem, jaki naley wykona
projektujc baz danych. Bdzie nim identyfikacja encji i narysowanie na
diagramie, zwanym diagramem ERD, zalenoci midzy nimi. Prawidowy
i przejrzysty diagram ERD jest kluczowym czynnikiem sukcesu dla
zaprojektowania, a pniej eksploatacji bazy danych.
Cel moduu
Celem moduu jest wyksztacenie umiejtnoci budowania poprawnych,
przejrzystych i dobrze udokumentowanych diagramw ERD
z wykorzystaniem narzdzia MS VISIO.
Uzyskane kompetencje
Po zrealizowaniu moduu bdziesz:
rozumia, czym jest diagram ERD,
rozumia, w jaki sposb buduje si diagramy zwizkw encji na
rnych poziomach abstrakcji,
umia zbudowa poprawny diagram ERD,
umia dokona przeksztacenia diagramu ERD tak, aby by on
implementowany w relacyjnej bazie danych.
Wymagania wstpne
Przed przystpieniem do pracy z tym moduem powiniene:
rozumie, czym jest baza danych i jakie powinna mie cechy,
zna zaoenia modelu relacyjnego baz danych.
Mapa zalenoci moduu
Przed przystpieniem do realizacji tego moduu nie s wymagane inne
moduy.

W.Dbrowski, P.Kowalczuk, K.Markowski Modu 1
ITA-101 bazy danych Budowa diagramw ERD
Strona 3/18
Przygotowanie teoretyczne
Przykadowy problem
Wyobra sobie, e zostae poproszony o przygotowanie bazy danych uatwiajcej zarzdzanie
przydziaem sal i zaj na swoim wydziale na uczelni. Pani Jola zajmujca si przydzielaniem sal na
zajcia chciaaby uzyska narzdzie do kontroli i monitorowania obcienia sal przez rne zajcia
dydaktyczne oraz chciaaby przy tej okazji zminimalizowa liczb popenianych bdw. Bdy
polegaj najczciej na tym, e w jednej sali umieszczane s w tym samym czasie rne zajcia lub
na tym, e ta sama grupa studencka ma zajcia w rnych salach w jednym czasie. Pani Jola
chciaaby te mie moliwo szybkiego generowania raportw o przydziale sal i zaj. Dla
uniknicia nieporozumie przy pracach nad narzdziem wspomagajcym prac pani Joli zostae
poproszony o przygotowanie prostego i krtkiego dokumentu przedstawiajcego, jakie dane bd
gromadzone w bazie danych i jakie bd midzy nimi zalenoci. Dokument ten powinien zosta
zweryfikowany i zaakceptowany przez pani Jol przed przystpieniem do dalszych prac.
Podstawy teoretyczne
Przy modelowaniu baz danych moemy posuy si notacj graficzn modelowania danych
diagramem zwizkw encji (ERD, ang. Entity-Relationship Diagram). Jest to model sieciowy
opisujcy na wysokim poziomie abstrakcji dane, ktre s przechowywane w systemie.
Model ERD budowany jest przez analityka. Suy on do zobrazowania w sposb zrozumiay zarwno
dla projektanta, jak i osoby niemajcej wyksztacenia informatycznego (np. klienta) obiektw
i zwizkw zachodzcych w projektowanej dziedzinie problemowej.
Model ERD nie jest zwizany z konkretn implementacj systemu (np. na serwerze MS SQL czy
Oracle), cho jego odmiany mog zawiera informacje specyficzne dla danego jzyka lub
rodowiska implementacyjnego. Staje si on wwczas modelem projektowym
Encja
Encja (ang. entity) jest to co, co istnieje, co odrnia si od innych, o czym trzeba mie informacje.
Zbiory encji reprezentuj zbir elementw wystpujcych w rzeczywistym wiecie i kady element
tego zbioru musi posiada nastpujce cechy:
Kady element musi by unikalny, jednoznacznie okrelony, w celu odrnienia go od
pozostaych.
Kady element musi odgrywa jak rol w projektowanym systemie, nie moe zdarzy si
sytuacji, w ktrej system moe dziaa bez dostpu do danego elementu.
Kady element powinien by opisany przez odpowiedni liczb atrybutw.
W diagramach ERD encja jest reprezentowana przez prostokt, a jej nazwa powinna by
rzeczownikiem.
Atrybut
Atrybut (ang. attribute) jest pewn wasnoci encji, o ktrej chcemy przechowywa informacje.
Atrybut jest reprezentowany przez pewn warto. Na przykad encja Student moe mie atrybut
Nazwisko reprezentowany przez warto Kowalski.
Wrd atrybutw encji wyrniamy jeden atrybut lub zbir atrybutw, ktrego warto w sposb
jednoznaczny identyfikuje instancj (egzemplarz) encji. Taki atrybut lub zbir atrybutw nazywamy
kluczem gwnym encji. Klucz gwny oznacza si czsto na wykresach symbolem PK (ang. Primary
Key) umieszczanym obok nazwy atrybutu.
W.Dbrowski, P.Kowalczuk, K.Markowski
ITA-101 bazy danych
Drugim rodzajem klucza
nazywamy atrybut encji, ktry wskazuje na klucz gwny innej encji. Klucz obcy oznacza si czsto
na wykresach symbolem FK (ang.
Zwizek
Bardzo wanym elementem
i warunki okrelajce te zwizk
zwizkw to powizania stopnia drugiego
bierze udzia dwch uczestnikw (dwie encje). Mog wystpowa take
powizana z sam sob), jak rwnie
W zalenoci od tego, jakiego typu jest uczestnic
encje na sabe lub regularne.
w powizaniu, to oznacza, e encja nie moe istnie bez tego powizania (np. encja
nie moe istnie bez powizania
w zwizku jest tylko czciowe, czyli encja moe istnie samodzielnie bez powizania (np. encja
Klienci moe istnie bez powizania
Bardzo istotnym czynnikiem okrelanym przy z
jako maksymaln liczb instancji jednej encji (wystpie
z instancj innej encji. Ze wzgldu na warto mocy moemy wyrni trzy typy powiza:
jeden-do-jeden,
jeden-do-wiele,
wiele-do-wiele.
Zwizki binarne
Zwizek jeden-do-jeden (jedno
Jest to najprostszy typ powizania, wystpuje wtedy, gdy tylko jedna instancja pierwszej encji jest
powizana z tylko jedn instancj drugiej encji. Jest to powizanie
ograniczenia, gdy warunek jeden do jednego musi by zawsze speniony. Opcjonalnie przy
powizaniu jeden moe wystpowa rwnie opcja adne, oznaczana graficznie
Zwizek jeden-do-wiele (jedno
Najbardziej typowym rodzajem powizania jest powizanie jeden
instancja jednej encji moe by poczona
na swoj uniwersalno i
Opcjonalnie przy powizaniu jeden lub wiele moe wystpowa rwnie opcja adne, oznaczana
graficznie w postaci okrgu.
W.Dbrowski, P.Kowalczuk, K.Markowski

Strona 4/18
stosowanym w bazach relacyjnych jest klucz obcy.
nazywamy atrybut encji, ktry wskazuje na klucz gwny innej encji. Klucz obcy oznacza si czsto
na wykresach symbolem FK (ang. Foreign Key) umieszczanym obok nazwy atrybutu.

Rys. 1. Przykad klucza obcego (FK1)
Bardzo wanym elementem w modelu danych s zwizki (ang. relationship
zwizki elementy czce encje midzy sob. Zdecydowana wikszo
zwizkw to powizania stopnia drugiego zwizki binarne, charakteryzujce si tym, e
bierze udzia dwch uczestnikw (dwie encje). Mog wystpowa take
sam sob), jak rwnie zwizki ternarne (z trzema uczestnikami).
W zalenoci od tego, jakiego typu jest uczestnictwo encji w danym zwizku, moemy podzieli
encje na sabe lub regularne. Encje sabe charakteryzuj si cakowitym uczestnictwem
powizaniu, to oznacza, e encja nie moe istnie bez tego powizania (np. encja
nie moe istnie bez powizania z encj Klienci), natomiast uczestnictwo
zwizku jest tylko czciowe, czyli encja moe istnie samodzielnie bez powizania (np. encja
moe istnie bez powizania z encj Zamwienia).
Bardzo istotnym czynnikiem okrelanym przy zwizkach jest moc powizania
jako maksymaln liczb instancji jednej encji (wystpie w danej encji), ktre mog by powizane
instancj innej encji. Ze wzgldu na warto mocy moemy wyrni trzy typy powiza:
jeden (jedno-jednoznaczny)
Jest to najprostszy typ powizania, wystpuje wtedy, gdy tylko jedna instancja pierwszej encji jest
tylko jedn instancj drugiej encji. Jest to powizanie wprowadzajce dosy znaczne
ograniczenia, gdy warunek jeden do jednego musi by zawsze speniony. Opcjonalnie przy
powizaniu jeden moe wystpowa rwnie opcja adne, oznaczana graficznie
wiele (jedno-wieloznaczny)
jbardziej typowym rodzajem powizania jest powizanie jeden-do-wiele,
instancja jednej encji moe by poczona z jedn lub wieloma instancjami drugiej encji. Ze wzgldu
i ma kopotliwo, ten typ powizania jest najczciej stosowany.
Opcjonalnie przy powizaniu jeden lub wiele moe wystpowa rwnie opcja adne, oznaczana
postaci okrgu.
Rys. 2. Zwizek jeden-do-wielu
Modu 1
Budowa diagramw ERD
bazach relacyjnych jest klucz obcy. Kluczem obcym
nazywamy atrybut encji, ktry wskazuje na klucz gwny innej encji. Klucz obcy oznacza si czsto
) umieszczanym obok nazwy atrybutu.
relationship) pomidzy encjami
elementy czce encje midzy sob. Zdecydowana wikszo
charakteryzujce si tym, e w zwizku
bierze udzia dwch uczestnikw (dwie encje). Mog wystpowa take zwizki unarne (encja
(z trzema uczestnikami).
danym zwizku, moemy podzieli
charakteryzuj si cakowitym uczestnictwem
powizaniu, to oznacza, e encja nie moe istnie bez tego powizania (np. encja Zamwienia
atomiast uczestnictwo encji regularnych
zwizku jest tylko czciowe, czyli encja moe istnie samodzielnie bez powizania (np. encja
moc powizania, ktra definiuje si
danej encji), ktre mog by powizane
instancj innej encji. Ze wzgldu na warto mocy moemy wyrni trzy typy powiza:
Jest to najprostszy typ powizania, wystpuje wtedy, gdy tylko jedna instancja pierwszej encji jest
wprowadzajce dosy znaczne
ograniczenia, gdy warunek jeden do jednego musi by zawsze speniony. Opcjonalnie przy
powizaniu jeden moe wystpowa rwnie opcja adne, oznaczana graficznie w postaci okrgu.
wiele, w ktrym pojedyncza
jedn lub wieloma instancjami drugiej encji. Ze wzgldu
jest najczciej stosowany.
Opcjonalnie przy powizaniu jeden lub wiele moe wystpowa rwnie opcja adne, oznaczana

W.Dbrowski, P.Kowalczuk, K.Markowski Modu 1
ITA-101 bazy danych Budowa diagramw ERD
Strona 5/18
Zwizek wiele-do-wiele (wielo-wieloznaczny)
Powizania tego typu wystpuj rwnie czsto jak powizania jeden do wielu, jednak nie daj si
bezporednio implementowa w relacyjnych bazach danych. S one realizowane przy pomocy encji
porednich (w modelu relacyjnym s to tabele sprzgajce) powizanych z encjami pierwotnymi
przy pomocy powiza jeden do wielu.
W powizaniu wiele-do-wiele encjami gwnymi s encje pierwotne, natomiast encj obc jest
relacja sprzgajca, ktra zwiera klucze gwne relacji oryginalnej. Dlatego w powizaniu
jeden-do-wiele pomidzy relacjami pierwotnymi a relacj obc, po stronie relacji oryginalnej
znajduje si strona jeden powizania jeden-do-wiele, a po stronie relacji obcej znajduje si strona
wiele z tego powizania. Zwizki wiele-do-wiele nie s bezporednio implementowane
w relacyjnych bazach danych i wymagaj dodatkowych przeksztace.

Rys. 3. Zwizek wiele-do-wielu
Zwizki unarne
Powizania tego typu maj tylko jednego uczestnika, czyli relacj, ktra jest powizana sama ze
sob. Powizanie realizowane jest w podobny sposb jak w przypadku powiza binarnych, ale
odnosi si do jednej encji. Klucz gwny tej encji jest dodawany do tej encji.

Rys. 4. Zwizek unarny
Powizania unarne tak jak powizania binarne mog by rnej mocy. To znaczy mog wystpowa
powizania jeden do wielu, ktre mog by opcjonalne po stronie jeden. Ten typ powizania jest
stosowany przy odwzorowywaniu struktur hierarchicznych.
Powizania unarne mog by rwnie realizowane jako powizania wiele do wielu. Wtedy,
podobnie jak przy powizaniach binarnych, musz by modelowane przy uyciu tabeli sprzgajcej.
Zwizki ternarne
S to powizania, w skad ktrych wchodz trzy zwizane ze sob encje. Powizania te, podobnie
jak powizania wiele-do-wiele, nie mog by realizowane bezporednio w relacyjnych bazach
danych.

W.Dbrowski, P.Kowalczuk, K.Markowski Modu 1
ITA-101 bazy danych Budowa diagramw ERD
Strona 6/18

Rys. 5. Zwizek ternarny
Zwizki ternarne nie s bezporednio implementowane w relacyjnych bazach danych i wymagaj
dodatkowych przeksztace.
Notacje zwizkw
W praktyce spotkasz si z rnymi sposobami reprezentacji graficznej zwizkw (dla przykadu:
w programach sucych m.in. do projektowania diagramw ERD takich jak Visio lub IBM Rational
Rose moliwe jest uycie kilku rnych notacji). Bodaj najpopularniejsza jest notacja czysto
graficzna.
Metody przeksztacania zwizkw
Zwizki binarne wiele-do-wiele oraz zwizki ternarne nie s implementowane w relacyjnych bazach
danych. Przed zamodelowaniem ich w bazie relacyjnej wymagaj one pewnych przeksztace.
Przykady takich przeksztace zaprezentowane s poniej
Przeksztacanie zwizkw wielo-wieloznacznych
Jeli mamy zwizek binarny wielo-wieloznaczny, to naley wprowadzi dodatkow encj oraz dwa
nowe zwizki jednoznaczne. Nowa encja powinna wrd atrybutw zawiera klucze obce
odnoszce si do kluczy gwnych dwch pozostaych encji.

Rys. 6. Przeksztacanie zwizkw binarnych wielo-wieloznacznych
Przeksztacanie zwizkw ternarnych
Przy przeksztacaniu zwizkw ternarnych postpujemy podobnie jak w wypadku zwizkw wielo-
wieloznacznych binarnych. Wprowadzamy wwczas dodatkow encj oraz 3 nowe zwizki
jednoznaczne.
W.Dbrowski, P.Kowalczuk, K.Markowski Modu 1
ITA-101 bazy danych Budowa diagramw ERD
Strona 7/18

Rys. 7. Przeksztacanie zwizkw ternarnych
Podobnie postpujemy, jeli mamy do czynienia ze zwizkami o wikszej liczbie argumentw.
Podsumowanie
W tym rozdziale przedstawione zostao podejcie do modelowania konceptualnego bazy danych
z wykorzystaniem techniki zwanej diagramami zwizkw encji.
Dowiedziae si, czym jest encja, jakie posiada cechy oraz czym jest zwizek encji. Pamitaj, e nie
wszystkie typy zwizkw encji s bezporednio implementowane w relacyjnej bazie danych. Zwizki
typu wiele do wielu oraz zwizki wicej ni dwu encji wymagaj przeksztacenia modelu
konceptualnego do postaci dajcej si implementowa w modelu relacyjnym. Przeksztacenie to
polega zazwyczaj na wprowadzeniu dodatkowej encji i dodaniu nowych zwizkw.
Projektujc baz danych warto zawsze rozpocz modelowanie danych od diagramw ERD.
Diagramy takie powinny przede wszystkim, w pierwszym etapie projektowania, odzwierciedla
w moliwie przejrzysty sposb dane i zalenoci wystpujce w wiecie rzeczywistym na przykad
obiekty biznesowe i zalenoci midzy nimi. W pierwszym etapie diagram ERD pokazuje wic czsto
zwizki wiele do wielu oraz zwizki wieloencyjne (rzadziej). Kolejne kroki prowadz do
przeksztacania takiego diagramu a do postaci modelu zgodnego z modelem relacyjnym.
Przykadowe rozwizanie
Przypomnijmy problem z pocztku tego rozdziau dotyczcy przygotowania bazy danych
uatwiajcej zarzdzanie przydziaem sal i zaj na wydziale uczelni.
Naszym celem jest przygotowanie modelu danych, ktry bdzie spenia dwa podstawowe cele:
pozwala zweryfikowa wymagania stawiane przez pani Jol oraz
stanowi podstaw do zbudowania relacyjnej bazy danych.
Jak wida musimy posuy si jzykiem wyrazu zrozumiaym zarwno dla osoby niemajcej
wyksztacenia czy tez dowiadczenia informatycznego jak i przydatnym dla informatyka budujcego
baz danych. Jaki rodek wyrazu, jzyk wybra? Dosy powszechny jest tutaj pogld, e takim
uniwersalnym rodkiem wyrazu speniajcym stawiane przed nami wymagania jest jzyk
obrazkowy diagramy zwizkw encji.
Sformuujmy wic teraz cel naszych dziaa w nastpujcy sposb:
Naszym zadaniem jest opracowanie diagramu zwizkw encji, ktry bdzie jednoznacznie
i przejrzycie przedstawia wymagania pani Joli w zakresie przetwarzanych przez ni danych oraz
umoliwia zbudowanie na jego podstawie relacyjnej bazy danych.
W.Dbrowski, P.Kowalczuk, K.Markowski Modu 1
ITA-101 bazy danych Budowa diagramw ERD
Strona 8/18
Przypominamy, e diagram zwizkw encji powstaje w sposb iteracyjny. Wynikiem naszych prac
powinien by nie jeden diagram, ale zestaw diagramw przedstawiajcy nasz problem na rnych
poziomach abstrakcji (np. z rn liczb szczegw).
Sprbujemy teraz przedstawi w punktach nasze dziaania. Co wic i w jakiej kolejnoci powinnimy
wykona?
Krok 1
Powinnimy uwanie wysucha, co ma do powiedzenia ekspert dziedzinowy, czyli pani Jola. Na
podstawie zebranych informacji moemy zidentyfikowa i wypisa encje wystpujce w naszym
problemie. Dobrym zwyczajem jest te wypisanie kilku przykadowych instancji encji dla kadej ze
zidentyfikowanych encji.
Krok 2
Powinnimy zidentyfikowa zwizki wystpujce midzy encjami. Dobrze jest nazwa te zwizki
i okreli role, jakie w nich odgrywaj poszczeglne encje. Koniecznie powinnimy te
zidentyfikowa licznoci zwizkw.
Krok 3
Powinnimy wykona pierwszy rysunek diagramu zwizkw encji, na ktrym zamieszczamy:
nazwa encji,
zwizki midzy encjami,
licznoci zwizkw.
Warto te umieci na nim nazwy zwizkw i nazwy rl. Czsto jednak dla zachowania
przejrzystoci rysunku rezygnujemy z umieszczania na diagramie ERD tych informacji.
UWAGA: Diagram zwizkw encji bdcy wynikiem kroku 3 jest czsto w postaci
nieznormalizowanej i nierealizowalnej w bazie relacyjnej (np. przedstawia zwizki wiele do wielu).
Na tym etapie najczciej nie naley dokonywa przeksztace tego diagramu.
Krok 4
Diagram z kroku 3 powinnimy skonsultowa z ekspertem dziedzinowym. Na tym etapie diagram
ERD nie zawiera zbyt wiele szczegw, jest wic prosty i przejrzysty. Pozwoli nam to na
upewnienie si, e dobrze zrozumielimy stawiane przez eksperta wymagania dotyczce
przetwarzanych danych oraz umoliwi dokonanie niezbdnych poprawek i uzupenie ju na tym
wstpnym etapie.
Krok 5
Rozpoczynamy identyfikowanie atrybutw dla kadej z przedstawionych na diagramie encji.
Powinnimy zidentyfikowa wszystkie atrybuty, ktre s wykorzystywane w procesach
opisywanych przez eksperta dziedzinowego czyli tak zwane atrybuty biznesowe. Nie wszystkie ze
zidentyfikowanych na tym etapie atrybutw musz znale swoje odzwierciedlenie w kocowym
projekcie bazy danych.
Na przykad: na pewnym wydziale po drugim roku studiw dokonywany jest przez studenta wybr
specjalizacji dalszych studiw. O klasyfikacji na specjalizacj decyduje, w wypadku braku miejsc,
rednia ocen uzyskanych przez studenta z pierwszych czterech semestrw studiw. Dla osoby
opisujcej proces klasyfikacji studentw na specjalizacj istotnym atrybutem kadego studenta jest
jego rednia z pierwszych czterech semestrw nauki. Powinnimy dla encji Student
zidentyfikowa atrybut biznesowy srednia_z_czterech_semestrow. W trakcie kolejnych
iteracji budowy diagramu ERD moemy zdecydowa, e nie bdziemy przechowywa w bazie tej
redniej, ale wylicza j, gdy bdzie potrzebna, na podstawie ocen czstkowych.
W.Dbrowski, P.Kowalczuk, K.Markowski Modu 1
ITA-101 bazy danych Budowa diagramw ERD
Strona 9/18
Krok 6
Diagram z kroku 5 powinnimy skonsultowa z ekspertem dziedzinowym.
Krok 7
Dla kadego atrybutu powinnimy zidentyfikowa i zapisa jego dziedzin. Pamitaj, e dziedzina
atrybutu to nie to samo, co jego typ. Dziedzina zwizana jest z wyszym poziomem abstrakcji
modelu i dotyczy wartoci, ktre moe przyjmowa atrybut wynikajcych z modelu biznesowego
procesu. Typ natomiast zwizany jest z niszym poziomem abstrakcji modelu i dotyczy
reprezentacji danych w silniku bazy danych. Na przykad dziedzin dla atrybutu Ocena moe by
zbir { 2; 3; 3,5; 4; 4,5; 5 }, a typem tego atrybutu Integer.
Krok 8
Diagram lub tabel z kroku 7 powinnimy skonsultowa z ekspertem dziedzinowym.
Krok 9
Po zaakceptowaniu diagramu zwizkw encji przez eksperta dziedzinowego moemy przystpi do
normalizacji, okrelenia kluczy gwnych i kluczy obcych, dokona zmian atrybutw (na przykad
doda atrybuty sztuczne) oraz przeksztacenia zwizkw nierealizowalnych w modelu relacyjnym
(np. zamiana zwizkw wiele do wielu na zwizki jedne do wielu).
Krok 10
Proponujemy aby w tym kroku okreli typy wszystkich atrybutw uwzgldniajc typy silnika bazy
danych, na ktrej bdzie realizowana baza danych, zdefiniowa niezdefiniowane jeszcze klucze
gwne i klucze obce oraz wskaza pola indeksowane.
Na zakoczenie powinnimy dokona przegldu diagramu ERD pod ktem jego spjnoci
i kompletnoci. W naszym wypadku zadanie jest dosy proste, gdy problem, z ktrym mamy do
czynienia nie jest skomplikowany. Przystpujemy wic do kolejnych krokw budowy diagramu ERD.
Krok 1
Po spotkaniu z pani Jol identyfikujemy trzy encje: Sala, Zajecia i Grupa.
Przygotowujemy te zestawienie przykadowych instancji encji.
Tabela 1. Zestawienie instancji encji
Encja Sala Zajcia Grupa
Przykad instancji
encji
110
C155
A001
Bazy danych wykad
Bazy danych
laboratorium
Podstawy informatyki
Programowanie
obiektowe
101
112
203
315c
Krok 2
Identyfikujemy zwizki:
Tabela 2. Licznoci zwizkw
Nazwa zwizku Encje Licznoci
Zajecia_w_Sali Sala, Zajcia Wiele do jeden (*..1)
Grupa_na_zajeciach Grupa, Zajcia Wiele do wiele (*..*)
W.Dbrowski, P.Kowalczuk, K.Markowski Modu 1
ITA-101 bazy danych Budowa diagramw ERD
Strona 10/18
Krok 3
Przedstawiamy diagram ERD z uwzgldnieniem zwizkw i ich licznoci.

Rys. 8. Diagram ERD z uwzgldnieniem zwizkw i ich licznoci
Krok 4
Pani Jola po obejrzeniu naszego diagramu zauwaa, e mog by zajcia, ktre w danym semestrze
nie odbywaj si, ale znajduj si w katalogu zaj (np. przedmiot obieralny, ktry nie zosta
w danym semestrze wybrany przez wystarczajc liczb chtnych). Nie s one przypisane do adnej
sali ani do grupy studentw.
Dostrzegamy te bd polegajcy na pocztkowym przypisaniu do konkretnej sali tylko jednych
zaj. Oczywicie na taki luksus aden wydzia nie moe sobie pozwoli. Zamieniamy liczno
zwizku Zajcia_w_Sali na wiele do wielu.
Uwag t powinnimy uwzgldni na naszym diagramie ERD. Wprowadzamy stosown poprawk
na diagramie.

Rys. 9. Diagram ERD po uwzgldnie poprawy licznoci zwizku
Krok 5
Przystpujemy do identyfikacji atrybutw. Wygodnie jest informacje o atrybutach zebra w tabeli
podajc jednoczenie przykad wartoci atrybutu.
Tabela 3. Przykadowe wartoci atrybutw
Encja Atrybut Przykad
Sala Numer Sali C101
Liczba miejsc 120
Zajecia Nazwa zaj Bazy danych wykad
Grupa Nazwa grupy 112
Liczno 35
Na diagramie ERD:

Rys. 10. Diagram ERD z zaznaczonymi atrybutami
W.Dbrowski, P.Kowalczuk, K.Markowski Modu 1
ITA-101 bazy danych Budowa diagramw ERD
Strona 11/18
Krok 6
Pokazujemy nasz diagram ERD pani Joli. Jeli zostanie on zaakceptowany, przechodzimy do kroku
sidmego.
Krok 7
Powinnimy teraz okreli dla kadego atrybutu jego dziedzin. Najwygodniej bdzie nam to
wykona znowu w postaci tabelki takiej jak tabela xxx uzupenionej o kolumn Dziedzina atrybutu.
Tabela 4. Dziedziny atrybutw
Encja Atrybut Przykad Dziedzina atrybutu
Sala Numer
sali
C101 Cig skadajcy si z litery
reprezentujcej budynek oraz co
najwyej czterech cyfr
Liczba
miejsc
120 Przedzia od 15 do 250
Zajecia Nazwa
zaj
Bazy danych wykad Lista zaj
Grupa Nazwa
grupy
112 Cig skadajcy si z 3 lub 4 cyfr
i/lub litery
Liczno 35 Przedzia od 12 do 40
Krok 8
Powinnimy znowu skonsultowa wyniki naszej pracy z pani Jol. Jeli uzyskamy akceptacj,
moemy przej do kroku dziewitego. W przeciwnym razie nanosimy poprawki i ponownie
prosimy o akceptacj.
Krok 9
Jeli dobrnlimy a tutaj, to oznacza, e zakoczylimy konsultacj z pani Jol i moemy
przystpi do prac zmierzajcych do nadania naszemu modelowi postaci dajcej si
zaimplementowa w relacyjnej bazie danych.
W naszym diagramie ERD wystpuj zwizki wiele do wiele. S to zwizki nieimplementowane
bezporednio w modelu relacyjnym, dlatego musimy dokona ich przeksztacenia. Wprowadzamy
nowe encje ObciazenieSali i ZajeciaGrupy tak jak na rysunku.

Rys. 11. Diagram ERD
W.Dbrowski, P.Kowalczuk, K.Markowski Modu 1
ITA-101 bazy danych Budowa diagramw ERD
Strona 12/18
Informacj na diagramie moemy uzupeni o typy danych, tak jak przedstawiamy to na Rys. 12.
Diagram ERD z typami danych
Sala
PK ID_Sala uniqueidentifier
Numer sali varchar(6)
Liczba miejsc uniqueidentifier
Zajecia
PK ID_Zajecia uniqueidentifier
Nazwa zaj varchar(255)
Grupa
PK ID_Grupa uniqueidentifier
Nazwa grupy char(10)
Liczno smallint
ZajeciaGrupy
PK,FK1 ID_Zajecia int
PK,FK2 ID_Grupa int
ObciazenieSali
PK,FK1 ID_Sala int
PK,FK2 ID_Zajecia int
Dzien char(10)
GodzinaOd char(10)
GodzianDo char(10)

Rys. 12. Diagram ERD z typami danych
Krok 10
W ostatnim kroku dokonujemy przegldu naszego modelu ERD. Rzadko kiedy pierwsze podejcie
bdzie cakowicie wolne od bdw, pomyek czy niedopatrze, dlatego zawsze naley
przeprowadzi weryfikacj poprawnoci diagramu.
Porady praktyczne
Pamitaj, e diagram zwizkw encji ma by zrozumiay nie tylko dla informatyka. Ma on
suy dialogowi midzy projektantem a uytkownikiem, ktry formuuje wymagania dla
przyszej bazy danych. Modelujc dane naley posugiwa si jasnym, prostym i przejrzystym
jzykiem i formami wyrazu.
Budujc diagram zwizkw encji nie spiesz si. Nie dokonuj zbyt pochopnie przeksztace
i nie wprowadzaj od razu zbyt wielu szczegw, nawet jeli przeksztacenia wydaj Ci si
oczywiste, a definiowanie typw danych czy okrelanie kluczy natychmiastowe. Pamitaj, e
kluczowym elementem budowanych diagramw jest ich czytelno i zrozumiao dla osoby
definiujcej wymagania, czyli tak zwanego eksperta dziedzinowego (w kadym razie
w pocztkowych etapach tworzenia diagramw ERD).
Przy identyfikowaniu encji bardzo zachcamy do tego, aby zawsze wypisa kilka przykadw
instancji encji. Podejcie to pozwala na lepsze zrozumienie wiata rzeczywistego i weryfikacj
poprawnoci identyfikacji encji. Nazwa encji czsto nie oddaje jej istoty i moe by rnie
rozumiana przez rne osoby biorce udzia w budowaniu modelu danych. Szybko docenisz
t technik podczas dialogu z przyszym uytkownikiem bazy, ktry z pewnoci bdzie lepiej
rozumia prezentowane przez Ciebie modele.
Rysowanie diagramw zwizkw encji najlepiej zacz od rysowania na duej kartce papieru
lub tablicy. Dopiero pod koniec (krok 9) warto jest przenie diagramy zwizkw encji do
narzdzia wspomagajcego prac z diagramami ERD. Narzdzi takich jest wiele. My
proponujemy wykorzysta do tego celu program MS Visio znany i wygodny program do
rysowania wyposaony w specjalny modu wspomagajcy projektowanie baz danych.
Zwracamy uwag, e w teorii relacyjnych baz danych pod pojciem relacji rozumie si
dwuwymiarow tabel danych. Tabele te odpowiadaj na etapie projektowym pojciu encji,
natomiast powizania midzy tabelami (encjami) nosz nazw zwizkw. W niektrych
aplikacjach i w argonie informatycznym sowo relacja ma jednak czasem inne znaczenie
W.Dbrowski, P.Kowalczuk, K.Markowski Modu 1
ITA-101 bazy danych Budowa diagramw ERD
Strona 13/18
i oznacza powizanie midzy tabelami (encjami), czyli zwizek. Takie nazewnictwo
stosowane jest na przykad w polskich wersjach aplikacji firmy Microsoft.
Ostateczny projekt bazy danych zaley w istotnym stopniu od zwyczajw i upodoba
projektanta. Modele ERD bazy danych zbudowane dla tego samego problemu mog si
rni. Nie zawsze potrafimy jednoznacznie wskaza, ktry z modeli jest lepszy. Czsto s
one po prostu jednakowo dobre.
Zwr uwag, e notacja proponowana przez nas w tym module nie jest jedyn notacj
stosowan przy modelowaniu danych. Popularno zyskuje modelowanie baz danych
z wykorzystaniem jzyka UML. Modelowanie w jzyku UML bazuje na podejciu obiektowym
do analizy i projektowania systemw. Cho zaoenia, na ktrych opiera si modelowania
diagramami ERD i jzykiem UML s inne, to jednak oglna droga postpowania jest bardzo
podobna. Jeli znasz jzyk UML i zasady modelowania obiektowego, to do projektowania baz
danych moesz zamiast diagramw ERD wykorzysta diagramy klas jzyka UML.
Uwagi dla studenta
Jeste przygotowany do realizacji laboratorium, jeli:
rozumiesz, czym jest encja i zwizek midzy encjami,
rozumiesz, na czym polega proces dochodzenia do kocowego diagramu zwizkw encji,
umiesz dokona przeksztacenia zwizkw nieimplementowanych w relacyjnych bazach
danych do zwizkw binarnych jednoznacznych,
potrafisz przedstawi diagram ERD na rnym poziomie abstrakcji,
wiesz, jakie jest znaczenie sowa relacja w teorii relacyjnych baz danych i w argonie
informatycznym.
Pamitaj o zapoznaniu si z uwagami i poradami zawartymi w tym module. Upewnij si, e
rozumiesz omawiane w nich zagadnienia. Jeli masz trudnoci ze zrozumieniem tematu zawartego
w uwagach, przeczytaj ponownie informacje z tego rozdziau i zajrzyj do notatek z wykadw.
Dodatkowe rda informacji
1. Rebeca R. Riordan, Projektowanie relacyjnych baz danych, Microsoft Press, 2000
Ksika powicona jest praktycznym aspektom projektowania relacyjnych baz
danych w rodowisku aplikacji firmy Microsoft. Znajdziesz w niej midzy innymi
przegld modeli normalizacyjnych, ktrych nie omawialimy w tym module
bezporednio. Rebeca Riordan znana jest z atwego i zrozumiaego jzyka i atwoci
tumaczenia zagadnie trudnych. Ten swj talent wykorzystuje rwnie w tej
pozycji. Jeli nie interesuje Ci zgbianie teoretycznych podstaw dziaania baz
danych, a bardziej nastawiony jeste na praktyczne wykorzystanie wiedzy, to jest to
ksika dla Ciebie.
2. C.J.Date, Wprowadzenie do systemw baz danych, WNT, 2000
Jest to peny podrcznik do wykadu z baz danych znanego i cenionego na caym
wiecie autora. Znajdziesz w nim szersze spojrzenie na problematyk budowy
i modelowania baz danych. Polecamy j wszystkim, ktrzy chcieliby poszerzy
swoje wiadomoci z tego zakresu.
3. System pomocy programu Visio
Jeli po raz pierwszy spotykasz si z programem Visio, to zajrzyj koniecznie do jego
systemu pomocy. Znajdziesz tam wszystkie niezbdne informacje, aby efektywnie
korzysta z tego oprogramowania.
W.Dbrowski, P.Kowalczuk, K.Markowski
ITA-101 bazy danych
Laboratorium podstawowe
Problem (czas realizacji
Jeste projektantem bazy danych.
uytkownikiem bazy) opracowae model diagramu zwizkw encji opisany
Przykadowe rozwizanie. Model
na papierze. Teraz warto jest przenie t dokumentacj do
archiwizacj modelu, wprowadzanie zmian
Dodatkowo moe te skrci czas projektowania bazy danych dziki wykorzystaniu narzdzi RAD
(ang. Rapid Application Design
bazy danych wybrana zostaa aplikacji MS Viso 2007. Twoim zadaniem bdzie utworzenie przy
pomocy tego programu modelu danych

Zadanie Tok postpowania
1. Uruchom
projekt bazy
danych
w programie MS
Visio 2007
Uruchom aplikacj MS Visio 2007
Z panelu
grup

2. Wprowad
tabele
W obszarze roboczym wycz linie siatki wybierajc
Widok
Z zasobnika
roboczy (kartka). Na obszarze roboczym zostanie utworzona encja
o
Zaznacz encj
element
tekst
Powtrz powysze czynnoci dla pozostaych encji
W.Dbrowski, P.Kowalczuk, K.Markowski

Strona 14/18
Laboratorium podstawowe
Problem (czas realizacji 40 min)
Jeste projektantem bazy danych. W wyniku spotka z ekspertem dzied
uytkownikiem bazy) opracowae model diagramu zwizkw encji opisany
. Model i wszystkie dodatkowe dane (np. tabele) zostay zapisane jedynie
na papierze. Teraz warto jest przenie t dokumentacj do komputera. Umoliwi to atwiejsz
archiwizacj modelu, wprowadzanie zmian i wymian informacji midzy czonkami zespou.
Dodatkowo moe te skrci czas projektowania bazy danych dziki wykorzystaniu narzdzi RAD
Rapid Application Design). Jako aplikacj wspomagajc prace na tym etapie budowy modelu
bazy danych wybrana zostaa aplikacji MS Viso 2007. Twoim zadaniem bdzie utworzenie przy
pomocy tego programu modelu danych i diagramu ERD zgodne z wymaganiami papierowymi.
Tok postpowania
Uruchom aplikacj MS Visio 2007.
Z panelu Wprowadzenie do programu Microsoft Office Visio
grup Diagram modelu bazy danych.

W obszarze roboczym wycz linie siatki wybierajc
Widok -> Siatka.
Z zasobnika Model encja-relacja przecignij element
roboczy (kartka). Na obszarze roboczym zostanie utworzona encja
o nazwie Tabela1.
Zaznacz encj Tabela1. W oknie Waciwoci bazy danych
element Definicja, a nastpnie w polu Nazwa koncepcyjna
tekst Sala.
Nazwa encji na obszarze roboczym powinna zmieni si na
Powtrz powysze czynnoci dla pozostaych encji
Rys. 13. Fragment okna programu Visio
Modu 1
Budowa diagramw ERD
ekspertem dziedzinowym (przyszym
uytkownikiem bazy) opracowae model diagramu zwizkw encji opisany w rozdziale
wszystkie dodatkowe dane (np. tabele) zostay zapisane jedynie
komputera. Umoliwi to atwiejsz
wymian informacji midzy czonkami zespou.
Dodatkowo moe te skrci czas projektowania bazy danych dziki wykorzystaniu narzdzi RAD
ikacj wspomagajc prace na tym etapie budowy modelu
bazy danych wybrana zostaa aplikacji MS Viso 2007. Twoim zadaniem bdzie utworzenie przy
wymaganiami papierowymi.
Wprowadzenie do programu Microsoft Office Visio wybierz
W obszarze roboczym wycz linie siatki wybierajc polecenie
przecignij element Encja na obszar
roboczy (kartka). Na obszarze roboczym zostanie utworzona encja
Waciwoci bazy danych wska
Nazwa koncepcyjna wprowad
Nazwa encji na obszarze roboczym powinna zmieni si na Sala.
Powtrz powysze czynnoci dla pozostaych encji w modelu.

. Fragment okna programu Visio
W.Dbrowski, P.Kowalczuk, K.Markowski
ITA-101 bazy danych
3. Wprowad
atrybuty
Zaznacz encj
W oknie
W kolumnie
Na dole okna
wybr
jest inny sterownik wybierz
a w
Microsoft SQL Server
jako typ danych
pole jako
symbol budynku
Wprowad pozostae kolumny tabeli
jest kluczem gwnym
Wprowad atrybuty pozostaych tabel. Pamitaj
kolumny stanowi kluc
4. Zmie widok
dokumentu
Przejd do menu
dokumentu bazy danych
modelu ERD.
5. Dodaj zwizki
midzy encjami
Z zasobnika
roboczy (kartka). Na obszarze roboczym zostanie utworzona relacja.
Przecignij koce relacji odpowiednio na encje
aby uzyska zakotwiczenie relacji
program wyrnia encj czerwonym obramowaniem)
Wska utworzon relacj.
kategori
fizyczna
Przejd do kate
rnych opcji kardynalnoci (licznoci).
zdaniem kardynalnoci dla tej relacji.
Zdefiniuj pozostae zwizki midzy encjami.
6. Zmiana notacji
diagramu
Wybierz
zmie zaznaczenie opcji
diagramie ERD.
7. Zapisz model Zapisz model
W.Dbrowski, P.Kowalczuk, K.Markowski

Strona 15/18
Zaznacz encj Sala.
W oknie Waciwoci bazy danych zaznacz element
W kolumnie Nazwa fizyczna wprowad Numer_Sali
Na dole okna Waciwoci bazy danych upewnij si, e zaznaczony jest
wybr Fizyczny typ danych (Microsoft SQL Server)
jest inny sterownik wybierz z menu Baza danych -
a w oknie Sterowniki bazy danych z karty
Microsoft SQL Server.
jako typ danych dla kolumny Numer_Sali wybierz
pole jako wymagane, a w uwagach wpisz: Numer sali; litera oznacza
symbol budynku.
Sprawd w systemie pomocy co oznacza typ danych
zgadzasz si z takim wyborem typu dla pola Nazwa_Sali
Sprawd, co stanie si po zmianie wyboru na
danych?
Wprowad pozostae kolumny tabeli Sala. Wska, e kolumna
jest kluczem gwnym w tej tabeli.
Wprowad atrybuty pozostaych tabel. Pamitaj
kolumny stanowi klucz gwny oraz ktre wartoci s wymagane.
Program MS Visio pozwala na przestawienie modelu ERD
zestawem informacji (np. mona ukry lub pokaza typy danych,
oznaczenia kluczy gwnych itd.).
Przejd do menu Baza danych -> Opcje -> Dokument
dokumentu bazy danych wyprbuj rne ustawienia wywietlania
modelu ERD.
Jakie opcje naley wybra, aby na diagramie byy widoczne typy
danych zdefiniowane w oknie Waciwoci bazy danych
poszczeglnych atrybutw?
Z zasobnika Model encja-relacja przecignij element
roboczy (kartka). Na obszarze roboczym zostanie utworzona relacja.
Przecignij koce relacji odpowiednio na encje Sala
aby uzyska zakotwiczenie relacji (jeli nastpuje zakotwiczeni
program wyrnia encj czerwonym obramowaniem)
Wska utworzon relacj. W oknie Waciwoci bazy danych
kategori Nazwa. W pola Fraza orzeczenia, Fraza odwrotna
fizyczna i Uwagi wpisz odpowiednie Twoim zdaniem wartoci.
Przejd do kategorii Rne. Sprawd, jaki wpyw na diagram ma wybr
rnych opcji kardynalnoci (licznoci). Ustaw prawidowe Twoim
zdaniem kardynalnoci dla tej relacji.
Zdefiniuj pozostae zwizki midzy encjami.
Co naley zrobi, aby w widoku roboczym nie byy wywie
zwizki?
Wybierz z menu Baza danych -> Opcje -> Dokument
zmie zaznaczenie opcji Kurze apki. Zaobserwuj zmiany notacji na
diagramie ERD.
Zapisz model w odpowiednim pliku na dysku.
Modu 1
Budowa diagramw ERD
zaznacz element Kolumny.
Numer_Sali.
upewnij si, e zaznaczony jest
Fizyczny typ danych (Microsoft SQL Server). Jeli wywietlany
-> Opcje -> Sterowniki,
karty Sterowniki sterownik
wybierz varchar(6), wska to
Numer sali; litera oznacza
systemie pomocy co oznacza typ danych varchar(6). Czy
Nazwa_Sali?
si po zmianie wyboru na Poka: Przenony typ
. Wska, e kolumna ID_Sala
Wprowad atrybuty pozostaych tabel. Pamitaj o wskazaniu, ktre
gwny oraz ktre wartoci s wymagane.
Program MS Visio pozwala na przestawienie modelu ERD z rnym
zestawem informacji (np. mona ukry lub pokaza typy danych,
Dokument i w karcie Opcje
wyprbuj rne ustawienia wywietlania
Jakie opcje naley wybra, aby na diagramie byy widoczne typy
Waciwoci bazy danych dla
przecignij element Relacja na obszar
roboczy (kartka). Na obszarze roboczym zostanie utworzona relacja.
Sala i ObciazenieSali, tak
(jeli nastpuje zakotwiczenie, to
program wyrnia encj czerwonym obramowaniem).
Waciwoci bazy danych wska
Fraza odwrotna, Nazwa
wpisz odpowiednie Twoim zdaniem wartoci.
. Sprawd, jaki wpyw na diagram ma wybr
Ustaw prawidowe Twoim
widoku roboczym nie byy wywietlane
Dokument i na karcie Relacja
. Zaobserwuj zmiany notacji na
W.Dbrowski, P.Kowalczuk, K.Markowski Modu 1
ITA-101 bazy danych Budowa diagramw ERD
Strona 16/18
Laboratorium rozszerzone
Zadanie 1 (czas realizacji 45 min)
W pewnej uczelni (jeli nie w kadej) student koczcy pewien etap edukacji musi wykona
i obroni prac kocow zwan prac dyplomow. Praca dyplomowa realizowana jest na koniec
kadego etapu studiw. Tak wic prace dyplomow pisz studenci studiw licencjackich,
inynierskich i magisterskich. W przyszoci uczelnia planuje poszerzy swoj ofert studiw o nowe
rodzaje studiw, ktre te bd koczy si prac dyplomow. Kady student oprcz imienia
i nazwiska ma przypisany na uczelni jednoznaczny identyfikator w postaci numeru indeksu. Numer
indeksu jest cigiem zoonym z 10 znakw i w sposb jednoznaczny identyfikuje studenta
studiujcego na uczelni.
Student chcc ukoczy dany rodzaj studiw musi wybra temat pracy dyplomowej. Z tematem
pracy zwizany jest oczywicie jej opiekun zwany zazwyczaj promotorem pracy. Zasad jest, e
jeden temat kierowany jest przez jednego promotora pracownika uczelni ze stopniem doktora,
doktora habilitowanego lub profesora.
Wadze uczelni zachcaj swoich studentw do pisania prac indywidualnych. Ale dopuszczaj
rwnie moliwo realizacji prac przez dwch lub trzech studentw. Wicej osb nie moe pisa
jednej pracy dyplomowej.
Po napisaniu praca podlega recenzji. Recenzja wykonywana jest przez jednego lub kilku
pracownikw uczelni i oceniana. Kady recenzent moe oceni prac w skali od 2 do 5. Praca
oceniana jest rwnie przez promotora.
Do pracy przyporzdkowywane s pewne sowa ze z gry zdefiniowanego zbioru. S to tak zwane
sowa kluczowe, ktre pozwalaj przypisa tematyk pracy do okrelonego obszaru, a nastpnie
odnajdywa prace zwizane z podobn tematyk. Sowami kluczowymi mog by: informatyka,
systemy operacyjne, konstrukcje elbetowe itp. Kada praca powinna mie przypisane co najmniej
jedno sowo kluczowe.
Po napisaniu pracy student przystpuje do obrony pracy. Obrona ta odbywa si w wyznaczonym
dniu i koczy si wystawieniem pracy dyplomowej kocowej, ostatecznej oceny.
Uczelnia chciaaby usprawni obsug prac dyplomowych i zwizanych z tym procesw. Dlatego
planuje opracowa system informatyczny wspierajcy obsug tych procesw. Pierwszym etapem
prac ma by zbudowanie bazy danych, ktra bdzie spenia nastpujce wymagania:
1. Umoliwi przechowywanie informacji o obronionych pracach dyplomowych wszystkich
studentw uczelni.
2. Umoliwi szybkie i atwe wyszukiwanie prac zwizanych z dan tematyk lub prowadzonych
przez okrelonego promotora.
3. Umoliwi raportowanie o pracach dyplomowych:
recenzowanych przez pracownikw uczelni,
obronionych w danym dniu, miesicu, roku,
obronionych na danym rodzaju studiw.
Zaproponuj diagram ERD dla projektowanej bazy danych. Pamitaj rwnie o udokumentowaniu
przykadowych instancji encji oraz wartoci atrybutw, tak jak robilimy to w przykadowym
rozwizaniu w krokach pitym i sidmym. Model zapisz w pliku programu MS Visio.
Zadanie 2 (czas realizacji 45 min)
Wymagania z zadania 1 okazay si niewystarczajce. Nasz ekspert dokona przegldu wymaga
i doda uzupenienia. W poniszym tekcie zostay one uwydatnione.
W.Dbrowski, P.Kowalczuk, K.Markowski Modu 1
ITA-101 bazy danych Budowa diagramw ERD
Strona 17/18
Zaproponuj diagram ERD dla projektowanej bazy danych po uwzgldnieniu rozszerze. Pamitaj
rwnie o udokumentowaniu przykadowych instancji encji oraz wartoci atrybutw, tak jak
robilimy to w przykadowym rozwizaniu w krokach pitym i sidmym. Model zapisz w pliku
programu MS Visio.
W pewnej uczelni (jeli nie w kadej) student koczcy pewien etap edukacji musi wykona
i obroni prac kocow zwan prac dyplomow. Uczelnia skada si kilku wydziaw. Na kadym
wydziale studenci mog by ksztaceni na rnych specjalizacjach, a informacja o wydziale
i specjalizacji jest istotna przy wykonywaniu sprawozda uczelni z obronionych prac dyplomowych.
Praca dyplomowa realizowana jest na koniec kadego etapu studiw. Tak wic prace dyplomow
pisz studenci studiw licencjackich, inynierskich i magisterskich. W przyszoci uczelnia planuje
poszerzy swoj ofert studiw o nowe rodzaje studiw, ktre te bd koczy si prac
dyplomow. Kady student oprcz imienia i nazwiska ma przypisany na uczelni jednoznaczny
identyfikator w postaci numeru indeksu. Numer indeksu jest cigiem zoonym z 10 znakw i
w sposb jednoznaczny identyfikuje studenta studiujcego na uczelni.
Student chcc ukoczy dany rodzaj studiw musi wybra temat pracy dyplomowej. Z tematem
pracy zwizany jest oczywicie jej opiekun zwany zazwyczaj promotorem pracy. Zasad jest, e
jeden temat kierowany jest przez jednego promotora pracownika uczelni ze stopniem doktora,
doktora habilitowanego lub profesora.
Wadze uczelni zachcaj swoich studentw do pisania prac indywidualnych. Ale dopuszczaj
rwnie moliwo realizacji prac przez dwch lub trzech studentw. Wicej osb nie moe pisa
jednej pracy dyplomowej.
Po napisaniu praca podlega recenzji. Recenzja wykonywana jest przez jednego lub kilku
pracownikw uczelni i oceniana. Kady recenzent moe oceni prac w skali od 2 do 5. Praca
oceniana jest rwnie przez promotora. Ocena recenzenta i promotora nie moe by zbiorcz ocen
pracy, ale musi osobno dotyczy kadego z autorw pracy.
Do pracy przyporzdkowywane s pewne sowa ze z gry zdefiniowanego zbioru. S to tak zwane
sowa kluczowe, ktre pozwalaj przypisa tematyk pracy do okrelonego obszaru, a nastpnie
odnajdywa prace zwizane z podobn tematyk. Sowami kluczowymi mog by na przykad:
informatyka, systemy operacyjne, konstrukcje elbetowe. Kada praca powinna mie przypisane co
najmniej jedno sowo kluczowe.
Po napisaniu pracy student przystpuje do obrony pracy. Obrona ta odbywa si w wyznaczonym
dniu przed komisj skadajc si z 3 czonkw oraz przewodniczcego i koczy si wystawieniem
ostatecznej oceny kademu studentowi osobno. W czasie egzaminu kademu studentowi s
zadawane i protokoowane trzy pytania. Kade z pyta podlega osobnej ocenie.
Uczelnia chciaaby usprawni obsug prac dyplomowych i zwizanych z tym procesw. Dlatego
planuje opracowa system informatyczny wspierajcy obsug tych procesw. Pierwszym etapem
prac ma by zbudowanie bazy danych, ktra bdzie spenia nastpujce wymagania:
1. Umoliwi przechowywanie informacji o obronionych pracach dyplomowych wszystkich
studentw uczelni.
2. Umoliwi szybkie i atwe wyszukiwanie prac zwizanych z dan tematyk, wydziaem,
specjalizacj lub prowadzonych przez okrelonego promotora.
3. Umoliwi raportowanie o pracach dyplomowych:
recenzowanych przez pracownikw uczelni
obronionych w danym dniu, miesicu, roku
obronionych na danym rodzaju studiw
W.Dbrowski, P.Kowalczuk, K.Markowski Modu 1
ITA-101 bazy danych Budowa diagramw ERD
Strona 18/18
4. Umoliwi szybkie sprawdzenie przebiegu obrony pracy dyplomowej danego studenta, w tym
zadanych pyta i skadu komisji.

ITA-101 Bazy Danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Modu 2
Wersja 2.0
Instalacja i konfiguracja Microsoft SQL
Server 2008
Spis treci
Instalacja i konfiguracja MS SQL Server 2008 ...................................................................................... 1
Informacje o module ............................................................................................................................ 2
Przygotowanie teoretyczne ................................................................................................................. 3
Przykadowy problem .................................................................................................................. 3
Podstawy teoretyczne.................................................................................................................. 3
Przykadowe rozwizanie ............................................................................................................. 6
Porady praktyczne ..................................................................................................................... 10
Uwagi dla studenta .................................................................................................................... 11
Dodatkowe rda informacji..................................................................................................... 11
Laboratorium podstawowe ................................................................................................................ 12
Laboratorium rozszerzone ................................................................................................................. 16

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 2
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 2/16
Informacje o module
Opis moduu
W tym module znajdziesz informacj o podstawowych zadaniach
administratora systemu bazodanowego. Do zada tych naley instalacja
serwera baz danych, konserwacja oraz aktualizacji serwisw serwera.
Prawidowe przygotowanie rodowiska pracy zapewni stabilno oraz
pozwoli na poznanie systemu bazodanowego od podstaw.
Cel moduu
Celem moduu jest przedstawienie czytelnikowi typowych zagadnie
zwizanych z instalacj i konfiguracj serwera bazodanowego.
Uzyskane kompetencje
Po zrealizowaniu moduu bdziesz:
potrafi zaplanowa instalacj systemu bazodanowego
potrafi przeprowadzi instalacj SQL Server 2008 za pomoc
centrum instalacji
wstpne opcje dotyczce bezpieczestwa serwera
rozumia czym s serwisy serwera SQL i jakie maj funkcje
wiedzia, jak skonfigurowa poszczeglne serwisy serwera SQL
Wymagania wstpne
Przed przystpieniem do pracy z tym moduem powiniene:
wiedzie, jak uywa oprogramowania Microsoft Virtual PC
zna podstawy obsugi systemu Windows 2000 lub nowszego
rozumie, jak przebiega instalacja oprogramowania w systemie
Windows
Mapa zalenoci moduu
Zgodnie z map zalenoci przedstawion na rys. 1, nie istnieje konieczno
wykonania wczeniej adnego innego moduu.

Rys. 1 Mapa zalenoci moduu
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 2
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 3/16
Przygotowanie teoretyczne
Przykadowy problem
Wdroenie nowego systemu bazodanowego nie jest procesem trywialnym. W pierwszej kolejnoci
wykonywana jest analiza potrzeb organizacji w zakresie gromadzenia i przetwarzania informacji.
Nastpnie mona wybra konkretny system z uytecznymi komponentami. Instalacja systemu, testy
wydajnociowe i integracja z istniejcymi skadnikami IT organizacji to niezbdne kroki wdroenia,
przewanie oddelegowane do dowiadczonego informatyka.
Typowym scenariuszem jest pojawienie si potrzeby przetwarzania coraz wikszych iloci
informacji w maej firmie, ktra w zwizku z dogodnymi warunkami na rynku przeywa dynamiczny
rozwj. Obsuga rosncej liczby klientw przysparza coraz wicej kopotw, gwnie dziaowi analiz.
Na kolejnym zebraniu pada propozycja wdroenia nowego systemu bazodanowego opartego na
technologii Microsoft SQL Server 2008, ktry pomoe usprawni procesy zwizane z obrbk coraz
wikszej iloci danych o klientach, co potencjalnie przeoy si na jako obsugi i przysze zyski.
Sygna i wsparcie finansowe od strony biznesowej jest motorem procesu wdroenia systemu
bazodanowego przedstawionego w tym module.
Podstawy teoretyczne
Waciwie kade oprogramowanie okrelane mianem serwera (serwer WWW, serwer baz danych)
dziaa na podobnej zasadzie opiera si na uruchomionych w systemie operacyjnym usugach. Od
konfiguracji tych usug zaley, czy i jak bdzie funkcjonowa serwer.
Instalacja
Aby mc cokolwiek konfigurowa, w pierwszej kolejnoci naley dokona instalacji tego skadnika.
Podstawowym skadnikiem, czyli usug systemu bazodanowego, jest silnik (ang. Database Engine),
odpowiadajcy za niskopoziomowe przewarzanie danych. Element ten znajdziemy w kadym
systemie bazodanowym, cho rnie moe si nazywa. Wszystkie inne elementy bezporednio lub
porednio korzystaj z silnika i w przypadku jego braku lub uszkodzenia po prostu nie dziaaj.
Sam silnik jest jednak bardzo niewygodny w obsudze z punktu widzenia uytkownika serwera
bazodanowego. W tej sytuacji powstao wiele innych komponentw, ktre uzupeniaj i
usprawniaj prac z takim systemem. Narzdzia graficzne do obsugi i administracji serwera (ang.
Client Tools) s szczeglnie pomocne dla administratorw. Serwis analityczny (ang. Analysis
Services) jest nieoceniony przy przetwarzaniu duej iloci danych. Serwis raportujcy (ang.
Reporting Services) usprawnia i uatrakcyjnia prezentacj analizowanych danych.
W celu integracji czynnoci instalacyjnych tych i innych komponentw serwera SQL administrator
do dyspozycji ma narzdzie o nazwie Centrum Instalacji przedstawione na rys. 2.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 2
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 4/16

Rys. 2 Nowe Centrum Instalacji
Z tego miejsca mona dokona instalacji nowej instancji serwera SQL (w jednym systemie moe by
wiele wystpie serwera bazodanowego), zmodyfikowa komponenty serwera, zainstalowa
przykadowe bazy danych lub poczyta dokumentacj.
Instalacja nowej instancji serwera SQL wie si zawsze z kilkoma etapami:
1. Okrelenie komponentw serwera, ktre bdziemy instalowa.
2. Okrelenie miejsca w systemie operacyjnym, gdzie komponenty bd skadowane.
3. Podanie kont systemowych potrzebnych do uruchomienia poszczeglnych usug serwera.
Po zakoczeniu procesu instalacji powinnimy przejrze i skonfigurowa nowe usugi bazodanowe,
ktre pojawiy si w naszym systemie operacyjnym.
Usuga serwera
Silnik
Silnik serwera bazodanowego, odpowiedzialny za przechowywanie danych, utrzymywanie
spjnoci danych i obsug polece jzyka zapyta najczciej jest tosamy z gwn usug
serwera. Aby uytkownicy mogli stale korzysta z tej usugi, powinna by ona uruchomiona
praktycznie zawsze (nie liczc czasu na ewentualne prace administracyjne, wymagajce przejcia
serwera w tryb offline).
Dodatkowo, poniewa niektre czynnoci wymagaj restartu samej maszyny, usuga ta powinna
by skonfigurowana jako uruchamiana wraz ze startem systemu operacyjnego. Niektre systemy
operacyjne pozwalaj rwnie na okrelenie zachowa usugi w momencie, gdy zostanie ona
nieoczekiwanie zatrzymana (nie przez uytkownika, a na przykad na skutek awarii).
Dla przykadu, w systemie Microsoft Windows Server mona skonfigurowa kad usug tak, by po
nieoczekiwanym zatrzymaniu bya podejmowana prba automatycznego restartu usugi (czyli
ponownego jej uruchomienia).
Usuga automatyzacji zada
Dobry administrator potrafi wykorzysta zdobycze techniki i zautomatyzowa prac systemu
bazodanowego tak, by mie przy nim jak najmniej pracy. Do automatyzacji najczciej suy usuga,
ktra albo jest oferowana przez system operacyjny, albo jest dostarczana wraz z systemem
bazodanowym. Pozwala ona midzy innymi na przygotowywanie harmonogramw tworzenia kopii
zapasowych baz danych. Tak usug w systemie Microsoft SQL Server 2008 jest SQL Server Agent.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 2
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 5/16
Naley zadba o to, by bya ona zawsze uruchomiona, a czsto domylnie usugi te s wyczone lub
zatrzymane.
Bezpieczestwo usug
W trakcie konfiguracji usug naley kierowa si pewnymi zasadami, by unikn nieprawidowoci w
ustawieniach i w dziaaniu serwera. Zasady te dotycz gwnie kwestii zwizanych z
bezpieczestwem rodowiska.
Pierwsz wan zasad jest zasada minimalizacji iloci usug. Mwi ona, e naley zawsze
instalowa i uruchamia tylko te usugi, z ktrych w danym momencie korzysta nasz system
bazodanowy. Pozostae usugi, o ile mog by zainstalowane (w przyszoci moe si okaza, e
jaka dodatkowa usuga bdzie potrzebna), o tyle ich uruchamianie powoduje, e administrator ma
wicej pracy, za w systemie znajduje si wicej potencjalnych sabych punktw.
Zasada ta obowizuje gwnie osoby administrujce systemami i sieciami komputerowymi.
Stosowanie si do niej moe znacznie zwikszy bezpieczestwo systemu.
Druga zasada dotyczy konfiguracji kontekstu usug. Usugi w systemie operacyjnym dziaaj jak
uytkownicy wykonuj operacje i maj okrelone uprawnienia. W niektrych systemach
(np. Windows) kadej usudze przyporzdkowane jest konto uytkownika. Mwimy, e usuga
pracuje w kontekcie uytkownika. Oznacza to, e usuga dziaa w systemie operacyjnym i w sieci
na takich samych uprawnieniach, jakie zostay okrelone dla uytkownika.
W zwizku z tym pojawia si problem wyboru waciwego konta dla usug. Problem ten dotyczy
gwnej usugi serwera SQL silnika oraz usugi odpowiedzialnej za automatyzacj zada w tym
systemie.
Wikszo systemw operacyjnych oferuje wbudowane konta o krelonych uprawnieniach.
Niestety, uprawnienia te na og s zbyt due, by konta systemowe mona byo wykorzysta do
pracy z usugami systemu bazodanowego. Przykadem takiego konta jest konto Local System w
systemach Microsoft Windows.
Konto to dziaa jako element systemu operacyjnego, co w praktyce oznacza, e ma uprawnienia
nawet wiksze od tych, jakie posiada administrator systemu. Std pierwszy wniosek na og nie
wybieramy wbudowanych kont systemowych dla usug serwera SQL. Powstaje pytanie jakich w
takim razie kont uywa?
Jeli serwer ma pracowa w rodowisku rozproszonym, ma mie moliwo dostpu do innych
serwerw i dodatkowo maszyna znajduje si w domenie, to wybieramy dla usug konto domenowe,
specjalnie utworzone i skonfigurowane. Konto to powinno mie ustawienia, ktre pozwol w
sposb nieprzerwany pracowa usudze.
Zatem naley ustawi dla tego konta silne haso, ktre nie powinno mie daty wygasania (haso
nigdy nie wygasa) i nie powinno by zmieniane przez uytkownikw (uytkownik nie moe zmienia
hasa, bez opcji uytkownik musi zmieni haso przy pierwszym logowaniu). Co do uprawnie konta,
naley rozway przydzielenie konta do roli lokalnego administratora (dla potrzeb na przykad
automatycznego restartu usugi w przypadku nieoczekiwanego jej zatrzymania).
Czasami taka konfiguracja jest wymagana (na przykad przy instalacji systemu Microsoft SQL Server
w klastrze Microsoft Windows). Dla gwnych usug moesz skonfigurowa jedno konto (uatwia to
zdecydowanie administracj kontami). Nazwa konta dla zwikszenia bezpieczestwa nie powinna
kojarzy si z systemem bazodanowym.
Narzdzia konfiguracji usug
Wikszo systemw operacyjnych oferuje narzdzie do zcentralizowanego zarzdzania usugami
zainstalowanymi w systemie. Jednak poniewa oglna ilo usug w systemach operacyjnych jest
ogromna, a dodatkowo bardzo czsto usugi systemu bazodanowego wymagaj dodatkowych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 2
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 6/16
ustawie, producenci zazwyczaj dodaj narzdzie (lub zestaw narzdzi) do zarzdzania usugami
tylko samego serwera SQL.
Dla przykadu, W systemie Microsoft SQL Server 2008 s dwa narzdzia do zarzdzania usugami:
Configuration Manager oraz Reporting Services Configuration. Pierwszy program umoliwia
zarzdzanie usugami i protokoami sieciowymi, za drugi pozwala dostosowa usug raportowania
serwera SQL. Narzdzie Configuration Manager ilustruje rys. 3.

Rys. 3 Konfiguracja serwisw
Przykadowe rozwizanie
Wdroenie systemu bazodanowego opartego na Microsoft SQL Server 2008 przebiega w kilku
etapach.
Pierwszym z nich jest wybr maszyny i systemu operacyjnego, ktry bdzie podstaw dla serwera
SQL. Serwery takie jak serwer baz danych, poczty czy stron internetowych zawsze instalowane s
na gotowym rodowisku operacyjnym. My mamy do dyspozycji maszyn z systemem Microsoft
Windows Server 2003, ktra w peni odpowiada wymaganiom serwera SQL.
Nastpnym etapem jest uzupenienie rodowiska o wymagane i opcjonalne komponenty.
Komponenty wymagane, takie jak .NET Framework 2.0 czy MS XML 6, znajduj si na pycie z
plikami instalacyjnymi Microsoft SQL Server 2008. Elementy uyteczne, lecz opcjonalne, takie jak
Microsoft PowerShell, mona doinstalowa z wasnego rda, np. witryny
www.microsoft.com/poland.
Waciwa instalacja systemu bazodanowego zaczyna si po uruchomieni instalatora Microsoft SQL
Server 2008.
rodkowa grupa opcji (Install) pozwala na uruchomienie waciwego komponentu programu
instalacyjnego (rys. ). W tym kroku instalator jest gotowy do organizacji swojego rodowiska w
naszym systemie. Dopiero teraz wida gwne okno centrum instalacji rodowiska serwera SQL
Server 2008. Mona tu dokona aktualizacji serwera z wersji SQL Server 2000 lub SQL Server 2005,
przeczyta dokumentacj, zainstalowa komponenty dodatkowe lub przykadowe bazy.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 2
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 7/16

Rys. 4 Instalacja nowej instancji serwera SQL
Wybierajc instalacje nowej instancji serwera SQL przechodzimy do kroku, w ktrym naley okreli
skadniki systemu bazodanowego. Okno komponentw systemu (rys. ) umoliwia wybr instalacji
interesujcych nas czci rodowiska serwera SQL. Z pewnoci potrzeby bdzie sam silnik bazy
danych (Database Engine Services), jak i graficzny interfejs dla niego (Client Tools). W dalszej
kolejnoci przydatne oka si narzdzia analityczne (Analysis Services), narzdzia pomocy (SQL
Server Books online), itp.

Rys. 5 Wybr skadnikw instalacji
W tym kroku mamy moliwo wyboru miejsca skadowania plikw serwera SQL w systemie. W
profesjonalnych zastosowaniach ze wzgldw wydajnociowych czsto spotykan praktyk jest
rozdzielanie plikw systemu operacyjnego i serwera bazodanowego pomidzy rne dyski.
Nastpnym wanym krokiem jest nazwanie instancji instalowanego serwera SQL oraz podgld
instancji ju istniejcych. Dla mniej dowiadczonych uytkownikw zaleca si pozostawienie
ustawie standardowych instalatora.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 2
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 8/16
Kolejny etap to okrelenie komponentw serwera oraz sposobw ich uruchamiania. Serwer SQL
skada si z kilku usug, ktre musz by uruchamiane za pomoc odpowiedniego konta
uytkownika. Dla naszej maszyny takim kontem jest Administrator. W tym momencie
poszczeglne usugi bd uruchamiane z uprawnieniami administratora.
W obecnej wersji serwer SQL oferuje moliwo zapisywania danych w formacie Unicode czyli
midzynarodowym standardzie kodowania znakw. Poprzednie wersje oferoway zapis w
standardach zorientowanych na konkretne jzyki. Zakadka Collation pozwala na wybr standardu
kodowania danych (np. w celu zachowania kompatybilnoci ze starszymi bazami) oddzielnie dla
silnika bazy i serwisu analitycznego, co prezentuje rys. .

Rys. 6 Konfiguracja obsugi stron kodowych
Kolejn rzecz jest ustalenie, jakich uytkownikw serwer SQL bdzie honorowa. Do wyboru s
uytkownicy zwizani z systemem operacyjnym lub uytkownicy systemowi oraz uytkownicy
wewntrzni serwera. Na pocztek wystarcz nam do pracy sami uytkownicy systemowi.
Naley jednak jednoznacznie sprecyzowa konto, ktre bdzie miao uprawnienia do
administrowania serwerem SQL. Ilustruje to rys. .
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 2
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 9/16

Rys. 7 Konfiguracja typu autoryzacji
W oknie dotyczcym powiadamiania firmy Microsoft o wystpujcych bdach i uyciu zasobw
serwera SQL moemy zgodzi si lub nie na wysyanie tych informacji. Przed zaznaczeniem
czegokolwiek warto poczyta dokadnie, jakie informacje bd wysyane.
Pora na podsumowanie opcji instalacji. W oknie Ready to Install moesz przejrze wszystkie
zaznaczone uprzednio opcje, jeeli co si nie zgadza, zawsze moesz cofn si i wprowadzi
zmian.
Zatwierdzajc wybrane opcje rozpoczynamy kopiowanie plikw i wykonywanie skryptw
instalacyjnych zgodnie z zaoeniami ustalonymi przez nas wczeniej. Moemy podejrze postp
instalacji poszczeglnych skadnikw serwera SQL.
Po zakoczeniu procesu instalacji komponentw serwera SQL moemy przej do konfiguracji
poszczeglnych usug. W tym celu naley posuy si programem SQL Server Configuration
Manager dostepnym w grupie aplikacji SQL Server 2008.
W gwnym oknie narzdzia konfiguracyjnego widzimy usugi zwizane z serwerem SQL. Usuga
automatyzacji zada (SQL Server Agent) jest wyczona, co nie jest dla nas stanem zadowalajcym,
zatem naley j aktywowa.
Aby usuga uruchamiaa si wraz ze startem systemu operacyjnego naley zaznaczy odpowiedni
opcj w zakadce Service, co ilustruje rys. Bd! Nie mona odnale rda odwoania..
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 2
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 10/16

Rys. 8 Konfiguracja serwisw
Serwer SQL przewanie dziaa w rodowisku sieciowym opartym o protokoy TCP/IP. Ze wzgldw
bezpieczestwa obsuga tych protokow domylnie jest wyczona. Jeeli jestemy pewni
zabezpiecze swojej sieci informatycznej, moemy wczy obsug TCP/IP dla serwera SQL.
Ostatnim etapem instalacji serwera SQL jest uruchomienie aplikacji zarzdzajcej SQL Management
Studio i prba poczenia si z istniejc baz danych AdventureWorks. Jeeli to zadanie si
powiedzie, moemy uzna, e posiadamy gotowy do pracy system bazodanowy.
Porady praktyczne
W miar moliwoci dokonuj instalacji serwera SQL na systemie nieobcionym przez inne serwery.
W praktycznej dziaalnoci serwery bazodanowe mocno wykorzystuj zasoby sprztowe takie jak
czas procesora, pami operacyjna czy dostp do dysku twardego. Wspdzielenie tych zasobw z
innymi usugami zdecydowanie obnia wydajno obsugi baz danych.
Pamitaj o moliwoci instalacji wielu instancji serwera SQL na jednej maszynie fizycznej.
Umoliwia to logiczne i organizacyjne rozdzielenie poszczeglnych grup baz danych a co za tym
idzie lepsza kontrol nad nimi.
Dodatkowe serwisy moesz doinstalowa w miar potrzeb. Pamitaj, e kady z nich to potencjalne
obcienie dla systemu i luka w zabezpieczeniach. Planujc rozszerzanie funkcjonalnoci serwera
bazodanowego o dodatkowe serwisy warto zastanowi si nad jego rozbudow od strony
sprztowej.
Ju na etapie instalacji serwera bazodanowego warto przemyle spraw bezpieczestwa
poszczeglnych usug. Usugi serwera powinny posiada dedykowane konta, za pomoc ktrych s
uruchamiane. Wydzielenie kont i przyznanie im wskiego zakresu praw minimalizuje moliwo
uycia ich przez nieautoryzowane osoby. Wicej o zabezpieczeniach serwera bazodanowego
znajdziesz w module 10.
Dobr praktyk jest wydzielenie zasobu sieciowego z plikami instalacyjnymi serwera SQL. Pozwoli
to na szybk re-instalacj lub dodanie nowych komponentw do systemu. Niezalenie od tego
warto posiada kopi plikw instalacyjnych na noniku przenonym (pyta DVD, pendrive, mobilny
dysk twardy itp.), jeeli zaistniaaby potrzeba instalacji rodowiska na maszynie odcitej od sieci
informatycznej. Dotyczy to take systemw towarzyszcych serwerowi baz danych takich jak np.:
serwis publikacji stron WWW.
W przypadku stwierdzenia braku dostpu do instancji serwera SQL, w pierwszej kolejnoci sprawd,
czy odpowiednie serwisy systemowe s uruchomione. Jeeli w wyniku jakiego konfliktu usugi
serwera SQL zostay wyczone lub zatrzymane, dokonaj ich ponownej aktywacji. W skrajnym
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 2
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 11/16
przypadku naley zrestartowa system operacyjny, ktry moe blokowa usugi systemu
bazodanowego przez wasne usugi zalene.
Nigdy nie zaniedbuj regularnego skanowania systemu operacyjnego, na ktrym znajduje si system
bazodanowy pod wzgldem obecnoci wirusw i zoliwego oprogramowania. System bazodanowy
jest centraln skadnic danych organizacji, a ich utrata zawsze jest bardzo kosztowna.
Zawsze sprawdzaj dostpno najnowszych aktualizacji dla systemu bazodanowego, jak i systemu
operacyjnego, na ktrym serwer SQL jest zainstalowany. Pamitaj, e nie ma oprogramowania
doskonaego a producenci staraj si ulepsza swoje produkty m.in. poprzez udostpnianie
aktualizacji. Wida to wyranie w systemach operacyjnych gdzie np.: bez nowych aktualizacji w
ogle nie mona zainstalowa niektrych aplikacji.
Uwagi dla studenta
Jeste przygotowany do realizacji laboratorium jeli:
rozumiesz, co oznacza serwis systemowy, serwis bazy danych, instalacja serwisu
rozumiesz zasad dziaania uruchomienia serwisw w kontekcie uytkownika
umiesz wymieni i opisa podstawowe komponenty systemu bazodanowego
umiesz poda przykad zastosowania systemu bazodanowego w praktyce
Pamitaj o zapoznaniu si z uwagami i poradami zawartymi w tym module. Upewnij si, e
rozumiesz omawiane w nich zagadnienia. Jeli masz trudnoci ze zrozumieniem tematu zawartego
w uwagach, przeczytaj ponownie informacje z tego rozdziau i zajrzyj do notatek z wykadw.
Dodatkowe rda informacji
1. Kalen Delaney, Microsoft SQL Server 2005: Rozwizania praktyczne krok po kroku, Microsoft
Press, 2006
Podrcznika adresowany do projektantw systemw bazodanowych, ktrzy
opanowali ju podstawy idei relacyjnych baz danych. Przedstawia praktyczne
problemy i ich szczegowe rozwizania.
2. Edward Whalen, Microsoft SQL Server 2005 Administrators Companion, Microsoft Press, 2006
Jest to przejrzysty przewodnik, zawierajcy wszystkie informacje potrzebne do
wdroenia, administrowania i obsugi SQL Server 2005. Znajdziesz w nim wiele
procedur i wskazwek opartych na dowiadczeniach profesjonalistw pracujcych z
Microsoft SQL Server 2005.
3. Dusan Petkovic, Microsoft SQL Server 2008: A Beginner's Guide, McGraw-Hill, 2008
Pozycja adresowana do osb zaczynajcych przygod z bazami danych. Znajdziemy tu
wprowadzenie do relacyjnych baz danych, sposoby ich projektowania, optymalizacji i w kocu
wdroenia w najnowszej odsonie serwera SQL w wersji 2008. Omwienie jzyka T-SQL w
osobnej, duej czci ksiki jest kolejn mocn tej pozycji.

4. http://www.microsoft.com/sql/2008/default.mspx
Tutaj znajdziemy wszystkie podstawowe informacje na temat MS SQL Server 2008 oraz nowoci
z nim zwizane.

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
Laboratorium podstawowe
Problem 1 (czas realizacji 45 min)
Firma National Insurance w zwizku z dogodnymi warunkami na rynku
rozwj. Obsuga rosncej liczby klientw przysparza coraz wicej kopotw, gwnie dziaowi analiz.
Na ostatnim zebraniu pada propozycja wdroenia nowego systemu bazodanowego opartego na
technologii Microsoft SQL Server 2008, ktry pom
wikszej iloci danych o klientach firmy co potencjalnie przeoy si na jako obsugi i przysze
zyski.
Wdroenie nowego systemu zoono na barki gwnego informatyka firmy, ktry do tej pory
zajmowa si gownie zagadnieniami zwizanymi z administracj systemami operacyjnymi
i bezpieczestwem sieci. Jako praktykant dostae za zadanie wdroy serwera SQL 2008 na
testowej platformie. Twoje dowiadczenia z procesu instalacji i konfiguracji serwera bd
wykorzystane przy uruchamianiu systemu roboczego.
Zadanie Tok postpowania
1. Uruchom
instalacj serwera
SQL Server 2008
Uruchom maszyn wirtualn

Klik
Na ekranie powinno pokaza si okno instalatora Mi
2008
2. Dokonaj
konfiguracji
przedinstalacyjnej
Z grupy
and Samples
Przeczytaj i zaakceptuj postanowienia umowy licencyjnej poprzez
zaznaczenie pola
Kliknij przycisk
Kliknij przycisk
3. Dokonaj Kliknij odnonik
Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 12/16
Laboratorium podstawowe
Problem 1 (czas realizacji 45 min)
Firma National Insurance w zwizku z dogodnymi warunkami na rynku
rozwj. Obsuga rosncej liczby klientw przysparza coraz wicej kopotw, gwnie dziaowi analiz.
Na ostatnim zebraniu pada propozycja wdroenia nowego systemu bazodanowego opartego na
technologii Microsoft SQL Server 2008, ktry pomoe usprawni procesy zwizane z obrbk coraz
wikszej iloci danych o klientach firmy co potencjalnie przeoy si na jako obsugi i przysze
Wdroenie nowego systemu zoono na barki gwnego informatyka firmy, ktry do tej pory
ownie zagadnieniami zwizanymi z administracj systemami operacyjnymi
Jako praktykant dostae za zadanie wdroy serwera SQL 2008 na
testowej platformie. Twoje dowiadczenia z procesu instalacji i konfiguracji serwera bd
ystane przy uruchamianiu systemu roboczego.
Tok postpowania
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Maszyna wirtualna uywa obrazw ISO pyt CD/DVD na rwni z
pytami fizycznymi. Wane jest, aby w wirtualnym napdzie DVD
umieszczony by obraz pyty o nazwie SQLDEV_ENU.ISO
Kliknij dwukrotnie ikon Mj komputer, a pniej
Na ekranie powinno pokaza si okno instalatora Mi
2008, tak jak na rys. :

Rys. 9 Strona gwna programu instalacyjnego
Z grupy Install kliknij odnonik Server components, tools,
and Samples.
Przeczytaj i zaakceptuj postanowienia umowy licencyjnej poprzez
zaznaczenie pola I accept the license terms.
Kliknij przycisk Next.
Kliknij przycisk Install.
Kliknij odnonik New Installation.
Modu 2
Instalacja i konfiguracja MS SQL Server 2008
Firma National Insurance w zwizku z dogodnymi warunkami na rynku przeywa dynamiczny
rozwj. Obsuga rosncej liczby klientw przysparza coraz wicej kopotw, gwnie dziaowi analiz.
Na ostatnim zebraniu pada propozycja wdroenia nowego systemu bazodanowego opartego na
oe usprawni procesy zwizane z obrbk coraz
wikszej iloci danych o klientach firmy co potencjalnie przeoy si na jako obsugi i przysze
Wdroenie nowego systemu zoono na barki gwnego informatyka firmy, ktry do tej pory
ownie zagadnieniami zwizanymi z administracj systemami operacyjnymi
Jako praktykant dostae za zadanie wdroy serwera SQL 2008 na
testowej platformie. Twoje dowiadczenia z procesu instalacji i konfiguracji serwera bd

ISO pyt CD/DVD na rwni z
aby w wirtualnym napdzie DVD
SQLDEV_ENU.ISO.
a pniej CD ROM (D:).
Na ekranie powinno pokaza si okno instalatora Microsoft SQL Server

Strona gwna programu instalacyjnego
Server components, tools, Books Online,
Przeczytaj i zaakceptuj postanowienia umowy licencyjnej poprzez
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 2
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 13/16
instalacji
waciwej
W oknie sprawdzania konfiguracji kliknij przycisk Details, a potem Next.
Zgodnie z rys. 1 zaznacz kolejno Database Engine Services, Full text
search, Analysis Services, Client Tools, SQL Server books online,
Business Intelligence Development Studio.
Kliknij przycisk Next.

Rys. 10 Wybr skadnikw instalacji
Zostaw ustawienia standardowe i kliknij przycisk Next.
W polu Account wpisz nazw Administrator.
W polu Password wpisz P@ssw0rd.
Kliknij przycisk Apply to All.
Rys. 11 Okrelenie praw dostpu do skadnikw
Kliknij zakadk Collation.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
Dla pola
Kliknij pole
Z listy
Kliknij przycisk
Dla pola
Z listy
Kliknij przycisk
Przejd do nastpnego okna klikajc przycisk
Aby doda konto biecego uytkownika (
Add Current User
K
Aby doda konto biecego uytkownika (
Add Current User
K
Kliknij
Przeczytaj informacje w otwartej stronie WWW
Zamknij okno przegldarki
K
Kliknij
Aby zakoczy ten etap i przej do podsumowania instalacji
przycisk
Wywietl dziennik instalacji klikajc odnonik
files
Przeczytaj informacje zawarte w dzienniku i zamknij okno notatnika
Kliknij przycisk
4. Konfiguracja Kliknij przycisk
Configuration Tools
Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 14/16
Dla pola Database Engine kliknij przycisk Customize
Kliknij pole Windows collation designator.
Z listy Collation designator wybierz Polish.
Kliknij przycisk OK.
Dla pola Analysis Services kliknij przycisk Customize
Z listy Collation designator wybierz Polish.
Kliknij przycisk OK.
Przejd do nastpnego okna klikajc przycisk Next
Aby doda konto biecego uytkownika (Administrator
Add Current User.
Kliknij przycisk Next.
Rys. 12 Konfiguracja typu autoryzacji
Dla serwisu analitycznego rwnie naley okreli konto z
uprawnieniami administracyjnymi.
Aby doda konto biecego uytkownika (Administrator
Add Current User.
Kliknij przycisk Next.
Kliknij odnonik View the Microsoft SQL Server.
Przeczytaj informacje w otwartej stronie WWW.
Zamknij okno przegldarki.
Kliknij przycisk Next.
Kliknij przycisk Install.
Aby zakoczy ten etap i przej do podsumowania instalacji
przycisk Next.
Wywietl dziennik instalacji klikajc odnonik
files\Microsoft SQL Server\100\....
Przeczytaj informacje zawarte w dzienniku i zamknij okno notatnika
Kliknij przycisk Close.
Kliknij przycisk START -> Programy -> Microsoft SQL Server 2008
Configuration Tools -> SQL Server Configuration Manager
Modu 2
Instalacja i konfiguracja MS SQL Server 2008
Customize.
Customize.
Next.
Administrator), kliknij przycisk

Konfiguracja typu autoryzacji
Dla serwisu analitycznego rwnie naley okreli konto z
Administrator), kliknij przycisk


Aby zakoczy ten etap i przej do podsumowania instalacji, kliknij
Wywietl dziennik instalacji klikajc odnonik C:\Program
Przeczytaj informacje zawarte w dzienniku i zamknij okno notatnika.
Microsoft SQL Server 2008 ->
SQL Server Configuration Manager.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 2
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 15/16
usug serwera W nowym oknie rozwi drzewo SQL Server Network Configuration
klikajc przycisk +.
Zaznacz pole SQL Server Services.
Kliknij dwukrotnie pole SQL Server Agent.
Kliknij przycisk Start.
Kliknij na zakadce Service.
W polu Start Mode wybierz z listy rozwijanej opcj Automatic.
Kliknij przycisk OK.
Kliknij pole Protocols for MSSQLSERVER.
Kliknij dwukrotnie pole TCP/IP.
Dla pola Enabled z listy rozwijanej wybierz Yes.
Kliknij przycisk OK.
Zamknij okno SQL Server Configuration Manager.
5. Sprawdzenie
poprawnoci
instalacji
Kliknij przycisk Start -> Programy -> Microsoft SQL Server 2008 ->
Management Studio.
W nowym oknie kliknij przycisk Connect.
Jeeli instalacja system jest poprawna, bdziesz mg w polu Object
Explorer rozwin drzewo Databases -> AdventureWorks.


Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 2
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 16/16
Laboratorium rozszerzone
Zadanie 1 (czas realizacji 90 min)
Jeste gwnym informatykiem firmy National Insurance. Niedawne wdroenie nowego serwera
bazodanowego opartego na Microsoft SQL Server 2008 zakoczyo si sukcesem. Firma planuje
rozbudow infrastruktury informatycznej o farm serwerw Microsoft SQL Server 2008 i ich
integracj z istniejcymi bazami danych.
W dotychczasowej dziaalnoci od strony baz danych wykorzystywane byy serwery Microsoft SQL
Server 2000 i Microsoft SQL Server 2005, na ktrych hostowane bazy zawieray dane w jzyku
polskim i angielskim. Niezbyt dobrze wygldaa sprawa prezentacji danych, kady z menederw
korzysta ze swoich narzdzi, niekompatybilnych ze sob. Jako dobry administrator polecie
przetestowa nowy serwer pod wzgldem kompatybilnoci z istniejcymi bazami oraz moliwoci
nowego serwisu raportujcego.
Zadanie polega na instalacji nowej instancji serwera SQL Server 2008 (na nowej, testowej maszynie)
speniajcej kryteria:
Pliki bazy danych i pliki systemu operacyjnego s rozdzielone.
Zachowana jest kompatybilno wstecz wzgldem uywanych wczeniej baz.
Instalacja zawiera serwis silnika, serwis analityczny i serwis raportujcy.
Dostarczone s narzdzia uatwiajce administracj.
Dostarczone s przykadowe bazy.
Zesp testowy przygotuje rwnie dokumentacj w formie raportu z instalacji.
ITA-101 Bazy Danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Modu 3
Wersja 2.0
Definiowanie i zarzdzanie baz
danych
Spis treci
Definiowanie i zarzdzanie baz danych .............................................................................................. 1
Informacje o module ............................................................................................................................ 2
Przygotowanie teoretyczne ................................................................................................................. 3
Przykadowy problem .................................................................................................................. 3
Podstawy teoretyczne.................................................................................................................. 3
Przykadowe rozwizanie ........................................................................................................... 10
Porady praktyczne ..................................................................................................................... 14
Uwagi dla studenta .................................................................................................................... 15
Dodatkowe rda informacji..................................................................................................... 15
Laboratorium podstawowe ................................................................................................................ 16
Problem 1 (czas realizacji 45 min) .............................................................................................. 16
Laboratorium rozszerzone ................................................................................................................. 26
Zadanie 1 (czas realizacji 90 min) ............................................................................................... 26

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 2/26
Informacje o module
Opis moduu
Dobry administrator systemu zarzdzania bazami danych wie wszystko o
bazach danych. W dzisiejszych czasach rola administratora nie ogranicza si
do zarzdzania istniejcymi bazami danych, ale rwnie wymaga
umiejtnoci zakadania, konserwacji oraz aktualizacji baz danych
znajdujcych si pod jego opiek. W tym module poznasz sposoby
tworzenia, rozbudowy i zarzdzania baz danych.
Cel moduu
Celem moduu jest przedstawienie czytelnikowi typowych zagadnie
zwizanych z zakadaniem i konserwacj bazy danych na serwerze Microsoft
SQL Server 2008.
Uzyskane kompetencje
Po zrealizowaniu moduu bdziesz:
potrafi zaplanowa instalacj bazy danych
rozumia czym s pliki bazy, tabele, diagramy, klucze
wiedzia, jak wykona kopi bezpieczestwa bazy oraz jak przywrci
baz w razie awarii
Wymagania wstpne
Przed przystpieniem do pracy z tym moduem powiniene:
wiedzie, jak uywa oprogramowania Microsoft Virtual PC
zna podstawy obsugi systemu Windows 2000 lub nowszego
rozumie, jakie s elementy diagramu ERD i powizania midzy nimi
zna podstawy obsugi narzdzia SQL Server Management Studio
Mapa zalenoci moduu
Zgodnie z map zalenoci przedstawion na rys. 1, istnieje konieczno
wykonania wczeniej moduw 1 i 2.

Rys. 1 Mapa zalenoci moduu
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 3/26
Przygotowanie teoretyczne
Przykadowy problem
Jeste administratorem systemu bazodanowego w firmie National Insurance. Analitycy w dziale
deweloperskim stworzyli diagram bazy danych dla nowego produktu firmy. Diagram zawiera
informacje o wszystkich tabelach i relacjach bazy. Wskazuje te na moliwe do uycia typy danych.
Diagram bazy danych przedstawiony jest na rys. 2.

Rys. 2 Diagram przykadowej bazy danych
Twoim zadaniem jest zaoenie bazy danych wraz z odpowiednimi tabelami, ustanowienie kluczy
gwnych, powiza midzy nimi i okrelenie dogodnych typw danych. W kocowej fazie
powiniene wypeni baz przykadowymi danymi i zapewni jej kopi bezpieczestwa.
Podstawy teoretyczne
Dysponujc gotowym projektem relacyjnej bazy danych, jeste na pocztku dugiej drogi, zanim
baza powstanie na serwerze i rozpocznie swoje ycie. Zanim zaimplementujesz baz danych, musisz
zaplanowa wiele ustawie dotyczcych rnych aspektw dziaania bazy.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 4/26
Rozmieszczenie plikw bazy danych
Baza danych skada si z plikw. Plik bazy mona podzieli na pliki danych i pliki dziennika
transakcji. W plikach danych przechowywane s obiekty baz danych, takie jak tabele (wraz z
danymi), indeksy czy procedury skadowane. W plikach dziennika transakcji system zapisuje strony
(w przypadku systemw SQL Server strona to blok 8 KB, ale mona go zwikszy) zawierajce
modyfikacje danych.
Rozmieszczenie plikw odgrywa znaczc rol w procesie tworzenia i optymalizacji bazy danych.
Istnieje szereg zasad przydatnych w planowaniu fizycznej implementacji bazy danych. Zasady te to
m.in.:
Pliki dziennika transakcji naley umieszcza na innym dysku fizycznym ni pliki danych w
przypadku awarii jednego z dyskw tracimy tylko cz bazy.
Tabele czsto wystpujce razem w zczeniach (ang. joins) naley umieszcza w osobnych
plikach (grupach plikw) na osobnych dyskach fizycznych dziki temu moliwe jest
rwnolege pobieranie danych z tych tabel.
Indeksy nieklastrowane naley umieszcza na innych dyskach fizycznych ni ich bazowe
tabele zyskujesz wiksz wydajno zapisu danych.
Tabele czsto modyfikowane naley oddzieli fizycznie (umieci na innym dysku) od tabel
rzadko modyfikowanych w przypadku wikszych baz danych upraszcza to proces
wykonywania kopii zapasowych.
W przypadku naprawd duych instancji bazy stosowane s dedykowane rozwizania
programowo-sprztowe typu klastry z wydajnymi macierzami dyskowymi.
Jednoczesne spenienie wszystkich wymienionych punktw jest raczej niemoliwe, ale w idealnym
przypadku oddzielenie dziennika transakcji od danych i maksymalne rozczonkowanie danych
pomidzy tak wiele dyskw, jak si da, byoby rozwizaniem dajcym maksymalne bezpieczestwo
i wydajno bazy.
Bezpieczestwo fizyczne danych
Dane, jak i dziennik transakcji mona dodatkowo zabezpieczy przed ewentualnymi awariami
dyskw fizycznych. Do tego celu naley uy macierzy dyskowych z zaimplementowanymi
konfiguracjami RAID (ang. Redundant Array of Independent Disks).
Istnieje wiele konfiguracji RAID, ale do najbardziej znanych i zarazem najczciej stosowanych
nale: RAID-0, RAID-1, RAID-5 oraz RAID-10. Implementacja RAID moe by rozwizana drog
sprztow lub programow w systemie operacyjnym. Rozwizania rni si wydajnoci i cen.
Wicej o systemach RAID i bezpieczestwie systemw bazodanowych znajdziesz w module 10.
Przy tworzeniu bazy danych administrator musi zdecydowa o jej konfiguracji. Konfiguracja ta
dotyczy nie tylko plikw bazy danych, ale take pewnych ustawie samej bazy danych. Ustawienia
te decyduj o tym, jak bdzie si zachowywaa baza w trakcie swojego cyklu ycia.
Ustawienia dotyczce plikw
Po wybraniu odpowiedniej struktury bazy i okreleniu jej nazwy przychodzi pora na ustawienie
pewnych waciwoci plikw bazy danych. Ustawienia te to:
ilo i lokalizacja plikw
wielko pocztkowa plikw
sposb powikszania plikw (powinien zosta wybrany automatyczny przyrost rozmiaru)
maksymalny rozmiar dla kadego z plikw (alternatywnie mona maksymalny rozmiar
pozostawi nieokrelony, ale wwczas administrator jest zmuszony do monitorowania
wolnego miejsca na dysku twardym)
nazwy logiczne plikw
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 5/26

Rys. 3 Waciwoci przykadowej bazy danych w SQL Server 2008
W praktyce naley pamita o takim ustawieniu rozmiaru pocztkowego plikw, by znalazo si w
nich miejsce na nowe dane. Proces powikszania rozmiaru pliku moe niepotrzebnie obciy baz
danych. Co za tym idzie, naley te zadba o to, by przyrost rozmiaru pliku nie by zbyt may.
Najlepszym nawykiem jest manualne powikszanie rozmiarw plikw poza godzinami, w ktrych
baza jest uywana przez najwiksz liczb uytkownikw. Opcja automatycznego powikszania
plikw moe by ustawiona na wszelki wypadek (gdyby administrator zapomnia o swoich
obowizkach lub wystpia nieoczekiwana sytuacja wymagajca powikszenia pliku). Niemniej
jednak taka automatyzacja jest dyskusyjna poniewa wpywa na wydajno bazy.
Dziennik transakcji naley ustawi na pocztek na 20-30% rozmiaru plikw danych. W trakcie pracy
bazy danych rozmiar ten mona zmieni wedle potrzeb.
Ustawienia dotyczce bazy danych
Rwnie wane jak ustawienia plikw s ustawienia samej bazy danych. Ustawienia te to na
przykad:
ustawienia dotyczce jzyka, metod sortowania tekstu, znakw dialektycznych
ustawienia dotyczce zapisu zmian w dzienniku transakcji (tzw. model przywracania bazy,
ang. recovery model)
ustawienia dotyczce statystyk (statystyki to zapis rozkadu danych w kolumnach najczciej
wykorzystywanych w tabelach, mog by tworzone i utrzymywane automatycznie)
ustawienia dotyczce dostpu do bazy danych (w niektrych sytuacjach niezbdne jest
ograniczenie dostpu do bazy danych dla uytkownikw, np. przy przywracaniu bazy danych
z kopii zapasowej)
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 6/26

Rys. 4 Opcje przykadowej bazy danych w SQL Server 2008
Ustawienia opcji bazy danych zmieniaj si w trakcie dziaania bazy. Zmiany dokonywane s przy
pomocy narzdzi graficznych (np. SQL Server Management Studio) lub polece SQL (np. ALTER
DATABASE). Do ciekawszych opcji nale polecenia Auto Shrink, ktra optymalizuje rozmiar
plikw (z tak sam wad jak automatyczne zwikszanie rozmiaru) i Auto Create Statistics,
ktra generuje automatycznie statystyki na podstawie dystrybucji wartoci w kolumnie danych.
Informacja ta jest uywana przez SQL Server Query Optimizer do generowania planu zapyta
bazujcego na kosztach uywania rnych kolumn.
Tabela bazy danych
Tabela jest dwuwymiarowym zbiorem wzajemnie powizanych danych dotyczcych wsplnego
obszaru lub encji. Skada si ona z kolumn, w ktrych przechowywane s dane, np. w tabeli
Pracownicy przewanie znajdziemy kolumny takie jak Nazwisko czy PESEL. W relacyjnej bazie
danych relacj zachodz wanie pomidzy danymi w poszczeglnych kolumnach nazywanych take
atrybutami tabeli.
Pojedynczy rzd obejmujcy kolumny reprezentuje instancj danych, czyli rekord (ang. record).
Wikszo operacji na bazie danych wykonuje si na rekordach lub, czciej, zbiorach rekordw
(ang. recordset).
Do jednoznacznej identyfikacji tabeli suy klucz gwny (ang. primary key), ktry przewanie jest
dodatkow kolumn z unikatowymi wartociami. Dziki znajomoci tych wartoci moemy szybko
wskaza interesujcy nas rekord w danej tabeli, a nastpnie odczyta go lub zmodyfikowa.
Tabele moemy utworzy za pomoc narzdzi graficznych, np. w Management Studio rozwijajc w
obszarze Object Explorer odpowiednie menu.
Moemy te posuy si odpowiednim poleceniem jzyka SQL (i tak najczciej postpuje si w
praktyce):
CREATE TABLE nazwa_tabeli (kolumny_tabeli)
Wicej na ten temat znajdziesz w module 5.
Podczas tworzenia tabeli naley zdefiniowa chocia jedn kolumn zawierajc dane.
Przechowywane dane mog by tylko cile okrelonego typu. Typ ten jest wsplny dla caej
kolumny.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 7/26
Typy danych
Typ danych jest pierwsz wielkoci jak definiuje uytkownik dla kolumny tabeli. Typ danych
kolumny kontroluje typ informacji jaka moe by przechowywana w kolumnie. Naley zdefiniowa
typ danych przez wpisanie za nazw kolumny sowa kluczowego, moe ono wymaga parametrw.
Po zdefiniowaniu typ danych kolumny tabeli jest sta waciwoci i nie powinno by zmieniany.
Mona rwnie wykorzysta typy danych do definicji innych struktur przechowujcych dane, takich
jak parametry i lokalne zmienne.
Przegld wybranych typw danych dostpnych na platformie Microsoft SQL Server prezentuje tab.
1
Tab. 1 Podstawowe typy danych dostpne w Microsoft SQL Server
Kategoria Opis Typ danych Szczegy
Typy binarne Dane zawieraj acuchy binariw
zapisanych w postaci liczb w
systemie szesnastkowym
(heksadecymalnym).
binary Dane o staej przypisanej dugoci (do 8
KB).
varbinary Dane o rnej dugoci a do
zdefiniowanej maksymalnej (do 8 KB).
image Dane mog by rnej dugoci i
przekroczy rozmiarem 8 KB.
Typy tekstowe Dane s kombinacj liter, cyfr i
symboli.
char Dane o staej przypisanej dugoci (do 8
KB).
varchar Dane o rnej dugoci a do
zdefiniowanej maksymalnej (do 8 KB).
text Dane tekstowe o rozmiarze
przekraczajcym 8 znakw
Data i czas Dane s kombinacj dobrze
sformatowanej daty i czasu. Nie
istniej typy danych opisujce
osobno dat i czas.
datetime Data z zakresu od 1 stycznia 1753 do 31
grudnia 9999 (jedna warto zajmuje 8 B).
smalldatetime Data z zakresu od 1 stycznia 1900 do 6
lipca 2079 (jedna warto zajmuje 4 B).
datetimeoffset zapewnia obsug stref czasowych
datetime2 Wspiera szerszy zakres dat oraz wiksz
precyzj czci uamkowych sekundy i
take umoliwia okrelanie precyzji
Typy liczb
dziesitnych
Dane liczbowe o dokadnoci do
ostatniej znaczcej cyfry.
decimal Maksymalnie 38 cyfr, z czego wszystkie
mog znajdowa si po prawej stronie
przecinka. Typ przechowuje dane
dokadne (nie przyblione).
numeric W SQL Server jest to odpowiednik typu
decimal.
Typy liczb o
zmiennej
precyzji
Dane s przyblionymi liczbami
zmiennoprzecinkowymi o
dokadnoci takiej, jaka moe w
danej chwili by obsuona przez
mechanizmy obliczeniowe.
float Liczba zmiennoprzecinkowa z zakresu od
-1,79E+308 do 1,79E+308.
real Liczba zmiennoprzecinkowa z zakresu od
2.40E + 38 do 2.40E + 38.
Typy liczb
cakowitych
Dane s liczbami cakowitymi. bigint Liczba cakowita z zakresu od 2^63
(-9223372036854775808) do 2^63-1
(9223372036854775807). Rozmiar jednej
liczby 8 B.
int Liczba cakowita z zakresu od
-2 147 483 648 do 2,147,483,647. Rozmiar
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 8/26
Kategoria Opis Typ danych Szczegy
jednej liczby to 4 B.
smallint Liczba cakowita z zakresu od -32,768 do
32,767. Rozmiar jednej liczby to 2 B.
tinyint Liczba cakowita z zakresu od zera do 255.
Rozmiar jednej liczby to 1 B.
Typy
monetarne
Dane reprezentuj ujemne lub
dodatnie sumy pienidzy.
money Warto monetarna z zakresu od
-922,337,203,685,477.5808 do
922,337,203,685,477.5807. Rozmiar
jednej wartoci to 8 B.
smallmoney Warto monetarna z zakresu od
-214,748.3648 do 214,748.3647. Rozmiar
jednej wartoci to 4 B.
Typy
specjalne
Dane specjalne to dane, ktre nie
pasuj do innych kategorii.
bit Dane zawieraj warto 1 albo 0. Uywaj
ich, gdy chcesz przedstawi zagadnienia
typu PRAWDA lub FASZ albo TAK lub NIE.
cursor Typ danych uywany przez zmienne lub
parametry wyjciowe procedur
skadowanych, ktre zawieraj referencje
do kursora.
timestamp Typ danych uywany do wskazania cigu
aktywnoci
uniqueidentifier Dane s 16-bajtowymi szesnastkowymi
liczbami wskazujcymi na globalnie
unikalne identyfikatory (GUID). GUID s
uyteczne, gdy wiersz musi by unikalny
pord wielu wierszy.
SQL_variant Ten typ danych przechowuje wartoci
rnych typw z wyjtkiem typw text,
ntext, timestamp, image oraz
sql_variant.
table Typ danych przechowujcy zestaw
wynikw do dalszego przetwarzania.
Moe by uywany tylko do definiowania
zmiennych lokalnych lub wartoci
zwracanych przez funkcje uytkownika.
Typy Unicode Dane tekstowe zapisane w postaci
Unicode. Zajmuj one dwukrotnie
wicej miejsca ni zwyke dane
tekstowe.
nchar Dane o staej przypisanej dugoci (do
4000 znakw Unicode).
nvarchar Dane o rnej dugoci a do
zdefiniowanej maksymalnej (do 4000).
ntext Dane mog dugoci przekracza 4000
znakw Unicode.
Przestrzenne
typy danych
Dane przestrzenne to dane, ktre
identyfikuj geograficzne
lokalizacje i ksztaty, w
szczeglnoci na kuli ziemskiej
Point Lokalizacja
MultiPoint Seria punktw
LineString Seria obejmujca zero lub wicej punktw
poczonych liniami
MultiLineString Zestaw obiektw LineString
Polygon Spjny region opisany przez zbir
zamknitych obiektw LineString
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 9/26
Kategoria Opis Typ danych Szczegy
MultiPolygon Zestaw wieloktw
GeometryCollection

Kolekcja typw geometrycznych

Oczywicie nie bdziesz uywa wszystkich typw danych, ale kilku bdziesz uywa prawie zawsze
podczas pracy z serwerem Microsoft SQL Server.
Perspektywy
W najprostszym rozumieniu perspektywa (ang. view) jest wirtualn tabel. W szerokim znaczeniu
perspektywa jest odwzorowaniem globalnego schematu bazy danych na schemat zewntrzny,
przystosowany do potrzeb i przyzwyczaje konkretnego uytkownika.
Perspektywy stosujemy, aby uproci (sobie lub uytkownikowi) ycie. Powodw stosowania
perspektyw jest wiele:
Uproszczenie z punktu widzenia uytkownika modeli pojciowych dziki temu moemy
znacznie uproci schemat bazy, a tym samym uatwi uytkownikowi dostp do danych.
Dostosowanie si do punktu widzenia i terminologii dziedziny zastosowa BD zmiana
schematu wprowadzana przez perspektyw moe by wykorzystana na przykad do
dostosowania nazw tabel i kolumn do jzyka, ktrym posuguje si uytkownik.
Ograniczenie dostpu do obiektw perspektywy powoduj ukrycie przez uytkownikiem
kocowym prawdziwego schematu bazy danych. Moe to mie rwnie pozytywny wpyw na
popraw bezpieczestwa danych, gdy uytkownik nie ma bezporedniego dostpu do
schematu rzeczywistego.
Wspdziaanie systemw heterogenicznych (wsplny schemat) w wypadku systemw
rozproszonych, zbudowanych z rnych systemw baz danych, perspektywa moe pomc w
ukryciu rnic.
Przystosowanie starszych systemw do nowszych technologii i wymaga.
Z punktu widzenia uytkownika (i innych procesw) perspektywa powinna by dla niego
przezroczysta, to znaczy, e mona na niej wykonywa takie same operacje, jak na prawdziwych
tabelach. Warunek przezroczystoci perspektyw jest bardzo trudny do spenienia, gdy dla
pewnych odwzorowa danych przyjte rodki definicji perspektyw (np. SQL) mog okaza si
niewystarczajce.

Rys. 5 Schemat dziaania perspektyw
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 10/26
Rodzaje perspektyw
Perspektywy dzielimy na dwie grupy:
perspektywy wirtualne
perspektywy zmaterializowane
Perspektywy wirtualne
Perspektywa wirtualna istnieje wycznie w postaci definicji. Wyliczenie (czyli wyznaczenie zbioru
krotek danej perspektywy, zwane te materializacj perspektywy) nastpuje w momencie
odwoania si do perspektywy. Wynik ten nie jest pniej nigdzie przechowywany. Oznacza to, e
kade wywoanie perspektywy wirtualnej powoduje jej ponowne wyliczenie (materializacj), co
obcia zasoby systemu.
Wad perspektyw wirtualnych jest obcianie systemu za kadym odwoaniem do procedury
wirtualnej, a tym samym duszy czas oczekiwania na materializacj perspektywy. Perspektywy
wirtualne maj te szereg zalet.
W sytuacji stosowania perspektyw wirtualnych nie ma dublowania danych oraz problemw z
aktualizacj danych i problemw z przetwarzaniem transakcji.
Perspektywy zmaterializowane
Perspektywa zmaterializowana jest wyliczana (materializowana) w czasie pierwszego uycia.
Nastpnie wynik tego wyliczenia (dane) s przechowywane, aby mc ich uy przy ponownym
wywoaniu perspektywy. Dziki temu kolejne wywoanie perspektywy nie obcia systemu, a czas
dostpu do danych znacznie si zmniejsza.
Przykadowe rozwizanie
Posiadajc gotowe, przetestowane rodowisko bazodanowe przystpujemy do zaoenia pierwszej
bazy danych. Do zarzdzanie bazami danych, w tym ich tworzenia jaki i usuwania suy narzdzie
Management Studio dostpne wraz z podstawow instalacj SQL Server.
Po uruchomieniu narzdzia i poczeniu si z danym serwerem widzimy obszar Object Explorer
wraz z drzewem obiektw Databases. Wybierajc opcj tworzenia nowej bazy musimy
sprecyzowa jej kilka podstawowych parametrw. Oprcz nazwy dla nowej bazy podajemy lokacj i
pocztkow wielko pliku dla danych i pliku dla dziennika transakcji. Plikw tych moe by
sprecyzowanych wicej, jednake minimum to okrelenie jednego pliku kadego typu, co pokazuje
rys. 6.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 11/26

Rys. 6 Tworzenie nowej bazy danych
Zaraz po utworzeniu bazy warto przyjrze si dostpnym opcjom i od razu dokona wstpnej
konfiguracji. Przed wypenieniem bazy danymi naley okreli parametry takie jak poziom
kompatybilnoci bazy z poprzednimi wersjami serwera SQL, dostpno i widoczno przez
poszczeglne grupy uytkownikw czy zachowanie plikw bazy w przypadku zblienia si do
poziomu zapenienia danymi.
Jedn z waniejszych opcji, ktra naley zainteresowa si od samego pocztku jest Recovery
model. Opcja ta decyduje o tym, jak duo informacji o modyfikacjach danych bdzie zapisywana do
dziennika transakcji bazy danych.
List opcji bazy danych znajdziesz w systemie pomocy Books Online pod hasem database options
(najszybciej znajdziesz ten fragment pomocy uywajc indeksu dostpnego w Books Online). W tym
kroku dodamy wymagane tabele bazy danych i okrelimy ich atrybuty.
Po ustaleniu podstawowych parametrw bazy mona przejc do kroku okrelania jej wygldu, czyli
tabel i zwizkw pomidzy nimi. Rozwijajc w obszarze Object Explorer drzewo naszej bazy danych
widzimy wszystkie obiekty wchodzce w jej sklad, w tym tabele. Po wybraniu opcji tworzenia nowej
tabeli naley sprecyzowa przynajmniej jeden atrybut, czyli kolumn. Dla danej kolumny
wybieramy nazw i typ danych, ktre bdzie ona przechowywaa. Tutaj naley zdecydowa, czy
kolumna ma zawsze zawiera jakie dane, czy moe przechowywa wartoci puste (ang. null). Do
kontroli nad warociami pustymi suy pole Allow Nulls, co ilustruje rys. .
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 12/26

Rys. 7 Okrelanie nazwy i typu danych dla kolumny
Pozostao nam jeszcze ustali identyfikator naszej tabeli klucz gwny. Kolumna zawierajca
unikalne dane jest dobrym kandydatem dla klucza gwnego.
Typowa tabela zawiera wiele kolumn o rnych typach danych oraz klucz gwny. Dane
przechowywane w poszczeglnych kolumnach s ze sob skojarzone np. dla tabeli zawierajcej
dano o pracy dyplomowej studenta bd tam kolumny reprezentujce temat pracy, dat obrony
czy ocen z obrony.

Rys. 8 Gwna tabela bazy PraceDyplomowe
Najczstrzym typem zwizku pomidzy dwiema tabelami jest wiele-do-wielu. Niestety tego typu
zwizku nie mona w bezporedni sposb zamodelowa w relacyjnej bazie danych. Aby obej ten
problem, tworzymy niejako sztuczn, poredni tabl. Tabela ta posiada tylko dwie kolumny,
wskazujce na czone tabele.
Poniewa dla tej tabeli unikalna bdzie zarwno jedna jak i druga kolumna, klucz gwny moemy
zaoy na obydwu jednoczenie. Ilustruje to rys. .
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 13/26

Rys. 9 Tabela Autorzy z kluczem gwnym na dwch kolumnach
Posiadajc zdefiniowane wszystkie tabele w bazie danych, nastpnym krokiem jest utworzenie
zwizkw pomidzy nimi. Najwygodniej utworzy je na graficznym diagramie bazodanowym
dostpnym z poziomu Management Studio.
Dla przykadowych tabel po stworzeniu zwizku zostanie utworzony klucz obcy w tabeli Autorzy
jako identyfikator powizanej tabeli Osoba.
Jako rezultat powinnimy posiada diagram tabel i zwizkw pomidzy nimi bardzo zbliony do
pocztkowego diagramu ERD.

Rys. 7 Tworzenie pozostaych kluczy obcych
Posiadajc gotow baz danych warto zrobi jej kopi zapasow przed dalszymi eksperymentami.
Narzdzie Management Studio umoliwia atwe wykonywanie kopii zapasowej i przywracanie z niej
bazy danych. Rozpoczcie procedury tworzenia kopii bezpieczestwa ilustruje rys. 8.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 14/26

Rys. 8 Uruchamianie procedury kopii bezpieczestwa
Jeeli jest to tylko moliwe, naley zmieni nazw pliku kopii bezpieczestwa i jego domyln
lokacj. Przewanie w sieci istnieje dedykowany serwer plikw, na ktrym przechowywane s pliki
kopii bezpieczestwa.
W celu weryfikacji pliku kopii wygodnie jest odzyska tak utworzon baz do innej, roboczej bazy
danych. Tak robocz baz mona przeglda pod wzgldem zgodnoci i testowa nawet na innym
serwerze bazodanowym. Procedur odzyskiwania dazy z kopii bezpieczestwa ilustruje rys. 9.

Rys. 9 Odzyskiwanie bazy danych z pliku backup
Porady praktyczne
Zanim przystpisz do implementacji bazy danych na serwerze, uwanie przyjrzyj si diagramowi
ERD lub diagramowi bazodanowemu. Zrozumienie relacji zawartych na tych diagramach pozwoli
unikn bdw w logice bazy. Bdy popenione na tak wczesnym etapie bd negatywnie
wpywa niemal na kade pniejsze dziaanie systemu bazodanowego. I z drugiej strony, im wicej
uwagi powicimy prawidowemu projektowi bazy tym bardziej zaprocentuje to w przyszoci.
Upewnij si, e kada tabela ma zaoony klucz gwny, bez niego nie zdziaasz za wiele. Klucz
gwny oprcz funkcji identyfikacji danej tabeli peni rwnie rol indeksu, ktry moe przypieszy
obsug danych. Jest on elementem niezbdnym w tabelach systemu bazodanowego niezalenie od
platformy.
Uwanie przemyl spraw doboru typw danych. Nie mog by one za mae dla przechowywanej
wartoci, z drugiej strony szastanie zbyt obszernymi typami sumarycznie zmniejsza wydajno bazy.
W szczeglnoci przyjrzyj si nowym moliwociom jakie oferuje w zakresie typw danych MS SQL
2008. Wspczesne wymagania co do obsugi danych typu pliki czy hierarchia obiektw znalazy
swoje odzwierciedlenie w nowych serwerach baz danych.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 15/26
Zawsze zapisuj tworzone obiekty typu tabele, diagramy. System nie robi tego automatycznie!
Zapominanie o zapisywaniu swojej pracy moe skutkowa przykrymi konsekwencji utraty informacji
i co za tym idzie czasu uytkownika serwera baz danych. Wiele operacji w ogle nie zostanie
wykonana jeeli np.: zaktualizowana struktura tabeli nie zostanie zapisana do pliku bazy.
Uwagi dla studenta
Jeste przygotowany do realizacji laboratorium jeli:
rozumiesz, co oznacza relacja i czym rni si od powizania w relacyjnych bazach danych
rozumiesz zasady przypisywania odpowiednich typw danych do atrybutw tabeli
wiesz jak zaoy baz danych i ustali jej podstawowe parametry
umiesz poda przykad diagramu ERD dla typowego zbioru danych
Pamitaj o zapoznaniu si z uwagami i poradami zawartymi w tym module. Upewnij si, e
rozumiesz omawiane w nich zagadnienia. Jeli masz trudnoci ze zrozumieniem tematu zawartego
w uwagach, przeczytaj ponownie informacje z tego rozdziau i zajrzyj do notatek z wykadw.
Dodatkowe rda informacji
1. William R. Stanek, Vademecum Administratora Microsoft SQL Server 2005, Microsoft Press,
2006
Kompleksowe opracowanie na temat zaplanowania i wdroenia system bazodanowego
opartego o MS SQL Server 2005 w maym i rednim przedsibiorstwie. Autorzy postawili na
formu przedstawiania wielu problemw z praktyki administratora baz danych oraz moliwych
drg do ich rozwizania. Ksika jest adresowana do praktykujcych uytkownikw.
2. Wiesaw Dudek, Bazy danych SQL. Teoria i praktyka, Helion, 2006
Ksika przedstawia wikszo zagadnie zwizanych z przechowywaniem i przetwarzaniem
danych w wspczesnych systemach bazodanowych. Znajduj si w niej informacje o relacyjnym
i obiektowym modelu danych oraz najczciej stosowanych systemach zarzdzania bazami
danych.
3. Strona domowa SQL Server 2008, http://www.microsoft.com/sql/2008/default.mspx
Tutaj znajdziemy wszystkie podstawowe informacje na temat MS SQL Server 2008 oraz nowoci
z nim zwizane.


Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
Laboratorium podstawowe
Problem 1 (czas realizacji 45 min)
W firmie National Insurance trwa wanie sezon urlopowy. Jako jedyny obecny administrator baz
danych postanowie przetestowa implementacje
czci twojego semestralnego projektu zaliczeniowego. W
zaprojektowany przez koleg z zespou
SQL Server 2008 wraz z graficznym interfejsem
zadania.
Zadanie Tok postpowania
1. Utwrz baz
danych
Uruchom maszyn wirtualn

Kliknij
SQL Server Management
W oknie logowania kliknij
W oknie
Databases
W pole
Ustaw pocztkowe wielkoci plikw na
pliku dziennika transakcji
Kliknij przycisk
2. Ustaw opcje Kliknij prawym przyciskiem myszy
ski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 16/26
Laboratorium podstawowe
ealizacji 45 min)
W firmie National Insurance trwa wanie sezon urlopowy. Jako jedyny obecny administrator baz
postanowie przetestowa implementacje bazy danych Prace Dyplomowe
czci twojego semestralnego projektu zaliczeniowego. Wytyczne do bazy
zaprojektowany przez koleg z zespou diagram. Postanowie uy dostpnego systemu
SQL Server 2008 wraz z graficznym interfejsem SQL Server Management Studio do wykonania tego
Tok postpowania
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Jeli nie masz zdefiniowanej maszyny wirtualnej w
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
D:\VirtualPC\Dydaktyka\BD2008.vhd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008
SQL Server Management Studio.
W oknie logowania kliknij Connect.
W oknie Object Explorer kliknij prawym przyciskiem myszy folder
Databases i z menu kontekstowego wybierz New Database
W pole Database name wpisz nazw bazy danych
Ustaw pocztkowe wielkoci plikw na 4 MB dla pliku danych i
pliku dziennika transakcji.
Rys. 10 Tworzenie nowej bazy danych
Kliknij przycisk OK.
Kliknij prawym przyciskiem myszy baz danych
Modu 3
Instalacja i konfiguracja MS SQL Server 2008
W firmie National Insurance trwa wanie sezon urlopowy. Jako jedyny obecny administrator baz
Prace Dyplomowe, ktra jest
do bazy jasno okrela
diagram. Postanowie uy dostpnego systemu Microsoft
Management Studio do wykonania tego

li nie masz zdefiniowanej maszyny wirtualnej w Microsoft Virtual
dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
Microsoft SQL Server 2008 uruchom
kliknij prawym przyciskiem myszy folder
New Database.
wpisz nazw bazy danych PraceDyplomowe.
dla pliku danych i 1 MB dla

Tworzenie nowej bazy danych
danych PraceDyplomowe i z
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
bazy danych menu kontekstowego wybierz
W oknie
stronie opcj
Zmie ustawienie opcji
Kliknij przycisk
3. Dodaj tabele
do bazy danych
Kliknij prawym przyciskiem myszy pol
bazy
Kliknij opcj
Kliknij pol
Kliknij pol
Odznacz pole
kolumny wartoci
ski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 17/26
menu kontekstowego wybierz Properties.
W oknie Database Properties - PraceDyplomowe
stronie opcj Options.
Zmie ustawienie opcji Recovery model na Simple
Rys. 11 Ustawianie waciwoci bazy danych
Kliknij przycisk OK.
List opcji bazy danych znajdziesz w systemie pomocy
pod hasem database options (najszybciej znajdziesz ten fragment
pomocy uywajc indeksu dostpnego w Books Online)
W tym kroku dodamy wymagane tabele bazy danych i okrelimy ich
atrybuty. Zaczniemy od prostych tabel.
Kliknij prawym przyciskiem myszy pole Tables w rozwinitym drzewie
bazy PraceDyplomowe.
Kliknij opcj NewTable.
Kliknij pole Column name i wpisz nazw ID_TypStudiow
Kliknij pole Data Type i z listy rozwijanej wybierz smallint
Odznacz pole Allow null w celu zapobiegania wpisywania do tej
kolumny wartoci null.
Modu 3
Instalacja i konfiguracja MS SQL Server 2008
PraceDyplomowe kliknij po lewej
Simple.

tawianie waciwoci bazy danych
systemie pomocy Books Online
pod hasem database options (najszybciej znajdziesz ten fragment
pomocy uywajc indeksu dostpnego w Books Online).
W tym kroku dodamy wymagane tabele bazy danych i okrelimy ich
w rozwinitym drzewie
ID_TypStudiow.
smallint.
w celu zapobiegania wpisywania do tej
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 18/26

Rys. 12 Okrelanie nazwy i typu danych dla kolumny
Ustal nazw dla nowej tabeli klikajc ikon dyskietki z grnego paska
zada.
Wprowad nazw TypStudiow i kliknij przycisk OK.

Rys. 16 Tworzenie nowej tabeli
4. Ustal klucz
gwny dla tabeli
Kliknij prawym klawiszem nazw kolumny.
Kliknij opcj Set Primary Key.
Zapisz tabel klikajc ikon dyskietki.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
5. Uwrz
pozostae proste
tabele
Bazujc na poprzednim schemacie postpowania utwrz tabele
i
ID_SlowoKlucz
Jako rezultat powiniene zobaczy list trzech tabel w polu
PraceDyplomowe
6. Utwrz
gwne tabele
bazy
Kliknij prawym przyciskiem myszy pol
NewTable

ski, Przemysaw Kowalczuk, Konrad Markowski


Instalacja i konfiguracja MS SQL Server 2008
Strona 19/26
Rys. 17 Tworzenie klucza gwnego tabeli
Bazujc na poprzednim schemacie postpowania utwrz tabele
i SlowoKlucz zawierajce odpowiednio kolumny
ID_SlowoKlucz, obydwie z typem danych varchar(25)
Jako rezultat powiniene zobaczy list trzech tabel w polu
PraceDyplomowe.
Rys. 18 Pozostae proste tabele bazy PraceDyplomowe
Pora na utworzenie gwnej tabeli naszej bazy danych. Tabela
PracaDyplomowa jest punktem centralnym bazy i zawiera kolumny
ID_Pracy, Temat, Data, Ocena.
Kliknij prawym przyciskiem myszy pole Tables
NewTable.
Wprowad nazw dla nowej kolumny ID_Pracy
Ustal typ danych dla tej kolumny jako smallint.
Wprowad nazw dla nastpnej kolumny jako
Ustal typ danych jako varchar(100).
Wprowad nazw dla trzeciej kolumny jako Data
Jako typ danych ustal datetime.
Modu 3
Instalacja i konfiguracja MS SQL Server 2008

Tworzenie klucza gwnego tabeli
Bazujc na poprzednim schemacie postpowania utwrz tabele Stopien
zawierajce odpowiednio kolumny ID_Stopien i
archar(25).
Jako rezultat powiniene zobaczy list trzech tabel w polu Tables bazy

Pozostae proste tabele bazy PraceDyplomowe
Pora na utworzenie gwnej tabeli naszej bazy danych. Tabela
jest punktem centralnym bazy i zawiera kolumny
Tables i wybierz opcj
ID_Pracy.
.
Wprowad nazw dla nastpnej kolumny jako Temat.
Data.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych

Dla kadej kolumny odznacz opcj


Ustal klucz gwny klikajc prawym przyciski
ID_Pracy
Zapisz tabel pod nazw
Kliknij prawym przyciskiem myszy pol
Table

Dla kadej kolumny odznacz opcj


Ustal klucz gwny klikajc prawym przyciskiem myszy na kolumnie
ID_Osoby
Zapisz tabel pod nazw
ski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 20/26
Wprowad nazw dla ostatniej kolumny jako Ocena
Jako typ danych ustal smallint.
Dla kadej kolumny odznacz opcj Allow null.
Ustal klucz gwny klikajc prawym przyciski
ID_Pracy i wybierajc opcj Set Primary Key.
Zapisz tabel pod nazw PracaDyplomowa klikajc ikon dyskietki
Rys. 19 Gwna tabela bazy PraceDyplomowe
Nastpn du tabel jest tabela Osoba przechowujca informacje o
osobach wykonujcych prace dyplomowe oraz wykadowcach i
recenzentach
Kliknij prawym przyciskiem myszy pole Tables
Table.
Wprowad nazw dla nowej kolumny ID_Osoby
Ustal typ danych dla tej kolumny jako smallint.
Wprowad nazw dla nastpnej kolumny jako
Ustal typ danych jako varchar(50).
Wprowad nazw dla trzeciej kolumny jako Nazwisko
Jako typ danych ustal varchar(50).
Wprowad nazw dla ostatniej kolumny jako Nr_Indeksu
Jako typ danych ustal varchar(10).
Dla kadej kolumny odznacz opcj Allow null.
Ustal klucz gwny klikajc prawym przyciskiem myszy na kolumnie
ID_Osoby i wybierajc opcj Set Primary Key.
Zapisz tabel pod nazw Osoba klikajc ikon dyskietki
Rys. 13 Tabela Osoba
Modu 3
Instalacja i konfiguracja MS SQL Server 2008
Ocena.
Ustal klucz gwny klikajc prawym przyciskiem myszy kolumn
klikajc ikon dyskietki.

Gwna tabela bazy PraceDyplomowe
przechowujca informacje o
osobach wykonujcych prace dyplomowe oraz wykadowcach i
i wybierz opcj New
ID_Osoby.
.
Wprowad nazw dla nastpnej kolumny jako Imie.
Nazwisko.
Nr_Indeksu.
Ustal klucz gwny klikajc prawym przyciskiem myszy na kolumnie
klikajc ikon dyskietki.

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
7. Utwrz tabele
pomocnicze
Kliknij prawym przyciskiem myszy pol
Table

Dla kadej kolumny odznacz opcj


Zaznacz z wcinitym klawiszem
Ustal klucz gwny klikajc prawym przyciskiem myszy na zaznaczeniu i
wybierz opcj
Zapisz tabel pod nazw
8. Utwrz
pozostae tabele
pomocnicze
Bazujc na poprzednim schemacie postpowania utwrz tabele
i
ID_Pracy
Jako rezultat powiniene zobaczy list wszystkich tabel w polu
bazy
9. Utwrz
zwizki pomidzy
Kliknij prawym klawiszem myszy pol
PraceDyplomowe
ski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 21/26
Kliknij prawym przyciskiem myszy pole Tables
Table.
Wprowad nazw dla nowej kolumny ID_Osoby
Ustal typ danych dla tej kolumny jako smallint.
Wprowad nazw dla nastpnej kolumny jako
Ustal typ danych jako smallint.
Dla kadej kolumny odznacz opcj Allow null.
Poniewa dla tej tabeli unikalna bdzie zarwno jedna jak i druga
kolumna, klucz gwny moemy zaoy na obydwu jednoczenie
Zaznacz z wcinitym klawiszem Shift obydwie kolumny
Ustal klucz gwny klikajc prawym przyciskiem myszy na zaznaczeniu i
wybierz opcj Set Primary Key.
Zapisz tabel pod nazw Autorzy klikajc ikon dyskietki
Rys. 14 Tabela Autorzy z kluczem gwnym na dwch kolumnach
Bazujc na poprzednim schemacie postpowania utwrz tabele
i Recenzent, zawierajce odpowiednio kolumny
ID_Pracy oraz ID_Osoby, wszystkie z typem danych
Jako rezultat powiniene zobaczy list wszystkich tabel w polu
bazy PraceDyplomowe.
Rys. 15 Wszystkie tabele bazy PraceDyplomowe
Kliknij prawym klawiszem myszy pole Database Diagrams
PraceDyplomowe.
Modu 3
Instalacja i konfiguracja MS SQL Server 2008
i wybierz opcj New
ID_Osoby.
.
Wprowad nazw dla nastpnej kolumny jako ID_Pracy.
Poniewa dla tej tabeli unikalna bdzie zarwno jedna jak i druga
klucz gwny moemy zaoy na obydwu jednoczenie.
obydwie kolumny.
Ustal klucz gwny klikajc prawym przyciskiem myszy na zaznaczeniu i
klikajc ikon dyskietki.

Tabela Autorzy z kluczem gwnym na dwch kolumnach
Bazujc na poprzednim schemacie postpowania utwrz tabele Slownik
zawierajce odpowiednio kolumny ID_SlowoKlucz,
, wszystkie z typem danych smallint.
Jako rezultat powiniene zobaczy list wszystkich tabel w polu Tables

Wszystkie tabele bazy PraceDyplomowe
Database Diagrams bazy
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 22/26
tabelami Wybierz opcj New Database Diagram.
W nowym oknie dodaj wszystkie nazwy tabel klikajc przycisk Add.
Kliknij przycisk Close.
Kliknij i przecignij kursor myszki pomidzy pole ID_Osoby tabeli Osoba
a polem ID_Osoby tabeli Autorzy.

Rys. 16 Tworzenie zwizku pomidzy tabelami
W nowym oknie dotyczcym waciwoci zwizku kliknij przycisk OK.
Zostanie utworzony klucz obcy w tabeli Autorzy jako identyfikator
powizanej tabeli Osoba. Zatwierd klikajc przycisk OK.

Rys. 17 Tworzenie klucza obcego
Powtrz t operacj dla kadego zwizku pomidzy tabelami zgodnie z
diagramem bazodanowym. Jako rezultat powiniene otrzyma diagram
jak na rys. 18.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 23/26

Rys. 18 Tworzenie pozostaych kluczy obcych
10. Wykonaj kopi
zapasow bazy
Zamknij wszystkie okna z diagramem i definicjami tabel.
Kliknij prawym klawiszem myszy na pole PraceDyplomowe.
Z menu wybierz opcj Tasks -> Back Up.

Rys. 26 Uruchamienie procedury kopii bezpieczestwa
W nowym oknie moesz zmieni nazw pliku kopii bezpieczestwa i
jego domyln lokacj. Kliknij przycisk OK.
Po chwili powinien pojawi si komunikat o prawidowym zakoczeniu
tworzenia kopii bezpieczestwa.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 24/26

Rys. 27 Tworzenie kopii bezpieczestwa zakoczone sukcesem
Kliknij przycisk OK.
11. Odzyskaj baz
danych z kopii
bezpieczestwa
Za now baz danych o nazwie PraceDyplomowe_TMP.
Kliknij prawym przyciskiem myszki nazw nowej bazy danych.
Z menu wybierz opcj Tasks -> Restore -> Database.

Rys. 28 Odzyskiwanie bazy danych z kopii bezpieczestwa
W nowym oknie kliknij pole From device.
Kliknij ikon listy wyboru [].
Kliknij przycisk Add.
Wska lokacj pliku z kopi zapasow bazy danych.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
Kliknij przycisk
Kliknij pole
Zaznacz pole
Kliknij przycisk


ski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 25/26
Rys. 29 Wskazywanie pliku z kopi zapasow
Kliknij przycisk OK.
Kliknij pole Options z listy po lewej stronie.
Zaznacz pole Overwrite an existing database.
Kliknij przycisk OK.
Odzyskanie bazy danych PraceDyplomowe zakoczyo si sukcesem.
Moesz sprawdzi, czy nic po drodze nie zgino
struktur bazy w obszarze Object Explorer.

Modu 3
Instalacja i konfiguracja MS SQL Server 2008

Wskazywanie pliku z kopi zapasow
zakoczyo si sukcesem.
czy nic po drodze nie zgino, przegldajc
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 3
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 26/26
Laboratorium rozszerzone
Zadanie 1 (czas realizacji 90 min)
Zachcony sukcesem w utworzeniu bazy danych PraceDyplomowe postanowie j rozbudowa.
Przygldajc si uwanie diagramowi dostarczonemu wraz z dokumentacj bazy zauwaye, e
przy tworzeniu bazy umkna Ci tabela reprezentujca nonik. W bazie nie ma te jak dotd
adnych danych. Postanowie podj nastpujce kroki:
doda tabel z typem nonika pracy dyplomowej
rozbudowa baz o moliwo przechowywania informacji o wydziale i kierunku studenta
doda moliwo zaznaczenia liczby dostarczonych kopii pracy z podziaem na wersj
papierow i elektroniczn
doda moliwo umieszczenia przez recenzenta recenzji pracy i wasnej oceny
zastanawiasz si te, czy byaby moliwo automatycznego obliczania redniej z oceny z
recenzji, obrony i promotora pracy
zasili baz w odpowiedni ilo danych
Tak przygotowan baz naley skopiowa do bezpiecznej lokacji. Bazujc na opcjach dostpnych w
narzdziu Management Studio zastanw si, jak najprociej moesz zarzdza kopiami
bezpieczestwa.
ITA-101 Bazy Danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Modu 4
Wersja 1.0
Wewntrzna struktura bazy danych
Spis treci
Wewntrzna struktura ......................................................................................................................... 1
Informacje o module ............................................................................................................................ 2
Przygotowanie teoretyczne ................................................................................................................. 3
Przykadowy problem .................................................................................................................. 3
Podstawy teoretyczne.................................................................................................................. 3
Przykadowe rozwizanie ............................................................................................................. 8
Porady praktyczne ..................................................................................................................... 11
Uwagi dla studenta .................................................................................................................... 12
Dodatkowe rda informacji..................................................................................................... 12
Laboratorium podstawowe ................................................................................................................ 13
Problem 1 (czas realizacji 25 min) .............................................................................................. 13
Problem 2 (czas realizacji 20 min) .............................................................................................. 17
Laboratorium rozszerzone ................................................................................................................. 19
Zadanie 1 (czas realizacji 90 min) ............................................................................................... 19

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 4
ITA-101 Bazy danych Wewntrzna struktura
Strona 2/19
Informacje o module
Opis moduu
W tym module znajdziesz informacje, w jaki sposb w SQL Server 2008
przechowywane s dane, jak zbudowana jest strona danych, oraz w jaki
sposb przechowywane s podstawowe obiekty w bazie danych. Dowiesz
si rwnie w jaki sposb naley wyznacza wielko pliku danych.
Cel moduu
Celem moduu jest zapoznanie czytelnika z wewntrzn struktur
przechowywania danych w SQL Server 2008.
Uzyskane kompetencje
Po zrealizowaniu moduu bdziesz:
Wiedzia, w jaki sposb zbudowane s strony danych (nagwek
strony, wiersze danych, tablica przesuni wierszy)
potrafi bada zawarto stron danych uywamy instrukcji DBCC
PAGE, ktra umoliwia ogldanie nagwka strony, wierszy danych i
tablicy przesuni wierszy
wiedzia jak wyglda struktura wierszy danych
potrafi wywietli i przeanalizowa wiersze danych zapisane w
tabelach
Wymagania wstpne
Przed przystpieniem do pracy z tym moduem powiniene:
potrafi budowa diagram ERD (patrz: modu 1)
wiedzie, w jaki sposb tworzy si now baz danych
wiedzie, w jaki sposb tworzy si podstawowe obiekty bazy danych
Mapa zalenoci moduu
Zgodnie z map zalenoci przedstawion na rys. 1, przed przystpieniem
do realizacji tego moduu naley zapozna si z materiaem zawartym
w moduach 1 i 3.
Modu 4
Dodatek
Modu 1
Modu 2
Modu 3
Modu 5
Modu 6
Modu 7
Modu 8
Modu 9
Modu 10
Modu 11
Modu 12
Modu 13

Rys. 1 Mapa zalenoci moduu
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Przygotowanie teoretyczne
Przykadowy problem
Jak zapewne wiesz, z SQL Server 2008 mona korzysta w bardzo efektywny sposb nie majc
wiedzy na temat sposobu wewntrznej organizacji danych, jednak w wielu przypadkach dobrze jest
wiedzie, jak takie przechowywane dane s zorganizowane. Uatwia to zrozumienie wielu
mechanizmw funkcjonujcych w SQL Server 2008
Typowy problem pojawiajcy
danych, zbudowany diagram ERD, zdefiniowane relacje oraz przypisane atrybutom typy danych.
Nie zawsze jednak etap projektowania jest przeprowadzony we waciwy sposb.
sposb zorganizowane s dane moemy lepiej dobiera typy danych na atrybutach majc
wiadomo tego, gdzie fizycznie s one umieszczone. Moemy unikn pewnych bdw, na
przykad co do doboru wielkoci typu danych. Szczeglnie due znaczenie ma to w przypadku
obiektw typu OLE.
Kolejnym problemem pojawiajcym si w tym zagadnieniu jest prba odpowiedzenia sobie na
pytanie, jaka powinna by pocztkowa wielko pliku danych i dziennika transakcji w momencie,
kiedy wiemy, ile danych ma zosta wpisanych do naszej bazy. Na podstawie t
kolejnoci moemy ustawi, o ile pliki danych i dziennika transakcji maj wzrosn.
Z punktu widzenia administracji baz danych s to bardzo wane problemy, ktre moemy
rozwiza dziki znajomoci budowy wewntrznej struktury w SQL Server
Podstawy teoretyczne
Chocia z SQL Server mona korzysta efektownie bez znajomoci wewntrznej budowy,
zrozumienie szczegw przechowywania danych pomaga w pisaniu wydajnych aplikacji.
Gdy tworzy si tabelk, do wielu katalogw systemowych wstawia
niezbdnymi do jej obsugi. Wiersze s dodawane do katalogw systemowych
sysindexes i syscolumns
Dla kadej nowo utworzonej tabeli do widoku
nazw, identyfikator obiektu
kadej kolumny z nowej tabeli informacje zawierajce nazw kolumny, typ danych i dugo. Kada
z kolumn otrzymuje unikatowy identyfikator, ktry wyznacza kolejno, w jakiej zostay kolumny
zdefiniowane w tabeli.
Na rys. 2 pokazano wiersze, ktre dodawane s do widoku
tworzenia tabeli Ksiazka.
Rys.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski

Strona 3/19
Przygotowanie teoretyczne
Jak zapewne wiesz, z SQL Server 2008 mona korzysta w bardzo efektywny sposb nie majc
wiedzy na temat sposobu wewntrznej organizacji danych, jednak w wielu przypadkach dobrze jest
wiedzie, jak takie przechowywane dane s zorganizowane. Uatwia to zrozumienie wielu
mechanizmw funkcjonujcych w SQL Server 2008.
Typowy problem pojawiajcy si w tym zagadnieniu jest nastpujcy. Mamy zaprojektowan baz
danych, zbudowany diagram ERD, zdefiniowane relacje oraz przypisane atrybutom typy danych.
Nie zawsze jednak etap projektowania jest przeprowadzony we waciwy sposb.
organizowane s dane moemy lepiej dobiera typy danych na atrybutach majc
wiadomo tego, gdzie fizycznie s one umieszczone. Moemy unikn pewnych bdw, na
przykad co do doboru wielkoci typu danych. Szczeglnie due znaczenie ma to w przypadku
Kolejnym problemem pojawiajcym si w tym zagadnieniu jest prba odpowiedzenia sobie na
pytanie, jaka powinna by pocztkowa wielko pliku danych i dziennika transakcji w momencie,
kiedy wiemy, ile danych ma zosta wpisanych do naszej bazy. Na podstawie t
kolejnoci moemy ustawi, o ile pliki danych i dziennika transakcji maj wzrosn.
Z punktu widzenia administracji baz danych s to bardzo wane problemy, ktre moemy
rozwiza dziki znajomoci budowy wewntrznej struktury w SQL Server 2008.
QL Server mona korzysta efektownie bez znajomoci wewntrznej budowy,
zrozumienie szczegw przechowywania danych pomaga w pisaniu wydajnych aplikacji.
Gdy tworzy si tabelk, do wielu katalogw systemowych wstawiane s rekordy z informacjami
niezbdnymi do jej obsugi. Wiersze s dodawane do katalogw systemowych
syscolumns.
Dla kadej nowo utworzonej tabeli do widoku sysobjects dodawany jest wiersz zawierajcy
nazw, identyfikator obiektu oraz waciciela nowej tabeli. Widok syscolumns
kadej kolumny z nowej tabeli informacje zawierajce nazw kolumny, typ danych i dugo. Kada
z kolumn otrzymuje unikatowy identyfikator, ktry wyznacza kolejno, w jakiej zostay kolumny
pokazano wiersze, ktre dodawane s do widoku sysobjects

Rys. 2 Informacje katalogowe zapisane po utworzeniu tabeli
Modu 4
Wewntrzna struktura
Jak zapewne wiesz, z SQL Server 2008 mona korzysta w bardzo efektywny sposb nie majc
wiedzy na temat sposobu wewntrznej organizacji danych, jednak w wielu przypadkach dobrze jest
wiedzie, jak takie przechowywane dane s zorganizowane. Uatwia to zrozumienie wielu
si w tym zagadnieniu jest nastpujcy. Mamy zaprojektowan baz
danych, zbudowany diagram ERD, zdefiniowane relacje oraz przypisane atrybutom typy danych.
Nie zawsze jednak etap projektowania jest przeprowadzony we waciwy sposb. Wiedzc w jaki
organizowane s dane moemy lepiej dobiera typy danych na atrybutach majc
wiadomo tego, gdzie fizycznie s one umieszczone. Moemy unikn pewnych bdw, na
przykad co do doboru wielkoci typu danych. Szczeglnie due znaczenie ma to w przypadku
Kolejnym problemem pojawiajcym si w tym zagadnieniu jest prba odpowiedzenia sobie na
pytanie, jaka powinna by pocztkowa wielko pliku danych i dziennika transakcji w momencie,
kiedy wiemy, ile danych ma zosta wpisanych do naszej bazy. Na podstawie tej informacji w
kolejnoci moemy ustawi, o ile pliki danych i dziennika transakcji maj wzrosn.
Z punktu widzenia administracji baz danych s to bardzo wane problemy, ktre moemy
2008.
QL Server mona korzysta efektownie bez znajomoci wewntrznej budowy,
zrozumienie szczegw przechowywania danych pomaga w pisaniu wydajnych aplikacji.
ne s rekordy z informacjami
niezbdnymi do jej obsugi. Wiersze s dodawane do katalogw systemowych sysobjects,
dodawany jest wiersz zawierajcy
syscolumns otrzymuje dla
kadej kolumny z nowej tabeli informacje zawierajce nazw kolumny, typ danych i dugo. Kada
z kolumn otrzymuje unikatowy identyfikator, ktry wyznacza kolejno, w jakiej zostay kolumny
sysobjects i columns podczas


Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 4
ITA-101 Bazy danych Wewntrzna struktura
Strona 4/19
Strony danych
Strony danych s strukturami zawierajcymi wszystkie dane (z wyjtkiem text i image), ktrych
stay rozmiar wynosi 8 KB (8192 bajtw). Skadaj si one z trzech elementw (rys. 3): nagwka
strony, wierszy danych i tablicy przesuni wierszy.

Rys. 3 Struktura strony danych
Nagwek strony
Nagwek strony danych zawiera pierwszych 96 bajtw strony danych. Informacje zawarte w
nagwku pokazano w tab. 1.
Tab. 1 Informacje zawarte w nagwku strony
Pole Zawarto
m_poleID Numer pliku i numer strony bazy danych.
m_nextPage Numer pliku i nazwa nastpnej strony. Parametr wywietlany jeeli
bieca strona naley do acucha stron.
m_prev_Page Numer pliku i nazwa poprzedniej strony. Parametr wywietlany jeeli
bieca strona naley do acucha stron.
m_objID Identyfikator obiektu, do ktrego naley bieca strona.
m_lsn Numer LSN uywany do modyfikowania tej strony.
m_slotCnt czna liczba wierszy tej strony.
m_level Poziom strony w indeksie. Dla stron lici warto zawsze rwna 1.
IndexId Identyfikator indeksu strony. Dla stron danych zawsze warto rwna 1.
m_freeData Przesunicie bajtowe pierwszego wolnego obszaru na tej stronie.
pminlen Liczba bajtw czci wiersza zawierajcej pola o staej dugoci.
m_freeCnt Liczba niewykorzystanych bajtw na stronie.
m_reservedCnt Liczba bajtw zarezerwowanych przez wszystkie transakcje.
m_xactReserved Liczba bajtw zarezerwowanych przez ostatnio uruchomiona transakcje.
m_flagBits 2-bajtowy cig bitw zawierajcy dodatkowe informacje o stronie.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 4
ITA-101 Bazy danych Wewntrzna struktura
Strona 5/19
Wiersze danych
Za nagwkiem znajduje si obszar, w ktrym przechowywane s dane tabeli. Maksymalny rozmiar
pojedynczego wiersza danych wynosi 8060 bajtw. Wiersz danych nie moe obejmowa kilku stron.
Wyjtek stanowi kolumny, ktrym przypisano typ image lub text. Naley zauway, i liczba
wierszy moe si rni w zalenoci od struktury tabeli oraz przechowywanych danych. Tabele,
ktre posiadaj kolumny o staej dugoci bd zawieray na kadej stronie tak sam liczb wierszy
danych, natomiast tabele zawierajce kolumny o rnych dugociach bd zawieray na kadej
stronie rn liczb wierszy danych.
Tablica przesuni wierszy
Tablica przesuni wierszy jest blokiem 2-bajtowych wpisw, z ktrych kady stanowi przesunicie
na stronie, od ktrego zaczynaj si waciwe dane wiersza. Naley pamita o tym, e bajty te nie
s zapisywane w wierszu razem z danymi. Wpywaj one jednak na liczb wierszy mieszczcych si
na stronie.
Badanie stron danych
Do badania zawartoci stron danych uywamy instrukcji DBCC PAGE, ktra umoliwia ogldanie
nagwka strony, wierszy danych i tablicy przesuni wierszy dla kadej strony bazy danych.
Polecenia tego moe uywa tylko administrator systemu. Skadni polecenia DBCC PAGE
pokazano poniej:
DBCC PAGE ({id_bazy | nazwa_bazy}, numer_pliku, numer_strony[, opcje])
W tab. 2 zostay opisane podstawowe parametry instrukcji DBCC PAGE.
Tab. 2 Parametry polecenia DBCC PAGE
Parametr Opis
id_bazy Identyfikator bazy danych.
nazwa_bazy Nazwa bazy danych.
numer_pliku Numer pliku zawierajcego stron
numer_strony Numer strony w obrbie pliku.
opcje Parametr ustawiany opcjonalnie przyjmuje nastpujce
wartoci:
0 domylnie. Zwraca informacje o nagwku bufora i
nagwku strony.
1 zwraca informacje o nagwku bufora, nagwku
strony, kadym wierszu (osobno) oraz tablic przesuni
wierszy.
2 zwraca informacje o nagwku bufora, nagwku
strony, zawarto caej strony oraz tablic przesuni
wierszy.
3 zwraca informacje o nagwku bufora, nagwku
strony, kadym wierszu (osobno) oraz tablic przesuni
wierszy, a po kadym wierszu list poszczeglnych
wartoci kolumn.

Przykadowy wynik dziaania instrukcji DBCC PAGE pokazano na rys. 4.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 4
ITA-101 Bazy danych Wewntrzna struktura
Strona 6/19


Rys. 4 Przykadowy wydruk instrukcji DBCC PAGE
Wydruk instrukcji DBCC PAGE skada si z czterech sekcji:
1. BUFFER przedstawia informacje o buforze danej strony.
2. PAGE HEADER pokazuje dane dla pl nagwka strony.
3. DATA zawiera informacje o kadym wierszu tabeli. Dane strony dzielone s na trzy czci.
Cz pierwsza (lewa kolumna) okrela pooenie bajtowe w obrbie wiersza, cz druga
(rodkowe cztery kolumny) zawiera waciwe dane zapisane na stronie, za cz trzecia
(prawa kolumna) zawiera znakow reprezentacje danych.
4. OFFSET TABLE pokazuje zawarto tablicy przesuni wierszy, ktra znajduje si na kocu
strony. Pierwszy wiersz fizycznie znajdujcy si na stronie jest wierszem numer 6, z
przesuniciem w tablicy przesuni rwnym 96.
Struktura wiersza danych
Na rys. 5 pokazano ogln struktur wierszy danych. Na pierwszym miejscu znajduj si dane
kolumn o staej dugoci. Za nimi znajduj si dane wszystkich kolumn o zmiennej dugoci.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 4
ITA-101 Bazy danych Wewntrzna struktura
Strona 7/19

Rys. 5 Struktura wierszy danych
W kadym bloku o staej dugoci lub danych o zmiennej dugoci dane s przechowywane w
kolejnoci w jakiej kolumny zostay zdefiniowane przy tworzeniu tabeli. Przyjrzyjmy si poniszemu
przykadowi:
CREATE TABLE Proba
{
Kolumna_1 int NOT NULL,
Kolumna_2 char(25) NOT NULL,
Kolumna_3 varchar(60) NULL,
Kolumna_4 int NOT NULL,
Kolumna_5 varchar(20) NOT NULL
}
W powyszym przykadzie w czci zwizanej z danymi o staej dugoci wiersze bd zawieray
najpierw dane kolumny Kolumna_1 nastpnie Kolumna_2 i wreszcie Kolumna_4. W nastpnej
kolejnoci bd wystpoway dane o zmiennej dugoci zwizane odpowiednio z Kolumn_3 i
Kolumna_5.
Tablice przesuni kolumn
Wiersz danych, ktry ma kolumny o staej dugoci, nie zawiera licznika zmiennych kolumn ani
tablicy przesuni kolumn. Wiersz danych, w ktrym znajduj si kolumny o zmiennej dugoci,
zawiera tablic przesuni kolumn.
Poczenia stron
W SQL Server 2008 strony czone s ze sob na kadym poziomie indeksu. Jedynym sposobem, w
jaki SQL Server okrela, ktre strony nale so tabeli, jest zagldanie do stron IAM tabeli.
Poleceniem DBCC EXTENTINFO mona uzyska list wszystkich obszarw nalecych do obiektu.
W poniszym przykadzie pokazano list wszystkich obszarw nalecych do obiektu Orders w
bazie danych Northwind.
Osiem pierwszych wierszy wskazuje rozmiar obszaru (ext_size) rwny 1. Wynika to z tego, e
pierwszych osiem stron w tabeli alokowanych jest z obszarw mieszanych. Gdy tabela osignie
osiem stron, wwczas SQL Server przydziela jej obszary jednolite po osiem stron kady.

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 4
ITA-101 Bazy danych Wewntrzna struktura
Strona 8/19

Rys. 6 Wydruk wszystkich obszarw nalecych do obiektu
Rozmiar danych
Znajc struktur tabel oraz typy danych kolumn w bazie danych, moemy oszacowa rozmiar pliku
danych.
Procedura szacowania rozmiaru pliku danych przebiega wedug nastpujcego schematu:
1. Na podstawie tabeli okrelamy rozmiar pojedynczego wiersza. Dla typw danych o staym
rozmiarze dodajemy liczb bajtw poszczeglnych kolumn, za dla typw o zmiennym
rozmiarze przyjmujemy warto redni.
2. Nastpnie maksymaln liczb bajtw na pojedynczej stronie danych (8060) dzielimy przez
szacunkow wielko wiersza. W wyniku otrzymujemy liczb wierszy mieszczcych si na
stronie.
3. Nastpnie szacunkow liczb wierszy dzielimy przez otrzyman liczb wierszy na stronie. W
ten sposb otrzymujemy liczb stron niezbdnych do zapisania danych znajdujcych si w
tabeli.
4. W kolejnym kroku otrzyman liczb stron mnoymy przez 8196 B (rozmiar pojedynczej
strony), co daje nam w wyniku wielko pliku danych.
Przykadowe rozwizanie
Wywietlanie wierszy danych
Zanim bdziesz mg wywietli wiersze danych w twojej tabeli w bazie danych bdziesz musia
odpowiednio zgromadzi informacje na temat numeru pliku i numeru strony na ktrej interesujce
Ci dane s zawarte. Wyobramy sobie, e stworzylimy tabel Ksiazka o postaci:.
CREATE TABLE [dbo].[Ksiazka]
(
[ID_Ksiazka] [int] IDENTITY(1,1) NOT NULL,
[Tytul] [varchar](50) NULL,
[Autor] [varchar](30) NULL,
[Rok] [char](4) NULL
)
Do nowo powstaej tabeli Ksiazka wpisujemy trzy dowolne rekordy.
Podczas tworzenia tabeli Ksiazka do widoku systemowego:
sysindexes wstawiany jest nowy wiersz, przechowujcy informacj o nowym obiekcie
(tabela Ksiazka), ktry przed chwil zosta stworzony, co moemy zaobserwowa na rys. 7.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
syscolumns wstawiane s
atrybutw, z ktrych zoona jest tabela
W celu poprawnego uruchomienia
widoku sysindexes (0x9D0000000100
na rys. 7). W pierwszym kroku naley zamieni bajty, aby uzyska cig
Pierwsze dwie grupy (00 01
00 9D) numer strony. Zatem plik ma numer 1, a strona ma numer 157.
Na rys. 9 pokazano faktyczn zawarto wierszy
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski

Strona 9/19

Rys. 7 Wstawiony wiersz do tabeli sysindexes
wstawiane s wiersze, przechowujce informacj na temat poszczeglnych
atrybutw, z ktrych zoona jest tabela Ksiazka, co moemy zaobserwowa
Rys. 8 Wstawione wiersze do tabeli syscolumns
W celu poprawnego uruchomienia polecenia DBCC PAGE naley pobra odpowiedni warto z
0x9D0000000100) i przeksztaci j na adres pliku
). W pierwszym kroku naley zamieni bajty, aby uzyska cig 00 01 00 00 00 9D
00 01) reprezentuj 2-bajtowy numer pliku, a ostatn
numer strony. Zatem plik ma numer 1, a strona ma numer 157.
pokazano faktyczn zawarto wierszy tabeli Ksiazki z bazy danych
Rys. 9 Wiersze danych tabeli Ksiazki
Modu 4
Wewntrzna struktura
przechowujce informacj na temat poszczeglnych
co moemy zaobserwowa na rys. 8.

naley pobra odpowiedni warto z
strony (kolumna first
00 01 00 00 00 9D.
bajtowy numer pliku, a ostatnie cztery grupy (00 00
azy danych Biblioteka.

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 4
ITA-101 Bazy danych Wewntrzna struktura
Strona 10/19
Polecenie DBCC PAGE wywietla wiersze danych w czterech grupach po 4 bajty naraz. W obrbie
kadej z grup bajty wywietlane s w odwrotnej kolejnoci.
Szacowanie wielkoci pliku danych
W przykadzie tym posuymy si wczeniej stworzona tabel Ksiazki oraz stworzymy now
tabel Czytelnicy oraz tabel techniczna Ksiazki_Czytelnicy. Dla tej tabeli okrelimy
wielko pliku danych.
1. Okrelamy rozmiar pojedynczego wiersza w tabeli Ksiazki, Czytelnicy oraz
Ksiazki_Czytelnicy.

Tabela Ksiazki
Kolumna Typ Rozmiar
ID_Ksiazka int 4 bajty
Tytul varchar(200) 200 bajtw
Autor varchar(50) 50 bajtw
Rok char(4) 4 bajty
ID_Czytelnik int 4 bajty
Suma 262 bajtw
Tabela Czytelnicy
Kolumna Typ Rozmiar
ID_Czytelnik int 4 bajty
Nazwisko varchar(50) 50 bajtw
Imie varchar(30) 30 bajtw
Data_urodzenia smalldatatime 4 bajty
ID_Ksiazka int 4 bajty
Suma 92 bajtw
Tabela Ksiazki_Czytelnicy
Kolumna Typ Rozmiar
ID_Ksiazka int 4 bajty
ID_Czytelnik int 4 bajty
Suma 8 bajtw

2. Wyznaczamy liczb wierszy mieszczcych si na stronie. W naszym przypadku mamy:
Ksiazki = 8060 / 262 B = 31 wierszy na stronie
Czytelnicy = 8060 / 92 B = 88 wierszy na stronie
Ksiazki_Czytelnicy = 8060 / 8 B = 1008 wierszy na stronie
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 4
ITA-101 Bazy danych Wewntrzna struktura
Strona 11/19
3. Przy zaoeniu, e w tabeli Ksiazki bdzie znajdowao si 5000 rekordw, w tabeli
Czytelnicy 2000 rekordw a w tabeli Ksiazki_Czytelnicy 22000 rekordw,
wyznaczamy liczb stron niezbdnych do zapisania danych znajdujcych si w tabeli.
Ksiazka = 5000 rekordw / 31 wiersze = 162 strony
Czytelnicy = 2000 rekordw / 88 wierszy = 23 strony
Ksiazki_Czytelnicy = 22000 rekordw / 1008 wierszy = 22 strony
4. Sumujemy liczb wszystkich stron
162 strony + 23 strony + 22 strony = 207 stron
5. Obliczamy wielko pliku danych.
8196 B * 207 stron = 1696572 B= 1,7 MB
Porady praktyczne
Widok systemowy sysindex zawiera dwie wane kolumny, ktre reprezentuj numery
stron w obrbie bazy danych: id i first. Kolumna id przechowuje numer identyfikacyjny
bazy danych. Kolumna first przechowuje warto, powyej ktrej znajduj si fizycznie
wpisane rekordy (numer strony danych) oraz numer pliku danych.
W sytuacji, kiedy tabela przechowuje dane typu OLE (text, ntext lub image), rzeczywiste
dane mog nie by przechowywane na stronach razem z reszt danych wiersza. Wynika to z
faktu, i dane tego typu zajmuj duo przestrzeni dyskowej a zatem ich fragmenty mog by
przechowywane w rnych plikach oraz na rnych stronach danych.
Z racji tego, i obiekty typu OLE zajmuj duo przestrzeni dyskowej pamitaj, e naley
podczas wyboru tego typu danych kilkakrotnie zastanowi si czy jest to niezbdny typ
danych i czy nie mona zastpi go innym lejszym typem.
W celu poprawnego uruchomienia polecenia DBCC PAGE, naley prawidowo pobra
odpowiednia warto z widoku systemowego sysindexes i przeksztaci j na adres pliku i
strony.
Pamitaj, e z widoku sysindexes pobieramy zawarto kolumny first w postaci
heksadecymalnej. W pierwszym kroku naley zawsze zamieni bajty. Uzyskana warto
skada si z dwch czci: numeru pliku (pierwsze dwie grupy) oraz numeru strony (ostatnie
cztery grupy).
Widoki systemowe sysindexes i syscolumns przechowuj wiele rnorodnych informacji
na temat obiektw w ramach bazy danych (data utworzenia, data modyfikacji, itp.)
przydatnych w skutecznych i sprawnych pracach administracyjnych.
Pamitaj, w wielu sytuacjach szacowanie wielkoci pliku danych i pliku dziennika transakcji
jest rzecz bardzo wan z punktu widzenia administracji serwerem bazodanowym. Ma to
szczeglne znaczenie w przypadku przenoszenia bazy danych z innego systemu zarzdzania
baz danych, gdzie znana jest liczba rekordw w poszczeglnych obiektach bazy danych.
W przypadku, obliczenia wielkoci pliku danych wychodzi warto niecakowita (patrz
przykadowe obliczenie wielkoci pliku danych), np. 5.48MB, wwczas w celu zapewnienia
odpowiedniej przestrzeni na importowane dane naley ustawi wielko pocztkow pliku
danych na 6.0MB. Microsoft SQL Server 2008 nie daje moliwoci stworzenia bazy danych z
plikiem danych wielkoci niecakowitej.
Pamitaj, w systemowej bazie danych tempdb dostarczonej z serwerem Microsoft SQL
Server 2008, ustawione s parametry wyjciowe Twojej bazy danych. Jeeli zmienisz
cokolwiek w tej bazie danych wszystkie bazy tworzone w ramach serwera bd pobieray jej
wartoci pocztkowe.
Pamitaj nigdy nie kasuj baz danych dostarczonych wraz z Microsoft SQL Server 2008.
Operacja ta moe doprowadzi do niestabilnej pracy serwera a w niektrych sytuacjach
wrcz do jego powanego uszkodzenia.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 4
ITA-101 Bazy danych Wewntrzna struktura
Strona 12/19
Pamitaj w opcji SQL Server 2008 przy tworzeniu bazy danych mamy moliwo ustawienia
wielkoci pliku danych oraz wielkoci wzrostu pliku danych. Wielkoci te s liczbami
cakowitymi z dokadnoci do 1 MB. Dobr praktyk jest ustawienie parametru wzrostu
pliku danych jako 30% wartoci pliku danych (jednak nie mniej ni 1MB). Przykadowo dla
pliku danych wielkoci 10MB powinnimy ustawi wielko wzrostu pliku danych na poziomie
3MB.
Uwagi dla studenta
Jeste przygotowany do realizacji laboratorium jeli:
rozumiesz, co oznacza strona danych, nagwek strony, wiersze danych, tablica przesuni
wierszy
rozumiesz skadni instrukcji DBCC
umiesz przelicza system heksadecymalny na system dziesitny
znasz podstawowe typy danych w SQL Server 2008
umiesz oblicza wielko pliku danych
Pamitaj o zapoznaniu si z uwagami i poradami zawartymi w tym module. Upewnij si, e
rozumiesz omawiane w nich zagadnienia. Jeli masz trudnoci ze zrozumieniem tematu zawartego
w uwagach, przeczytaj ponownie informacje z tego rozdziau i zajrzyj do notatek z wykadw.
Dodatkowe rda informacji
1. Jeffrey D. Ullman, Jennifer Widom, Podstawowy wykad z systemw baz danych, WNT, 2000
W ksice autor w przystpny i zrozumiay sposb przedstawia midzy innymi jak
zorganizowane jest przechowywanie danych oraz pokazuje, w jaki sposb mona
odczyta strony danych.
2. Christopher J. Date, Wprowadzenie do systemw baz danych, WNT, 2000
W ksice tej znajdziemy duo szczegowych informacji na temat teorii
przechowywania danych w bazach danych. Znajdzie cie w niej rwnie szczegow
informacj na temat polecenia DBCC, wraz z wieloma wariantami jego uycia w celu
przegldania danych na bardzo niskim poziomie. Pozycja szczeglnie polecana dla
osb pragncych poszerzenie swojej wiedzy z tej tematyki.
3. Ramez Elmasri, Shamkant B. Navathe, Wprowadzenie do systemw baz danych, Wydawnictwo
Helion, 2005
Podobnie jak w poprzedniej pozycji, w ksice tej znajdziemy bardzo szczegowe
informacje na temat teorii przechowywania danych w bazach danych. Pozycja
szczeglnie polecana dla osb pragncych poszerzy swoj wiedz z tej tematyki.

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Laboratorium podstawowe
Problem 1 (czas realizacji 25 min)
Jeste administratorem w firmie National
dostpow do twojej bazy danych poprosili Ci jako eksperta o zaprezentowanie sposobu
przechowywania danych w SQL Server 2008. Ma to im pomc w zrozumienia sposobu
przechowywania danych i ulepszeniu niskopozi

Zadanie Tok postpowania
1. Utwrz
testow baz i
tabel
Uruchom maszyn wirtualn

Kliknij
SQL Server Management Studio
W oknie logowania kliknij

2. Utwrz baz Wykonaj poniszy kod tworzcy baz danych
--
USE master
GO

--
--
IF EXISTS (SELECT *



GO
--
CREATE DATABASE Dyplomowe
ON
( NAME = 'Dyplomowe', FILENAME = N'C:
Server
3072KB , MAXSIZE =
LOG ON
( NAME = 'Dyplomowe_log', FILENAME = N'C:
SQL Server
1536KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
Stwrz dwie tabele
--
CREATE TABLE Osoba(




Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski

Strona 13/19
Laboratorium podstawowe
Problem 1 (czas realizacji 25 min)
Jeste administratorem w firmie National Insurance. Programici modernizujcy aplikacje
dostpow do twojej bazy danych poprosili Ci jako eksperta o zaprezentowanie sposobu
przechowywania danych w SQL Server 2008. Ma to im pomc w zrozumienia sposobu
przechowywania danych i ulepszeniu niskopoziomowego dziaania aplikacji.
Tok postpowania
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Jeli nie masz zdefiniowanej maszyny wirtualnej w
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
D:\VirtualPC\Dydaktyka\BD2008.vhd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008
SQL Server Management Studio.
W oknie logowania kliknij Connect.
Wykonaj poniszy kod tworzcy baz danych Dyplomowe
-- (1) Ustawiamy sie na baze danych master
USE master
GO
-- (2) sprawdzmy, czy taka baza juz istnieje;
-- jesli tak, to usuwamy ja
IF EXISTS (SELECT *
FROM master..sysdatabases
WHERE name = 'Dyplomowe')
DROP DATABASE Dyplomowe
GO
-- (3) Tworzymy baze danych Dyplomowe
CREATE DATABASE Dyplomowe
ON
( NAME = 'Dyplomowe', FILENAME = N'C:\Program Files
Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Dyplomowe.mdf' , SIZE =
3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = 'Dyplomowe_log', FILENAME = N'C:\Program Files
SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Dyplomowe.ldf' , SIZE =
1536KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
Stwrz dwie tabele: Osoba i Praca. W tym celu wykonaj poniszy kod
-- (3) Tworzenie przykladowych dwoch tabel: Osoba i Praca
CREATE TABLE Osoba(
ID_Osoby smallint NOT NULL,
Imie varchar(20) NOT NULL,
Nazwisko varchar(50) NOT NULL,
Nr_Indeksu varchar(6) NOT NULL
Modu 4
Wewntrzna struktura
Insurance. Programici modernizujcy aplikacje
dostpow do twojej bazy danych poprosili Ci jako eksperta o zaprezentowanie sposobu
przechowywania danych w SQL Server 2008. Ma to im pomc w zrozumienia sposobu
omowego dziaania aplikacji.

Jeli nie masz zdefiniowanej maszyny wirtualnej w Microsoft Virtual
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
Microsoft SQL Server 2008 uruchom
Dyplomowe:
(2) sprawdzmy, czy taka baza juz istnieje;
Program Files\Microsoft SQL
Dyplomowe.mdf' , SIZE =
UNLIMITED, FILEGROWTH = 1024KB )
Program Files\Microsoft
Dyplomowe.ldf' , SIZE =
1536KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
ykonaj poniszy kod:
(3) Tworzenie przykladowych dwoch tabel: Osoba i Praca
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych




)
CREATE TABLE Praca(








)
Uzupenij tabele
3. Sprawd
zawarto
widokw
systemowych
Z menu gwnego wybierz
Odszukaj plik
Na utworzonej bazie danych
--
USE Dyplomowe
GO
--
SELECT name, object_id, type,



GO
W wyniku powiniene otrzyma informacj na temat wpisu w widoku
systemowym
Wykonaj zapytanie:
--
SELECT object_id, name, column_id,



GO
W wyniku
systemowym
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski

Strona 14/19
CONSTRAINT [PK_Osoba] PRIMARY KEY CLUSTERED
(
[ID_Osoby] ASC
)

CREATE TABLE Praca(
ID_Pracy smallint NOT NULL,
Temay varchar(200) NOT NULL,
Data smalldatetime NOT NULL,
Ocena smallint NOT NULL
CONSTRAINT [PK_Praca] PRIMARY KEY CLUSTERED
(
[ID_Pracy] ASC
)

Uzupenij tabele Osoba i Praca przykadowymi danymi.
Z menu gwnego wybierz File -> Open -> File.
Odszukaj plik C:\widoki_systemowe.sql i kliknij Open
Na utworzonej bazie danych Dyplomowe wykonaj ponisze zapytanie
-- (1) Ustaw si n abaze danych Dyplomowe
USE Dyplomowe
GO
-- (2) Informacja o wpisie w widoku sysobjects
ELECT name, object_id, type,
type_desc, create_date, modify_date
FROM [Dyplomowe].[sys].[objects]
WHERE name='Osoba' OR name='Praca'
GO
W wyniku powiniene otrzyma informacj na temat wpisu w widoku
systemowym sysobjects.
Rys. 10 Wpis w widoku systemowym sysobjects
W wyniku wykonania zapytania na tabeli
otrzymasz midzy innymi informacj o numerze identyfikacyjnym
obiektu tabeli object_id. Numer ten bdzie Ci pomocny w wyszukaniu
odpowiedniego wpisu w widoku systemowym syscolumns
Wykonaj zapytanie:
-- (3) informacja na temat wpisu w widoku systemowym sy
SELECT object_id, name, column_id,
system_type_id, max_length, collation_name
FROM [Dyplomowe].[sys].[columns]
where object_id='85575343' OR object_id='117575457'
GO
W wyniku powiniene otrzyma informacj na temat wpisu w widoku
systemowym syscolumns.
Modu 4
Wewntrzna struktura
CONSTRAINT [PK_Osoba] PRIMARY KEY CLUSTERED
CONSTRAINT [PK_Praca] PRIMARY KEY CLUSTERED
przykadowymi danymi.
Open.
wykonaj ponisze zapytanie:
Informacja o wpisie w widoku sysobjects
W wyniku powiniene otrzyma informacj na temat wpisu w widoku

Wpis w widoku systemowym sysobjects
W wyniku wykonania zapytania na tabeli systemowej sysobject
otrzymasz midzy innymi informacj o numerze identyfikacyjnym
. Numer ten bdzie Ci pomocny w wyszukaniu
syscolumns.
(3) informacja na temat wpisu w widoku systemowym syscolumns
system_type_id, max_length, collation_name
where object_id='85575343' OR object_id='117575457'
powiniene otrzyma informacj na temat wpisu w widoku
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Wykonaj zapytanie:
--
SELECT id, first, root, minlen, name, rows
FROM [Dyplomowe].[sys].[sysindexes]
WHERE
GO
W wyniku powiniene otrzyma informacj na temat wpisu w widoku
systemowym
4. Zbadaj strony
danych
Dla tabeli
(0x9B0000000100
Zamie bajty, aby uzyska cig
Pierwsze dwie grupy (
ostatnie cztery grupy (
1
Z menu gwnego wybierz
Odszukaj plik
Wywoaj instrukcj
DBCC TRACEON(3604)
GO
DBCC PAGE (Dyplomowe,1,155,1)
W wyniku powiniene otrzyma
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski

Strona 15/19
Rys. 11 Wpis w widoku systemowym syscolumns
Wykonaj zapytanie:
-- (4) Informacja na temat wpisu w widoku systemowym sysindexes
SELECT id, first, root, minlen, name, rows
FROM [Dyplomowe].[sys].[sysindexes]
WHERE name='PK_Osoba' OR name='PK_Praca'
GO
W wyniku powiniene otrzyma informacj na temat wpisu w widoku
systemowym sysindexes.
Rys. 12 Wpis w widoku systemowym sysindexes
Informacja z kolumny first w widoku systemowym
na temat numeru pliku oraz numeru strony, na ktrej przechowywane
s dane z tabeli.
Dla tabeli Osoba odczytaj warto kolumny first
0x9B0000000100) i przekszta j na adres pliku strony
Zamie bajty, aby uzyska cig 00 01 00 00 00 9B.
Pierwsze dwie grupy (00 01) reprezentuj 2-bajtowy numer pliku, a
ostatnie cztery grupy (00 00 00 9B) numer strony. Zatem plik ma numer
1, a strona ma numer 155.
Z menu gwnego wybierz File -> Open -> File.
Odszukaj plik C:\strona_danych.sql i kliknij Open.
Wywoaj instrukcj BDCC PAGE z ustalonymi wczeniej parametrami
DBCC TRACEON(3604)
GO
DBCC PAGE (Dyplomowe,1,155,1)
Instrukcja DBCC TRACEON(3604) nakazuje eby SQL Server wywietli
strony danych na ekranie monitora w sposb przyjazny dla
uytkownika.
W wyniku powiniene otrzyma informacje jak na
Modu 4
Wewntrzna struktura

Wpis w widoku systemowym syscolumns
(4) Informacja na temat wpisu w widoku systemowym sysindexes
W wyniku powiniene otrzyma informacj na temat wpisu w widoku

Wpis w widoku systemowym sysindexes
widoku systemowym zawiera informacje
na temat numeru pliku oraz numeru strony, na ktrej przechowywane
first z widoku sysindexes
j na adres pliku strony.
.
bajtowy numer pliku, a
) numer strony. Zatem plik ma numer
.
z ustalonymi wczeniej parametrami:
nakazuje eby SQL Server wywietli
danych na ekranie monitora w sposb przyjazny dla
informacje jak na rys. 13.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 4
ITA-101 Bazy danych Wewntrzna struktura
Strona 16/19

Rys. 13 Wywietlona strona danych


Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Problem 2 (czas realizacji 20 min)
Jeste administratorem w firmie National Insurance.
zaimportowane nowe dane. W tym celu musisz przeprojektowa swoja baz danych i obliczy
wielko pocztkow pliku danych i pliku dziennika transakcji.

Zadanie Tok postpowania
1. Utwrz
testow baz
Uruchom maszyn wirtualn

Kliknij
SQL Server Managemen
W oknie logowania kliknij
Rozwi wze
W obrbie bazy danych
Diagram
Powiniene zobaczy diagram taki jak na Rys. 14.
2. Oszacuj
wielko pliku
danych
Na
Recenzja = ID_Osoby(2B) + ID_Pracy(2B) + ID_Ocena(2B) = 6B
Osoba = ID_Osoby(2B) + Imie(20B) + Nazwisko(50B) +
Nr_Indeksu(int)(4B) + ID_Stopien(2B) = 78B
StopienNaukowy = ID_Stopien(2B) + Stopien(25B) =
Autorzy = ID_Osoby(2B) + ID_Pracy(2B) = 4B
Slownik = ID_SlowoKlucz(2B) + ID_Pracy(2B) = 4B
SlowoKlucz = ID_SlowoKlucz(2B) + SlowoKlucz(25B) = 27B
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski

Strona 17/19
Problem 2 (czas realizacji 20 min)
Jeste administratorem w firmie National Insurance. Wiesz, e do twojej bazy danych maja zosta
zaimportowane nowe dane. W tym celu musisz przeprojektowa swoja baz danych i obliczy
wielko pocztkow pliku danych i pliku dziennika transakcji.
Tok postpowania
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Jeli nie masz zdefiniowanej maszyny wirtualnej w
dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
D:\VirtualPC\Dydaktyka\BD2008.vhd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008
SQL Server Management Studio.
W oknie logowania kliknij Connect.
Rozwi wze Database i wybierz PraceDyplomowe
W obrbie bazy danych PraceDyplomowe rozwi wze
Diagram.
Powiniene zobaczy diagram taki jak na Rys. 14.
Rys. 14 Diagram bazy danych PraceDyplomowe
W celu wykonania tego zadania naley wykona modu
zwizany z projektowaniem i implementacj bazy danych. Dla
zaprojektowanej bazy danych bdziemy szacowali wielko pliku
danych.
Na podstawie tabeli okrel rozmiar pojedynczego wiersza
Recenzja = ID_Osoby(2B) + ID_Pracy(2B) + ID_Ocena(2B) = 6B
Osoba = ID_Osoby(2B) + Imie(20B) + Nazwisko(50B) +
Nr_Indeksu(int)(4B) + ID_Stopien(2B) = 78B
StopienNaukowy = ID_Stopien(2B) + Stopien(25B) =
Autorzy = ID_Osoby(2B) + ID_Pracy(2B) = 4B
Slownik = ID_SlowoKlucz(2B) + ID_Pracy(2B) = 4B
SlowoKlucz = ID_SlowoKlucz(2B) + SlowoKlucz(25B) = 27B
Modu 4
Wewntrzna struktura
iesz, e do twojej bazy danych maja zosta
zaimportowane nowe dane. W tym celu musisz przeprojektowa swoja baz danych i obliczy

Jeli nie masz zdefiniowanej maszyny wirtualnej w Mirosoft Virtual PC,
dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
Microsoft SQL Server 2008 uruchom
PraceDyplomowe
rozwi wze Database


anych PraceDyplomowe
W celu wykonania tego zadania naley wykona modu 2 i modu 3
zwizany z projektowaniem i implementacj bazy danych. Dla
anych bdziemy szacowali wielko pliku
podstawie tabeli okrel rozmiar pojedynczego wiersza:
Recenzja = ID_Osoby(2B) + ID_Pracy(2B) + ID_Ocena(2B) = 6B
Osoba = ID_Osoby(2B) + Imie(20B) + Nazwisko(50B) +
StopienNaukowy = ID_Stopien(2B) + Stopien(25B) = 27B
Slownik = ID_SlowoKlucz(2B) + ID_Pracy(2B) = 4B
SlowoKlucz = ID_SlowoKlucz(2B) + SlowoKlucz(25B) = 27B
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 4
ITA-101 Bazy danych Wewntrzna struktura
Strona 18/19
TypStudiow = ID_TypStudiow(2B) + NazwaTypu(15B) = 17B
Ocena = ID_Ocena(2B) + Ocena(4B) = 6B
PracaDyplomowa = ID_Pracy(2B) + Temat (char500)(500B) + Data(8B) +
ID_Ocena(2B) + ID_TypStudiow(2B) + ID_Promotor(2B) = 516B
Wyznacz liczb stron niezbdnych do zapisania danych znajdujcych si
w tabelach:
Recenzja = 8540 rekordw / 1343 wierszy = 7 stron
Osoba = 5000 rekordw / 103 wierszy = 49 stron
StopienNaukowy = 4 rekordy / 298 wierszy = 1 strona
Autorzy = 4270 rekordw / 2015 wierszy = 3 strony
Slownik = 12810 rekordw / 2015 wierszy = 7 stron
SlowoKlucz = 500 rekordw / 298 wierszy = 2 strony
TypStudiow = 3 rekordy / 474 wierszy = 1 strona
Ocena = 4 rekordy / 1343 wierszy = 1 strona
PracaDyplomowa = 5000 rekordw / 15 wierszy = 334
Zsumuj liczb stron:
Liczba stron = 405 stron
Otrzyman liczb stron pomn przez 8196B (rozmiar pojedynczej
strony), co powinno da w wyniku wielko pliku danych:
Wielko pliku danych = Liczba stron * 8196B = 405 * 8196B =
= 3 319 380 B = 3,32 MB


Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 4
ITA-101 Bazy danych Wewntrzna struktura
Strona 19/19
Laboratorium rozszerzone
Zadanie 1 (czas realizacji 90 min)
Jeste gwnym administratorem sytemu bazodanowego w firmie BARKA, ktra zajmuje si
inwestycjami na giedzie papierw wartociowych. Kierownictwo firmy w wyniku przejcia
mniejszej firmy TFI START zarzdzajcej funduszami inwestycyjnymi podjo decyzje o modernizacji
aplikacji dostpowej do bazy danych oraz rozbudowie istniejcej bazy danych. W zwizku z tym
pomidzy Tob a programistami aplikacji dostpowej powinna istnie cisa wsppraca. W celu
ulepszeniu niskopoziomowego dziaania aplikacji poproszono Ci, jako eksperta, o zaprezentowanie
sposobu przechowywania danych w SQL Server 2008. Z drugiej strony wiesz, e po rozbudowie do
twojej bazy danych maja zosta zaimportowane nowe dane za okres ostatnich 5 lat. W tym celu
musisz przeprojektowa swoja baz danych i obliczy wielko pocztkow pliku danych i pliku
dziennika transakcji.
Zadania, jakie przed tob zostay postawione, s nastpujce:
1. Poka programistom, w jaki sposb zorganizowane jest przechowywanie danych w
SQL Server 2008.
2. Przeprojektuj istniejc baz danych.
3. Oblicz, jaka powinna by wielko pliku danych dla przeprojektowanej bazy danych.

ITA-101 Bazy Danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Modu 5
Wersja 1.0
Jzyk SQL DCL, DDL
Spis treci
Jzyk SQL DCL, DDL ............................................................................................................................ 1
Informacje o module ............................................................................................................................ 2
Przygotowanie teoretyczne ................................................................................................................. 3
Przykadowy problem .................................................................................................................. 3
Podstawy teoretyczne.................................................................................................................. 3
Przykadowe rozwizanie ............................................................................................................. 7
Porady praktyczne ..................................................................................................................... 11
Uwagi dla studenta .................................................................................................................... 12
Dodatkowe rda informacji..................................................................................................... 12
Laboratorium podstawowe ................................................................................................................ 14
Problem 1 (czas realizacji 15 min) .............................................................................................. 14
Problem 2 (czas realizacji 30 min) .............................................................................................. 15
Laboratorium rozszerzone ................................................................................................................. 20
Zadanie 1 (czas realizacji 90 min) ............................................................................................... 20

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 5
ITA-101 Bazy Danych Jzyk SQL DCL, DDL
Strona 2/20
Informacje o module
Opis moduu
Jzyk SQL zosta opracowany w 1987 roku z myl o relacyjnych bazach
danych. Skada si on z trzech skadowych: jzyka definiowania danych
(DDL), jzyka sterowania danymi (DCL) oraz jzyka operowania na danych
(DML). W module tym znajdziesz podstawowe instrukcje jzyka
definiowania danych jzyka SQL DDL (z ang. Data Definition Language)
oraz jzyka sterowania danymi jzyka SQL DCL (z ang. Data Control
Language).
Cel moduu
Celem moduu jest zaprezentowanie podstaw jzyka SQL DCL i DDL. W
module tym pokazano skadni czciow instrukcji oraz przykadowe ich
uycie.
Uzyskane kompetencje
Po zrealizowaniu moduu bdziesz:
potrafi uy podstawowych instrukcji jzyka T-SQL DDC
potrafi uy podstawowych instrukcji jzyka T-SQL DDL
rozumia mechanizm zarzdzania uprawnieniami dostpu do
obiektw bazy danych
rozumia mechanizm manipulowania baz danych i jej obiektami
Wymagania wstpne
Przed przystpieniem do pracy z tym moduem powiniene:
wiedzie w jaki sposb stworzy baz danych wraz z jej
podstawowymi obiektami
wiedzie, w jaki sposb porusza si po Microsoft SQL Server
Menagement Studio
wiedzie, w jaki sposb naley zakada uytkownikw i przypisywa
ich do bazy danych
Mapa zalenoci moduu
Zgodnie z map zalenoci przedstawion na rys. 1, przed przystpieniem
do realizacji tego moduu naley zapozna si z materiaem zawartym
w module 3.

Rys. 1 Mapa zalenoci moduu
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 5
ITA-101 Bazy Danych Jzyk SQL DCL, DDL
Strona 3/20
Przygotowanie teoretyczne
Przykadowy problem
Jak zapewne wiesz, z bazy danych moe korzysta wielu uytkownikw, ktrzy mog dysponowa
rnymi prawami dostpu do rnych obiektw w bazie danych. Najgorszym rozwizaniem jakie
moe istnie to pene zaufanie do osb korzystajcych z bazy i przydzielenie im penych praw. Ze
wzgldu na bezpieczestwo danych zawartych w bazie, warto stosowa zasad ograniczonego
zaufania do uytkownika. Z tego powodu naley zastanowi si, jakie uprawnienia naley przydzieli
poszczeglnym uytkownikom lub grupom uytkownikw. Dobrze jest wiedzie, w jaki sposb
mona nadawa, odmawia i cofa prawa dostpu. W kolejnym kroku naley rozway, czy
uytkownik powinien mie dostp do caego obiektu typu tabela lub widok, czy moe wystarczy mu
dostp do poszczeglnych kolumn. Ze wzgldu na bezpieczestwo, administrator powinien
zastanowi si, czy lepszym rozwizaniem nie byoby umoliwienie uytkownikowi lub grupie
uytkownikw dostpu do obiektw programowalnych typu procedury skadowane, ktre
wprowadzaj kolejny stopie bezpieczestwa i maskuj fizyczn struktur bazy danych.
Podstawy teoretyczne
W czci tej poznasz podstawy jzyka T-SQL DCL (ang. Data Control Language) i T-SQL DDL (ang.
Data Definition Language). Dowiesz si, w jaki sposb nadawa, odmawia i usuwa prawa do
wykonywania operacji na poszczeglnych obiektach baz danych, takich jak tabele i widoki, oraz w
jaki sposb zarzdza dostpem do programowalnych obiektw. Nauczysz si tworzy,
modyfikowa i usuwa podstawowe obiekty.
Polecenia DCL
Instrukcje jzyka DCL su do zarzdzania uprawnieniami dostpu do obiektw bazy.
Najwaniejszymi poleceniami jzyka DCL s instrukcje:
GRANT pozwala uytkownikowi lub roli na wykonywanie operacji okrelonej przez nadane
uprawnienie.
DENY odmawia uytkownikowi lub roli okrelonego uprawnienia i zapobiega odziedziczeniu
go po innych rolach.
REVOKE usuwa uprzednio nadane lub odmwione uprawnienie.
Modyfikowanie dostpu do tabel
Dostp do tabeli naley do efektywnych uprawnie, jakimi dysponuje uytkownik. Dostpem tym
mona sterowa poprzez zarzdzanie uprawnieniami na poziomie tabel. Uprawnienia, ktrymi
mona zarzdza, zostay przedstawione w tab. 1.
Tab. 1 Uprawnienia, ktrymi mona zarzdza na poziomie tabel
Usprawnienie Opis
ALTER Umoliwia modyfikowanie waciwoci tabeli
CONTROL Zapewnia uprawnienia waciciela
DELETE Umoliwia usuwanie wierszy tabeli
INSERT Umoliwia wstawienia wierszy do tabeli
REFERENCES Umoliwia odwoywanie si do tabel z obcego
klucza
SELECT Umoliwia wybieranie wierszy tabeli
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 5
ITA-101 Bazy Danych Jzyk SQL DCL, DDL
Strona 4/20
TAKE OWNERSHIP Umoliwia przejcie prawa wasnoci do tabeli
UPDATE Umoliwia aktualizowanie wierszy tabeli
VIEW DEFINITION Umoliwia dostp do meta danych tabeli
Przyznawanie praw dostpu do tabeli
Za pomoc instrukcji GRANT mona przyznawa prawa dostpu dla uytkownika oraz roli bazy
danych. W poniszym przykadzie uytkownik otrzyma uprawnienia SELECT, INSERT oraz UPDATE
do pewnej tabeli:
GRANT SELECT, INSERT, UPDATE
ON nazwa_tabeli
TO nazwa_uzytkownika
Ograniczanie praw dostpu do tabel
W celu zabronienia uytkownikowi praw dostpu mona zetkn si z dwojak sytuacj.
1. Jeli uytkownik zostay przyznane uprawnienia do tabeli, aby je zdj, naley uy instrukcji
REVOKE:
REVOKE SELECT
ON nazwa_tabeli
TO nazwa_uzytkownika
2. Moe zdarzy si sytuacja, e mimo zdjcia uprawnie, uytkownik nadal dysponuje tymi
uprawnieniami, jeeli naley do roli, ktrej to uprawnienie przyznano. W takim przypadku
naley uy instrukcji DENY:
DENY DELETE
ON nazwa_tabeli
TO nazwa_uzytkownika
Zapewnienie dostpu do pojedynczych kolumn
Istnieje rwnie moliwo przyznawania lub odmawiania praw dostpu nie tylko do tabel, ale
rwnie do poszczeglnych kolumn. W tab. 2 pokazano uprawnienia dotyczce zarzdzaniem
kolumnami tabeli.
Tab. 2 Uprawnienia dotyczce zarzdzaniem kolumn tabeli
Uprawnienia Opis
SELECT Umoliwia wykonywanie selekcji na kolumnie
UPDATE Umoliwia aktualizowanie kolumny
REFERENCE Umoliwia odwoywanie si do kolumny z obcego klucza
Nadawanie praw dostpu do kolumn
Prawa dostpu do pojedynczej kolumny nadajemy poleceniem GRANT. W poniszym przykadzie
uytkownikowi zostanie nadane uprawnienie SELECT oraz UPDATE dotyczce kolumn kolumna1,
kolumna2 itd. w tabeli:
GRANT SELECT, UPDATE(kolumna1[, kolumna2[,...n]])
ON nazwa_tabeli
TO nazwa_uzytkownika
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 5
ITA-101 Bazy Danych Jzyk SQL DCL, DDL
Strona 5/20
Odmawianie praw dostpu do kolumn
Podobnie jak w przypadku tabel, tak rwnie w przypadku poszczeglnych kolumn przy
odmawianiu praw dostpu uytkownikowi mona zetkn si z dwojak sytuacj:
1. Jeli uytkownik zostay przyznane uprawnienia do poszczeglnych kolumn tabeli, aby je
zdj, naley uy instrukcji REVOKE:
REVOKE UPDATE
ON nazwa_tabeli
TO nazwa_uzytkownika
2. Moe zdarzy si sytuacja, e mimo zdjcia uprawnie, uytkownik nadal dysponuje tymi
uprawnieniami, jeeli naley do roli, ktrej to uprawnienie przyznano. W takim przypadku
naley uy instrukcji DENY:
DENY DELETE
ON nazwa_tabeli
TO nazwa_uzytkownika
Zarzdzanie dostpem do obiektw programowalnych
Obiekty programowalne, takie jak procedury skadowane, maj swj wasny kontekst zabezpiecze.
Zatem po to, eby uytkownik mg wykona procedur skadowan, potrzebuje odpowiednich
uprawnie. Kiedy aparat bazy danych sprawdzi uprawnienia do wykonywania procedury
skadowanej i s one waciwe, wwczas sprawdza, czy uytkownik posiada odpowiednie
uprawnienia do wykonywania operacji wewntrz obiektw.
Tak jak i inne obiekty, procedury skadowane musz by w odpowiedni sposb zabezpieczone.
Aspekt zabezpieczania procedur skadowanych mona potraktowa dwojako. Z jednej strony
potrzebne s uprawnienia na przykad do tworzenia procedur skadowanych, a z drugiej strony
uytkownicy musz mie odpowiednie uprawnienia do wywoania tej procedury. Tab. 3
przedstawia uprawnienia dotyczce procedur skadowanych.
Tab. 3 Uprawnienia dotyczce procedur skadowanych
Uprawnienia Opis
ALTER Umoliwia modyfikacj waciwoci procedury skadowanej
CONTROL Zapewnia uprawnienia waciciela
EXECUTE Umoliwia wykonywanie procedury skadowanej
TAKE OWNERSHIP Umoliwia przejcie prawa wasnoci do procedury skadowanej
VIEW DEFINITION Umoliwia przegldanie meta danych procedury skadowanej

W momencie kiedy aplikacja da wywoania procedury skadowanej, SQL Server musi sprawdzi,
czy uytkownik posiada uprawnienia EXECUTE dotyczce tej procedury.
GRANT EXECUTE On nazwa_procedury_skladowanej
TO nazwa_uzytkownika
W taki sam sposb moemy odwoa lub odmwi uytkownikowi uprawnienia EXECUTE.
Polecenia DDL
Instrukcje jzyka DDL su do manipulowania baz danych i jej obiektami. Pozwalaj one na:
tworzenie nowych obiektw
modyfikowanie obiektw ju istniejcych
usuwanie obiektw
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 5
ITA-101 Bazy Danych Jzyk SQL DCL, DDL
Strona 6/20
Do podstawowych instrukcji jzyka DDL nale:
CREATE suy do tworzenie nowych obiektw.
ALTER suy do modyfikacji obiektw ju istniejcych.
DROP suy do usunicia obiektu ju istniejcego.
Tworzenie nowych obiektw
Tworzenie nowych obiektw omwimy w kontekcie tabel i widokw. W celu stworzenia nowej
tabeli wywoujemy instrukcj CREATE TABLE. Skadnia czciowa tej instrukcji zostaa
przedstawiona poniej:
CREATE TABLE nazwa_tabeli (
nazwa_kolumny1 typ_danych [NULL | NOT NULL][,
nazwa_kolumny2 typ_danych [NULL | NOT NULL][,...n]]
)
Przy definiowaniu tabeli naley poda jej nazw, nazwy jej atrybutw oraz typ danych, ktre te
atrybuty mog przyjmowa. Dodatkowo okrelamy, czy dany atrybut moe przyjmowa warto
NULL czy nie. Przykad tworzenia tabeli pokazano poniej:
CREATE TABLE Osoba
(
ID_Osoba int NOT NULL,
Nazwisko char(50) NOT NULL,
Imie char(20) NOT NULL,
Telefon int NULL
)
W podobny sposb tworzymy widoki. W celu stworzenia nowego widoku wywoujemy instrukcj
CREATE VIEW. Skadnia czciowa tej instrukcji zostaa przedstawiona poniej:
CREATE VIEW nazwa_widoku[(kolumna1, [kolumna2[,...n])]
AS
SELECT wyrazenie_select
Przy definiowaniu widoku naley poda jego nazw, nazw kolumn, ktre bd uywane w widoku,
oraz wyraenie SELECT, ktre definiuje widok. Polecenie to moe uywa nie tylko jedna, ale
rwnie wiele tabel, jak rwnie innych widokw. Przykad tworzenia widoku pokazano poniej:
CREATE VIEW Praca_dyplomowa(ID_Praca, Nazwisko, Imi, Tytu)
AS
SELECT ID_Praca, Imi, Nazwisko, Tytu FROM Praca
Modyfikowanie obiektw
Po stworzeniu obiektu powinnimy mc go w razie jakiejkolwiek potrzeby zmodyfikowa. Do
modyfikacji obiektw (zarwno tabel jak i widokw) suy polecenie ALTER. W celu modyfikacji
istniejcej tabeli naley zastosowa polecenie ALTER TABLE, ktrego uproszczona skadni
czciow pokazano poniej:
ALTER TABLE nazwa_tabeli
{ { ALTER COLUMN nazwa_kolumny | ADD <definicja_kolumny> }
[{ NULL | NOT NULL }] } |
DROP COLUMN nazwa_kolumny }

<definicja_kolumny> ::= nazwa_kolumny typ_danych
Najczciej polecenie ALTER TABLE stosuje si do zmiany schematu relacji. Przykad zastosowania
tego polecenia do dodania lub usunicia kolumny z tabeli pokazano poniej:
ALTER TABLE nazwa_tabeli ADD nazwa_kolumny typ_danych
ALTER TABLE nazwa_tabeli DROP COLUMN nazwa_kolumny
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 5
ITA-101 Bazy Danych Jzyk SQL DCL, DDL
Strona 7/20
Podobnie jak tabel moemy zmodyfikowa widok. W celu modyfikacji istniejcego widoku naley
zastosowa polecenie ALTER VIEW, ktrego uproszczona skadni czciow pokazano poniej:
ALTER VIEW nazwa_widoku [(kolumna1[, kolumna2[,...n]])]
AS
SELECT wyrazenie_select
Przy modyfikacji widoku naley poda nazw modyfikowanego widoku, nazw jednej lub wielu
kolumn, z ktrych skada si ma nowy widok oraz wyraenie SELECT, ktre ma definiowa nowy
widok. Przykad zastosowania instrukcji modyfikacji widoku pokazano poniej:
ALTER VIEW Praca_dyplomowa(Nazwisko, Imi, Tytu)
AS
SELECT Imi, Nazwisko, Tytu FROM Praca
Usuwanie obiektw
Po stworzeniu obiektu powinnimy mc go w razie jakiejkolwiek potrzeby usun. Do usuwania
obiektw (zarwno tabel jak i widokw) suy polecenie DROP. W celu usunicia istniejcej tabeli,
naley zastosowa polecenie DROP TABLE. Usuwa ono rwnie schemat tabeli. Jego uproszczon
skadni czciow pokazano poniej:
DROP TABLE nazwa_tabeli
gdzie w nazwie tabeli podajemy nazw obiektu, ktry chcemy usun. Przykadowo:
DROP TABLE Osoba
W celu usunicia istniejcego widoku naley zastosowa polecenie DROP VIEW. Jego uproszczon
skadni czciow pokazano poniej:
DROP VIEW nazwa_widoku
gdzie w nazwie widoku podajemy nazw obiektu, ktry chcemy usun. Przykadowo:
DROP VIEW Osoba, PracaDyplomowa
Przykadowe rozwizanie
Dodawanie uytkownikw
Dodawa uytkownikw mona na dwa sposoby. Pierwszy polega na tworzeniu uytkownikw z
poziomu jzyka T-SQL uywajc procedur skadowanych. Drugi na tworzeniu uytkownikw z
poziomu SQL Server Management Studio. Poniej zaprezentujemy obydwie metody.
Tworzenie uytkownikw z poziomu jzyka T-SQL
Pierwszym krokiem zwizanym z zarzdzaniem uytkownikami jest stworzenie uytkownikw
serwera i bazy danych. W tym celu stosujemy systemow procedur skadowan sp_addlogin. W
naszym przykadzie stworzymy dwch uytkownikw: Konsultant1 i Konsultant2.
EXEC sp_addlogin Konsultant1
EXEC sp_addlogin Konsultant2
Nastpnie powinnimy zezwoli nowo stworzonym uytkownikom na dostp do bazy danych. W
tym celu uywamy systemowej procedury skadowanej sp_grantdbaccess. W naszym
przykadzie mamy:
EXEC sp_grantdbaccess Konsultant1
EXEC sp_grantdbaccess Konsultant2
Po stworzeniu uytkownikw i daniu im moliwoci dostpu do bazy danych, w kolejnym kroku
powinnimy doda ich do roli. W tym celu uywamy systemowej procedury skadowanej
sp_addrolemember. W naszym przykadzie mamy:
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 5
ITA-101 Bazy Danych Jzyk SQL DCL, DDL
Strona 8/20
EXEC sp_addrolemember Obsluga, Konsultant1
EXEC sp_addrolemember Obsluga, Konsultant2
W wyniku stworzylimy dwch uytkownikw: Konsultant1 i Konsultant2, ktrym nadalimy
prawo dostpu do bazy danych, a nastpnie przydzielilimy ich do roli Obsluga.
Tworzenie uytkownikw z poziomu SQL Server Management Studio
W celu stworzenia uytkownikw poziomu SQL Server Menagemant Studio, w pierwszym kroku
naley doda uytkownikw do serwera bazodanowego. W tym celu w obrbie Object Explorer
wybieramy katalog Security, a nastpnie Login. W obrbie zakadki Login wybieramy prawym
przyciskiem myszy New Login, a nastpnie dodajemy nazw uytkownika, sposb autoryzacji,
ustawiamy haso, ktre uytkownik zmieni przy pierwszym logowaniu, domyln baz danych oraz
jzyk domylny, co pokazano na rys. 2.

Rys. 2 Zakadanie konta na SQL Server 2008 uytkownikowi
W analogiczny sposb tworzymy drugiego uytkownika. W nastpnym etapie dodajemy obydwu
uytkownikw do bazy danych. W tym celu w obrbie Object Explorer wybieramy Datatabase, a
nastpnie baz danych, do ktrej chcemy przypisa uytkownikw. W naszym przypadku bdzie to
baza Obsluga. Nastpnie wybieramy zakadk Security i Users. W obrbie zakadki Users
wybieramy prawym przyciskiem myszy New User, a nastpnie dodajemy uytkownika, ktry zosta
wczeniej stworzony na poziomie serwera, co pokazano na rys. 1. W analogiczny sposb
postpujemy z drugim uytkownikiem.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 5
ITA-101 Bazy Danych Jzyk SQL DCL, DDL
Strona 9/20

Rys. 3 Dodawanie uytkownika do bazy danych
Na kocu naley jeszcze zmieni ustawienia serwera tak, eby nowi uytkownicy mogli si
zalogowa. W tym celu klikamy prawym przyciskiem myszy instancj serwera i wybieramy
Properties, a nastpnie Security i zaznaczamy opcj SQL Server and Windows Authentication
mode, co pokazano na rys. 4.

Rys. 4 Ustawienie autoryzacji
Zarzdzanie uprawnieniami dostpu do tabeli
Podobnie jak w przypadku dodawania uytkownikw, tak i teraz podczas nadawania uprawnie
dostpu do tabel moemy uczyni to na dwa sposoby. Pierwszy polega na nadawaniu uprawnie
uytkownikom z poziomu jzyka T-SQL. Drugi na nadawaniu uprawnie uytkownikom z poziomu
SQL Server Management Studio.
Nadawanie uprawnie z poziomu jzyka T-SQL
W celu przyznania uytkownikowi prawa dostpu stosujemy instrukcj GRANT. Przykadowo by
nada prawo przegldania i wstawiania danych do tabeli Klienci stworzonemu wczeniej
uytkownikowi Konsultant1 moemy zastosowa nastpujce polecenie:
GRANT SELECT, INSERT
ON Klienci
TO Konsultant1
W podobny sposb moemy nada wspomniane wczeniej uprawnienia roli Obsluga:
GRANT SELECT, INSERT
ON Klienci
TO Obsluga
Analogicznie odmawiamy (DENY) lub usuwamy (REVOKE) uytkownikowi lub roli uprawnienia.
W wielu sytuacjach znacznie bezpieczniejszym rozwizaniem jest przydzielenie uytkownikowi
prawa wykonania procedury skadowanej. Zamy, e posiadamy procedur skadowan
proc_klienci, ktra zwraca w wyniku zbir wierszy reprezentujcych klientw. W naszym
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 5
ITA-101 Bazy Danych Jzyk SQL DCL, DDL
Strona 10/20
przykadzie przydzielimy prawo wykonania procedury skadowanej uytkownikowi Konsultant2.
Zatem bdziemy mieli:
GRANT EXECUTE
ON proc_klienci
TO Konsultant2
W analogiczny sposb moemy przydzieli prawo wykonywania procedury skadowanej roli
Obsluga. Zatem bdziemy miel:
GRANT EXECUTE
ON proc_klienci
TO Obsluga
Nadawanie uprawnie z poziomu SQL Server Management Studio
W celu nadania uytkownikowi uprawnie dostpu do obiektu typu tabela, naley w obrbie
zakadki Tables wybra tabel Uzytkownik, a nastpnie klikn prawym przyciskiem myszy i wybra
Properties. W obrbie okna Table Proberties wybieramy zakadk Permissions. Majc
zdefiniowanego uytkownika na poziomie bazy danych Obsluga, nadajemy mu odpowiednie
uprawnienia. W naszym przypadku dajemy mu moliwo przegldania tabeli, co pokazano na rys.
5.

Rys. 5 Nadanie uprawnie na tabeli Uzytkownik
Operacje na obiektach
Zamy, e chcemy stworzy nowy obiekt w postaci tabeli, ktra bdzie przechowywaa informacje
o klientach. W tym celu stosujemy polecenie CREATE TABLE, co pokazano poniej:
CREATE TABLE Klienci
(
ID_Klient int NOT NULL,
Firma char(100) NOT NULL,
Nazwisko char(50) NOT NULL,
Imie char(20) NOT NULL,
Telefon int NULL,
Fax int NULL,
email char(20) NULL

)
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 5
ITA-101 Bazy Danych Jzyk SQL DCL, DDL
Strona 11/20
Jeeli uytkownikowi Konsultant2 chcemy nada prawo przegldania danych o klientach,
moemy dla tabeli Klienci stworzy widok z udostpnionymi danym, a uytkownikowi da prawo
dostpu do widoku. Zatem tworzymy widok jak poniej i nadajemy prawo dostpu do widoku w
analogiczny sposb, jak pokazano wyej dla obiektu typu tabela.
CREATE VIEW Klienci_Obsluga(Firma, Nazwisko, Imi, Telefon)
AS
SELECT Imi, Nazwisko, Firma, Telefon FROM Klienci
Zamy, e chcemy doda kolumn przechowujca informacje o stronie internetowej do tabeli
Klienci. Wwczas:
ALTER TABLE Klienci ADD www char(50) NULL
W analogiczny sposb moemy zmodyfikowa widok Klienci_Obsluga tak, eby uytkownik
Konsultant2 mg przeglda adresy stron internetowych klientw. Zatem:
ALTER VIEW Klienci_Obsluga (Firma, Nazwisko, Imi, Telefon, www)
AS
SELECT Imi, Nazwisko, Firma, Telefon, www FROM Klienci
Zamy, e chcemy usun kolumn przechowujca informacje o numerze faksu z tabeli Klienci.
Wwczas:
ALTER TABLE Klienci DROP COLUMN fax
Porady praktyczne
Jzyk T-SQL DCL
Przyznawanie lub odmawianie praw dostpu do poszczeglnych kolumn zwiksza
elastyczno w zarzdzaniu dostpem na przykad do poufnych danych z niektrych kolumn.
W zarzdzaniu dostpem do obiektw programowalnych wystpuje zagadnienie acucha
praw wasnoci. acuch praw wasnoci jest sekwencj obiektw bazy danych uzyskujcych
dostp do siebie nawzajem. W sytuacji, kiedy w tabeli s wiersze uzyskane z procedury
skadowanej, procedura ta jest obiektem wywoujcym, a tabela obiektem wywoywanym.
Gdy SQL Server napotka na taki acuch, aparat bazy danych sprawdza uprawnienia inaczej
ni w przypadku indywidualnego dostpu do obiektw.
Tworzenie uytkownikw oraz nadawanie im uprawnie moe odbywa si na dwa sposoby.
Pierwszy wymaga znajomoci jzyka T-SQL. Drugi sposb polega na wykorzystaniu
graficznych narzdzi dostpnych w SQL Server Menagement Studio.
W przypadku tworzenia uytkownikw z poziomu jzyka T-SQL musimy zna odpowiednie
procedury skadowane, ktrych naley w tym celu uy. W procedurach skadowanych
zapisane s ustawienia, ktre zostan wprowadzone podczas ich uycia.
Moemy nadawa uprawnienia do rnych obiektw w bazie danych. W rozdziale
Przykadowe rozwizanie pokazano w jaki sposb nadawa uprawnienia do obiektu typu
tabela. W analogiczny sposb moemy nadawa uprawnienia do obiekty typu: widok, funkcja
czy procedura skadowana.
Uytkownikw moemy grupowa wedug nadanych im uprawnie. Wwczas moemy
zaoy role i pogrupowa uytkownikw wedug rl, jakie peni w bazie danych. W wyniku
tego moemy przypisa dostp do obiektw bazy danych nie tylko pojedynczemu
uytkownikowi, ale rwnie grupom uytkownikw zapisanych w roli.
Jzyk T-SQL DDL
Poleceniem CREATE moemy utworzy nie tylko tabel czy widok, lecz rwnie obiekt
programowalny w postaci procedury skadowanej. W tym celu wywoujemy instrukcj
CREATE PROCEDURE. Przykadowa skadnia czciowa instrukcji tworzenia procedury bez
parametru zostaa pokazana poniej:
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 5
ITA-101 Bazy Danych Jzyk SQL DCL, DDL
Strona 12/20
CREATE PROCEDURE nazwa_procedury
AS
SELECT wyrazenie
Polecenie ALTER, podobnie CREATE, moe by stosowane w odniesieniu do obiektu
programowalnego w postaci procedury skadowanej. W tym celu wywoujemy instrukcj
ALTER PROCEDURE. Przykadowa skadnia czciowa instrukcji modyfikowania procedury
zostaa pokazana poniej:
ALTER PROCEDURE nazwa_procedury
[WITH { RECOMPILE | ENCRYPTION }]
AS
SELECT wyrazenie
W celu usunicia istniejcej procedury skadowanej naley zastosowa polecenie DROP
PROCEDURE. Jego uproszczon skadni czciow pokazano poniej:
DROP PROCEDURE nazwa_widoku
Tworzenie, modyfikacja i usuwanie moe odbywa si na obiektach typu: baza danych,
funkcja, indeks, tabela, procedura skadowana, widok, wyzwalacz.
Polecenie CREATE suy do tworzenia wszystkich obiektw baz danych: tabel (CREATE
TABLE), widokw (CREATE VIEW), procedur skadowanych (CREATE PROCEDURE),
indeksw (CREATE INDEX), wyzwalaczy (CREATE TRIGGER). Tylko tymczasowe twory,
takie jak zmienne czy kursory, deklaruje si (nie tworzy) za pomoc polecenia DECLARE.
Do istniejcej tabeli moemy zawsze doda ograniczenia na istniejca kolumn, przykadowo:
ALTER TABLE Osoba_1
ADD CONSTRAINT CK_Nr_Indeksu CHECK (Nr_Indeksu > 10000)
Ograniczenie to wymusza wstawianie w kolumnie Nr_indeksu liczb cakowitych wikszych
od 10000.
Uwagi dla studenta
Jeste przygotowany do realizacji laboratorium jeli:
rozumiesz zasad zarzdzania uprawnieniami do obiektw bazy danych
rozumiesz mechanizm manipulowania baz danych i jej obiektami
umiesz poda przykady obiektw baz danych, do ktrych mona zastosowa skadni jzyka
T-SQL DDL oraz T-SQL DCL
Pamitaj o zapoznaniu si z uwagami i poradami zawartymi w tym module. Upewnij si, e
rozumiesz omawiane w nich zagadnienia. Jeli masz trudnoci ze zrozumieniem tematu zawartego
w uwagach, przeczytaj ponownie informacje z tego rozdziau i zajrzyj do notatek z wykadw.
Dodatkowe rda informacji
1. Kalen Delaney, Microsoft SQL Server 2005: Rozwizania praktyczne krok po kroku, Microsoft
Press, 2006
W ksice autor w przystpny i zrozumiay sposb przedstawia, midzy innymi, w
jaki sposb nadawa prawa dostpu do bazy danych oraz jak zarzdza rolami.
Nastpnie pokazuje, jak prosto mona nadawa uprawnienia do obiektw bazy
danych typu tabela i widok.
2. Edward Whalen, Microsoft SQL Server 2005 Administrators Companion, Microsoft Press, 2006
W ksice autor pokaza, w jaki sposb mona zorganizowa nadawanie uprawnie
do bazy danych oraz do obiektw bazy danych od strony administracyjnej. Przyblia
rwnie, jak naley planowa polityk bezpieczestwa serwera i bazy danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 5
ITA-101 Bazy Danych Jzyk SQL DCL, DDL
Strona 13/20
poprzez nadawanie odpowiednich uprawnie. Pozycja szczeglnie polecana
osobom chccym poszerzy wiedz o tych elementach administracji serwerem.
3. Deren Bieniek, Randy Dyess, Mike Hotek, Javier Loria, Adam Machanic, Antonio Soto, Adolfo
Wiernik, SQL Server 2005. Implementacja i obsuga, APN Promise, 2006
W ksice przedstawiono obie skadowe jzyka T-SQL: DCL i DDL. Pokazano, w jaki
sposb tworzy uytkownikw, nadawa im uprawnienia oraz jak tworzy,
modyfikowa i usuwa podstawowe obiekty bazy danych. Ksika szczeglnie warta
polecenia ze wzgldu na du zawarto wicze laboratoryjnych.
4. Dusan Petkovic, Microsoft SQL Server 2008: A Beginner's Guide, McGraw-Hill, 2008
Pozycja napisana w sposb przystpny. Wprowadza w SQL Server 2008 w sposb
szybki i atwy. Osoba pocztkujca w SQL Server 2008 znajdzie w niej podstawy z
kadego tematu dotyczcego serwera bazodanowego. W prosty sposb dowiesz
si, jak naley definiowa uytkownikw i nadawa im uprawnienia oraz jak
tworzy, modyfikowa i usuwa podstawowe obiekty bazy. Pozycja szczeglnie
polecana dla osb pocztkujcych.

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
Laboratorium podstawowe
Problem 1 (czas realizacji
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od
firma planuje rozszerzenie systemu
skal uczelniana. Pierwsze z
oraz modyfikacja uytkownikw istniejcych

Zadanie Tok postpowania
1. Nawi
poczenie z SQL
Server 2008
Uruchom maszyn wirtualn

Kliknij
SQL Server Management Studio
W oknie logowania kliknij
2. Utwrz tabel Z menu gwnego wybierz
Odszukaj plik
Zaznacz i uruchom (
--
USE PraceDyplomowe
GO

--
CREATE TABLE Osoba_1(





)
3. Zmodyfikuj
tabel
Majc otwarty skrypt
fragment kodu odpowiedzialny za zmian definicji kolumny
--
ALTER TABLE Osoba_1


GO
Dodaj do tabeli
telefonu.
--
ALTER TABLE Osoba_1

GO
Dodaj ograniczenia na kolumn indeks.
(F5
--
ALTER TABLE Osoba_1
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski

Strona 14/20
Laboratorium podstawowe
Problem 1 (czas realizacji 15 min)
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od
firma planuje rozszerzenie systemu prac dyplomowych na Twoim wydziale
Pierwsze zadanie, jakie przed Tob stoi, to zdefiniowanie nowych uytkownikw
oraz modyfikacja uytkownikw istniejcych.
Tok postpowania
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Jeli nie masz zdefiniowanej maszyny wirtualnej w
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
D:\VirtualPC\Dydaktyka\BD2008.vhd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008
SQL Server Management Studio.
W oknie logowania kliknij Connect.
Z menu gwnego wybierz File -> Open -> File.
Odszukaj plik C:\Labs\Lab06\ddl.sql.
Zaznacz i uruchom (F5) poniszy fragment kodu:
-- (1) Ustawiamy PraceDyplomowe jako baze robocza
USE PraceDyplomowe
GO

-- (2) Tworzymy w bazie danych tabele Osoba_1
CREATE TABLE Osoba_1(
ID_Osoby smallint NOT NULL,
Imie varchar(10) NOT NULL,
Nazwisko varchar(10) NOT NULL,
Nr_Indeksu varchar(10) NULL,
ID_Stopnien smallint NULL

Majc otwarty skrypt ddl.sql w oknie Query zaznacz i uruchom poniszy
fragment kodu odpowiedzialny za zmian definicji kolumny
-- (3) zmiana definicji kolumny Nazwisko
ALTER TABLE Osoba_1
ALTER COLUMN Nazwisko varchar(40) NOT NULL
ALTER COLUMN Nr_Indeksu int NULL
GO
Dodaj do tabeli Osoba_1 kolumn przechowujc informacje o numerze
telefonu. W tym celu zaznacz i uruchom (F5) poniszy fragment ko
-- (4) Dodanie kolumny Telefon
ALTER TABLE Osoba_1
ADD Telefon int
GO
Dodaj ograniczenia na kolumn indeks. W tym celu z
F5) poniszy fragment kodu.
-- (5) Dodajmy ograniczenie na kolumne Nr_Indeksu
ALTER TABLE Osoba_1
Modu 5
Jzyk SQL DCL, DDL
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od swojego szefa, e
woim wydziale, ktrym zarzdza, na
to zdefiniowanie nowych uytkownikw

Jeli nie masz zdefiniowanej maszyny wirtualnej w Microsoft Virtual
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
Microsoft SQL Server 2008 uruchom

Ustawiamy PraceDyplomowe jako baze robocza
(2) Tworzymy w bazie danych tabele Osoba_1
zaznacz i uruchom poniszy
fragment kodu odpowiedzialny za zmian definicji kolumny Nazwisko:

kolumn przechowujc informacje o numerze
) poniszy fragment kodu:
W tym celu zaznacz i uruchom
(5) Dodajmy ograniczenie na kolumne Nr_Indeksu
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych

GO
Usu ograniczenia naoone w poprzednim kroku.
uruchom (
--
ALTER TABLE Osoba_1

GO
Usu kolumn
fragment kodu
--
ALTER TABLE Osoba_1

GO
4. Usu tabel Usu
uruchom (
--

GO
Problem 2 (czas realizacji
W wyniku rozszerzenia systemu zarzdzania pracami dyplomowymi na skal uczelni
zadanie, jakie przed tob stoi
praw dostpu do obiektw w Twojej bazie danych.

Zadanie Tok postpowania
1. Nawi
poczenie z SQL
Server 2008
Uruchom maszyn wirtualn

Kliknij
SQL Server
W oknie logowania kliknij
2. Dodaj
uytkownikw do
bazy danych
Z menu gwnego wybierz
Odszukaj pliku
Zaznacz i uruchom (
6
--
USE PraceDyplomowe
GO

--





Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski

Strona 15/20
ADD CONSTRAINT CK_Nr_Indeksu CHECK (Nr_Indeksu > 10000)
GO
Usu ograniczenia naoone w poprzednim kroku.
uruchom (F5) poniszy fragment kodu.
-- (6) Usuwamy ograniczenie na kolumnie Nr_Indeksu
ALTER TABLE Osoba_1
DROP CONSTRAINT CK_Nr_Indeksu
GO
Usu kolumn Telefon. W tym celu zaznacz i uruchom (
fragment kodu.
-- (7) Usuwamy kolumne Telefon
ALTER TABLE Osoba_1
DROP COLUMN Telefon
GO
Usu tabel Osoba_1. W tym celu majc otwarty skrypt
uruchom (F5) poniszy fragment kodu.
-- (8) Usuwamy tabele Osoba_1
DROP TABLE Osoba_1
GO
Problem 2 (czas realizacji 30 min)
W wyniku rozszerzenia systemu zarzdzania pracami dyplomowymi na skal uczelni
jakie przed tob stoi, to przydzielenie nowo zdefiniowanym uytkownikom odpowiednich
praw dostpu do obiektw w Twojej bazie danych.
Tok postpowania
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Jeli nie masz zdefiniowanej maszyny wirtualnej w
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
D:\VirtualPC\Dydaktyka\BD2008.vhd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008
SQL Server Management Studio.
W oknie logowania kliknij Connect.
Z menu gwnego wybierz File -> Open -> File.
Odszukaj pliku C:\Labs\Lab06\dcl_1.sql.
Zaznacz i uruchom (F5) poniszy fragment kodu. Wynik pokazano na
6.
-- (1) Ustawiamy PraceDyplomowe jako baze robocza
USE PraceDyplomowe
GO

-- (2) Dodajmy dwoch nowych uzytkownikow serwera i bazy danych,
Sekretariat1 i Sekretariat2, umiescmy ich w grupie Dziekanat
EXEC sp_addlogin Sekretariat1
EXEC sp_addlogin Sekretariat2
EXEC sp_grantdbaccess Sekretariat1
EXEC sp_grantdbaccess Sekretariat2
Modu 5
Jzyk SQL DCL, DDL
T CK_Nr_Indeksu CHECK (Nr_Indeksu > 10000)
Usu ograniczenia naoone w poprzednim kroku. W tym celu zaznacz i
(6) Usuwamy ograniczenie na kolumnie Nr_Indeksu
aznacz i uruchom (F5) poniszy
ajc otwarty skrypt ddl.sql zaznacz i
W wyniku rozszerzenia systemu zarzdzania pracami dyplomowymi na skal uczelni, kolejne
definiowanym uytkownikom odpowiednich

Jeli nie masz zdefiniowanej maszyny wirtualnej w Microsoft Virtual
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
Microsoft SQL Server 2008 uruchom
fragment kodu. Wynik pokazano na rys.
(1) Ustawiamy PraceDyplomowe jako baze robocza
(2) Dodajmy dwoch nowych uzytkownikow serwera i bazy danych,
1 i Sekretariat2, umiescmy ich w grupie Dziekanat
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 5
ITA-101 Bazy Danych Jzyk SQL DCL, DDL
Strona 16/20
EXEC sp_addrole Dziekanat
EXEC sp_addrolemember Dziekanat, Sekretariat1
EXEC sp_addrolemember Dziekanat, Sekretariat2
GO

Rys. 6 Dodanie uytkownikw do bazy danych
W oknie Object Explorer kliknij przycisk Connect -> Database Engine.
W zakadce Authentication wybierz SQL Server Authentication.
W polu Login wpisz uytkownika Sekretariat1. Haso pozostaw puste.
W wyniku powiniene uzyska poczenie do drugiej instancji serwera,
co pokazano na rys. 7.

Rys. 7 Podczenie do drugiej instancji serwera
Odszukaj pliku C:\Labs\Lab06\dcl_2.sql.
Zaznacz i uruchom (F5) poniszy fragment kodu. Wynik pokazano na rys.
8:
-- (1) Ustawmy PraceDyplomowe jako baze robocza
USE PraceDyplomowe
GO

-- (2) sprawdzamy, czy mamy uprawnienia do wykonania
-- polecenia SELECT na tabeli Osoba
SELECT * FROM Osoba
GO

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
Sprbuj nada uprawnienia innemu uytkownikowi
zalogowan
poniszy
--
GRANT SELECT ON Osoba TO S
GO
3. Nadaj
uprawnienia
Przecz si do okna ze skryptem
Zaznacz i uruchom (
--
--
GRANT SELECT ON Osoba TO Sekretariat1
GO
Przecz si do okna ze skryptem
uytkownika
Zaznacz i uruchom (
pokazano na
--
USE PraceDyplomowe
GO

--
--
SELECT * FROM Osoba
GO

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski

Strona 17/20
Pamitaj, e powyszy fragment kodu zawarty w skrypcie
wykonujemy z zalogowanym uytkownikiem Sekretatiat1
Rys. 8 Sprawdzenie uprawnienia wykonania polecenia SELECY na tabeli Osoba
Wykonanie poprzedniego polecenia nie powiodo
domylne uprawnienia nowego uytkownika nie pozwalaj na
wykonanie adnego polecenia w bazie danych. Skoro nie mamy
uprawnie do wykonywania polece, tym bardziej nie moemy ich
nadawa.
Sprbuj nada uprawnienia innemu uytkownikowi
zalogowanym jako Sekretariat1. W tym celu zaznacz i uruchom (
poniszy fragment kodu:
-- (3) Sprbujmy nada uprawnienia innemu uytkown
GRANT SELECT ON Osoba TO Sekretariat2
GO
Podje nieudan prb nadania innemu uytkownikowi
(Sekretariat2) uprawnie do wykonywania polecenia
Osoba.
Przecz si do okna ze skryptem dcl_1.sql.
Zaznacz i uruchom (F5) poniszy fragment kodu:
-- (3) Nadaj uprawnienia do wykonywania polecenia SELECT
-- w tabeli Osoba uytkownikowi Sekretariat1
GRANT SELECT ON Osoba TO Sekretariat1
GO
Przecz si do okna ze skryptem dcl_2.sql uruchomionego w kontekcie
uytkownika Sekretariat1.
Zaznacz i uruchom (F5) poniszy fragment kodu. Wynik uruchomienia
pokazano na rys. 9:
-- (1) Ustawmy PraceDyplomowe jako baze robocza
USE PraceDyplomowe
GO

-- (2) sprawdzamy, czy mamy uprawnienia do wykonania
-- polecenia SELECT na tabeli Osoba
SELECT * FROM Osoba
GO

Modu 5
Jzyk SQL DCL, DDL
taj, e powyszy fragment kodu zawarty w skrypcie dcl_2.sql
Sekretatiat1

Sprawdzenie uprawnienia wykonania polecenia SELECY na tabeli Osoba
Wykonanie poprzedniego polecenia nie powiodo si, poniewa
omylne uprawnienia nowego uytkownika nie pozwalaj na
wykonanie adnego polecenia w bazie danych. Skoro nie mamy
uprawnie do wykonywania polece, tym bardziej nie moemy ich
Sprbuj nada uprawnienia innemu uytkownikowi, bdc
aznacz i uruchom (F5)
uprawnienia innemu uytkownikowi
nadania innemu uytkownikowi
) uprawnie do wykonywania polecenia SELECT w tabeli

(3) Nadaj uprawnienia do wykonywania polecenia SELECT

uruchomionego w kontekcie
fragment kodu. Wynik uruchomienia
(1) Ustawmy PraceDyplomowe jako baze robocza
(2) sprawdzamy, czy mamy uprawnienia do wykonania
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
Zaznacz i uruchom (
--
--
GRANT SELECT ON Osoba TO Sekretariat
GO
4. Cofnij
uprawnienia
Przecz si do okna, w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (
--
--
REVOKE SELECT ON Osob
GO
Przecz si do okna, w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (
--
--
SELECT * FROM Osoba
GO
5. Odbierz
uprawnienia
Przecz si do okna, w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (
--
--
GRANT SELECT ON Osoba TO Sekretariat1
GO
Przecz si do okna, w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (
--
--
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski

Strona 18/20
Rys. 9 Sprawdzenie uprawnien do wykonania polecenia SELECT
Zaznacz i uruchom (F5) ponownie poniszy fragment kodu
-- (3) Nadaj uprawnienia do wykonywania polecenia SELECT
-- w tabeli Osoba uytkownikowi Sekretariat2
GRANT SELECT ON Osoba TO Sekretariat2
GO
I tym razem nie udaje si nada praw innemu uytkownikowi
nadanie uprawnie do wykonywania polecenia nie jest rwnoznaczne
z umoliwieniem nadawania uprawnie innym uytkownikom.
Przecz si do okna, w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (F5) poniszy fragment kodu:
-- (4) Cofnij uprawnienia do wykonywania polecenia SELECT
-- w tabeli Osoba uytkownikowi Sekretariat1
REVOKE SELECT ON Osoba FROM Sekretariat1
GO
Przecz si do okna, w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (F5) ponownie poniszy fragment kodu
-- (2) sprawdmy, czy mamy uprawnienia do wykonania
-- polecenia SELECT na tabeli Osoba
SELECT * FROM Osoba
GO
Po cofniciu uprawnie do wykonania polecenia
tego fragmentu skryptu powinno zwrci informacj o bdzie.
Przecz si do okna, w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (F5) ponownie poniszy fragment kodu
-- (3) Nadaj uprawnienia do wykonywania polecenia SELECT
-- w tabeli Osoba uytkownikowi Sekretariat1
GRANT SELECT ON Osoba TO Sekretariat1
GO
Przecz si do okna, w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (F5) ponownie poniszy fragment kodu
-- (2) sprawdzmy, czy mamy uprawnienia do wykonania
-- polecenia SELECT na tabeli Osoba
Modu 5
Jzyk SQL DCL, DDL

Sprawdzenie uprawnien do wykonania polecenia SELECT
fragment kodu:
(3) Nadaj uprawnienia do wykonywania polecenia SELECT

I tym razem nie udaje si nada praw innemu uytkownikowi, czyli
nadanie uprawnie do wykonywania polecenia nie jest rwnoznaczne
z umoliwieniem nadawania uprawnie innym uytkownikom.
Przecz si do okna, w ktrym masz uruchomiony skrypt dcl_1.sql.

(4) Cofnij uprawnienia do wykonywania polecenia SELECT

Przecz si do okna, w ktrym masz uruchomiony skrypt dcl_2.sql.
fragment kodu:
, czy mamy uprawnienia do wykonania
Po cofniciu uprawnie do wykonania polecenia SELECT uruchomienie
informacj o bdzie.
Przecz si do okna, w ktrym masz uruchomiony skrypt dcl_1.sql.
fragment kodu:
(3) Nadaj uprawnienia do wykonywania polecenia SELECT

Przecz si do okna, w ktrym masz uruchomiony skrypt dcl_2.sql.
fragment kodu:
(2) sprawdzmy, czy mamy uprawnienia do wykonania
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
SELECT * FROM Osoba
GO
Przecz si do okna, w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (
--
--
DENY SELECT ON Osoba TO Dziekanat
GO
Przecz si do okna, w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (
--
--
SELECT * FROM Osoba
GO
6. Przeka
uprawnienia
Przecz si do okna w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (
--
--
--
--
GRANT SELECT ON Osoba TO Sekretariat1 WITH GRANT OPTION
GO
Przecz si do okna, w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (
--
GRANT SELECT ON Osoba TO Sekretariat2
GO



Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski

Strona 19/20
SELECT * FROM Osoba
GO
Przecz si do okna, w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (F5) ponownie poniszy fragment kodu
-- (5) Zabro wykonywania polecenia SELECT
-- w tabeli Osoba grupie Dziekanat
DENY SELECT ON Osoba TO Dziekanat
GO
Powyszy kod spowoduje zabronienie wszystkim uytkownikom w
grupie Dziekanat (czyli u nas konkretnie uytkownikom
Sekretariat2) wykonywania polecenia SELECT w tabeli
Przecz si do okna, w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (F5) ponownie poniszy fragment kodu
-- (2) sprawdzmy, czy mamy uprawnienia do wykonania
-- polecenia SELECT na tabeli Osoba
SELECT * FROM Osoba
GO
Tym razem okae si, e nie moemy wykona polecenia
Dzieje si tak dlatego, e przed momentem zabronilimy grupie
Dziekanat, do ktrej naley uytkownik, w ktrego kontekcie
pracujemy, wykonywania polecenia SELECT.
Przecz si do okna w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (F5) ponownie poniszy fragment kodu
-- (6) nadaj uprawnienia do wykonywania polecenia SELECT
-- w tabeli Osoba uzytkownikowi Sekretariat1
-- z opcja nadawania przez uzytkownika uprawnien
-- do wykonywania polecenia SELECT w tej tabeli
GRANT SELECT ON Osoba TO Sekretariat1 WITH GRANT OPTION
GO
Przecz si do okna, w ktrym masz uruchomiony skrypt
Zaznacz i uruchom (F5) ponownie poniszy fragment kodu
-- (3) sprobujmy nadac uprawnienia innemu uzytkownikowi
GRANT SELECT ON Osoba TO Sekretariat2
GO

Modu 5
Jzyk SQL DCL, DDL
Przecz si do okna, w ktrym masz uruchomiony skrypt dcl_1.sql.
ent kodu:
Powyszy kod spowoduje zabronienie wszystkim uytkownikom w
(czyli u nas konkretnie uytkownikom Sekretariat1 i
w tabeli Osoba.
Przecz si do okna, w ktrym masz uruchomiony skrypt dcl_2.sql.
fragment kodu:
(2) sprawdzmy, czy mamy uprawnienia do wykonania
Tym razem okae si, e nie moemy wykona polecenia SELECT.
Dzieje si tak dlatego, e przed momentem zabronilimy grupie
, do ktrej naley uytkownik, w ktrego kontekcie
Przecz si do okna w ktrym masz uruchomiony skrypt dcl_1.sql.
) ponownie poniszy fragment kodu:
(6) nadaj uprawnienia do wykonywania polecenia SELECT

z opcja nadawania przez uzytkownika uprawnien
do wykonywania polecenia SELECT w tej tabeli
GRANT SELECT ON Osoba TO Sekretariat1 WITH GRANT OPTION
Przecz si do okna, w ktrym masz uruchomiony skrypt dcl_2.sql.
niszy fragment kodu:
(3) sprobujmy nadac uprawnienia innemu uzytkownikowi
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 5
ITA-101 Bazy Danych Jzyk SQL DCL, DDL
Strona 20/20
Laboratorium rozszerzone
Zadanie 1 (czas realizacji 90 min)
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od swojego szefa, e
firma zarzdzajca baz AdventureWorks planuje rozszerzenie i modernizacj systemu w celu
spenienia pewnych standardw. W zwizku z modernizacj systemu bazodanowego,
najprawdopodobniej ulegn zmianie pewne obiekty w bazie danych (cz najprawdopodobniej
zostanie zmodyfikowanych, cz stworzonych, a cz usunitych) oraz uprawnienia
poszczeglnych uytkownikw oraz grup uytkownikw do poszczeglnych obiektw w bazie
danych (tabel, widokw, procedur skadowanych, funkcji itp.).
Zadania, jakie przed Tob stoj, to:
1. Podjcie decyzji, ktre obiekty w bazie danych pozostan bez zmian, a ktre zostan
zmodyfikowane lub usunite.
2. Zdefiniowanie nowych uytkownikw oraz zmodyfikowanie uytkownikw istniejcych w
celu przydzielenia im praw do obiektw w zmodernizowanej bazie danych.
3. Przeorganizowanie grupy uytkownikw i nadanie im uprawnie do obiektw bazy danych.
ITA-101 Bazy Danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Modu 6
Wersja 1.0
Jzyk SQL DML
Spis treci
Jzyk SQL DML ................................................................................................................................... 1
Informacje o module ............................................................................................................................ 2
Przygotowanie teoretyczne ................................................................................................................. 3
Przykadowy problem .................................................................................................................. 3
Podstawy teoretyczne.................................................................................................................. 3
Przykadowe rozwizanie ............................................................................................................. 7
Porady praktyczne ....................................................................................................................... 9
Uwagi dla studenta .................................................................................................................... 10
Dodatkowe rda informacji..................................................................................................... 10
Laboratorium podstawowe ................................................................................................................ 12
Problem 1 (czas realizacji 45 min) .............................................................................................. 12
Laboratorium rozszerzone ................................................................................................................. 19
Zadanie 1 (czas realizacji 90 min) ............................................................................................... 19

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 2/19
Informacje o module
Opis moduu
Jzyk SQL skada si z trzech skadowych: jzyka definiowania danych (DDL),
jzyka sterowania danymi (DCL) oraz jzyka operowania na danych (DML).
W module tym dowiesz si w jaki sposb mona pobiera i przeglda dane,
formatowa zestawy wynikw oraz konstruowa proste zapytania uywajc
jeyka T-SQL DML.
Cel moduu
Celem moduu jest zapoznanie suchacza z podstawowymi instrukcjami
jzyka T-SQL DML, sucego do manipulowania danymi, oraz pokazanie
sposobu uywania zaprezentowanych instrukcji.
Uzyskane kompetencje
Po zrealizowaniu moduu bdziesz:
potrafi uywa podstawowych instrukcji jzyka SQL DML
potrafi pobiera i modyfikowa dane w zawarte w bazie
potrafi formatowa zestaw wynikw i przedstawia je w przejrzystej
formie
potrafi konstruowa proste zapytania do bazy danych Microsoft SQL
Server 2008
Wymagania wstpne
Przed przystpieniem do pracy z tym moduem powiniene:
wiedzie, w jaki sposb stworzy baz danych wraz z jej
podstawowymi obiektami (patrz: modu 3)
wiedzie, w jaki sposb porusza si po Microsoft SQL Server
Management Studio
potrafi definiowa uytkownikw i przydziela im uprawnienia
Mapa zalenoci moduu
Zgodnie z map zalenoci przedstawion na rys. 1, przed przystpieniem
do realizacji tego moduu naley zapozna si z materiaem zawartym
w moduach 3 i 5.

Rys. 1 Mapa zalenoci moduu
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 3/19
Przygotowanie teoretyczne
Przykadowy problem
Z bazy danych moe korzysta wielu uytkownikw, dysponujcych rnorakimi uprawnieniami i
majcych dostp do rnych obiektw w bazie danych. Gwnym ich zadaniem jest przeszukiwanie
danych w niej zawartych wedug pewnych regu, ktre wczeniej zostay zdefiniowane przez
administratora, projektanta i programist bazy danych. W zwizku z tym podstawowym zadaniem,
jakie stoi przed osobami odpowiedzialnymi za prawidowe funkcjonowanie bazy danych, jest
okrelenie, jakie polecenia bd uywane do pobierania z niej danych
Kolejnym problemem, z jakim czsto moemy si spotka, jest wprowadzanie, modyfikacja oraz
import i eksport danych pomidzy rnymi bazami. Eksport nie powinien sprawia wikszych
kopotw, natomiast problem moe stanowi import danych z innych systemw zarzdzania
bazami danych. Moe on wynika z odmiennej wewntrznej struktury przechowywania danych w
rnych systemach, jak rwnie z niespjnoci typw danych w nich zawartych. Dobrze jest
wiedzie, w jaki sposb mona poradzi sobie z potencjalnymi problemami przy importowaniu
danych.
Podstawy teoretyczne
W czci tej pokazany zostanie sposb budowy polece odczytujcych dane zawarte w bazie.
Rozpoczniemy od prezentacji prostych polece SELECT. Nastpnie przeledzimy informacje na
temat zcze uywanych do pobierania danych z wielu tabel. Na kocu przeledzimy, w jaki sposb
mona atwo wprowadza, modyfikowa i kasowa dane zawarte w bazie.
Wybieranie potrzebnych danych
Najprostszym sposobem pozyskiwania danych z pojedynczej tabeli jest wykonanie instrukcji
SELECT. Instrukcja ta suy do odczytywania danych przechowywanych w bazie danych. Sposb
wywoania instrukcji znajduje si poniej:
SELECT [{ ALL | DISTINCT }] lista_wyboru
FROM nazwa_tabeli[,n]
WHERE warunek_wyszukiwania
Jeeli chcemy pobra wszystkie kolumny z tabeli, moemy w licie wyboru poda gwiazdk,
przykadowo:
SELECT * FROM nazwa_tabeli
Powysze polecenie zwraca wszystkie dane zawarte w wybranej tabeli. Zazwyczaj odczytywanie
wszystkich kolumn z tabeli nie jest konieczne, a wykonywanie takiego zapytania moe spowodowa
wiele problemw.
Zamy, e potrzebne s nam dane tylko z niektrych kolumn z danej tabeli. Wwczas po sowie
SELECT naley wymieni nazwy tych kolumn w takiej kolejnoci, w jakiej chcemy, aby zostay
wywietlone. Przykadowo:
SELECT employeeid, lastname, firstname, title
FROM employees
Gdy tabela zawiera ma liczb wierszy, czas potrzebny na ich zwrcenie jest akceptowalny. W
sytuacji, gdy tabela skada si z milionw wierszy, zwracanie ich wszystkich nie jest dobrym
rozwizaniem, dlatego powinno si wydobywa tylko potrzebne wiersze. Naley w zwizku z tym
odpowiedzie sobie na pytania: ktre kolumny s potrzebne? Ktre wiersze s potrzebne?
Udzielenie odpowiedzi na te pytania powinno pomc przy tworzeniu przyjaznych dla serwera
zapyta.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 4/19
W celu ograniczenia liczby wierszy dokonujemy filtrowania rekordw. Suy do tego klauzula
WHERE, ktr moemy zawrze w instrukcji SELECT. Przykadowo:
SELECT SELECT employeeid, lastname, firstname, title
FROM employees
WHERE employeeid = 5
Naley pamita, i warunki wyszukiwania, ktre moemy stosowa po sowie WHERE, s
rnorodne i daj du swobod filtrowania rekordw. Warunki te mog:
korzysta z operatorw porwnania
korzysta z porwnywania cigw
korzysta z operatorw logicznych
pobiera zakresu wartoci
korzysta z listy wartoci jako kryterium wyszukiwania
pobra wartoci nieznane
Operator porwnania
Operator porwnania (=) uyty w klauzulu WHERE powoduje, e zwracane s tylko te rekordy,
ktrych warto w zadanej kolumnie jest rwna podanej. Przykadowo:
SELECT lastname, city
FROM employees
WHERE country = 'USA'
Operator LIKE
Operator LIKE suy do porwnywania cigw znakw, ktre powinny by do siebie podobne.
Wraz z operatorem LIKE mona stosowa znaki maskujce %, reprezentujce dowolny cig
znakw. Przykadowo:
SELECT companyname
FROM customers
WHERE companyname LIKE '%Restaurant%'
W wyniku otrzymamy nazwy firm zawierajce w sobie sowo Restaurant.
Operatorem o odwrotnym dziaaniu jest operator NOT LIKE. Jego zastosowanie powoduje
zwrcenie rekordw, ktre nie speniaj podanego warunku podobiestwa. Przykadowo:
SELECT companyname
FROM customers
WHERE companyname NOT LIKE 'D%'
W wyniku otrzymamy nazwy firm ktre nie rozpoczynaj si na liter D.
Operatory logiczne AND i OR
Czasem zachodzi potrzeba poczenia kilku warunkw w celu wyodrbnienia potrzebnych danych.
Do czenia warunkw mona uy operatorw logicznych AND i OR.
Operator AND zapewnia prawdziwo wielu warunkw. Przykadowo:
SELECT company, Date
FROM customers
WHERE (company LIKE '%Restaurant%') AND (Date='2001-07-08')
W wyniku otrzymamy zestaw danych skadajcy si z nazw firm zawierajcych w sobie sowo
Restaurant, ktre to firmy zostay zaoone dnia 8 lipca 2001 roku.
Operator OR uywany jest wwczas, gdy przynajmniej jeden z warunkw musi by speniony.
Przykadowo:
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 5/19
SELECT company, Date
FROM customers
WHERE (company LIKE '%Restaurant%') OR (Date='2001-07-08')
W wyniku otrzymamy zestaw danych skadajcy si z nazw firm zawierajcych w sobie sowo
Restaurant lub firmy, ktre to firmy zostay zaoone dnia 8 lipca 2001 roku.
Czsto zachodzi potrzeba poczenia operatorw AND i OR w celu otrzymania wymaganych danych.
Przykadowo:
SELECT company, productid, Date
FROM customers
WHERE (company LIKE '%Restaurant%' OR productid=20) AND (Date='2001-07-08')
W wyniku otrzymamy zestaw danych skadajcych si z nazw firm zawierajcych w sobie sowo
Restaurant lub numer identyfikacyjny o wartoci 20, ktre to firmy zostay zaoone dnia 8 lipiec
2001 roku.
Wyszukiwanie z listy wartoci
Do wyszukiwania wartoci z podanej listy suy sowo IN. Przykadowo:
SELECT companyname, country
FROM suppliers
WHERE country IN ('Japan', 'Italy')
W wyniku zapytania otrzymamy wszystkie nazwy firm, ktre mieszcz si w Japonii lub we
Woszech.
Wyszukiwanie wartoci nieznanych
Bazy danych pozwalaj na przechowywanie wartoci NULL w niektrych polach. Wyszukiwanie
rekordw o nieokrelonych lub pustych wartociach ma wiele praktycznych zastosowa.
Przykadowo:
SELECT companyname, fax
FROM suppliers
WHERE fax IS NULL
W wyniku wykonania zapytania otrzymamy wszystkie nazwy firm, dla ktrych warto pola fax jest
pusta.
Wprowadzanie danych
Podstaw dodawania informacji jest instrukcja INSERT. Korzysta ona z nastpujcej skadni:
INSERT INTO [nazwa_serwera.][nazwa_bazy_danych.]
[nazwa_schematu.]nazwa_tabeli
(nazwa_pola1[,nazwa_pola2[,n]])
VALUES
(wartosc1[,wartosc2[,n]])
Przykadowo:
INSERT INTO customers
(customersid, companyname, address, city, phone, fax)
VALUES (PECOF, Pecos Coffee Company, 1900 Street, London,
(604)555-3392, (604)555-3393)
Czasami zachodzi potrzeba wstawienia pustego wiersza do tabeli. Wstawianie takie dokonuje si w
nastpujcy sposb:
INSERT INTO [nazwa_serwera.][nazwa_bazy_danych.]
[nazwa_schematu.]nazwa_tabeli DEFAULT VALUES
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 6/19
Zdarza si, e wystpuje potrzeba przeniesienia informacji z jednego systemu bazodanowego do
drugiego bez utraty danych. Zadanie to mona zrealizowa przy pomocy wielu metod. Omwimy
tutaj dwa sposoby przenoszenia danych: z wykorzystaniem narzdzia BCP oraz instrukcji BULK
INSERT.
Narzdzie BCP uruchamiane jest z wiersza polece. Pozwala ono na import i eksport danych
wielkich rozmiarw. BCP wymaga podania nazwy bazy danych rda, nazwy tabeli lub widoku,
identyfikatora dziaania (in lub out) oraz nazwy zewntrznego pliku danych. Podstawowa skadnia
jest nastpujca:
BCP baza_danych.schemat.{ nazwa_tabeli | nazwa_widoku }
{ in | out }
nazwa_pliku_zewntrznego
modyfikator_zabezpiecze
modyfikator_formatu
Poniszy przykad eksportuje rekordy z tabeli Product do pliku CSV:
bcp AdventureWorks.Production.Product out "Products.txt" T -c
Nastpnie mona zaimportowa dane za pomoc skadni:
bcp AdventureWorks.Production.Product2 in "Products.txt" T -c
Moe zdarzy si sytuacja, e zajdzie potrzeba zaimportowania informacji do bazy danych, ale ze
wzgldw bezpieczestwa nie bdzie mona uy narzdzia BCP. Istnieje polecenie T-SQL, ktre
pozwala na rozwizanie tego problemu. Do wstawiania danych do bazy z poziomu jzyka T-SQL
suy instrukcja BULK INSERT, ktrej przykadowe wywoanie ma posta:
BULK INSERT
[AdventureWorks].[Production].[Product2]
FROM 'C:\Product.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
CODEPAGE = 'ACP'
)
Usuwanie danych
Istniej sytuacje, kiedy musimy usun cz lub wszystkie informacje z bazy danych. Przykadem
moe by skasowanie bdnie wprowadzonych rekordw lub gdy chcemy pozby si starych
informacji z tabel historycznych. We wszystkich tych sytuacjach korzysta si z polecenia DELETE.
Poniej przedstawiono podstawow skadni polecenia DELETE.
DELETE FROM [nazwa_serwera.][nazwa_bazy_danych.]
[nazwa_schematu.]nazwa_tabeli
WHERE warunki
Wiersze mona usun korzystajc z dowolnych kolumn tabeli w klauzuli WHERE. Przykadowo:
DELETE FROM AdventureWorks.Person.Address
WHERE AddressID = 1
Warunek w klauzuli WHERE moe zosta uyty z dowolnymi argumentami do usuwania informacji,
take tymi, ktre okrelaj zakresy danych i korzystaj z logicznych kombinacji AND, OR i NOT.
Przykadowo:
DELETE FROM Production.Product
WHERE (MakeFlag = 1)
AND
(ReorderPoint BETWEEN 200 AND 600)
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 7/19
AND
(SellStarDate<CONVERT(DATETIME, '2000-01-01 00:00:00', 102))
Czasami istnieje potrzeba usunicia wierszy z tabeli na postawie warunkw dotyczcych innej tabeli
lub tabel. Najlepszym sposobem jest wwczas uycie operatora IN. Przykadowo:
DELETE FROM [AdventureWorks].[Production].[ProductInventory]
WHERE ProductID In
(
SELECT ProductID
FROM Production.Product
WHERE (MakeFlag = 1)
AND
(ReorderPoint BETWEEN 200 AND 600)
AND
(SellStarDate<CONVERT(DATATIME,'2000-01-01 00:00:00', 102))
Najlepsz kontrol nad operacjami w bazie danych zapewniaj procedury skadowane. W takiej
sytuacji implementacja procedury skadowanej jest podobna do implementacji innych dziaa
definiowanych wewntrz procedury skadowanej. Przykadowo:
CREATE PROCEDURE [Sales].[CurrencyRate_Delete] @id int
AS
DELETE FROM [AdventureWorks].[Sales].[CurrencyRate]
WHERE CurrencyRateID = @id
GO
Uaktualnianie danych
Do modyfikacji danych w tabelach uywa si polecenia UPDATE. Jego podstawowa skadnia jest
nastpujca:
UPDATE [nazwa_serwera.][nazwa_bazy_danych.]
[nazwa_schematu.]nazwa_tabeli
SET nazwa_kolumny = nowa_wartosc
[WHERE warunek]
Polecenie UPDATE oczywicie mona stosowa bez warunku WHERE.
Przykadowe rozwizanie
Wprowadzanie danych
ebymy mogli wybiera jakiekolwiek dane, w pierwszym kroku powinnimy zasili nasz baz
danych przykadowymi wartociami. Zamy, e mamy tabel Ksiazki w bazie danych
Biblioteka. Struktur tabeli Ksiazki pokazano na rys. 2.

Rys. 2 Tabela Ksiazki w bazie danych Biblioteka
Pokaemy dwa sposoby wstawiania przykadowych danych do tabeli Ksiazki. Sposb pierwszy
polega na wstawieniu pojedynczego wiersza za pomoc instrukcji INSERT. Przykadowo:
INSERT INTO Ksiazki
(ID_Ksiazka, Nazwisko, Imie, Tytul, Wydawnictwo, Rok_wydania, CD)
VALUES ('1', 'Kowalski', 'Jan', 'Programowanie baz danych',
'Microsoft Press', '2006', '1')
W wyniku wykonania powyszej instrukcji tabela Ksiazki bdzie zawieraa jeden rekord, co
pokazano na rys. 3.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 8/19

Rys. 3 Tabela Ksiazki po wstawieniu rekordu
Ja wida sposb ten nie jest zbyt efektywny przy wstawianiu wikszej liczby danych. W sytuacji
kiedy mamy do zaimportowania tysice rekordw, lepszym rozwizaniem jest uycie na przykad
instrukcji BULK INSERT. Zamy e dane, ktre chcemy zaimportowa, znajduj si w pliku
ksiazki.txt, w postaci jak pokazano na rys. 4.

Rys. 4 Dane zawarte w pliku ksiki.txt
Wwczas wywoanie instrukcji importu bdzie wygldao w nastpujcy sposb:
BULK INSERT Ksiazki
FROM 'C:\ksiazki.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
CODEPAGE = 'ACP'
)
Powany problem pojawiby si w sytuacji, kiedy w kolumnie CD przechowywalibymy wartoci
typu logicznego. Wwczas przy eksporcie danych do pliku warto logiczna TRUE lub FALSE
zostaaby zamieniona na warto tekstow 0 lub 1. Jeeli w kolejnym kroku chcielibymy
zaimportowa te same dane do bazy, wwczas pojawiby si bd zwizany z niezgodnoci typw
danych (kolumna ma typ logiczny, a z pliku importujemy dane tekstowe).
Wybieranie danych
Jeeli nasza baza danych jest ju uzupeniona danymi, to w kolejnym kroku moemy zastanowi si,
jakie dane mog by najczciej wybierane przez uytkownikw. Przykadowo dla tabeli Ksiazki
uytkownik najczciej moe wyszukiwa ksiki po:
imionach autorw
wydawnictwie
roku wydania
informacji o pycie CD
kombinacji: autor, wydawnictwo, rok wydania i informacje o pycie CD
Przykadowo jeeli chcielibymy znale autora o nazwisku Kowalski, wwczas instrukcja SELECT
mogaby mie nastpujc posta:
SELECT Nazwisko, Imie, Tytul FROM Ksiazki
WHERE Nazwisko='Kowalski'
Natomiast jeeli chcielibymy znale autorw o nazwisku Kowalski lub Andziski, wwczas
instrukcja SELECT mogaby wyglda w ten sposb:
SELECT Nazwisko, Imie, Tytul FROM Ksiazki
WHERE (Nazwisko='Kowalski') OR (Nazwisko='Andziski')
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 9/19
W sytuacji kiedy chcielibymy znale autorw, ktrych nazwisko koczy si na -ski, wwczas
moglibymy sformuowa instrukcj SELECT nastpujco:
SELECT Nazwisko, Imie, Tytul FROM Ksiazki
WHERE Nazwisko LIKE '%ski'
Oczywicie moglibymy do tego doczy jeszcze wyszukiwanie po dacie, wwczas otrzymalibymy:
SELECT Nazwisko, Imie, Tytul, Rok FROM Ksiazki
WHERE (Nazwisko LIKE '%ski') AND (Rok='2003')
W sytuacji kiedy chcemy znale autora o nazwisku zakoczonym na -ski, ktry wyda w 2003 roku
ksik z doczon pyt CD, moemy uy nastpujcego zapytania:
SELECT Nazwisko, Imie, Tytul, Rok, CD FROM Ksiazki
WHERE (Nazwisko LIKE '%ski' OR Rok='2003') AND (CD='1')
Najbardziej skomplikowanego zapytania potrzebujemy wwczas, gdy chcemy znale autora o
nazwisku zakoczonym na -ski, ktrego ksika wraz z doczon pyt CD zostaa wydana w 2003
roku nakadem wydawnictwa Selion. Wwczas zapytanie moe przyj posta:
SELECT Nazwisko, Imie, Tytul, Rok, Wydawnictwo, CD FROM Ksiazki
WHERE (Nazwisko LIKE='%ski' OR Rok='2003') AND
(Wydawnictwo='Selion') AND (CD='1')
Porady praktyczne
Uwagi oglne
Najlepsz kontrol nad operacjami wykonywanymi na bazie danych zapewniaj procedury
skadowane. Dziki nim moesz zapewni jednolity model dostpu do bazy z poziomu
aplikacji, a take poprawi bezpieczestwo i wydajno. Z tych powodw powiniene
rozway uycie procedur skadowanych we wasnych aplikacjach.
Tworzenie dynamicznych polece wstawiania danych moe zagraa bezpieczestwu bazy,
dlatego wielce prawdopodobnie jest, e administrator bdzie preferowa zabezpieczenia
tabel przez odmow uprawnie zapisu do tabeli. Z tego powodu dobrym rozwizaniem jest
zarzdzanie operacjami wstawiania danych za pomoc procedur skadowanych.
Wybieranie danych
Uycie polecenia SELECT * FROM Department odczytuje wszystkie kolumny z tabeli.
Zazwyczaj nie potrzebujemy informacji o wszystkich kolumnach, natomiast wykonanie
takiego zapytania bez potrzeby moe spowodowa sporo problemw. Przykadowo:
a) Aplikacje mog dziaa nieprawidowo po dodaniu nowych kolumn do tabeli. Jeli ich
twrcy nie przewidzieli takiego moliwoci, nieoczekiwane kolumny zostan
niepoprawnie obsuone.
b) Jeli zostan wybrane wszystkie kolumny, optymalizator zapyta nie bdzie uywa
niektrych indeksw.
Jeli zajdzie potrzeba wykorzystania w klauzuli WHERE operatorw logicznych AND i OR, warto
rozway stosowanie nawiasw. Pozwalaj one precyzyjnie okreli kolejno wykonywania
operacji logicznych.
W wielu przypadkach moemy na wiele sposobw otrzyma tan sam efekt wywoania
zapytania. Przykadowo nastpujce dwa zapytania zwracaj te same rekordy:
SELECT company, Date
FROM customers
WHERE year(ShipDate)=2001 and month(ShipDate)=7

SELECT company, Date
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 10/19
FROM customers
WHERE ShipDate between '2001-07-01' and '2001-07-31'
Pierwsze z zapyta odczytuje dat i miesic. Po odczytaniu wszystkich wierszy wykonuje
obliczenia i je porwnuje. Drugie zapytanie wykonuje tylko porwnanie, bez oblicze,
ponadto jeeli na kolumnie ShipDate znajduje si indeks, to zostanie on uyty a zatem
zapytanie drugie jest szybsze.
Mona uywa jednej, kilku lub wszystkich kolumn do utworzenia warunku w klauzuli WHERE.
Jego wydajno mona poprawi poprzez:
a) zastosowanie klucza gwnego w warunku
b) uycie kolumn, ktre s indeksowane
Wprowadzanie, usuwanie i uaktualnianie danych
Aby skasowa wszystkie wiersze z tabeli, zamiast instrukcji DELETE mona uy instrukcji
TRUNCATE TABLE. Rnica w stosunku do instrukcji DELETE polega na tym, i zadanie
kasowania odbywa si szybciej. Uywajc TRUNCATE TABLE trzeba mie pewno, e tabela
nie ma adnych zwizkw z innymi tabelami.
Mone usuwa wiersze z tabeli za porednictwem widokw, jednak wystpuj tutaj pewne
ograniczenia:
a) Mona usun wiersze tylko z jednej tabeli.
b) Uytkownik musi posiada uprawnienia do usuwania dla widoku.
Mona wykonywa zadania uaktualniajce korzystajc z widokw. W takiej sytuacji istniej
pewne ograniczenia:
a) Uaktualnienia s dozwolone tylko dla kolumn z pojedynczej tabeli.
b) Uytkownik musi mie uprawnienia do zapisu dla widoku.

Uwagi dla studenta
Jeste przygotowany do realizacji laboratorium jeli:
rozumiesz skadni jzyka T-SQL DML
umiesz skonstruowa podstawowe zapytania do bazy danych
umiesz zaimportowa dane do swojej bazy danych
umiesz modyfikowa dane w swojej bazie danych
Pamitaj o zapoznaniu si z uwagami i poradami zawartymi w tym module. Upewnij si, e
rozumiesz omawiane w nich zagadnienia. Jeli masz trudnoci ze zrozumieniem tematu zawartego
w uwagach, przeczytaj ponownie informacje z tego rozdziau i zajrzyj do notatek z wykadw.
Dodatkowe rda informacji
1. Kalen Delaney, Microsoft SQL Server 2005: Rozwizania praktyczne krok po kroku, Microsoft
Press, 2006
W ksice autor przedstawia midzy innymi w jaki sposb pobiera dane z instancji
SQL Server za pomoc jzyka T-SQL. Pozycja polecana dla osb, ktre chciayby
dowiedzie si nieco wicej na temat praktycznych metod pobierania danych.
2. Kalen Delaney, Podstawy baz danych krok po kroku, APN Promise, 2006
Bardzo dobra ksika dla osb pocztkujcych. W atwy i przejrzysty sposb
pokazano, jak naley odczytywa dane z SQL Server, jak je wybiera, modyfikowa,
usuwa i uaktualnia. Ksika oprcz teorii zawiera duo przykadw.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 11/19
3. Deren Bieniek, Randy Dyess, Mike Hotek, Javier Loria, Adam Machanic, Antonio Soto, Adolfo
Wiernik, SQL Server 2005. Implementacja i obsuga, APN Promise, Warszawa 2006
W ksice przedstawiono prac z jzykiem T-SQL DML. Pokazano, w jaki sposb
tworzy zapytania, formatowa wynikowy zbir wierszy oraz modyfikowa dane.
Ksika szczeglnie polecana ze wzgldu na du zawarto wicze
laboratoryjnych.
4. Dusan Petkovic, Microsoft SQL Server 2008: A Beginner's Guide, McGraw-Hill, 2008
Pozycja napisana w sposb przystpny. Wprowadza w SQL Server 2008 w sposb
szybki i atwy. Osoba pocztkujca w SQL Server 2008 znajdzie w niej podstawy z
kadego tematu dotyczcego serwera bazodanowego. W prosty sposb dowiesz si
jak naley tworzy zapytania, formatowa wyniki zapyta oraz modyfikowa dane.
Pozycja szczeglnie polecana dla osb pocztkujcych.

Wodzimierz Dbrowski, Przemysaw
ITA-101 Bazy danych
Laboratorium podstawowe
Problem 1 (czas realizacji 45 min)
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od
firma planuje rozszerzenie
dotd na Twoim wydziale. Zadanie
najczciej bd wykonywali uytkownicy na
Zadanie Tok postpowania
1. Nawi
poczenie z SQL
Server 2008
Uruchom maszyn wirtualn

Kliknij
SQL Server Management Studio
W oknie logowania kliknij
2. Utwrz tabel
testow
Z menu gwnego wybierz
Odszukaj plik
Zaznacz i uruchom (
--
USE PraceDyplomowe
GO

SELECT ID_Osoby, Imie, Nazwisko, Nr_Indeksu, ID_Stopnian
INTO Osoba_kopia
FROM Osoba
GO

INSERT INTO Os
ID_Stopnian)
VALUES ('6','Pawel','Zaremba','65432','3')
GO
3. Zapoznaj si z
poleceniem
SELECT
Zaznacz i uruchom (
wywietlenie zawartoci caej tabeli
na
--
SELECT *
FROM Osoba_kopi
GO
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski

Strona 12/19
Laboratorium podstawowe
Problem 1 (czas realizacji 45 min)
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od
firma planuje rozszerzenie na skal uczelnian systemu prac dyplomowych
. Zadanie, jakie przed Tob stoi, to zdefiniowanie nowych zapyta, ktre
najczciej bd wykonywali uytkownicy na Twojej bazie danych.
Tok postpowania
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Jeli nie masz zdefiniowanej maszyny wirtualnej w
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pl
D:\VirtualPC\Dydaktyka\BD2008.vhd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008
SQL Server Management Studio.
W oknie logowania kliknij Connect.
Z menu gwnego wybierz File -> Open -> File.
Odszukaj plik C:\Labs\Lab06\dml_1.sql.
Zaznacz i uruchom (F5) poniszy fragment kodu:
-- (1) Przygotuj tabele do testowania polecen jezyka DML
USE PraceDyplomowe
GO

SELECT ID_Osoby, Imie, Nazwisko, Nr_Indeksu, ID_Stopnian
INTO Osoba_kopia
FROM Osoba
GO

INSERT INTO Osoba_kopia(ID_Osoby, Imie, Nazwisko, Nr_Indeksu,
ID_Stopnian)
VALUES ('6','Pawel','Zaremba','65432','3')
GO
Zaznacz i uruchom (F5) poniszy fragment kodu odpowiedzialny za
wywietlenie zawartoci caej tabeli Osoba. Wynik dziaania pokazano
na rys. 5:
-- (2) Wyswietl cala zawartosc tabeli Osoba_k
SELECT *
FROM Osoba_kopia
GO
Modu 6
Jzyk SQL DML
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od swojego szefa, e
prac dyplomowych, ktrym zarzdzaa
to zdefiniowanie nowych zapyta, ktre

Jeli nie masz zdefiniowanej maszyny wirtualnej w Microsoft Virtual
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
Microsoft SQL Server 2008 uruchom

(1) Przygotuj tabele do testowania polecen jezyka DML
SELECT ID_Osoby, Imie, Nazwisko, Nr_Indeksu, ID_Stopnian
oba_kopia(ID_Osoby, Imie, Nazwisko, Nr_Indeksu,
) poniszy fragment kodu odpowiedzialny za
. Wynik dziaania pokazano
(2) Wyswietl cala zawartosc tabeli Osoba_kopia
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 13/19

Rys. 5 Wynik wywietlenia caej zawartoci tabeli Osoba_kopia
Zaznacz i uruchom (F5) poniszy fragment kodu odpowiedzialny za
wywietlenie dwch kolumn: Nazwisko i Imie. Wynik dziaania
pokazano na rys. 6:
-- (3) Wybierz kolumny, ktore chcemy wyswietlic
SELECT Nazwisko, Imie
FROM Osoba_kopia
GO

Rys. 6 Wynik wywietlenia dwch kolumn Nazwisko i Imi
Zaznacz i uruchom (F5) poniszy fragment kodu odpowiedzialny za
dodanie literau i aliasu. Wynik dziaania pokazano na rys. 7:
-- (4) Dodajemy literal i alias
SELECT 'Imie i nazwisko: ' + Nazwisko + ' ' + Imie AS Osoba
FROM Osoba_kopia
GO
Wodzimierz Dbrowski, Przemysaw
ITA-101 Bazy danych
Zaznacz i uruchom (
wywietlanie duplikatu. Wynik dziaania pokazano na
--
SELECT DISTINCT Imie
FROM Osoba_kopia
GO
Zaznacz i uruchom (
sortowanie rosnce i malejce. Wynik dziaania pokazano na
--
SELECT Imie, nazwisko
FROM Osoba_kopia ORDER BY Nr_Indeksu
GO
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski

Strona 14/19
Rys. 7 Wynik dodania literau i aliasu
Alias nie jest nazw wasn. Jest to tylko tymczasowy (istniejcy tylko
dla zapytania, w ktrym zosta zdefiniowany,
na stae) nagwek kolumny. Moe zawiera napis bdcy nazw innej
kolumny lub obiektu bazy danych.
Zaznacz i uruchom (F5) poniszy fragment kodu odpowiedzialny za nie
wywietlanie duplikatu. Wynik dziaania pokazano na
-- (5) Nie wyswietlajmy duplikatow
SELECT DISTINCT Imie
FROM Osoba_kopia
GO
Rys. 8 Wynik zapytania bez wywietlania duplikatw
Sowo DISTINCT, oprcz usunicia duplikatw z wynikw, ignoruje
take wartoci puste w zbiorze rekordw (tzn. gdy w wybranym
zestawie zdarzy si wiersz, w ktrym wszystki
zostanie on wywietlony).
Zaznacz i uruchom (F5) poniszy fragment kodu odpowied
sortowanie rosnce i malejce. Wynik dziaania pokazano na
-- (6) sortujmy rekordy rosnaco (ASC) i malejaco (DESC)
SELECT Imie, nazwisko Nr_Indeksu
FROM Osoba_kopia ORDER BY Nr_Indeksu DESC
GO
Modu 6
Jzyk SQL DML

Wynik dodania literau i aliasu
nie jest nazw wasn. Jest to tylko tymczasowy (istniejcy tylko
nie zapisywany nigdzie
na stae) nagwek kolumny. Moe zawiera napis bdcy nazw innej
) poniszy fragment kodu odpowiedzialny za nie
wywietlanie duplikatu. Wynik dziaania pokazano na rys. 8:

Wynik zapytania bez wywietlania duplikatw
oprcz usunicia duplikatw z wynikw, ignoruje
take wartoci puste w zbiorze rekordw (tzn. gdy w wybranym
wszystkie pola s puste, nie
) poniszy fragment kodu odpowiedzialny za
sortowanie rosnce i malejce. Wynik dziaania pokazano na rys. 9:
(6) sortujmy rekordy rosnaco (ASC) i malejaco (DESC)
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 15/19

Rys. 9 Wynik sortowania
Zaznacz i uruchom (F5) poniszy fragment kodu odpowiedzialny za
ogranicenie liczby rekordw. Wynik dziaania pokazano na rys. 10.
-- (7) ograniczmy liczbe rekordow
SELECT Imie, Nazwisko
FROM Osoba_kopia
WHERE Nazwisko = 'Rawa'
GO

Rys. 10 Wynik ograniczenia liczby rekordw
Zaznacz i uruchom (F5) poniszy fragment kodu odpowiedzialny za
ogranicenie liczby rekordw z uyciem operatora wiekszoci. Wynik
dziaania pokazano na rys. 11:
-- (8) wyprobujmy operator wiekszosci
SELECT Imie, Nazwisko, Nr_Indeksu
FROM Osoba_kopia
WHERE Nr_Indeksu >= 110
GO
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 16/19

Rys. 11 Wynik ograniczenia liczby rekordw z uzyciem operatora wikszoci
Zaznacz i uruchom (F5) poniszy fragment kodu odpowiedzialny za
ogranicenie liczby rekordw z uyciem operatora OR. Wynik dziaania
pokazano na rys. 12:
-- (9) wyprobujmy operator OR
SELECT Imie, Nazwisko, Nr_Indeksu
FROM Osoba_kopia
WHERE Nr_Indeksu < 110 OR Nr_Indeksu >= 115
GO

Rys. 12 Wynik ograniczenia liczby rekordw z uzyciem operatora OR
Zaznacz i uruchom (F5) poniszy fragment kodu odpowiedzialny za
ogranicenie liczny rekordw z wyszukiwaniem w zbiorze wartoci.
Wynik dziaania pokazano na rys. 13.
-- (10) wyszukajmy w zbiorze wartosci
SELECT Imie, Nazwisko
FROM Osoba_kopia
WHERE Nazwisko IN ('Rawa','Nowak')
GO
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 17/19

Rys. 13 Wynik ograniczenia liczby rekordw z wyszukiwaniem w zbiorze wartoci
Zaznacz i uruchom (F5) poniszy fragment kodu odpowiedzialny za
ogranicenie liczny rekordw z wyszukiwaniem w przedziale wartoci.
Wynik dziaania pokazano na rys. 14.
-- (11) wyszukajmy w przedziale wartosci
SELECT Imie, Nazwisko, Nr_Indeksu
FROM Osoba_kopia
WHERE Nr_Indeksu BETWEEN 110 AND 115
GO

Rys. 14 Wynik ograniczenia liczby rekordw z wyszukiwaniem w przedziale wartoci
Zaznacz i uruchom (F5) poniszy fragment kodu odpowiedzialny za
ogranicenie liczny rekordw z uyciem operatora LIKE. Wynik dziaania
pokazano na rys. 15.
-- (12) uzyjmy operatora LIKE
SELECT Imie, Nazwisko, Nr_Indeksu
FROM Osoba_kopia
WHERE Nazwisko LIKE '[A-F]%'
GO

Rys. 15 Wynik ograniczenia liczby rekordw z uyciem operatora LIKE
Zaznacz i uruchom (F5) poniszy fragment kodu odpowiedzialny za
zliczanie liczny rekordw. Wynik dziaania pokazano na rys. 16.
-- (13) zliczmy rekordy w tabeli
SELECT Count(*) AS [Liczba osob]
FROM Osoba_kopia
GO
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 18/19

Rys. 16 Zliczanie liczby rekordw
Zaznacz i uruchom (F5) poniszy fragment kodu odpowiedzialny za
dodanie nowego rekordu:
-- (14) dodajmy nowy rekord
INSERT INTO Osoba_kopia(ID_Osoby, Imie, Nazwisko, Nr_Indeksu,
ID_Stopnian)
VALUES ('7','Marek','Kogut','35472','2')
GO
Zaznacz i uruchom (F5) poniszy fragment kodu odpowiedzialny za
zmian istniejcego rekordu:
-- (15) zmienmy istniejacy rekord
UPDATE Osoba_kopia
SET Nazwisko = 'Kogucinski'
WHERE LastName = 'Kogut'
GO
Zaznacz i uruchom (F5) poniszy fragment kodu odpowiedzialny za
zmian istniejcego rekordu:
-- (16) usunmy rekord
DELETE FROM Osoba_kopia
WHERE Nazwisko = 'Kogucinski'
GO
Zaznacz i uruchom (F5) poniszy fragment kodu odpowiedzialny za
usunicie tabeli:
-- (17) usunmy zawartosc tabeli
TRUNCATE TABLE Osoba_kopia
GO


Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 6
ITA-101 Bazy danych Jzyk SQL DML
Strona 19/19
Laboratorium rozszerzone
Zadanie 1 (czas realizacji 90 min)
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od swojego szefa, e
firma zarzdzajca baz AdventureWorks planuje rozszerzenie i modernizacje systemu w celu
spenienia pewnych standardw. Rozszerzenie to wie si z modyfikacj struktury bazy danych
oraz importem do bazy danych wielu milionw rekordw. W konsekwencji w zwizku z
modernizacj systemu bazodanowego oraz spenienia standardw musz zosta przebudowane
zapytania wysyane do obiektw bazy danych. W zwizku z tym cz zapyta powinna zosta
usunita, cz zmodyfikowana, a cz od nowa utworzona.
Zadania jakie przed Tob stoj to:
1. Podjcie decyzji, w jaki sposb usprawni proces importu wielu milionw danych do systemu
bazodanowego.
2. Podjcie decyzji, ktre zapytania w bazie danych pozostan bez zmian, a ktre zostan
zmodyfikowane lub usunite.
3. Podjcie decyzji, jakie nowe zapytania powinny zosta utworzone.



ITA-101 Bazy Danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Modu 7
Wersja 1.0
Indeksy i transakcje
Spis treci
Indeksy i transakcje .............................................................................................................................. 1
Informacje o module ............................................................................................................................ 2
Przygotowanie teoretyczne ................................................................................................................. 3
Przykadowy problem .................................................................................................................. 3
Podstawy teoretyczne.................................................................................................................. 3
Przykadowe rozwizanie ............................................................................................................. 9
Porady praktyczne ..................................................................................................................... 12
Uwagi dla studenta .................................................................................................................... 13
Dodatkowe rda informacji..................................................................................................... 14
Laboratorium podstawowe ................................................................................................................ 15
Problem 1 (czas realizacji 30 min) .............................................................................................. 15
Problem 2 (czas realizacji 15 min) .............................................................................................. 18
Laboratorium rozszerzone ................................................................................................................. 20
Zadanie 1 (czas realizacji 90 min) ............................................................................................... 20

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 7
ITA-101 Bazy danych Indeksy i transakcje
Strona 2/20
Informacje o module
Opis moduu
W module tym znajdziesz informacje na temat dostpu fizycznego do
danych oraz optymalizacji dostpu. Poznasz indeksy i ich rodzaje, a
nastpnie dowiesz si, jakie operacje wykonywane s na indeksach. W
drugiej czci poznasz transakcje, ktre su do zapewnienia spjnoci bazy
danych i maj wpyw na wydajno bazy danych. Dowiesz si, e obsuga
transakcji nie jest rzecz atw i wymaga rozwizywania wielu trudnych
problemw.
Cel moduu
Celem moduu jest zapoznanie czytelnika z podstawowymi mechanizmami
indeksowania oraz struktury pisania transakcji. Zostan przedstawione
proste przykady, ktre maj pokaza mechanizmy obowizujce w
metodach indeksowania oraz w transakcjach.
Uzyskane kompetencje
Po zrealizowaniu moduu bdziesz:
wiedzia, na czym polega zasada dziaania indeksw
potrafi we waciwy sposb dobiera polityk indeksowania
zna zasad funkcjonowania transakcji
potrafi we waciwy sposb pisa proste transakcje
Wymagania wstpne
Przed przystpieniem do pracy z tym moduem powiniene:
umie stworzy baz danych wraz z jej podstawowymi obiektami
(patrz: modu 3)
zna zaawansowane mechanizmy programowania w jzyku T-SQL
(patrz: modu 9)
zna podstawowe mechanizmy bezpieczestwa (patrz: modu 11)
Mapa zalenoci moduu
Zgodnie z map zalenoci przedstawion na rys. 1, przed przystpieniem
do realizacji tego moduu naley zapozna si z materiaem zawartym
w moduach 3, 8 i 11.

Rys. 1 Mapa zalenoci moduu
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 7
ITA-101 Bazy danych Indeksy i transakcje
Strona 3/20
Przygotowanie teoretyczne
Przykadowy problem
Tak jak ju Wiesz z bazy danych moe korzysta wielu uytkownikw, dysponujcych rnorakimi
uprawnieniami i majcych dostp do rnych obiektw w bazie danych. W zwizku z tym jednym z
podstawowych zada, jakie stoi przed osobami odpowiedzialnymi za prawidowe funkcjonowanie
bazy danych, jest dobr odpowiedniej polityki indeksowania, ktra pozwoli na szybsze
przeszukiwanie bazy danych. Bezporednio z polityk indeksowania bazy danych zwizana jest
optymalizacja i strojenie bazy danych, midzy innymi poprzez przebudow indeksw.
Kolejnym mechanizmem, z jakim bardzo czsto moemy si spotka, s transakcje. Wedug definicji
s to operacje, ktre s niepodzielne i musz by wykonane w caoci. Innym wanym zadaniem
transakcji jest zapewnienie spjnoci bazy danych oraz umoliwienie rwnolegych operacji na niej.
W celu dobrego pisania transakcji potrzebna jest znajomo zaawansowanego programowania w
jzyku T-SQL. Transakcje stanowi bardzo wany element programowania baz danych i powinny
by pisane profesjonalnie. Przykadem transakcji moe by wypata pienidzy z bankomatu,
patno kart debetow itp.
Podstawy teoretyczne
Dostp fizyczny do danych
Zrozumienie mechanizmu dostpu do danych zapisanych w bazie danych jest bardzo istotne dla
zrozumienia zasad dziaania indeksw.
Jak wiadomo, dane w bazach danych w sposb trway s zapisywane na dyskach optycznych,
magnetycznych lub rodzinach nonikw o dostpie bezporednim, takich jak macierze RAID (ang.
Redundant Array of Independent Disks). Zasady dziaania tego typu nonikw oraz pojcia gowicy,
cylindrw, strony danych itp. powinny by Ci znane z przedmiotu Podstawy Informatyki lub
podobnego.
System zarzdzania bazami danych najczciej nie zajmuje si fizyczn obsug dyskw. W procesie
dostpu do danych bior udzia:
Meneder plikw posiada wiedz o strukturze systemu plikw i jest odpowiedzialny za
odszukanie odpowiedniego pliku.
Meneder dysku posiada wiedz na temat fizycznej organizacji dysku i jest odpowiedzialny
za odnalezienie odpowiedniej strony danych.
Schemat acucha dostpu do danych pokazany jest na rys. 2.

Rys. 2 Schemat dostpu do danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 7
ITA-101 Bazy danych Indeksy i transakcje
Strona 4/20
Optymalizacja dostpu
Zasadniczy czas dostpu do danych bazy to czas odczytu danych z dyskw. W celu optymalizacji
tego dostpu stosuje si metod zwan klastrowaniem.
Klastrowanie polega na deniu do utrzymania logicznie powizanych rekordw blisko siebie na
dysku. Taka organizacja danych znacznie przyspiesza dostp do nich. Aby odczyta dane powizane,
gowica nie musi wykonywa duych ruchw, a tym samym malej czasy wyszukiwania.
Rozrniamy dwa rodzaje klastrowania:
Klastrowanie wewntrzplikowe polega na grupowaniu rekordw obok siebie wewntrz
jednego pliku.
Klastrowanie midzyplikowe polega na umieszczaniu na stronie obok siebie rekordw
pochodzcych z wicej ni jednego pliku (tabeli).
Optymalizacja dostpu do danych sprowadza si w zasadzie do odpowiedniego zarzdzania
stronami i decydowania, w jaki sposb dane maj by klastrowane.
Wicej na temat fizycznej struktury danych moesz znale w module 4
Indeksy i ich zastosowanie
Zastanowimy si teraz nad problemem wyszukiwania danych w tabeli. Na przykad zamy, e w
tabeli Studenci chcemy znale studenta o nazwisku Nowak.
Tab. 1 Przykadowa tabela bazy studentw
ID Nazwisko Imie Wydzial
1 Olacki Jan Elektryczny
2 Babicki Adam Mechaniczny
3 Nowak Jerzy Elektryczny
1 Adamski Adam Elektronika

Wiersze zapisane s w bazie w kolejnoci ich wpisywania i nie s w szczeglny sposb sortowane.
Co robi wobec tego system, kiedy wydajemy polecenie odnalezienia rekordu zawierajcego
informacje o Nowaku, np.:
SELECT imie, nazwisko FROM Studenci WHERE Nazwisko = 'Nowak'
System musi przeszuka ca tabel (skanowanie wszystkich stron danych zawierajcych dane z
tabeli) i przejrze wszystkie rekordy tej tabeli, aby mie pewno, e odnalaz rekordy zawierajce
nazwisko Nowak. Operacja taka jest oczywicie czasochonna.
Podobnie jest, gdy w ksice poszukujemy jakiego hasa (na przykad w podrczniku do baz danych
szukamy informacji o indeksach). Aby znale szukan informacj, powinnimy przeczyta ca
ksik. Na szczcie niektre ksiki s wyposaone na kocu w specjalne zestawienie hase czyli
w indeks.
Nasze postpowanie przebiega wwczas nastpujco:
1. Odszukujemy poszukiwane haso w indeksie, ktry jest uporzdkowany alfabetycznie (co
znacznie uatwia nam odnalezienie hasa).
2. Odczytujemy w indeksie numer strony, na ktrej haso to wystpuje w ksice.
3. Otwieramy ksik na odpowiedniej stronie.
4. Przegldamy stron w poszukiwaniu naszego hasa.
5. Odczytujemy informacje zwizane z szukanym hasem.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 7
ITA-101 Bazy danych Indeksy i transakcje
Strona 5/20
Idea dziaania indeksw w bazie danych jest dokadnie taka sama.
Indeks okrelony na atrybucie A relacji jest mechanizmem, ktry pozwala na efektywne
wyszukiwanie krotek o ustalonej wartoci skadowej atrybutu A. Jak wic wygldaby indeks dla
tabeli Studenci?
Indeks okrelany jest dla konkretnego pola. Mwimy wwczas, e pole to jest polem
indeksowanym. W wypadku tabeli Studenci moemy jako pole indeksowane wybra pole
Nazwisko, wwczas zaoenie indeksu na tym polu bdzie oznaczao zaoenie przez system
dodatkowej tabeli, w ktrej umieszczone zostan nazwiska studentw z tabeli Studenci oraz
przesanki, gdzie naley szuka (na ktrej stronie danych) penej informacji o wybranych
studentach. Dodatkowo rekordy w tabeli indeksu zostan posortowane w kolejnoci alfabetycznej
nazwisk. Poszukiwanie naszego studenta Nowaka bdzie teraz przebiega znacznie szybciej.
Dziaanie i rola indeksw polega gwnie na przyspieszeniu wyszukiwania rekordw w bazie
danych. Niestety obciaj one dodatkowo system w czasie aktualizacji lub wstawiania danych,
bowiem oprcz umieszczenia rekordu w bazie musi on rwnie dokona wpisu w tabeli indeksu
oraz ponownie posortowa trzymane w niej rekordy.
Zalety i wady stosowania indeksw zebrano w tab. 2.
Tab. 2 Zalety i wady stosowania indeksw
Zalety Wady
Przyspieszaj dostp do danych Zajmuj miejsce na dysku
Wymuszaj unikatowo wierszy Zwikszaj obcienie systemu

Niektre z pl warto indeksowa, inne natomiast nie powinny by nigdy indeksowane. Do pierwszej
grupy mona zaliczy:
klucze podstawowe i obce (czsto s indeksowane automatycznie)
pola, po ktrych czsto nastpuje wyszukiwanie
pola, do ktrych dostp nastpuje w ustalonej, uporzdkowanej kolejnoci
Nie naley indeksowa:
pl, do ktrych rzadko odwouj si zapytania
pl, ktre zawieraj tylko kilka wartoci unikatowych
pl zawierajcych dane typu image, bit czy obiekt OLE
Indeksy mog by zakadane na jednym polu lub na kilku jednoczenie.
Rodzaje indeksw
Indeksy mona klasyfikowa w rny sposb. My podzielimy indeksy na dwie grupy:
indeksy grupowane (klastrowe)
indeksy niegrupowane (nieklastrowe)
Indeksy grupowane
Indeks grupowany dziaa na podobnej zasadzie, co ksika telefoniczna. Zawiera strony szybkiego
dostpu do danych (w ksice telefonicznej na pocztku znajduje si alfabetyczny spis mwicy o
tym, na ktrej stronie szuka nazwisk, firm czy instytucji zaczynajcych si na dan liter alfabetu).
Strony te s uoone w odwrcone drzewo i przechowuj tylko uoone alfabetycznie wartoci
indeksowanego pola oraz wskaniki do stron znajdujcych si w niszej warstwie drzewa.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Na samym dole drzewa znajduj si strony zawierajce posortowane wg indek
(w ksice telefonicznej zawarto te jest posortowana
Przeszukiwanie indeksu odbywa si z gry na d na nastpujcej zasadzie: porwnywana jest
szukana warto pola indeksowanego z wartocia
indeksu jeli znajdzie si warto wiksza od wartoci szukanej, wtedy nastpuje skok jeden
poziom niej do strony wskazywanej przez ostatni pozycj (na ostatnio sprawdzanej stronie), ktra
nie bya wiksza od szukanej wartoci.
Kada pozycja na stronach zawiera wskanik do strony danych jeden poziom niej w hierarchii
indeksu. Dziki takiej strukturze przeszukiwane s tylko wybrane strony z danymi, nie za wszystkie
strony zawierajce dane z wybranej tabel
Indeksy niegrupowane
Indeks niegrupowany dziaa na podobnej zasadzie,
telefonicznej). Indeks niegrupowany budowany jest na stronach danych, ktre nie s sortowane.
Skada si z co najmniej dw
Na stronach poziomu niepomocniczego, podobnie jak w przypadku indeksu grupowanego,
przechowywane s wartoci indeksowanego pola ze wskanikami do poziomu niej w drze
indeksu.
Strony poziomu pomocniczego zwane te limi i zawieraj wskaniki do konkretnych stron danych
(ktre nie s posortowane). Wskanik taki zawiera nastpujce dane: ID pliku, numer strony,
numer wiersza na stronie.
Przeszukiwanie indeksu niegrup
grupowanym. Po dojciu do poziomu pomocniczego nastpuj skoki do stron danych (do
konkretnych wierszy).
emysaw Kowalczuk, Konrad Markowski

Strona 6/20
Na samym dole drzewa znajduj si strony zawierajce posortowane wg indek
(w ksice telefonicznej zawarto te jest posortowana wg nazwisk lub nazw firm czy instytucji).
Przeszukiwanie indeksu odbywa si z gry na d na nastpujcej zasadzie: porwnywana jest
szukana warto pola indeksowanego z wartociami zapisanymi (i posortowanymi) na stronach
jeli znajdzie si warto wiksza od wartoci szukanej, wtedy nastpuje skok jeden
poziom niej do strony wskazywanej przez ostatni pozycj (na ostatnio sprawdzanej stronie), ktra
od szukanej wartoci.
Kada pozycja na stronach zawiera wskanik do strony danych jeden poziom niej w hierarchii
indeksu. Dziki takiej strukturze przeszukiwane s tylko wybrane strony z danymi, nie za wszystkie
strony zawierajce dane z wybranej tabeli.
Rys. 3 Indeks grupowany
Indeks niegrupowany dziaa na podobnej zasadzie, co indeks w typowej ksice (ale nie w
telefonicznej). Indeks niegrupowany budowany jest na stronach danych, ktre nie s sortowane.
ch poziomw: poziomu niepomocniczego i poziomw pomocniczych
Na stronach poziomu niepomocniczego, podobnie jak w przypadku indeksu grupowanego,
przechowywane s wartoci indeksowanego pola ze wskanikami do poziomu niej w drze
Strony poziomu pomocniczego zwane te limi i zawieraj wskaniki do konkretnych stron danych
(ktre nie s posortowane). Wskanik taki zawiera nastpujce dane: ID pliku, numer strony,

Przeszukiwanie indeksu niegrupowanego odbywa si na podobnej zasadzie, jak w indeksie
grupowanym. Po dojciu do poziomu pomocniczego nastpuj skoki do stron danych (do
Rys. 4 Indeks niegrupowany
Modu 7
Indeksy i transakcje
Na samym dole drzewa znajduj si strony zawierajce posortowane wg indeksowanego pola dane
wg nazwisk lub nazw firm czy instytucji).
Przeszukiwanie indeksu odbywa si z gry na d na nastpujcej zasadzie: porwnywana jest
mi zapisanymi (i posortowanymi) na stronach
jeli znajdzie si warto wiksza od wartoci szukanej, wtedy nastpuje skok jeden
poziom niej do strony wskazywanej przez ostatni pozycj (na ostatnio sprawdzanej stronie), ktra
Kada pozycja na stronach zawiera wskanik do strony danych jeden poziom niej w hierarchii
indeksu. Dziki takiej strukturze przeszukiwane s tylko wybrane strony z danymi, nie za wszystkie

indeks w typowej ksice (ale nie w
telefonicznej). Indeks niegrupowany budowany jest na stronach danych, ktre nie s sortowane.
poziomw pomocniczych.
Na stronach poziomu niepomocniczego, podobnie jak w przypadku indeksu grupowanego,
przechowywane s wartoci indeksowanego pola ze wskanikami do poziomu niej w drzewie
Strony poziomu pomocniczego zwane te limi i zawieraj wskaniki do konkretnych stron danych
(ktre nie s posortowane). Wskanik taki zawiera nastpujce dane: ID pliku, numer strony,
owanego odbywa si na podobnej zasadzie, jak w indeksie
grupowanym. Po dojciu do poziomu pomocniczego nastpuj skoki do stron danych (do

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 7
ITA-101 Bazy danych Indeksy i transakcje
Strona 7/20
Operacje na indeksach
Indeksy s najczciej tworzone automatycznie dla kluczy gwnych oraz pl, dla ktrych ma by
wymuszona unikatowo. Mona te tworzy je dla innych pl, korzystajc z polecenia jzyka SQL
CREATE INDEX.
Poniej podano przykad utworzenia indeksu grupowanego dla dla pola Nazwisko w tabeli
Recenzent:
USE PraceDyplomowe
CREATE CLUSTERED INDEX cl_nazwisko
ON Recenzent (Nazwisko)
Indeks moe te by zakadany na kilku polach jednoczenie. Poniszy przykad pokazuje sposb
definiowania unikalnego indeksu na polach Nazwisko i Imie tabeli Osoba:
CREATE UNIQUE INDEX Indeks_Osoba
ON Osoba (Nazwisko, Imie)
Zaoenie takiego indeksu spowoduje, e bdzie moliwe wprowadzanie jedynie unikatowych par
imi-nazwisko.
Transakcje
Transakcja jest cigiem operacji wykonywanych na bazie danych, ktre s niepodzielne i musz by
wykonane w caoci. Jest wic jednostk logiczn operowania na bazie. Podlega ona kontroli i
sterowaniu.
Kada transakcja moe skada si z nastpujcych operacji:
czytanie danej x przez transakcj T
zapisanie danej x przez transakcj T
wycofanie transakcji T
zatwierdzenie transakcji T
Transakcje su do zapewnienia spjnoci bazy danych oraz umoliwiaj rwnolege wykonywanie
operacji na niej. Jeli wiele procesw dziaa jednoczenie na bazie danych, to moe atwo doj do
utraty spjnoci danych, a co za tym idzie do bdw i otrzymywania niewaciwych rezultatw
operacji.
Transakcja zabezpiecza rwnie przed czciowym wykonaniem zbioru operacji, ktre mog by
przerwane, na przykad w wyniku awarii. Klasycznym przykadem jest operacja polegajca na
wypacaniu pienidzy z bankomatu. W uproszczeniu operacje realizowane w czasie wypaty
pienidzy z bankomatu s nastpujce:
1. Klient wczytuje kart magnetyczn i jest rozpoznawany.
2. Klient okrela sum wypaty.
3. Konto klienta jest sprawdzane.
4. Konto jest zmniejszane o sum wypaty.
5. Wysyane jest zlecenie do kasy.
6. Bankomat odlicza sum i koryguje stan gotwki w bankomacie.
7. Bankomat wypaca klientowi pienidze.
Zaistnienie awarii w kroku 5 lub 6 moe prowadzi do niezbyt przyjemnej sytuacji dla posiadacza
konta. Transakcje pozwalaj na uniknicie tego typu niespodzianek.
Postulaty AICD
Kada transakcja powinna spenia cztery postulaty. S to tak zwane postulaty AICD.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
1. Atomowo (ang. atomicity
operacje, albo adna.
2. Spjno (ang. consistency
zakoczeniu stan jest rwnie spjny (w midzyczasie stan moe by chwilowo niespjny).
3. Izolacja (ang. isolation
ich dziaania. Czynnoci wykonane przez dan t
a do jej zakoczenia.
4. Trwao (ang. durability
dysku) i nie mog by odwrcone przez zdarzenia losowe (np. wyczenie prdu).
Transakcje w SQL
W jzyku SQL kada transakcja rozpoczyna si sowem
COMMIT oznaczajc pomylne zakoczenie transakcji lub operacj
wycofanie transakcji.
Dowolne polecenie SELECT
Transakcja trwa a do wydania komendy
cofajcej). Transakcja moe obj dowoln liczb
CREATE i innych.
Stosowanie zamkw oraz problem
Zarzdzanie transakcjami wymaga zastosowania specjalnego moduu (zwanego
oraz protokou zarzdzania transakcjami. W celu uniknicia problemw ze wspbienym dostpem
stosuje si mechanizmy blokady dostpu do danych
Wyrniamy dwa typy zamkw:
Zamek typu X zaoenie zamka tego typu cakowicie blokuje dostp do obiektu dla innych
transakcji.
Zamek typu S zaoenie zamka tego typu powoduje, e inne transakcje mog czyta dane,
ale nie mog ich modyfikowa.
Najczciej stosowanym w bazach relacyjnych protokoem zarzdzania transakcjami jest protok
blokowania dwufazowego 2PL (ang.
nastpujce:
1. Jeli dana operacja pi(x) moe by wykonana, to planista zakada bl
transakcji Ti i operacj przekazuje do wykonania. Jeli natomiast operacja ta nie moe by
wykonana, to umieszcza j w kolejce.
2. Zdjcie zaoonej blokady moe nastpi dopiero wtedy, gdy operacja zostanie wykonana.
3. Jeli nastpio zdjcie jakiejkolwiek blokady zaoonej dla transakcji T, to dla tej transakcji nie
mona zaoy adnej innej blokady.
Postpujc zgodnie z tymi zasadami przebieg wykonania transakcji wymusza dwie fazy obsugi
transakcji. W pierwszej fazie s zakadane blokady
druga jest znacznie szybsza od pierwszej.
emysaw Kowalczuk, Konrad Markowski

Strona 8/20
atomicity) w ramach jednej transakcji wykonuj si albo wszystkie
operacje, albo adna.
consistency) o ile transakcja zastaa baz danych w spjnym stanie, po jej
zakoczeniu stan jest rwnie spjny (w midzyczasie stan moe by chwilowo niespjny).
isolation) transakcja nie wie nic o innych transakcjach i nie musi uwzgldnia
ich dziaania. Czynnoci wykonane przez dan transakcj s niewidoczne dla innych transakcji
a do jej zakoczenia.
durability) po zakoczeniu transakcji jej skutki s na trwale zapamitane (na
dysku) i nie mog by odwrcone przez zdarzenia losowe (np. wyczenie prdu).
W jzyku SQL kada transakcja rozpoczyna si sowem BEGIN TRANSACTION
oznaczajc pomylne zakoczenie transakcji lub operacj ROLLBACK
SELECT, INSERT, UPDATE, DELETE czy CREATE rozpoczyna transakcj.
Transakcja trwa a do wydania komendy COMMIT (potwierdzajcej) lub
cofajcej). Transakcja moe obj dowoln liczb polece SELECT, INSERT
Stosowanie zamkw oraz problem z zakleszczaniem
Zarzdzanie transakcjami wymaga zastosowania specjalnego moduu (zwanego
oraz protokou zarzdzania transakcjami. W celu uniknicia problemw ze wspbienym dostpem
stosuje si mechanizmy blokady dostpu do danych, tzw. zamki.
Wyrniamy dwa typy zamkw:
zaoenie zamka tego typu cakowicie blokuje dostp do obiektu dla innych
zaoenie zamka tego typu powoduje, e inne transakcje mog czyta dane,
ale nie mog ich modyfikowa.
ajczciej stosowanym w bazach relacyjnych protokoem zarzdzania transakcjami jest protok
blokowania dwufazowego 2PL (ang. two-phase locking). Reguy pracy protokou 2PL s
Jeli dana operacja pi(x) moe by wykonana, to planista zakada bl
transakcji Ti i operacj przekazuje do wykonania. Jeli natomiast operacja ta nie moe by
wykonana, to umieszcza j w kolejce.
Zdjcie zaoonej blokady moe nastpi dopiero wtedy, gdy operacja zostanie wykonana.
ie jakiejkolwiek blokady zaoonej dla transakcji T, to dla tej transakcji nie
mona zaoy adnej innej blokady.
Postpujc zgodnie z tymi zasadami przebieg wykonania transakcji wymusza dwie fazy obsugi
transakcji. W pierwszej fazie s zakadane blokady, a w drugiej nastpuje ich zdejmowanie. Faza
druga jest znacznie szybsza od pierwszej.
Rys. 5 Protok blokowania dwufazowego 2PL
Modu 7
Indeksy i transakcje
w ramach jednej transakcji wykonuj si albo wszystkie
w spjnym stanie, po jej
zakoczeniu stan jest rwnie spjny (w midzyczasie stan moe by chwilowo niespjny).
transakcja nie wie nic o innych transakcjach i nie musi uwzgldnia
ransakcj s niewidoczne dla innych transakcji
po zakoczeniu transakcji jej skutki s na trwale zapamitane (na
dysku) i nie mog by odwrcone przez zdarzenia losowe (np. wyczenie prdu).
BEGIN TRANSACTION, a koczy operacj
ROLLBACK, oznaczajc
rozpoczyna transakcj.
(potwierdzajcej) lub ROLLBACK (zrywajcej,
INSERT, UPDATE, DELETE,
Zarzdzanie transakcjami wymaga zastosowania specjalnego moduu (zwanego moduem planisty)
oraz protokou zarzdzania transakcjami. W celu uniknicia problemw ze wspbienym dostpem
zaoenie zamka tego typu cakowicie blokuje dostp do obiektu dla innych
zaoenie zamka tego typu powoduje, e inne transakcje mog czyta dane,
ajczciej stosowanym w bazach relacyjnych protokoem zarzdzania transakcjami jest protok
). Reguy pracy protokou 2PL s
Jeli dana operacja pi(x) moe by wykonana, to planista zakada blokad na dan x dla
transakcji Ti i operacj przekazuje do wykonania. Jeli natomiast operacja ta nie moe by
Zdjcie zaoonej blokady moe nastpi dopiero wtedy, gdy operacja zostanie wykonana.
ie jakiejkolwiek blokady zaoonej dla transakcji T, to dla tej transakcji nie
Postpujc zgodnie z tymi zasadami przebieg wykonania transakcji wymusza dwie fazy obsugi
, a w drugiej nastpuje ich zdejmowanie. Faza

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Stosowanie zamkw moe prowadzi do zjawiska zwanego
tym, e transakcje blokuj si, oczekujc siebie nawzajem. Powodem powstania zakleszcze jest
konieczno oczekiwania na
Wemy pod uwag dwie transakcje A i B. Transakcja A blokuje zasb X i da dostpu do zasobu
Transakcja B blokuje zasb Y i da dostpu do zasobu X. W wyniku tego dochodzi do zakleszczenia
i adna z transakcji nie moe wykonywa swojej akcji.
Inne przykady zakleszcze s pokazane na
Stemple czasowe oraz ziarnisto transakcji
Kada transakcja w momencie startu do
precyzyjny, aby mc po nim
danych, transakcja dziaa na swoich wasnych kopiach a do potwierdzenia.
Kady obiekt bazy danych przechowuje dwa stemple czasowe: transakcji, ktra ostatnio braa
obiekt do czytania i transakcji, ktra ostatnio braa obiekt do modyfikacji. W momencie
potwierdzenia sprawdza si stemple transakcji oraz wszystkich pobranych przez ni obiektw.
Mona do atwo wyprowadzi reguy zgodnoci, np. jeeli obiekt by aktualizowany i st
obiekcie do aktualizacji jest taki sam, jak stempel transakcji, to
w przeciwnym razie naley
na obiekcie do aktualizacji jest starszy ni ste
w przeciwnym razie naley j
Z problemem zakadania zamkw wie si rwnie problem ziarnistoci. Ziarnisto oznacza
decyzj, co bdzie niepodzieln jednostk, na ktr zak
dotyczy: bazy danych, relacji, rekordu, elementu rekordu, pojedynczego atrybutu, fizycznej strony
pamici.
Grube ziarna mog zapewni znaczny poziom bezpieczestwa, jednak daj niewielki stopie
wspbienoci procesw. Z kolei mae ziarna wi si z duymi nakadami na zakadanie zamkw
oraz ich obsug.
Przykadowe rozwizanie
Optymalizacja bazy danych
Bardzo czsto dziaajca od jakiego czasu baza danych, na ktrej wykonuje si bardzo duo
operacji, zaczyna dziaa woniej ni podczas pierwszego uruchomienia. Wwczas do gwnego
zadania administratora bazy danych naley zoptymalizowanie
tego celu moe posuy nam narzdzie SQL Server Profiler.
emysaw Kowalczuk, Konrad Markowski

Strona 9/20
Stosowanie zamkw moe prowadzi do zjawiska zwanego zakleszczaniem.
transakcje blokuj si, oczekujc siebie nawzajem. Powodem powstania zakleszcze jest
konieczno oczekiwania na zwolnienie zasobu, do ktrego dostp potrzebuj.
Wemy pod uwag dwie transakcje A i B. Transakcja A blokuje zasb X i da dostpu do zasobu
Transakcja B blokuje zasb Y i da dostpu do zasobu X. W wyniku tego dochodzi do zakleszczenia
i adna z transakcji nie moe wykonywa swojej akcji.
Inne przykady zakleszcze s pokazane na rys. 6.

Rys. 6 Zakleszczenie transakcji
Stemple czasowe oraz ziarnisto transakcji
Kada transakcja w momencie startu dostaje unikalny stempel czasowy. Stempel ten jest
nim rozrnia transakcje. adna zmiana nie jest nanoszona do bazy
danych, transakcja dziaa na swoich wasnych kopiach a do potwierdzenia.
Kady obiekt bazy danych przechowuje dwa stemple czasowe: transakcji, ktra ostatnio braa
zytania i transakcji, ktra ostatnio braa obiekt do modyfikacji. W momencie
potwierdzenia sprawdza si stemple transakcji oraz wszystkich pobranych przez ni obiektw.
Mona do atwo wyprowadzi reguy zgodnoci, np. jeeli obiekt by aktualizowany i st
obiekcie do aktualizacji jest taki sam, jak stempel transakcji, to transakcja
w przeciwnym razie naley j zerwa i uruchomi od nowa. Jeeli obiekt by tylko czytany i stempel
na obiekcie do aktualizacji jest starszy ni stempel transakcji, to transakcja moe zosta wykonana
w przeciwnym razie naley j zerwa i uruchomi od nowa.
Z problemem zakadania zamkw wie si rwnie problem ziarnistoci. Ziarnisto oznacza
decyzj, co bdzie niepodzieln jednostk, na ktr zakada si blokady. Poziomy ziarnistoci mog
dotyczy: bazy danych, relacji, rekordu, elementu rekordu, pojedynczego atrybutu, fizycznej strony
Grube ziarna mog zapewni znaczny poziom bezpieczestwa, jednak daj niewielki stopie
rocesw. Z kolei mae ziarna wi si z duymi nakadami na zakadanie zamkw
Przykadowe rozwizanie
Optymalizacja bazy danych
Bardzo czsto dziaajca od jakiego czasu baza danych, na ktrej wykonuje si bardzo duo
zaczyna dziaa woniej ni podczas pierwszego uruchomienia. Wwczas do gwnego
zadania administratora bazy danych naley zoptymalizowanie jej oraz przebudowa indeksw. Do
tego celu moe posuy nam narzdzie SQL Server Profiler.
Modu 7
Indeksy i transakcje
. Zakleszczanie polega na
transakcje blokuj si, oczekujc siebie nawzajem. Powodem powstania zakleszcze jest
zasobu, do ktrego dostp potrzebuj.
Wemy pod uwag dwie transakcje A i B. Transakcja A blokuje zasb X i da dostpu do zasobu Y.
Transakcja B blokuje zasb Y i da dostpu do zasobu X. W wyniku tego dochodzi do zakleszczenia

staje unikalny stempel czasowy. Stempel ten jest na tyle
rozrnia transakcje. adna zmiana nie jest nanoszona do bazy

Kady obiekt bazy danych przechowuje dwa stemple czasowe: transakcji, ktra ostatnio braa
zytania i transakcji, ktra ostatnio braa obiekt do modyfikacji. W momencie
potwierdzenia sprawdza si stemple transakcji oraz wszystkich pobranych przez ni obiektw.
Mona do atwo wyprowadzi reguy zgodnoci, np. jeeli obiekt by aktualizowany i stempel na
transakcja moe zosta wykonana,
od nowa. Jeeli obiekt by tylko czytany i stempel
transakcja moe zosta wykonana,
Z problemem zakadania zamkw wie si rwnie problem ziarnistoci. Ziarnisto oznacza
ada si blokady. Poziomy ziarnistoci mog
dotyczy: bazy danych, relacji, rekordu, elementu rekordu, pojedynczego atrybutu, fizycznej strony
Grube ziarna mog zapewni znaczny poziom bezpieczestwa, jednak daj niewielki stopie
rocesw. Z kolei mae ziarna wi si z duymi nakadami na zakadanie zamkw
Bardzo czsto dziaajca od jakiego czasu baza danych, na ktrej wykonuje si bardzo duo
zaczyna dziaa woniej ni podczas pierwszego uruchomienia. Wwczas do gwnego
oraz przebudowa indeksw. Do
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 7
ITA-101 Bazy danych Indeksy i transakcje
Strona 10/20
SQL Server Profiler to potne cho rzadko wykorzystywane narzdzie do analizy problemw z
wydajnoci bazy danych. Wykorzystujc profiler do przechwytywania ladw (ang. traces)
aktywnoci bazy danych mona analizowa wzorce zapyta, aby wykry problemy z wydajnoci
nawet przed ich uwidocznieniem w aplikacjach.
W pierwszym kroku naley zdefiniowa lad. Wewntrz silnika bazy danych SQL Server udostpnia
podsystem zdarze nazwany SQL Trace, ktry opiera si na zewntrznych interfejsie. Interfejs ten
pozwala na wywoywanie SQL Trace z wykorzystaniem rnorodnych parametrw.
SQL Server Profiler uruchamia si z menu SQL Server 2008 Performance Tools. Po jego otworzeniu
naley wybra File, a nastpnie New Trace, co pokazano na rys. 7.

Rys. 7 Definicja ladu
Kady definiowany lad musi zosta nazwany (w naszym przykadzie uylimy nazwy Test).
Nastpnie nastpuje wybr wzorca. Istnieje kilka wzorcw, ktre najczciej s monitorowane.
Oczywicie moemy ustawi pusty wzorzec i sami zdefiniowa opcje. Na rys. 7 uylimy
predefiniowanego wzorca Tuning. Nastpnie ustawiamy sposb zapisu. Mamy moliwo zapisu do
pliku lub do tabeli. Zapis do tabeli nie jest polecany, gdy SQL Trace moe generowa setki tysicy
wierszy danych ladu na minut na obcionym serwerze.
Gdy lad jest w peni zdefiniowany, naley go tylko uruchomi i zbiera dane. W tym celu naley
klikn Run. Wynik dziaania ladu pokazano na rys. 8.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 7
ITA-101 Bazy danych Indeksy i transakcje
Strona 11/20

Rys. 8 Uruchomienie ladu
Po zakoczeniu zbierania ladu kolejnym etapem jest uycie narzdzia Database Engine Tuning
Advisor (DTA). Odgrywa ono wan rol w rozwizywaniu problemw zwizanych z wydajnoci,
pozwalajc wpywa na optymizator zapyta w celu otrzymania zalece dla indeksw,
indeksowanych widokw lub partycji, ktre mog zwikszy wydajno.
W celu uruchomienia DTA naley z zakadki Tools wybra Database Engine Tuning Advisor.
Nastpnie naley poczy si z serwerem, wybra plik obciajcy do analizy ten, do ktrego
zapisalimy zbierany lad (rys. 9) oraz okreli opcje strojenia (rys. 10).

Rys. 9 Definiowanie oglnych opcji strojenia bazy danych

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 7
ITA-101 Bazy danych Indeksy i transakcje
Strona 12/20

Rys. 10 Definiowanie strojenia bazy danych
Po skonfigurowaniu opcji strojenia DTA mona zacz analiz klikajc Start Analysis, co pokazano
na rys. 11.

Rys. 11 Strojenie bazy danych
Po wykonaniu analizy otrzymujemy zalecenia na przykad dotyczce przebudowy indeksw, ktre
moemy zastosowa wzgldem naszej bazy danych.
Porady praktyczne
Indeksowanie kolumn
Indeksy powinny by planowane z myl o najczciej wykonywanych w Twojej bazie danych
zapytaniach SELECT z klauzul WHERE. Pierwszym krokiem powinno by zatem wypisanie
najczciej wykonywanych zapyta (koniecznie z klauzul WHERE)
Microsoft SQL Server umoliwia utworzenie w tabeli jednego indeksu grupowanego oraz 249
indeksw niegrupowanych. Pojedynczy indeks mona zaoy na maksymalnie 16 polach. To
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 7
ITA-101 Bazy danych Indeksy i transakcje
Strona 13/20
jednak tylko maksymalne moliwoci serwera. W praktyce w bazach danych OLTP (ang.
online transaction processing) nie tworzy si wicej ni 8 do 10 indeksw zwizanych z
pojedyncz tabel.
Naley pamita, i nie wszystkie zapytania wykorzystuj indeksy. Np. w Microsoft SQL
Server zapytanie:
SELECT imie, nazwisko FROM osoby WHERE nazwisko LIKE '%mar%'
nie wykorzysta indeksu grupowanego na polu nazwisko, poniewa niemoliwe bdzie
porwnanie wartoci wzorca z wartociami na stronach indeksu.
Indeksy maj kluczowe znaczenie dla optymalizacji wydajnoci baz danych. Dobrze
zaprojektowane indeksy mog znaczco poprawi szybko operacji przeszukiwania bazy
danych (najczciej wykonywana operacja i dotyczy najwikszych iloci danych), ale le
zaplanowane mog spowodowa efekt odwrotny do podanego. Z tego powodu naley
starannie zaplanowa ich struktur.
Database Engine Tuning Advisor (DTA) to znacznie udoskonalony nastpca narzdzia Index
Tuning Wizard dostarczanego wraz z SQL Server 2000.
eby Database Engine Tuning Advisor (DTA) mg przeprowadzi optymalizacj bazy danych
w oparciu o plik zawierajcy lad, musi on mie co najmniej 2 MB zebranych danych.
Transakcje
Zakleszczenia s powanym problemem i maj istotny wpyw na wydajno systemu. Walka z
zakleszczeniami moe przebiega wedug dwu metod:
a) Wykrywanie zakleszcze i rozrywanie ptli zakleszczenia detekcja zakleszczenia
wymaga skonstruowania grafu czekania (ang. wait-for graph) i tranzytywnego domknicia
tego grafu (zoono gorsza ni n * n). Rozrywanie ptli zakleszczenia polega na wybraniu
transakcji ofiary uczestniczcej w zakleszczeniu, a nastpnie jej zerwaniu i
uruchomieniu od nowa. Wybr ofiary podlega rnym kryteriom moe ni by
transakcja najmodsza, najmniej pracochonna, o niskim priorytecie itp.
b) Niedopuszczanie do zakleszcze istnieje wiele tego rodzaju metod, np.:
Wstpne danie zasobw przed uruchomieniem kada transakcja okrela potrzebne
jej zasoby. Nie moe pniej nic wicej da. Wada: zgrubne oszacowanie danych
zasobw prowadzi do zmniejszenia stopnia wspbienoci.
Czekasz-umieraj (ang. wait-die) jeeli transakcja prbuje dosta si do zasobu, ktry jest
zablokowany, to natychmiast jest zrywana i powtarzana od nowa. Metoda moe by
nieskuteczna dla systemw interakcyjnych (uytkownik moe si denerwowa
koniecznoci dwukrotnego wprowadzania tych samych danych) oraz prowadzi do spadku
efektywnoci (sporo pracy idzie na marne).
Postulat moliwoci odtworzenia stanu systemu sprzed wywoani transakcji w wypadku jej
awarii (wycofania) moliwy jest dziki m.in. zastosowaniu osobnego dziennika transakcji.
Mog by w nim zapisywane wszystkie dane, na ktrych pracuje transakcja lub te tylko dane
rnicowe. Naley jednak pamita, e obsuga transakcji wie si z dodatkowymi
nakadami i obcieniem dla systemu.
Uwagi dla studenta
Jeste przygotowany do realizacji laboratorium jeli:
rozumiesz mechanizm dziaania i polityki indeksowania
rozumiesz zasad dziaania transakcji
znasz skadni nakadania indeksw na poszczeglne pola
rozumiesz sposb dziaania transakcji
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 7
ITA-101 Bazy danych Indeksy i transakcje
Strona 14/20
rozumiesz mechanizm zakleszczania transakcji
Pamitaj o zapoznaniu si z uwagami i poradami zawartymi w tym module. Upewnij si, e
rozumiesz omawiane w nich zagadnienia. Jeli masz trudnoci ze zrozumieniem tematu zawartego
w uwagach, przeczytaj ponownie informacje z tego rozdziau i zajrzyj do notatek z wykadw.
Dodatkowe rda informacji
1. Kalen Delaney, Microsoft SQL Server 2005: Rozwizania praktyczne krok po kroku, Microsoft
Press, 2006
W ksice autor przedstawia midzy innymi w jaki sposb naley stosowa
transakcje w celu zapewnienia bezpiecznej wspbienoci bazy danych. Pokazuje
jak naley definiowa transakcje w SQL Server oraz jak zarzdza odseparowanymi
transakcjami. W pozycji tej znajdziesz duo rozwiza praktycznych.
2. Deren Bieniek, Randy Dyess, Mike Hotek, Javier Loria, Adam Machanic, Antonio Soto, Adolfo
Wiernik, SQL Server 2005. Implementacja i obsuga, APN Promise, 2006
W ksice obszernie przedstawiono zagadnienia zwizane z tworzeniem indeksw
oraz transakcjami. Znajdziesz tu potrzebne informacje na temat struktury indeksu,
tworzenia indeksw klastrowych i nieklastrowych oraz na temat tworzenia
transakcji. Znajdziesz tutaj rwnie szczegowe informacje na temat optymalizacji
bazy danych oraz przebudowy indeksw. Ksika szczeglnie polecana ze wzgldu
na du zawarto wicze laboratoryjnych.
3. Ramez Elmasri, Shamkant B. Navathe, Wprowadzenie do systemw baz danych, Helion, 2005
W ksice tej znajdziemy duo szczegowych informacji na temat indeksowania
oraz zagadnie zwizanych z przetwarzaniem transakcji. Pozycja szczeglnie
polecana dla osb pragncych poszerzy swoj wiedz z tej tematyki.

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Laboratorium podstawowe
Problem 1 (czas realizacji 30
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od
firma planuje rozszerzenie
dotd na Twoim wydziale. Zadanie

Zadanie Tok postpowania
1. Stwrz list
najczciej
wykonywanych
zapyta
Wypisz najczciej wykonywane zapytania na bazie danych
PraceDyplomowe

2. Wybierz pola
do indeksowania
Majc przed sob list najczciej wykonywanych zapyta oraz
struktur tabel
indeksowania s kolumny lub kombinacje kolumn, ktre:

3. Nawi
poczenie z SQL
Server 2008
Uruchom maszyn wirtualn

Kliknij
SQL Server Management Studio
W oknie logowania kliknij
4. Przygotuj
tabel
Z menu gwnego wybierz
Odszukaj plik
Kliknij w menu gwnym programu SQL Server M
Tools
W oknie
W pozycji odpowiadajcej kombinacji klawiszy
sp_helpindex
12
emysaw Kowalczuk, Konrad Markowski

Strona 15/20
Laboratorium podstawowe
(czas realizacji 30 min)
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od
firma planuje rozszerzenie na skal uczelnian systemu prac dyplomowych
. Zadanie, jakie przed Tob stoi, to zaplanowanie struktury indeksw.
Tok postpowania
Wypisz najczciej wykonywane zapytania na bazie danych
PraceDyplomowe, suce do wyszukiwania prac:
wedug tytuw
wedug autorw
wedug promotorw
wedug recenzentw
Zastanw si, jakie inne zapytania z klauzul WHERE
dla bazy danych PraceDyplomowe.
Majc przed sob list najczciej wykonywanych zapyta oraz
struktur tabel zaplanuj struktur indeksw
indeksowania s kolumny lub kombinacje kolumn, ktre:
narzucaj porzdek sortowania (indeks grupowy)
przechowuj wartoci czciej odczytywane ni modyfikowane
s wykorzystywane do czenia (JOIN) lub wyszukiwania (
danych
przechowuj rnorodne wartoci
Zastanw si, jakie inne kolumny s dobrymi kandydatami na to
zaoy na nie indeks.
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Jeli nie masz zdefiniowanej maszyny wirtualnej w
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
D:\VirtualPC\Dydaktyka\BD2008.vhd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008
SQL Server Management Studio.
W oknie logowania kliknij Connect.
Z menu gwnego wybierz File -> Open -> File.
Odszukaj plik C:\Lab08\Indeksy.sql i kliknij Open.
Kliknij w menu gwnym programu SQL Server M
Tools -> Customize.
W oknie Customize kliknij przycisk Keybord.
W pozycji odpowiadajcej kombinacji klawiszy
sp_helpindex i wcinij OK. Wynik powyszych operacji pokazano na
12.
Modu 7
Indeksy i transakcje
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od swojego szefa, e
prac dyplomowych, ktrym zarzdzaa
zaplanowanie struktury indeksw.
Wypisz najczciej wykonywane zapytania na bazie danych
suce do wyszukiwania prac:
WHERE mona utworzy
Majc przed sob list najczciej wykonywanych zapyta oraz
struktur indeksw. Kandydatami do
indeksowania s kolumny lub kombinacje kolumn, ktre:
narzucaj porzdek sortowania (indeks grupowy)
ytywane ni modyfikowane
) lub wyszukiwania (WHERE)
Zastanw si, jakie inne kolumny s dobrymi kandydatami na to, eby

Jeli nie masz zdefiniowanej maszyny wirtualnej w Microsoft Virtual
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
Microsoft SQL Server 2008 uruchom
.
Kliknij w menu gwnym programu SQL Server Management Studio na
W pozycji odpowiadajcej kombinacji klawiszy Ctrl+F1 wpisz
. Wynik powyszych operacji pokazano na rys.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Stwrz kopie tabeli
--
IF EXISTS (



DROP TABLE Osoba_kopia
GO
SELECT Imie, Nazwisko, Nr_Indeksu
INTO Osoba_kopia
FROM Osoba
GO
Uruchom zapytanie do tabeli
--
SELECT * FROM Osoba
GO
Podkrel w edytorze sowo
CTRL+F1
informacj pokazan na
--
EXEC sp_helpindex Osoba_kopia
GO
emysaw Kowalczuk, Konrad Markowski

Strona 16/20
Rys. 12 Definicja klawiszy skrtu
Dziki zdefiniowaniu klawiszy skrtu w prosty sp
wywoywa z klawiatury procedur skadowan
wywietla informacje o indeksach w wybranej tabeli.
Stwrz kopie tabeli Osoba:
-- (2) Tworzymy kopie tabeli Osoba
IF EXISTS (
SELECT name
FROM sysobjects
WHERE name='Osoba_kopia')
DROP TABLE Osoba_kopia
GO
SELECT Imie, Nazwisko, Nr_Indeksu
INTO Osoba_kopia
FROM Osoba
GO
Uruchom zapytanie do tabeli Osoba_kopia:
-- (3) Wyswietl zawarto tabeli Osoba_kopia
SELECT * FROM Osoba_kopia
GO
Podkrel w edytorze sowo Osoba (nazwa twojej tabeli) i wcinij
CTRL+F1 lub wykonaj poniszy fragment skryptu.
informacj pokazan na rys. 13.
-- (4) zobaczmy indeksy w tabeli
EXEC sp_helpindex Osoba_kopia
GO
Modu 7
Indeksy i transakcje

Dziki zdefiniowaniu klawiszy skrtu w prosty sposb bdziesz mg
wywoywa z klawiatury procedur skadowan sp_helpindex, ktra
wywietla informacje o indeksach w wybranej tabeli.

(nazwa twojej tabeli) i wcinij
lub wykonaj poniszy fragment skryptu. Powiniene zobaczy
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Wcz pomiar statystyk wejcia/wyjcia iloci skanowanych stron
wykonujc ponisze polecenie:
--
SET statistic io on
GO
Zaznacz i uruchom (
--
--
SELECT * FROM Osoba
WHERE Nr_Indeksu > 1000 AND Nazwisko = 'K%'
GO
5. Utwrz indeks Zaznacz i uruchom (
--
CREATE INDEX index_Osoba ON Osoba(Nazwisko, Nr_Indeksu)
GO
Ponownie podkrel w edytorze sowo
wcinij
6. Przetestuj
indeks
Zaznacz i uruchom (
--
--
SELECT * FROM Osoba
WHERE Nr_Indeksu > 1000 AND Nazwisko =
GO
emysaw Kowalczuk, Konrad Markowski

Strona 17/20
Rys. 13 Informacja o indeksach w tabeli Osoba
Zastanw si, dlaczego w wyniku wywoania procedury skadowanej
odpowiedzialnej za wywietlanie informacji o indeksach pojawia si
wpis z indeksem PK_Osoba, skoro aden indeks nie zosta zaoony?
Wcz pomiar statystyk wejcia/wyjcia iloci skanowanych stron
wykonujc ponisze polecenie:
-- (5) Wlacz statystyki wejscia/wyjscia ilosci skanowanych stron
SET statistic io on
GO
Zaznacz i uruchom (F5) poniszy fragment kodu:
-- (6) wykonajmy proste wyszukiwanie po Nr_Indeksu
-- oraz po nazwisku
SELECT * FROM Osoba
WHERE Nr_Indeksu > 1000 AND Nazwisko = 'K%'
GO
Zaznacz i uruchom (F5) poniszy fragment kodu:
-- (7) utworzmy indeks niegrupowany
CREATE INDEX index_Osoba ON Osoba(Nazwisko, Nr_Indeksu)
GO
Ponownie podkrel w edytorze sowo Osoba (nazwa twojej tabeli) i
wcinij CTRL+F1. Powiniene zobaczy informacj pokazan na
Rys. 14 Informacja o indeksach w tabeli Osoba
Zaznacz i uruchom (F5) poniszy fragment kodu:
-- (6) wykonajmy proste wyszukiwanie po Nr_Indeksu
-- oraz po nazwisku
SELECT * FROM Osoba
WHERE Nr_Indeksu > 1000 AND Nazwisko = 'K%'
GO
Zauwa, i wynik bdzie oczywicie taki sam, ale pojawi si rnica w
statystykach.
Modu 7
Indeksy i transakcje

macja o indeksach w tabeli Osoba
Zastanw si, dlaczego w wyniku wywoania procedury skadowanej
informacji o indeksach pojawia si
, skoro aden indeks nie zosta zaoony?
Wcz pomiar statystyk wejcia/wyjcia iloci skanowanych stron
(5) Wlacz statystyki wejscia/wyjscia ilosci skanowanych stron

(6) wykonajmy proste wyszukiwanie po Nr_Indeksu

CREATE INDEX index_Osoba ON Osoba(Nazwisko, Nr_Indeksu)
(nazwa twojej tabeli) i
. Powiniene zobaczy informacj pokazan na rys. 14.

Informacja o indeksach w tabeli Osoba

(6) wykonajmy proste wyszukiwanie po Nr_Indeksu
Zauwa, i wynik bdzie oczywicie taki sam, ale pojawi si rnica w
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Problem 2 (czas realizacji 15 min)
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od
firma planuje rozszerzenie
dotd na Twoim wydziale. Zadanie jakie przed Tob
bazy danych.

Zadanie Tok postpowania
1. Nawi
poczenie z SQL
Server 2008
Uruchom maszyn wirtualn

Kliknij
SQL Server Manageme
W oknie logowania kliknij
2. Przygotuj
tabel
Z menu gwnego wybierz
Odszukaj plik
Zaznacz kod, ktry wywietla fragment tabeli, oznaczony w komentarzu
(1)
--
USE PraceDyplomowe
GO

--
SELECT *
FROM Osoba
WHERE ID_Osoby IN (1,2)
Zaznacz kod, ktry prbuje wykona transakcje
--
BEGIN
BEGIN TRY






END TRY
BEGIN CATCH







IF @@TRANCOUNT > 0

END CATCH
IF @@TRANCOUNT > 0

GO
emysaw Kowalczuk, Konrad Markowski

Strona 18/20
Problem 2 (czas realizacji 15 min)
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od
firma planuje rozszerzenie na skal uczelnian systemu prac dyplomowych
. Zadanie jakie przed Tob stoi to stworzenie transakcji dla rozwijanej
Tok postpowania
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Jeli nie masz zdefiniowanej maszyny wirtualnej w
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
D:\VirtualPC\Dydaktyka\BD2008.vhd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008
SQL Server Management Studio.
W oknie logowania kliknij Connect.
Z menu gwnego wybierz File -> Open -> File.
Odszukaj plik C:\Lab08\Transakcje.sql i kliknij Open
Zaznacz kod, ktry wywietla fragment tabeli, oznaczony w komentarzu
(1) i (2).
-- (1) Ustaw sie na bazie danych PraceDyplomowe
USE PraceDyplomowe
GO

-- (2) Wyswietlamy dwa pierwsze rekordy z tabeli Osoba
SELECT *
FROM Osoba
WHERE ID_Osoby IN (1,2)
Zaznacz kod, ktry prbuje wykona transakcje:
-- (3) Przykladowa transakcja
BEGIN TRANSACTION
BEGIN TRY
UPDATE Osoba
SET Nazwisko = 'Kochan'
WHERE ID_Osoby = 2
UPDATE Osoba
SET Nazwisko = 'Kowalski'
WHERE ID_Osoby = 6
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() as ErrorState,
ERROR_PROCEDURE() as ErrorProcedure,
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
END CATCH
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
GO
Modu 7
Indeksy i transakcje
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od swojego szefa, e
prac dyplomowych, ktrym zarzdzaa
e transakcji dla rozwijanej

Jeli nie masz zdefiniowanej maszyny wirtualnej w Microsoft Virtual
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
Microsoft SQL Server 2008 uruchom
Open.
Zaznacz kod, ktry wywietla fragment tabeli, oznaczony w komentarzu
(1) Ustaw sie na bazie danych PraceDyplomowe
(2) Wyswietlamy dwa pierwsze rekordy z tabeli Osoba
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych

emysaw Kowalczuk, Konrad Markowski

Strona 19/20
Powyszy kod podejmuje prb wykonania transakcji zoonej z
dwch operacji UPDATE. Prba wykonania pierwszej z nich spowoduje
bd, poniewa wartoci w kolumnie ID_Osoby
by unikalne, a polecenie prbuje wstawi duplikat wartoci 2, ktra
ju istnieje w rekordzie drugim tabeli. Przechwytywanie bdw
odbywa si przy uyciu blokw TRY...CATCH, ktre poznae w module
9.

Zastanw si, jak powiniene zmodyfikowa
eby zakoczya si powodzeniem?

Modu 7
Indeksy i transakcje
konania transakcji zoonej z
. Prba wykonania pierwszej z nich spowoduje
ID_Osoby w tabeli Osoby musz
unikalne, a polecenie prbuje wstawi duplikat wartoci 2, ktra
rugim tabeli. Przechwytywanie bdw
, ktre poznae w module
zmodyfikowa powysz transakcj,
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 7
ITA-101 Bazy danych Indeksy i transakcje
Strona 20/20
Laboratorium rozszerzone
Zadanie 1 (czas realizacji 90 min)
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od swojego szefa, e
firma zarzdzajca baz AdventureWorks planuje rozszerzenie i modernizacj systemu w celu
spenienia pewnych standardw. W zwizku z modernizacj systemu bazodanowego, a zatem
zmian struktury fizycznej bazy danych, najprawdopodobniej bdzie musiaa nastpi przebudowa
struktury indeksw. Poza przebudow indeksw bdzie musiaa zapewne nastpi modernizacja
istniejcych transakcji tak, eby odpowiaday one nowej strukturze fizycznej przebudowanej bazy
danych.
Zadania jakie przed Tob stoj to:
1. Podjcie decyzji, ktre obiekty w bazie danych pozostan bez zmian, a ktre zostan
zmodyfikowane lub usunite.
2. Podjcie decyzji, na ktre pola opaca si naoy indeks i jakiego typu te indeksy powinny
by.
3. Podjcie decyzji, ktre transakcje naley zmodernizowa i czy nie trzeba bdzie doda
nowych transakcji.



ITA-101 Bazy Danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Modu 8
Wersja 1.0
Programowanie zaawansowane
w T-SQL
Spis treci
Programowanie zaawansowane w T-SQL ........................................................................................... 1
Informacje o module ............................................................................................................................ 2
Przygotowanie teoretyczne ................................................................................................................. 3
Przykadowy problem .................................................................................................................. 3
Podstawy teoretyczne.................................................................................................................. 3
Przykadowe rozwizanie ............................................................................................................. 6
Porady praktyczne ....................................................................................................................... 6
Uwagi dla studenta ...................................................................................................................... 7
Dodatkowe rda informacji....................................................................................................... 7
Laboratorium podstawowe .................................................................................................................. 8
Problem 1 (czas realizacji 30 minut) ............................................................................................ 8
Problem 2 (czas realizacji 15 minut) .......................................................................................... 10
Laboratorium rozszerzone ................................................................................................................. 12
Zadanie 1 (czas realizacji 90 min) ............................................................................................... 12

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 8
ITA-101 Bazy danych Programowanie zaawansowane w T-SQL
Strona 2/12
Informacje o module
Opis moduu
Programowanie w jzyku zapyta to wana umiejtno. Powinni j
opanowa zarwno programici, jak i administratorzy. Rne dialekty jzyka
SQL oferuj rne skadnie, jednak reguy, jakimi powinien kierowa si
tworzcy kod, s te same niezalenie od systemu zarzdzania bazami
danych. W module tym znajdziesz informacj na temat zaawansowanego
programowania w T-SQL. Dowiesz si w jaki sposb korzysta z instrukcji
sterujcych, kursorw oraz jak funkcjonuje obsuga bdw.
Cel moduu
Celem moduu jest zapoznanie czytelnika z zaawansowanymi elementami
jzyka T-SQL, takimi jak instrukcje sterujce, kursory, obsuga bdw itp.
Uzyskane kompetencje
Po zrealizowaniu moduu bdziesz:
potrafi uy instrukcji sterujcych w jzyku T-SQL
rozumia sposb dziaania i funkcjonowania kursorw
wiedzia, w jaki sposb dziaa obsuga bdw
Wymagania wstpne
Przed przystpieniem do pracy z tym moduem powiniene:
potrafi stworzy baz danych wraz z jej podstawowymi obiektami
(patrz: modu 3)
potrafi napisa podstawowe instrukcje w jzyku T-SQL DCL i T-SQL
DDL (patrz: modu 5)
potrafi pisa zapytania w jzyku T-SQL DML (patrz: modu 6)
rozumie podstawow skadni jzyka T-SQL
Mapa zalenoci moduu
Zgodnie z map zalenoci przedstawion na rys. 1, przed przystpieniem
do realizacji tego moduu naley zapozna si z materiaem zawartym
w moduach 3, 5 i 6.

Rys. 1 Mapa zalenoci moduu
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 8
ITA-101 Bazy danych Programowanie zaawansowane w T-SQL
Strona 3/12
Przygotowanie teoretyczne
Przykadowy problem
Podczas wytwarzania bazy danych wie ze sob grup osb, do ktrej nale projektant bazy
danych, administrator systemu zarzdzania baz danych, administrator bazy danych oraz
programista bazy danych. Bardzo wane jest, eby wszyscy biorcy udzia w wytwarzaniu systemu
bazodanowego wspdziaali ze sob na rnych etapach. Najwicej wsplnego z programowaniem
w T-SQL ma programista bazy danych. Od niego w duej mierze zaley, czy wytworzone funkcje,
procedury skadowane, wyzwalacze i inne elementy bd dziaay we waciwy sposb. To on jest
odpowiedzialny za przygotowanie odpowiednich elementw programowych, ktre nastpnie
bdzie wykorzystywa projektant aplikacji i programista aplikacji dostpowej. Rwnie od niego w
pewnym stopniu zaley bezpieczestwo danych gromadzonych w bazie. W zwizku z tym powinien
on dysponowa odpowiedni wiedz i posiada pewne umiejtnoci z zakresu zaawansowanego
programowania w jzyku T-SQL. Znajomo tego jzyka oraz dobre nawyki wynikajce z praktyki
programowania s bardzo wane. Podstawowymi skadowymi jzyka T-SQL s instrukcje sterujce,
kursory i obsuga bdw.
Podstawy teoretyczne
Jzyk T-SQL stale ewoluuje. Z jzyka zapyta sta si waciwie jzykiem programowania baz
danych. Programici tworzcy oprogramowanie mog atwo nauczy si T-SQL dziki istniejcym
analogiom do tradycyjnych jzykw programowania proceduralnego. Jednymi z czciej uywanych
konstrukcji s instrukcje sterujce.
Instrukcje sterujce
Instrukcja sterujca IFELSE daje moliwo warunkowego wykonywania blokw kodu. W
implementacji T-SQL wyglda ona jak poniej:
IF warunek_logiczny
{ wyrazenie_sql | wyrazenie_blokowe }
ELSE
{ wyrazenie_sql | wyrazenie_blokowe }
Naley zwrci uwag, e jeli blok po sowie IF lub ELSE skada si z wielu linii kodu, musisz uy
skadni BEGINEND. Wwczas:
IF warunek_logiczny
BEGIN
{ wyrazenie_sql | wyrazenie_blokowe }
END
ELSE
BEGIN
{ wyrazenie_sql | wyrazenie_blokowe }
END
Poniszy kod przedstawia przykadowe uycie instrukcji sterujcej IFELSE:
IF @zmienna > 100
PRINT 'Zmienna jest wiksza ni 100'
ELSE
BEGIN
PRINT 'Zmienna jest mniejsza ni 100'
SET @zmienna = 0 -- zerowanie zmiennej
END
Kolejna instrukcja sterujca to ptla WHILE. W T-SQL wyglda ona nastpujco:
WHILE wyrazenie_logiczne
{ wyrazenie_sql | wyrazenie_blokowe }
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 8
ITA-101 Bazy danych Programowanie zaawansowane w T-SQL
Strona 4/12
[ BREAK ]
{ wyrazenie_sql | wyrazenie_blokowe }
[ CONTINUE ]
{ wyrazenie_sql | wyrazenie_blokowe }
Wyraenie logiczne powinno zwraca warto TRUE lub FALSE. Podobnie jak w przypadku
instrukcji sterujcej IFELSE, jeli wyraenie SQL skada si z wielu linii kodu, musisz uy wanie
skadni BEGINEND. W instrukcji WHILE wystpuj dwie istotne instrukcje:
BREAK powoduje wyjcie z ptli WHILE
CONTINUE powoduje rozpoczcie kolejnej interacji ptli WHILE
Poniszy kod przedstawia przykadowe uycie instrukcji sterujcej WHILE:
DECLARE @zmienna int
SET @zmienna = 0

WHILE @zmienna < 10
BEGIN
PRINT 'Iteracja nr ' + CAST(@zmienna AS varchar(2))
SET @zmienna = @zmienna + 1
END
Naley pamita, e ptla WHILE moe by wykonywana w nieskoczono, jeli programista nie
zapewni wyjcia z ptli.
Kursory
Kursor to obiekt, ktry umoliwia poruszanie si po wynikach zapytania rekord po rekordzie.
Umoliwia on przetwarzanie rekordw jeden po drugim, co daje moliwo zaawansowanego
formatowania wynikw wyszukiwania danych (ale w cile okrelonej kolejnoci, determinowanej
przez wynik zapytania uytego w definicji kursora).
Deklaracja kursora w jzyku T-SQL wyglda nastpujco:
DECLARE nazwa_kursora CURSOR [ { LOCAL | GLOBAL } ]
[ { FORWARD_ONLY | SCROLL } ]
[ { STATIC | KEYSET | DYNAMIC | FAST_FORWARD } ]
[ { READ_ONLY | SCROLL_LOCKS | OPTIMISTIC } ]
[ TYPE_WARNING ]
FOR wyrazenie_select
[ FOR UPDATE [ OF nazwa_kolumny [,n] ] ]
[;]
Poniszy kod przedstawia przykadowe uycie kursora:
DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName
FROM Northwind.dbo.Employees
WHERE LastName like 'B%'

OPEN Employee_Cursor

FETCH NEXT FROM Employee_Cursor
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Employee_Cursor
END

CLOSE Employee_Cursor
DEALLOCATE Employee_Cursor
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 8
ITA-101 Bazy danych Programowanie zaawansowane w T-SQL
Strona 5/12
Skadnia specjalna
Nowoczesne dialekty jzyka SQL obfituj w specjalne elementy skadniowe, ktre znacznie
rozszerzaj jego funkcjonalno. Przykadem takiej skadni moe by PIVOT. Skadnia ta umoliwia
stworzenie tabeli wynikowej z zapytania SELECT, w ktrej w nagwkach wierszy i kolumn znajduj
si wartoci z tabel rdowych.
USE AdventureWorks
GO
SELECT VendorID, [164] AS Emp1, [198] AS Emp2, [223] AS Emp3, [231] AS
Emp4, [233] AS Emp5
FROM
(SELECT PurchaseOrderID, EmployeeID, VendorID
FROM Purchasing.PurchaseOrderHeader) p
PIVOT
(
COUNT (PurchaseOrderID)
FOR EmployeeID IN
( [164], [198], [223], [231], [233] )
) AS pvt
ORDER BY VendorID;
Zapytanie zamieszczony powyej moe przykadowo wygenerowa nastpujcy wynik:
VendorID Emp1 Emp2 Emp3 Emp4 Emp5
1 4 3 5 4 4
2 4 1 5 5 5
3 4 3 5 4 4
4 4 2 5 5 4
5 5 1 5 5 5
Powyszy wynik obrazuje moliwoci tej skadni, umoliwiajc zbudowanie tabeli wywietlajcej
ilo zamwie u wybranych producentw, dokonanych przez piciu pracownikw (kady
pracownik o okrelonym EmployeeID).
Obsuga bdw
W trakcie wykonywania kodu SQL mog wystpi nieprzewidziane bdy, wynikajce z rnych
przyczyn. Mog to by bdy powstae wskutek narzuconych w bazie danych ogranicze lub na
przykad bdy spowodowane prbami wykonania niedozwolonych operacji. Wykrycie tych bdw
i odpowiednia reakcja na nie to zadanie dla programisty baz danych.
Bdy wykrywamy najczciej w:
transakcjach po wykryciu bdu wycofujemy transakcj
procedurach skadowanych wykrywamy bdy powstae gwnie w wyniku niepoprawnych
wartoci parametrw podanych przez uytkownika
wyzwalaczach podobnie jak w transakcjach, po napotkaniu bdu wycofywana jest
transakcja wywoujca wyzwalacz
blokach kodu SQL wszelkie rozbudowane bloki kodu wymagaj wykrywania bdw
Metod pozwalajcych na wykrycie bdw jest wiele. Mona zastosowa instrukcje sterujce, np.
IFELSE, do sprawdzania wartoci zmiennych, by w ten sposb zapobiega wystpieniu bdw.
Drug metod jest wykorzystanie istniejcych w systemie zarzdzania bazami danych funkcji
pozwajcych wykrywa bdy. W systemie Microsoft SQL Server tak funkcj jest @@ERROR, ktra
zwraca numer ostatnio napotkanego bdu w biecej sesji.
Aktualnie istniej take inne, przez wielu uznawane za lepsze metody wykrywania i obsugi bdw.
Chodzi o strukturaln obsug wyjtkw. Przez wyjtek rozumiemy bd, ktry wymaga obsugi.
Poniej pokazano skadni TRYCATCH (ang. try prbuj, catch przechwy):
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 8
ITA-101 Bazy danych Programowanie zaawansowane w T-SQL
Strona 6/12
BEGIN TRY
{ wyrazenie_sql | wyrazenie_blokowe }
END TRY
BEGIN CATCH
{ wyrazenie_sql | wyrazenie_blokowe }
END CATCH
Jeli wyraenie SQL skada si z wielu linii kodu, podobnie jak w przypadku instrukcji sterujcych
IFELSE i WHILE musisz uy skadni BEGINEND.
Przykadowe rozwizanie
Przykadowe uycie instrukcji sterujcej
Rozwamy przykad, w ktrym rednia cena produktu jest mniejsza od 100 z. Jeeli maksymalna
cena jest wiksza od 300 z, wwczas w ptli WHILE podwajamy j. Ptla ta wykonuje si do
momentu, gdy maksymalna cena jest wiksza od 300 z. Po spenieniu warunku wychodzimy z ptli
i wywietlamy komunikat dla uytkownika.
USE AdventureWorks;
GO
WHILE (SELECT AVG(ListPrice) FROM Production.Product) < 100
BEGIN
UPDATE Production.Product
SET ListPrice = ListPrice * 2
SELECT MAX(ListPrice) FROM Production.Product
IF (SELECT MAX(ListPrice) FROM Production.Product) > 300
BREAK
END
PRINT 'Wywietlony komunikat po wyjciu z ptli';
Przykadowe uycie TRYCATCH
Poniszy fragment kodu obrazuje przykadow obsug wyjtkw przy pomocy skadni TRYCATCH.
W celu zilustrowania obsugi bdw, wewntrz bloku TRY dokonujemy dzielenia przez zero, ktre
jest niewykonalne. Wwczas wywoywany jest wyjtek, ktry jest przechwytywany w bloku CATCH.
Po przechwyceniu wyjtku wywietlany jest odpowiedni komunikat zdefiniowany przez
programist.
BEGIN TRY
-- generujemy bd
SELECT 1/0;
END TRY

BEGIN CATCH
-- obsugujemy bd
RAISERROR('Nie dzielimy przez zero',16,1)
END CATCH
Porady praktyczne
Funkcja wykrywania bdw @@ERROR zwraca numer ostatniego bdu lub 0, jeli wykonanie
polecenia T-SQL zakoczyo si powodzeniem. Na poniszym przykadzie pokazano uycie
funkcji @@ERROR do sprawdzenia naruszenia ograniczenia, do ktrego moe doj w sytuacji
modyfikacji danych:
UPDATE EmployeePayHistory
SET PayFrequency = 4
WHERE EmployeeID = 1

IF @@ERROR = 547
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 8
ITA-101 Bazy danych Programowanie zaawansowane w T-SQL
Strona 7/12
PRINT 'naruszone ograniczenie.'
GO
Informacje na temat bdu mog by uzyskiwane przy uyciu funkcji ERROR_NUMBER (numer
bdu) i ERROR_MESSAGE (komunikat bdu).
SQL Server udostpnia trzy rodzaje programowalnych obiektw: funkcje, procedury
skadowane i wyzwalacze. W celu poprawnego pisania elementw programowalnych naley
zna zaawansowane elementy jzyka T-SQL. Zamiast wykonywania pojedynczego polecenia
lub komendy, obiekty te umoliwiaj tworzenie bogatej logiki programistycznej, ktra
zawiera ptle, kontrol przepywu, podejmowanie decyzji i rozwidlenia.
Zdolno do uruchamiania transakcji i przeznaczenie ich do pozostawienia lub wycofania nie
wystarczy do efektywnego radzenia sobie z problemem. W tym przypadku niezbdnym
skadnikiem jest zdolno do programowanego wykrywania i obsuenia bdw.
Wewntrz bloku CATCH moemy ustali co spowodowao bd i przekaza informacje na jego
temat uywajc systemu obsugi bdw jzyka T-SQL. Najczciej uywanymi funkcjami tego
rodzaju s ERROR_NUMBER i ERROR_MESSAGE. Zwracaj one numer i opis bdu.
Uywajc funkcji ERROR_NUMBER i ERROR_MESSAGE w bloku instrukcji CATCH moemy
zdecydowa, czy potrzeba uy ROLLBACK do cofnicia transakcji.
Uwagi dla studenta
Jeste przygotowany do realizacji laboratorium jeli:
rozumiesz, co oznacza instrukcja sterujca
rozumiesz zasad dziaania kursorw
umiesz zdefiniowa prost ptl
umiesz poda przykad obsugi bdw
Pamitaj o zapoznaniu si z uwagami i poradami zawartymi w tym module. Upewnij si, e
rozumiesz omawiane w nich zagadnienia. Jeli masz trudnoci ze zrozumieniem tematu zawartego
w uwagach, przeczytaj ponownie informacje z tego rozdziau i zajrzyj do notatek z wykadw.
Dodatkowe rda informacji
1. Kalen Delaney, Microsoft SQL Server 2005: Rozwizania praktyczne krok po kroku, Microsoft
Press, 2006
W ksice autor w przystpny i zrozumiay sposb przedstawia podstawowe
mechanizmy zaawansowanego programowania w jzyku T-SQL. Ksika polecana
szczeglnie dla osb pocztkujcych.
2. Edward Whalen, Microsoft SQL Server 2005 Administrators Companion, Microsoft Press, 2006
W ksice autor pokaza zaawansowane mechanizmy programowania w jzyku
T-SQL, ktre mog zosta wykorzystane do programowania w bazach danych takich
obiektw jak funkcje, procedury skadowane, wyzwalacze i transakcje. Pozycja
szczeglnie polecana dla osb chccych poszerzy swoj wiedz na temat
programowania baz danych.
3. Deren Bieniek, Randy Dyess, Mike Hotek, Javier Loria, Adam Machanic, Antonio Soto, Adolfo
Wiernik, SQL Server 2005. Implementacja i obsuga, APN Promise, 2006
W ksice tej, podobnie jak w powyszej pozycji, przedstawiono elementy
zaawansowanego programowania w jzyku T-SQL. Pokazano praktyczne
zastosowanie zaawansowanych mechanizmw T-SQL. Ksika polecana dla osb
pocztkujcych, jak rwnie chccych poszerzy swoj wiedz.

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Laboratorium podstawowe
Problem 1 (czas realizacji
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od
firma planuje rozszerzenie na skal uczelnian
dotd na Twoim wydziale. Zadanie jakie przed Tob
mechanizmu wybierania danych z
odpowiedniej formie.

Zadanie Tok postpowania
1. Nawi
poczenie z SQL
Server 2008
Uruchom maszyn wirtualn

Kliknij
SQL Server Management Studio
W oknie logowania kliknij
2. Przetestuj
instrukcj
sterujc CASE
Z menu gwnego wybierz
Odszukaj plik
Zaznacz i uruchom kod ze skryptu
na
USE PraceDyplomowe
GO
SELECT





FROM Ocena E
INNER JOIN Osoba C
ON E.ID_Ocena = C.ID_Osoby
GO
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Programowanie zaawansowane w T
Strona 8/12
Laboratorium podstawowe
Problem 1 (czas realizacji 30 minut)
firmie National Insurance. Wanie dowiedziae si od
planuje rozszerzenie na skal uczelnian systemu prac dyplomowych
woim wydziale. Zadanie jakie przed Tob stoi to stworzenie
mechanizmu wybierania danych z twojej bazy danych oraz przedstawienie tych danych w
Tok postpowania
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Jeli nie masz zdefiniowanej maszyny wirtualnej w
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
D:\VirtualPC\Dydaktyka\BD2008.vhd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008
SQL Server Management Studio.
W oknie logowania kliknij Connect.
Z menu gwnego wybierz File -> Open -> File.
Odszukaj plik C:\Labs\Lab06\Case.sql.
Zaznacz i uruchom kod ze skryptu Case.sql. Wynik dziaania pokazano
na rys. 2.
USE PraceDyplomowe
GO
SELECT
C.Nazwisko, C.Imie,
CASE
WHEN E.ID_Ocena = '2' THEN 'trzy'
ELSE 'inna'
END AS Gender
FROM Ocena E
INNER JOIN Osoba C
ON E.ID_Ocena = C.ID_Osoby
GO
Modu 8
Programowanie zaawansowane w T-SQL
firmie National Insurance. Wanie dowiedziae si od swojego szefa, e
prac dyplomowych, ktrym zarzdzaa
stworzenie zaawansowanego
oraz przedstawienie tych danych w

Jeli nie masz zdefiniowanej maszyny wirtualnej w Microsoft Virtual
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
Microsoft SQL Server 2008 uruchom
. Wynik dziaania pokazano
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 8
ITA-101 Bazy danych Programowanie zaawansowane w T-SQL
Strona 9/12

Rys. 2 Wynik dziaania skryptu z uyciem instrukcji CASE
3. Zastosuj
stronicowanie
danych
Z menu gwnego wybierz File -> Open -> File.
Odszukaj pliku C:\Labs\Lab06\Stronicowanie.sql
Zaznacz i uruchom kod ze skryptu Stronicowanie.sql. Wynik dziaania
pokazano na rys. 3.
USE PraceDyplomowe
GO
SELECT T.Nazwisko
FROM (
SELECT
Nazwisko,
ROW_NUMBER() OVER(ORDER BY ID_Stopnian) AS Pozytywna
FROM Osoba
) AS T
WHERE T.Pozytywna BETWEEN 2 AND 6
GO
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Problem 2 (czas realizacji
Kolejne zadanie zwizane z rozbudow systemu prac dyplomowych jakie przed Tob stoi to
oprogramowanie obsugi bdw (przechwytywanie i obsuga) z uyc
mechanizmw, jakimi dysponuje SQL Server.

Zadanie Tok postpowania
1. Nawi
poczenie z SQL
Server 2008
Uruchom maszyn wirtualn

Kliknij
SQL Server Manageme
W oknie logowania kliknij
2. Utwrz tabel
archiwizacji
bdw
Z menu gwnego wybierz
Odszukaj pliku
Zaznacz i uruchom kod ze skryptu
ktrej bd
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Programowanie zaawansowane w T
Strona 10/12
Rys. 3 Wynik stronicowania danych
Powysze zapytanie stanowi rozwizanie problemu stronicowania
danych. W tym wypadku wynikiem jest lista osb z tabeli
czym wywietlone zostaj nazwiska osb, ktre z pracy otrzymay
ocen pomidzy 3 a 5, biorc pod uwag sortowanie wedug kolum
ID_Stopnian. Zapytanie zadziaa tak samo, nawet gdy numeracja w tej
kolumnie nie bdzie ciga. Wykorzystuje ono podzapytanie, w ktrym
dla kadego wiersza generowana jest liczba porzdkowa za pomoc
funkcji ROW_NUMBER (funkcja ta musi przed generowanie
okreli kryterium sortowania, std klauzula ORDER BY
Problem 2 (czas realizacji 15 minut)
Kolejne zadanie zwizane z rozbudow systemu prac dyplomowych jakie przed Tob stoi to
oprogramowanie obsugi bdw (przechwytywanie i obsuga) z uyc
jakimi dysponuje SQL Server.
Tok postpowania
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Jeli nie masz zdefiniowanej maszyny wirtualnej w
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
D:\VirtualPC\Dydaktyka\BD2008.vhd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008
SQL Server Management Studio.
W oknie logowania kliknij Connect.
Z menu gwnego wybierz File -> Open -> File.
Odszukaj pliku C:\Labs\Lab09\Errors.sql
Zaznacz i uruchom kod ze skryptu Errors.sql, ktry tworzy tabele, w
ktrej bd zapisywane informacje o bdach
Modu 8
Programowanie zaawansowane w T-SQL


Powysze zapytanie stanowi rozwizanie problemu stronicowania
danych. W tym wypadku wynikiem jest lista osb z tabeli Osoby, przy
czym wywietlone zostaj nazwiska osb, ktre z pracy otrzymay
ocen pomidzy 3 a 5, biorc pod uwag sortowanie wedug kolumny
Zapytanie zadziaa tak samo, nawet gdy numeracja w tej
kolumnie nie bdzie ciga. Wykorzystuje ono podzapytanie, w ktrym
dla kadego wiersza generowana jest liczba porzdkowa za pomoc
(funkcja ta musi przed generowaniem wartoci
ORDER BY).
Kolejne zadanie zwizane z rozbudow systemu prac dyplomowych jakie przed Tob stoi to
oprogramowanie obsugi bdw (przechwytywanie i obsuga) z uyciem zaawansowanych

Jeli nie masz zdefiniowanej maszyny wirtualnej w Microsoft Virtual
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
Microsoft SQL Server 2008 uruchom
, ktry tworzy tabele, w
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
--
USE PraceDyplomowe
GO
--
--
CREATE TABLE TabelaBledow
(




)
GO
3. Przechwytywa
nie bdw
Zaznacz i uruchom (
--
BEGIN TRY

END TRY
BEGIN CATCH


END CATCH
GO
4. Przegldanie
informacji o
wystpieniu bdu
Zaznacz i uruchom (
--
SELECT * FROM TabelaBledow
GO
Wynik dziaania pokazano na


Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Programowanie zaawansowane w T
Strona 11/12
-- (1) Ustawiamy si na baze danych PraceDyplomowe
USE PraceDyplomowe
GO
-- (2) Tworzymy tabele w ktorej bedzie przechowywana informacja o
-- bledach
CREATE TABLE TabelaBledow

ErrorID int IDENTITY(1,1) PRIMARY KEY,
ErrorNumber int NOT NULL,
ErrorMessage nvarchar(200) NOT NULL,
ErrorDate datetime DEFAULT GETDATE()

GO
Powyszy kod tworzy tabel TabelaBledow, ktra bdzie zawieraa
informacje o wystpujcych bdach. W kolumnie
zapisany zostanie numer bdu, w kolumnie
komunikat bdu, za w kolumnie ErrorDate
wystpienia bdu (warto domylna bieca data i czas
generowana przy pomocy funkcji systemowej GETDATE
Zaznacz i uruchom (F5) poniszy fragment kodu:
-- (3) Implementacja obslugi przechwytywania bledow
BEGIN TRY
SELECT 1/0
END TRY
BEGIN CATCH
INSERT TabelaBledow(ErrorNumber, ErrorMessage)
SELECT ERROR_NUMBER(), ERROR_MESSAGE()
END CATCH
GO
Zaznacz i uruchom (F5) poniszy fragment kodu:
-- (4) Wyswietlenie zawartosci tabeli bledow
SELECT * FROM TabelaBledow
GO
Wynik dziaania pokazano na rys. 4.
Rys. 4 Informacja o bdzie

Modu 8
Programowanie zaawansowane w T-SQL
(1) Ustawiamy si na baze danych PraceDyplomowe
) Tworzymy tabele w ktorej bedzie przechowywana informacja o
, ktra bdzie zawieraa
informacje o wystpujcych bdach. W kolumnie ErrorNumber
w kolumnie ErrorMessage
ErrorDate data i godzina
bieca data i czas jest
GETDATE).

obslugi przechwytywania bledow
INSERT TabelaBledow(ErrorNumber, ErrorMessage)

(4) Wyswietlenie zawartosci tabeli bledow

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 8
ITA-101 Bazy danych Programowanie zaawansowane w T-SQL
Strona 12/12
Laboratorium rozszerzone
Zadanie 1 (czas realizacji 90 min)
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od swojego szefa, e
firma zarzdzajca baz AdventureWorks planuje rozszerzenie i modernizacje systemu w celu
spenienia pewnych standardw. W zwizku z modernizacj systemu bazodanowego
najprawdopodobniej ulegn zmianie pewne metody wybierania danych. Wydaje si zasadne
stworzenie bardziej wyrafinowanych metod wybierania danych w oparciu o zaawansowane
konstrukcje jzyka T-SQL. Prawdopodobnie rwnie w zwizku z wejciem na wyszy poziom
programowania w T-SQL bdziesz musia wprowadzi strukturaln obsug bdw.
Zadanie jakie przed Toba stoi to:
1. Podjcie decyzji, ktre zapytania w bazie danych pozostan bez zmian, ktre zostan
zmodyfikowane i zastpione czym bardziej zoonym wykorzystujc zaawansowane
moliwoci jzyka T-SQL, a ktre bd musiay zosta cakowicie usunite.
2. Zaplanowanie struktury obsugi bdw dla zapyta istniejcych w systemie bazodanowym.



ITA-101 Bazy Danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Modu 9
Wersja 1.0
Procedury skadowane i wyzwalacze
Spis treci
Procedury skadowane i wyzwalacze ................................................................................................... 1
Informacje o module ............................................................................................................................ 2
Przygotowanie teoretyczne ................................................................................................................. 3
Przykadowy problem .................................................................................................................. 3
Podstawy teoretyczne.................................................................................................................. 3
Przykadowe rozwizanie ............................................................................................................. 8
Porady praktyczne ..................................................................................................................... 13
Uwagi dla studenta .................................................................................................................... 14
Dodatkowe rda informacji..................................................................................................... 14
Laboratorium podstawowe ................................................................................................................ 16
Problem 1 (czas realizacji 10 min) .............................................................................................. 16
Problem 2 (czas realizacji 10 min) .............................................................................................. 17
Problem 3 (czas realizacji 15 min) .............................................................................................. 18
Problem 4 (czas realizacji 10 min) .............................................................................................. 19
Laboratorium rozszerzone ................................................................................................................. 21

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 9
ITA-101 Bazy danych Procedury skadowane i wyzwalacze
Strona 2/21
Informacje o module
Opis moduu
W tym module znajdziesz informacje na temat sposobu dziaania oraz
podstaw tworzenia procedur skadowanych. Dowiesz si, na czym polega
rnica pomidzy zwykym zapytaniem T-SQL a procedur skadowan oraz
co to jest kompilacja i rekompilacja procedury. Poznasz rwnie specjalny
rodzaj procedury skadowanej wyzwalacz.
Cel moduu
Celem moduu jest zapoznanie czytelnika z procedurami skadowanymi oraz
wyzwalaczami w rodowisku bazodanowym Microsoft SQL Server 2008 oraz
zaprezentowanie, jak wykorzysta je w przykadowym projekcie.
Uzyskane kompetencje
Po zrealizowaniu moduu bdziesz:
wiedzia, jak napisa wasn procedur skadowan
umia rozbudowywa gotowe procedury skadowane
umia tworzy proste wyzwalacze
umia zarzdza wyzwalaczami
umia wykorzystywa wyzwalacze do optymalizacji i automatyzacji
dziaania SQL Server 2008
Wymagania wstpne
Przed przystpieniem do pracy z tym moduem powiniene:
potrafi samodzielnie stworzy baz danych wraz z jej obiektami
(patrz: modu 4)
zna podstawow skadni jzyka T-SQL
umie napisa wasne zapytania w jzyku T-SQL (patrz: moduy 5 i 6)
zna zaawansowane mechanizmy jzyka T-SQL (patrz: modu 8)
wiedzie, na czym polega bezpieczestwo w bazach danych (patrz:
modu 10)
Mapa zalenoci moduu
Zgodnie z map zalenoci przedstawion na rys. 1, przed przystpieniem
do realizacji tego moduu naley zapozna si z materiaem zawartym
w moduach 3, 5, 6, 8 i 10.

Rys. 1 Mapa zalenoci moduu
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 9
ITA-101 Bazy danych Procedury skadowane i wyzwalacze
Strona 3/21
Przygotowanie teoretyczne
Przykadowy problem
Podczas wytwarzania bazy danych wie ze sob grup osb, do ktrej nale projektant bazy
danych, administrator systemu zarzdzania baz danych, administrator bazy danych oraz
programista bazy danych. Bardzo wane jest, eby wszyscy biorcy udzia w wytwarzaniu systemu
bazodanowego wspdziaali ze sob na rnych etapach. Najwicej wsplnego z programowaniem
w T-SQL ma programista bazy danych. Od niego w duej mierze zaley, czy wytworzone funkcje,
procedury skadowane, wyzwalacze i inne element bd dziaay we waciwy sposb. To on jest
odpowiedzialny za przygotowanie odpowiednich elementw programowych, ktre nastpnie
bdzie wykorzystywa projektant aplikacji i programista aplikacji dostpowej.
Kolejnym zadaniem jakie stoi przed programist i administratorem bazy danych jest stworzenie
odpowiedniej liczby wyzwalaczy, ktre s pewnym rodzajem procedur skadowanych, z tyme
wywoywanych niejawnie. Naley pamita, i uycie procedur skadowanych prowadzi do
powstania kolejnej warstwy separujcej uytkownika kocowego od fizycznych danych, tym samym
powodujc maskowanie fizycznej struktury bazy. Z tego powodu bardzo wane jest przemylane i
odpowiednie przygotowanie zbioru procedur skadowanych.
Podstawy teoretyczne
Procedury skadowane
Procedura skadowana (ang. stored procedure) jest nazwanym zbiorem polece w jzyku SQL, ktry
jest przechowywany na serwerze baz danych i jest kompilowany przy pierwszym wykonaniu.
Procedury wnosz do rodowiska bazodanowego przetwarzanie warunkowe i moliwoci
programistyczne.
W systemie zarzdzania bazami danych wykonanie dowolnego fragmentu kodu jzyka SQL wie
si z pewnym cigiem czynnoci poczwszy od sprawdzenia skadni, a po kompilacj i
wykonanie.
Proces wykonywania zapytania przez SQL Server
Proces wykonania pojedynczego zapytania w jzyku T-SQL w Microsoft SQL Server 2008 dzieli si
na nastpujce etapy:
1. Sprawdzenie i rozdzielenie kodu na fragmenty - dokonywany jest podzia kodu na fragmenty
nazywane symbolami. Proces ten nazywamy czsto nazywany jest analiz leksykaln.
2. Sprawdzenie kodu pod wzgldem poprawnoci semantycznej i syntaktycznej
dokonywana jest kontrola poprawnoci semantycznej, czyli sprawdzenie, czy kod nie
odwouje si do nieistniejcych obiektw lub nie uywa nieistniejcych polece oraz kontrola
poprawnoci syntaktycznej, podczas ktrej sprawdzana jest poprawno uytej skadni.
3. Standaryzacja wyodrbnionej czci kodu silnik wykonywania zapyta zapisuje kod w
jednoznacznej postaci (np. usuwa niepotrzebne symbole).
4. Optymalizacja Microsoft SQL Server posiada wewntrzny proces zwany Optymalizatorem
Zapyta, ktry wybiera optymalny sposb dostpu do danych, tzn. taki plan wykonania
zapytania (ang. execution plan), w ktrym serwer bdzie skanowa (przeszukiwa)
najmniejsz ilo stron danych (o fizycznej strukturze danych w Microsoft SQL Server moesz
przeczyta w module 6). Na optymalizacj szczeglny wpyw ma struktura indeksw oraz
sposb czenia tabel.
5. Kompilacja i wykonanie zapytanie jest kompilowane wedug optymalnego planu
wykonania i w takiej postaci wykonywane.
6. Zwrcenie wynikw wyniki zapytania zwracane s do klienta.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Proces wykonywania procedury skadowanej
Wykonywanie procedur skadowanych odbywa si inaczej ni wykonywanie pojedyncz
zapytania SQL. Utworzenie
podzieli na nastpujce krok
1. Utworzenie definicji procedury skadowanej
PROCEDURE.
2. Sprawdzanie kodu procedury pod wzgldem poprawnoci
poprawnoci syntaktycznej kodu procedury
3. Zapamitanie procedury w bazie danych
s zapisywane do odpowiednich
syscomments).
4. Wywoanie procedury
parametrami poleceniem
5. Waciwe wykonanie procedury
6. Buforowanie planu wykonania
w tzw. buforze procedur
Na rys. 2 pokazano schemat tworzenia i wykonania procedury skadowanej w
Server 2008.
Rys. 2 Tworzenie i wykonanie procedury skadowanej w SQL Server 2008
Rekompilacja procedur skadowanych
Czasami zachodzi potrzeba ponownej kompilacji procedury skadowanej. Dzieje si tak, gdy
wydajno skompilowanej procedury gwatownie spada (moe tak by z wielu powodw, np.
zmiany struktury indeksw lub zapisania duej iloci rekordw), gdy istnieje potr
procedury przy kadym jej wykonaniu (powody mog by te same, co w pierwszej sytuacji) lub gdy
zmianie ulega kod samej procedury (gdy uyjemy polecenia
Rekompilacji, czyli ponownej kompilacji procedury, mona dokona na dw
dodajc w definicji procedury klauzul
uywajc specjalnej systemowej procedury rekompilujcej (w
procedura sp_recompile
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Procedury skadowane i wyzwalacze
Strona 4/21
Proces wykonywania procedury skadowanej
Wykonywanie procedur skadowanych odbywa si inaczej ni wykonywanie pojedyncz
e i pierwsze wykonanie procedury w Microsoft
podzieli na nastpujce kroki:
Utworzenie definicji procedury skadowanej wykonywane jest
Sprawdzanie kodu procedury pod wzgldem poprawnoci dokonywana jest kontrola
poprawnoci syntaktycznej kodu procedury.
Zapamitanie procedury w bazie danych nazwa procedury i jej kod
do odpowiednich widokw systemowych bazy danych (
anie procedury procedura skadowana jest wywoywana
parametrami poleceniem EXEC.
Waciwe wykonanie procedury optymalizacja planu wykonania i kompilacja.
Buforowanie planu wykonania skompilowany optymalny plan wykonania jest zapisywan
buforze procedur, skd jest wczytywany przy nastpnym wywoaniu procedury.
pokazano schemat tworzenia i wykonania procedury skadowanej w
Tworzenie i wykonanie procedury skadowanej w SQL Server 2008
Rekompilacja procedur skadowanych
Czasami zachodzi potrzeba ponownej kompilacji procedury skadowanej. Dzieje si tak, gdy
wydajno skompilowanej procedury gwatownie spada (moe tak by z wielu powodw, np.
zmiany struktury indeksw lub zapisania duej iloci rekordw), gdy istnieje potr
procedury przy kadym jej wykonaniu (powody mog by te same, co w pierwszej sytuacji) lub gdy
zmianie ulega kod samej procedury (gdy uyjemy polecenia ALTER PROCEDURE
Rekompilacji, czyli ponownej kompilacji procedury, mona dokona na dwa sposoby:
definicji procedury klauzul WITH RECOMPILE.
ywajc specjalnej systemowej procedury rekompilujcej (w Microsoft
sp_recompile).
Modu 9
Procedury skadowane i wyzwalacze
Wykonywanie procedur skadowanych odbywa si inaczej ni wykonywanie pojedynczego
icrosoft SQL Server mona
ywane jest polecenie CREATE
dokonywana jest kontrola
procedury i jej kod (tzw. ciao procedury)
systemowych bazy danych (sysobjects oraz
a jest wywoywana z odpowiednimi
optymalizacja planu wykonania i kompilacja.
kompilowany optymalny plan wykonania jest zapisywany
przy nastpnym wywoaniu procedury.
pokazano schemat tworzenia i wykonania procedury skadowanej w rodowisku SQL

Tworzenie i wykonanie procedury skadowanej w SQL Server 2008
Czasami zachodzi potrzeba ponownej kompilacji procedury skadowanej. Dzieje si tak, gdy
wydajno skompilowanej procedury gwatownie spada (moe tak by z wielu powodw, np.
zmiany struktury indeksw lub zapisania duej iloci rekordw), gdy istnieje potrzeba kompilacji
procedury przy kadym jej wykonaniu (powody mog by te same, co w pierwszej sytuacji) lub gdy
ALTER PROCEDURE).
a sposoby:
Microsoft SQL Server jest to
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 9
ITA-101 Bazy danych Procedury skadowane i wyzwalacze
Strona 5/21
Tworzenie procedur skadowanych
Do tworzenia procedur skadowanych uywamy polecenia jzyka SQL CREATE PROCEDURE (lub w
skrcie CREATE PROC):
CREATE { PROC | PROCEDURE } [nazwa_schematu.]nazwa_procedury
[ @parametr typ_danych[,n] ]
[ WITH <opcje_procedury> [,n] ]
[ FOR REPLICATION ]
AS
cialo_procedury

<opcja_procedury> ::=
[ ENCRYPTION ]
[ RECOMPILE ]
[ EXECUTE_AS_Clause ]
W definicji procedury skadowanej okrelamy:
nazw procedury
nazwy
typy danych
kierunek dziaania parametrw procedury
ciao procedury (kod wykonywany przez procedur)
Opcjonalnie moemy rwnie zadeklarowa, czy procedura ma by przy kadym wykonaniu
rekompilowana.
Poniej podano przykad utworzenia prostej procedury skadowanej nie zawierajcej adnych
parametrw:
CREATE PROCEDURE p_pracownicy
AS
SELECT imie, nazwisko
FROM Osoby
Wywoanie procedury skadowanej
Do wywoania procedury skadowanej suy polecenie EXECUTE (lub w skrcie EXEC):
[ { EXEC | EXECUTE } ]
[ @return_status = ]
{ module_name [ ;numer ] | @module_name_var }
[ [ @parametr = ] { warto
| @zmienna [ OUTPUT ]
| [ DEFAULT ]
}
]
[,n]
[ WITH RECOMPILE ]
Przykadowo dla utworzonej wczeniej procedury skadowanej p_pracownicy wywoanie bdzie
wygldao w nastpujcy sposb:
EXEC p_pracownicy
GO
Parametry procedur skadowanych
Procedury skadowane mog przyjmowa parametry wywoania. Ilo i typ danych, ktre naley
poda przy wywoaniu procedury skadowanej, okrelamy w trakcie tworzenia procedury (uywajc
polecenia CREATE PROCEDURE). W zalenoci od tego, czy parametry bd potrzebne do
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 9
ITA-101 Bazy danych Procedury skadowane i wyzwalacze
Strona 6/21
wykonania procedury, czy te maj by one przez procedur zwrcone, wyrniamy dwa rodzaje
parametrw: wejciowe (INPUT) oraz wyjciowe (OUTPUT).
Moliwe jest te zdefiniowanie w procedurze parametru przejciowego (bdcego jednoczenie
wejciowym i wyjciowym), czyli parametru, ktrego warto podajemy przy wywoaniu, a ktra
moe zosta zmieniona podczas dziaania procedury.
CREATE PROCEDURE p_pracownicy
@nazwisko varchar(40)='Smith'
AS
SELECT imie, nazwisko
FROM Osoby
WHERE nazwisko=@nazwisko
GO
Zalety i wady procedur skadowanych
Procedury skadowane dziki temu, e s zapisane na serwerze oraz dziki skompilowanemu
planowi wykonania przechowywanemu w buforze procedur posiadaj dwie zasadnicze zalety:
zwikszaj wydajno bazy danych
ograniczaj ruch w sieci (przesyane s tylko nazwy procedur i wartoci parametrw)
Ponadto procedury skadowane maj kilka zalet z punktu widzenia programistw aplikacji
bazodanowych:
Zapewniaj jedn logik biznesow dla wszystkich aplikacji klienckich.
Przesaniaj szczegy tabel w bazie danych (przezroczysto struktury dla zwykego
uytkownika aplikacji).
Umoliwiaj modyfikacj danych bez bezporedniego dostpu do tabel bazy danych.
Dostarczaj mechanizmw bezpieczestwa (mona nadawa uprawnienia do wykonywania
procedur poszczeglnym uytkownikom bazy danych).
Umoliwiaj programowania modularne (procedura zostaje zapisana w bazie danych, skd
mona j wielokrotnie wywoywa; procedur moe pisa osoba wyspecjalizowana w bazach
danych programista aplikacji jedynie j wywoa).
Zapewniaj szybsze wykonanie (jeli wymagane jest wykonanie duej liczby zapyta,
procedury skadowane s szybsze, poniewa wykonuj si na serwerze, s optymalizowane i
umieszczane w pamici przy pierwszym wykonaniu).
Zmniejszaj ruch sieciowy (jeli zachodzi potrzeba wykonania wielu zapyta w T-SQL na raz,
mona je zastpi wywoaniem jednej procedury skadowanej).
Jeli w ogle mona mwi o wadach procedur skadowanych, to w zasadzie mona wspomnie o
kilku aspektach:
Nastpstwem rekompilacji czasem jest zmniejszenie wydajnoci procedury (czyli
administrator baz danych musi wiedzie, kiedy przeprowadzi rekompilacj).
W przypadku zagniedania procedur skadowanych naley pamita o tym, e zmienia si
kontekst wykonania (procedura zagniedana wykonuje si z uprawnieniami innej
procedury).
Wreszcie, aby tworzy dobre (tzn. poprawnie dziaajce) procedury skadowane niezbdne
jest poznanie zaawansowanych mechanizmw jzyka programowania baz danych (np. T-
SQL), takich jak zmienne, funkcje i procedury systemowe czy obsuga bdw.
Wyzwalacze
Wyzwalacz (ang. trigger) jest specjalnym rodzajem procedury skadowanej. W przeciwiestwie do
zwykej procedury skadowanej wyzwalacz nie moe zosta jawnie wywoany.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 9
ITA-101 Bazy danych Procedury skadowane i wyzwalacze
Strona 7/21
Wyzwalacz jest wywoywany w reakcji na okrelone akcje. Akcje te to wykonanie przez uytkownika
okrelonego polecenia SQL (INSERT, UPDATE, DELETE) na danej tabeli, dla ktrej zosta okrelony
wyzwalacz.
Tworzenie wyzwalaczy
Wyzwalacze tworzymy uywajc polecenia CREATE TRIGGER. W definicji wyzwalacza okrelamy:
nazw wyzwalacza
dla jakiej tabeli tworzymy wyzwalacz
na jakie akcje wyzwalacz bdzie reagowa
jakiego typu wyzwalacz tworzymy
ciao wyzwalacza (odpowiednik ciaa procedury skadowanej) czyli kod wykonywany przez
wyzwalacz
W SQL Server 2008 istniej trzy rodzaje wyzwalaczy:
1. Wyzwalacze obsugujce operacje DML (ang. Data Manipulation Language), czyli INSERT,
UPDATE oraz DELETE wykonywane na tabeli lub widoku.
CREATE TRIGGER [nazwa_schematu.]nazwa_wyzwalacza
ON { table | view }
[ WITH <dml_opcje_wyzwalacza> [,n] ]
{ FOR | AFTER | INSTEAD OF }
[ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ]
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS wyrazenie_sql [ ; ] [,n]

<dml_opcje_wyzwalacza> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]
2. Wyzwalacze obsugujce operacje DDL (ang. Data Definition Language), czyli CREATE,
ALTER, DROP oraz pewne procedury skadowane, ktre wykonuj operacje DDL.
CREATE TRIGGER nazwa_wyzwalacza
ON { ALL SERVER | DATABASE }
[ WITH <ddl_opcje_wyzwalacza> [,n] ]
{ FOR | AFTER } { rodzaj_zdarzenia | event_group } [,n]
AS wyrazenie_sql [ ; ] [,n]

<ddl_opcje_wyzwalacza> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]
3. Wyzwalacze obsugujce zdarzenie logowania (LOGON), ktre jest wywoywane, kiedy
ustalana jest sesja logujcego si uytkownika.
CREATE TRIGGER nazwa_wyzwalacza
ON ALL SERVER
[ WITH <opcje_wyzwalacza_logon> [,n] ]
{ FOR | AFTER } LOGON
AS wyrazenie_sql [ ; ] [,n]

<opcje_wyzwalacza_logon> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 9
ITA-101 Bazy danych Procedury skadowane i wyzwalacze
Strona 8/21
Zastosowanie wyzwalaczy
Wyzwalacze znajduj wiele zastosowa w bazach danych. Przede wszystkim stosujemy wyzwalacze
wszdzie tam, gdzie w inny sposb nie da si weryfikowa integralnoci danych, a zwaszcza ich
zgodnoci z reguami logiki biznesowej. Na przykad chcemy, by w pewnej kolumnie tabeli
wstawiane byy tylko wartoci unikalne, ale jednoczenie zezwalamy na wstawienie wartoci NULL.
Jedynym rozwizaniem jest uycie wyzwalacza, ktry sprawdzi, czy wstawiana wanie warto ju
w danym polu wystpia, a jeeli uytkownik wstawia warto NULL, to wyzwalacz mu na to
pozwoli (tego efektu nie mona osign innymi metodami, np. uywajc indeksw, ustawiajc
waciwo unikalnoci kolumny lub uywajc kryteriw sprawdzajcych dane wstawiane w
kolumn).
Drugie zastosowanie to wszelkiego typu automatyzacja zada administracyjnych w bazie danych
(wszelkiego rodzaju przypominacze, obsuga nietypowych dziaa czy chociaby wysyanie
wiadomoci przez email lub pager).
Wreszcie z uwagi na pewne cechy wyzwalacze pozwalaj na okrelony typ przetwarzania
transakcyjnego.
Przykadowe rozwizanie
Tworzenie i uruchomienie procedury skadowanej
W cel utworzenia nowej procedury skadowanej naley z paska narzdziowego wybra New Query i
wpisa kod procedury. Przykadowo:
CREATE PROCEDURE dbo.getAllCustomers
AS
BEGIN
SELECT [CustomerID], [CompanyName]
FROM [Northwind].[dbo].[Customers]
END
Nastpnie naley wykona skrypt wciskajc F5 lub wybierajc z paska narzdziowego Execute. Jeli
procedura skadowana zostaa utworzona poprawnie, powiniene otrzyma komunikat
Command(s) completed successfully oraz zauway, e zostaa dodana nowa procedura
skadowana w obszarze Object Explorer, w gazi Databases -> Northwind -> Programmability ->
StoredProcedures, co pokazano na rys. 3.
Jeli procedury nie wida w wyej wymienionej gazi, naley j odwiey. Jeli procedura jest ju
utworzona, a mimo to zadano kolejnego jej utworzenia, to otrzymamy nastpujcy komunikat:
There is already an object named getAllCustomers in the databases.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 9
ITA-101 Bazy danych Procedury skadowane i wyzwalacze
Strona 9/21

Rys. 3 Tworzenie nowej procedury
Aby uruchomi procedur skadowan, wystarczy uy polecenia EXECUTE (lub krcej EXEC).
Mona take klikn prawym klawiszem myszki procedur i wybra Execute Stored Procedure, co
wywoa okienko, w ktrym mona przekaza do procedury jakie parametry. Na rys. 4 wida, e
rozwijane menu udostpnia take inne opcje, takie jak modyfikacja lub usunicie.

Rys. 4 Wywoanie procedury
Inne metody tworzenia procedur skadowanych
Inn metoda tworzenia procedury skadowanej jest skorzystanie z gotowego schematu procedury.
W tym celu kliknij prawym przyciskiem myszy na gazi Stored Procedures i wybierz New
StoredProcedure uzyskasz w ten sposb gotowy schemat procedury skadowanej, co pokazano
na rys. 5.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 9
ITA-101 Bazy danych Procedury skadowane i wyzwalacze
Strona 10/21

Rys. 5 Tworzenie nowej procedury wedug wzorca
Procedury skadowane a polisy
W SQL Server 2008 wprowadzono polityk opart o Management Framework dla silnika SQL, dziki
ktrej zarzdzanie serwerem bdzie bardziej zautomatyzowane w oparciu o pewne reguy, a nie
skrypty.
Zadaniem DMF (z ang. Declarative Management Framework) jest umoliwienie administratorowi
zarzdzania serwerami za pomoc definiowanych przez administratora regu. W SQL Server 2008
mamy gotowe szablony regu oparte o najlepsze praktyki zaimplementowane w narzdziu Best
Practices Analyzer, uywanym przez administratorw z poprzednimi wersjami systemu SQL Server.
Korzystajc z mechanizmu polis moemy stworzy restrykcje dla procedur skadowanych o postaci:
brak moliwoci definiowania przez programist bazy danych procedur skadowanych z prefiksem
sp_. Restrykcj t wprowadzimy na bazie danych Biblioteka.
W ramach Object Explorer rozwijamy zakadk Management a nastpnie Policy Menagement. W
pierwszym kroku naley doda warunki, jakie bd doczone do polisy.
Jako pierwszy stwrzmy warunek, ktry bdzie pilnowa, eby nazwa procedury skadowanej nie
posiadaa prefiksu sp_. Konfiguracj tego warunku pokazano na rys. 6.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 9
ITA-101 Bazy danych Procedury skadowane i wyzwalacze
Strona 11/21

Rys. 6 Stworzenie warunku na procedur skadowan
Nastpnie naley stworzy warunek dotyczcy bazy danych, na ktrej polisa, ktr za chwil
zaoymy, bdzie dziaaa. Zostao to zilustrowane na rys. 7.

Rys. 7 Stworzenie warunku na baz danych
W kolejnym kroku naley wystawi polis i doda do niej wczeniej stworzone warunki.
Konfiguracje wystawiania polisy pokazano na rys. 8.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 9
ITA-101 Bazy danych Procedury skadowane i wyzwalacze
Strona 12/21

Rys. 8 Zaoenie polisy
Kiedy mamy ju wystawiona polis i chcemy j przetestowa, powinnimy klikn prawym
przyciskiem myszy baz danych Biblioteka i wybra New Query. Nastpnie w edytorze moemy
wpisa nastpujcy kod, sucy do utworzenia pustej procedury skadowanej:
CREATE PROCEDURE sp_testowa
AS
GO
Zauwamy, ze wystpi bd. Procedura nie zostaa utworzona, gdy zadziaaa restrykcja DMF, co
pokazano na rys. 9.

Rys. 9 Bd procedury i zadziaanie polisy
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 9
ITA-101 Bazy danych Procedury skadowane i wyzwalacze
Strona 13/21
Tworzenie wyzwalacza
Stwrzmy wyzwalacz, ktrego zadaniem bdzie nie dopuci do zalogowania wskazanego przez nas
uytkownika. W tym celu na pocztku dodajemy uytkownika zbd_user i kojarzymy go z baz
danych AdventureWorks. Nastpnie tworzymy odpowiedni wyzwalacz, ktry nie pozwoli
uytkownikowi zalogowa si do Microsoft SQL Server Management Studio. W tym celu klikamy
prawym przyciskiem myszy baz AdventureWorks i z menu kontekstowego wybieramy New
Query. W oknie edycji zapytania wpisujemy nastpujcy kod:
USE AdventureWorks
GO

CREATE TRIGGER trgRestrictUser
ON ALL SERVER WITH EXECUTE AS 'sa'
FOR LOGON
AS
BEGIN
IF (ORIGINAL_LOGIN() = 'zbd_user' AND APP_NAME() = 'Microsoft SQL
Server Management Studio')
ROLLBACK;
END
Aby przetestowa dziaanie utworzonego wyzwalacza, uruchamiamy drug instancj SQL Server
Management Studio. W oknie Connect to Server Authentication wybieramy SQL Server
Authentication, w polu Login wpisujemy zbd_user, a w polu Password user. Nastpnie klikamy
Connect. W efekcie powinien pokaza si bd logowania jak na rys. 10.

Rys. 10 Bad logowania
Porady praktyczne
Procedury skadowane
W Microsoft SQL Server przy kontroli poprawnoci kodu procedury w trakcie jej tworzenia
serwer nie sprawdza, czy istniej obiekty (tabele, widoki), do ktrych procedura si
odwouje. Sprawdzenie to nastpuje dopiero przy wykonaniu procedury (w przypadku
odwoania do nieistniejcego obiektu procedura zgosi bd).
Rekompilacja procedury skadowanej nie oznacza utworzenia procedury na nowo. Oznacza
utworzenie nowego planu wykonania i zapisanie go do bufora procedury na miejsce
poprzednio skompilowanego planu tej samej procedury.
Systemowe procedury skadowane w systemie Microsoft SQL Server 2008 s
przechowywane w bazie master, za w ich nazwach pojawia si prefiks sp_.
Zgodnie z dobra praktyka programowania baz danych, procedury skadowane uytkownika w
SQL Server 2008 nie powinny zaczyna si od prefiksu sp_. Prefiksem tym obarczone s
systemowe procedury skadowane. W sytuacji kiedy kompilator zobaczy procedur
skadowan o takiej nazwie, bdzie jej szuka w procedurach systemowych jako tych, ktre
ju s skompilowane, a ich plan wykonania jest zapamitany w buforze procedur. Dopiero
kiedy jej tam nie znajdzie zacznie j kompilowa wedug poznanego schematu. Spowoduje to
wyduenie czasu wykonania procedury skadowanej.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 9
ITA-101 Bazy danych Procedury skadowane i wyzwalacze
Strona 14/21
Stworzenie polisy, ktra nie pozwoli programicie utworzy procedury skadowanej
zaczynajcej si od prefiksu sp_ spowoduje, e pierwsza prba stworzenia procedury o
takiej nazwie pocignie za sob konieczno uruchomienia sprawdzenia polisy, a zatem czas
wykonania polecenia nieznacznie si wyduy. Kolejna prba stworzenia procedury
niezgodnej z polis spowoduje natychmiastowe wywietlenie komunikatu o naruszeniu
restrykcji.
Z punktu widzenia bezpieczestwa fizycznej struktury bazy danych procedury skadowane
stanowi dodatkowy poziom izolacji pomidzy warstw aplikacji dostpowej do bazy danych
a warstw fizyczna bazy danych.
Poprzez zastosowanie procedur skadowanych moemy unikn jednego z
najpopularniejszych atakw na baz danych, tzw. Wstrzykiwania kodu SQL z racji tego i w
sieci pomidzy baz danych a aplikacj dostpow nie jest przesyany kod SQL tylko nazwa
procedury skadowanej wraz z jej parametrami.
Wyzwalacze
Wyzwalacze mog by tworzone bezporednio w Microsoft SQL Server 2008 Database
Engine za pomoc zwykych zapyta napisanych w jzyku T-SQL lub poprzez specjalne
metody w Microsoft .NET Framework Common Language Runtime (CLR), ktre po
utworzeniu importowane s do instancji serwera bazodanowego.
Microsoft SQL Server 2008 pozwala na tworzenie wielu wyzwalaczy dla specyficznego
zdarzenia.
Do tworzenia wyzwalaczy potrzebne s specjalne uprawnienia w bazie danych.
Nastpujce instrukcje jzyka T-SQL nie s dozwolone w wyzwalaczach DML: ALTER
DATABASE, LOAD DATABASE, RESTORE DATABASE, CREATE DATABASE, LOAD LOG,
RESTORE LOG, DROP DATABASE i RECONFGURE. Dodatkowo powysze instrukcje nie mog
by uyte wewntrz ciaa wyzwalacza DML.
Uwagi dla studenta
Jeste przygotowany do realizacji laboratorium jeli:
rozumiesz, co to jest procedura skadowana oraz wyzwalacz
rozumiesz zasad dziaania procedur skadowanych i wyzwalaczy
znasz skadni zaawansowanego jzyka Transact-SQL
umiesz dodawa uytkownikw do SQL Server
rozumiesz rnic pomidzy rnymi rodzajami wyzwalaczy
Pamitaj o zapoznaniu si z uwagami i poradami zawartymi w tym module. Upewnij si, e
rozumiesz omawiane w nich zagadnienia. Jeli masz trudnoci ze zrozumieniem tematu zawartego
w uwagach, przeczytaj ponownie informacje z tego rozdziau i zajrzyj do notatek z wykadw.
Dodatkowe rda informacji
1. Deren Bieniek, Randy Dyess, Mike Hotek, Javier Loria, Adam Machanic, Antonio Soto, Adolfo
Wiernik, SQL Server 2005 Implementacja i obsuga, APN Promise, 2006
W ksice obszernie przedstawiono zagadnienia zwizane z programowaniem baz
danych. Szczegowo omwiono zagadnienia dotyczce procedur skadowanych i
wyzwalaczy. Omwiono w niej implementacje procedur skadowanych oraz w jaki
sposb przyznawa do nich uprawnienia. Pokazano implementacje wyzwalaczy
(DML i DDL). Ksika szczeglnie polecana ze wzgldu na du zawarto wicze
laboratoryjnych.
2. Kalen Delaney, Podstawy baz danych krok po kroku, APN Promise, 2006
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 9
ITA-101 Bazy danych Procedury skadowane i wyzwalacze
Strona 15/21
Bardzo dobra ksika dla osb pocztkujcych. Pokazano w niej praktyczne
zastosowanie wyzwalaczy i procedur skadowanych. Ksika oprcz teorii zawiera
wiele przykadw.
3. Dusan Petkovic, Microsoft SQL Server 2008: A Beginner's Guide, McGraw-Hill, 2008
Pozycja napisana w sposb prosty. Wprowadza w SQL Server 2008 w sposb szybki
i atwy. Osoba pocztkujca w SQL Server 2008 znajdzie w niej podstawy z kadego
tematu dotyczcego serwera bazodanowego. W prosty sposb dowiesz si, jak
tworzy proste procedury skadowane bez parametrw i z parametrami oraz jak
posugiwa si wyzwalaczami. Pozycja polecana zarwno dla osb pocztkujcych,
jak i zaawansowanych.

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Laboratorium podstawowe
Problem 1 (czas realizacji 10
Jeste programist bazodanowym w
swojego szefa, e firma planuje rozszerz
ktrym zarzdzaa jak dotd na Twoim wydziale
ju istniejcych procedur skadowanych.
Zadanie Tok postpowania
1. Nawi
poczenie z SQL
Server 2008
Uruchom maszyn wirtualn

Kliknij
SQL Server Management Studio
W oknie logowania kliknij
2. Uzyskaj
informacje o bazie
danych
Z menu gwnego wybierz
Odszukaj plik
Zaznacz i uruchom
procedur systemow
--
USE PraceDyplomowe
GO
--
EXEC sp_helpdb
3. Uzyskaj
informacje o
obiektach bazy
danych
Zaznacz i uruchom
procedur systemow
--
EXEC sp_help dbo.Prace
4. Uzyskaj
informacje o
indeksach tabeli
Zaznacz kod, ktry wywouje procedur systemow
--
EXEC sp_helpindex dbo.Prace
Wcinij
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Procedury skadowane i wyzwalacze
Strona 16/21
Laboratorium podstawowe
Problem 1 (czas realizacji 10 min)
programist bazodanowym w firmie National Insurance. Wanie dowiedziae si od
e firma planuje rozszerzenie na skal uczelnian systemu
zarzdzaa jak dotd na Twoim wydziale. Pierwsze zadanie, jakie przed Tob
procedur skadowanych.
Tok postpowania
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Jeli nie masz zdefiniowanej maszyny wirtualnej w
dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
D:\VirtualPC\Dydaktyka\BD2008.vhd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008
SQL Server Management Studio.
W oknie logowania kliknij Connect.
Z menu gwnego wybierz File -> Open -> File.
Odszukaj plik C:\Labs\Lab09\ProcedurySystemowe
Zaznacz i uruchom (F5) poniszy fragment kodu, ktry wywouje
procedur systemow sp_helpdb:
-- (1) Ustawiamy sie na baze danych PraceDyplomowe
USE PraceDyplomowe
GO
-- (2) Wywolanie procedury systemowej sp_helpdb
EXEC sp_helpdb PraceDyplomowe
Procedura sp_helpdb zwraca informacje o wybranej bazie danych
(rozmiar, list plikw i informacje o nich).
Zaznacz i uruchom (F5) poniszy fragment kodu, ktry wywouje
procedur systemow sp_help:
-- (3) Wywolanie procedury systemowej sp_help
EXEC sp_help dbo.Prace
Procedura sp_help zwraca informacje o wybranym obiekcie bazy
danych.
Czy w tabeli dbo.Prace jest jakakolwiek kolumna typu
Zaznacz kod, ktry wywouje procedur systemow
-- (4) Wywolanie procedury systemowej sp_helpindex
EXEC sp_helpindex dbo.Prace
Wcinij F5, aby uruchomi zaznaczony fragment kodu.
Procedura sp_helpindex zwraca list i opis indeksw zaoonych na
kolumnach w wybranej tabeli.
Czy w tabeli dbo.Prace jest naoony jaki indeks?
Modu 9
Procedury skadowane i wyzwalacze
firmie National Insurance. Wanie dowiedziae si od
systemu prac dyplomowych,
jakie przed Tob stoi to analiza

Jeli nie masz zdefiniowanej maszyny wirtualnej w Mirosoft Virtual PC,
dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
Microsoft SQL Server 2008 uruchom
ProcedurySystemowe.sql i kliknij Open.
poniszy fragment kodu, ktry wywouje
(1) Ustawiamy sie na baze danych PraceDyplomowe
(2) Wywolanie procedury systemowej sp_helpdb
zwraca informacje o wybranej bazie danych
poniszy fragment kodu, ktry wywouje
(3) Wywolanie procedury systemowej sp_help
zwraca informacje o wybranym obiekcie bazy
jest jakakolwiek kolumna typu bit?
Zaznacz kod, ktry wywouje procedur systemow sp_helpindex.
(4) Wywolanie procedury systemowej sp_helpindex
, aby uruchomi zaznaczony fragment kodu.
zwraca list i opis indeksw zaoonych na
jest naoony jaki indeks?
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Problem 2 (czas realizacji
Po dokonaniu analizy procedur ju istniejcych
postawione, to zdefiniowanie
ju istniejcych procedur skadowanych.
skadowanymi bez parametrw.
Zadanie Tok postpowania
1. Nawi
poczenie z SQL
Server 2008
Uruchom maszyn wirtualn

Kliknij
SQL Server Management Studio
W oknie logowania kliknij
2. Utwrz
procedur
skadowan
Z
Odszukaj plik
Open
Zaznacz kod, ktry wywouje procedur skadowan
--
USE PraceDyplomowe
GO
--
CREATE PROCEDURE Promotorzy
AS
BEGIN
SELECT [Nazwisko], [Imie]
FROM Promotor
END
Wcinij
3. Uruchom
procedur
skadowan
Zaznacz kod, ktry wywouje procedur
--
EXEC Promotorzy
GO
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Procedury skadowane i wyzwalacze
Strona 17/21
Problem 2 (czas realizacji 10 min)
Po dokonaniu analizy procedur ju istniejcych, kolejne zadanie, jakie
to zdefiniowanie procedur skadowanych dla nowych uytkownikw oraz modyfikacja
ju istniejcych procedur skadowanych. W pierwszej kolejnoci powiniene zaj si procedurami
skadowanymi bez parametrw.
Tok postpowania
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Jeli nie masz zdefiniowanej maszyny wirtualnej w
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
D:\VirtualPC\Dydaktyka\BD2008.vhd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008
SQL Server Management Studio.
W oknie logowania kliknij Connect.
menu gwnego wybierz File -> Open -> File.
Odszukaj plik C:\Labs\Lab10\Procedura_bez_parametrow.sql
Open.
Zaznacz kod, ktry wywouje procedur skadowan
-- (1) Ustawiamy sie na baze danych PraceDyplomowe
USE PraceDyplomowe
GO
-- (2) Tworzymy procedure skladowana uzytkownika
CREATE PROCEDURE Promotorzy
AS
BEGIN
SELECT [Nazwisko], [Imie]
FROM Promotor
END
Innym sposobem stworzenia procedury skadowanej jest kliknicie
prawym przyciskiem myszy gazi Stored Procedures
StoredProcedure uzyskasz w ten sposb gotowy schemat procedury
skadowanej.
Wcinij F5, aby uruchomi zaznaczony fragment kodu.
Jeli procedura skadowana zostaa utworzona poprawnie, powiniene
otrzyma komunikat Command(s) completed successfully
zauway, e zostaa dodana nowa procedura skadowana w
Explorer, w gazi Databases -> PraceDyplomowe
-> StoredProcedures. Jeli procedury nie wida w w/w gazi, odwie
j. Jeli procedura jest ju utworzona, a mimo to zadano kolejnego
jej utworzenia, to powiniene otrzyma komunikat There is already
object name Promotorzy in the database.
Zaznacz kod, ktry wywouje procedur Promotorzy
-- (3) Wywolujemy procedure skladowana Promotorzy
EXEC Promotorzy
GO
Innym sposobem na wywoanie procedury skadowanej jest kliknicie
Modu 9
Procedury skadowane i wyzwalacze
jakie zostao przed Tob
nowych uytkownikw oraz modyfikacja
W pierwszej kolejnoci powiniene zaj si procedurami

Jeli nie masz zdefiniowanej maszyny wirtualnej w Microsoft Virtual
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
Microsoft SQL Server 2008 uruchom
_bez_parametrow.sql i kliknij
Zaznacz kod, ktry wywouje procedur skadowan Promotorzy:
raceDyplomowe
(2) Tworzymy procedure skladowana uzytkownika
Innym sposobem stworzenia procedury skadowanej jest kliknicie
ed Procedures i wybranie New
uzyskasz w ten sposb gotowy schemat procedury
, aby uruchomi zaznaczony fragment kodu.
Jeli procedura skadowana zostaa utworzona poprawnie, powiniene
completed successfully oraz
zauway, e zostaa dodana nowa procedura skadowana w Object
PraceDyplomowe -> Programmability
Jeli procedury nie wida w w/w gazi, odwie
utworzona, a mimo to zadano kolejnego
komunikat There is already
Promotorzy:
procedure skladowana Promotorzy
Innym sposobem na wywoanie procedury skadowanej jest kliknicie
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Wcinij
Problem 3 (czas realizacji
Kolejne zadanie, jakie powiniene wykona
uytkownikw oraz modyfikacja
Zadanie Tok postpowania
1. Nawi
poczenie z SQL
Server 2008
Uruchom maszyn wirtualn

Kliknij
SQL Server Management Studio
W oknie logowania kliknij
2. Utwrz
procedur
skadowan
Z
Odszukaj plik C
Open
Zaznacz kod, ktry wywouje procedur skadowan
--
USE
GO
--
CREATE PROCEDURE dbo.
@Nazwisko
AS
BEGIN
SELECT *
FROM [
WHERE [
END
Wci
3. Uruchom
procedur
skadowan
Zaznacz kod, ktry wywouje procedur
uruchomi zaznaczony fragment kodu
--
EXEC Promotorzy
GO
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Procedury skadowane i wyzwalacze
Strona 18/21
prawym przyciskiem myszy na procedurze Promotorzy
Execute Stored Procedure, co wywoa okienko, w ktrym mona
przekaza do procedury jakie parametry, jak na
Rys. 11 Wywoanie procedury skadowanej z parametrem
Wcinij F5, aby uruchomi zaznaczony fragment kodu.
Problem 3 (czas realizacji 15 min)
jakie powiniene wykona, to zdefiniowanie procedur skadowanych dla
uytkownikw oraz modyfikacja ju istniejcych procedur skadowanych z parametrami
Tok postpowania
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Jeli nie masz zdefiniowanej maszyny wirtualnej w
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
D:\VirtualPC\Dydaktyka\BD2008.vhd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008
SQL Server Management Studio.
W oknie logowania kliknij Connect.
menu gwnego wybierz File -> Open -> File.
Odszukaj plik C:\Labs\Lab10\Procedura_z_parametr
Open.
Zaznacz kod, ktry wywouje procedur skadowan
-- (1) Ustawiamy sie na baze danych PraceDyplomowe
USE PraceDyplomowe
GO
-- (2) Tworzymy procedure skladowana uytkownika z parametrem
REATE PROCEDURE dbo.Promotorzy
Nazwisko VARCHAR(30)
AS
BEGIN
SELECT *
FROM [PraceDyplomowe].[dbo].[Osoba]
WHERE [PraceDyplomowe].[dbo].[Osoba].[nazwisko
END
Wcinij F5, aby uruchomi zaznaczony fragment kodu.
Zaznacz kod, ktry wywouje procedur Promotorzy
uruchomi zaznaczony fragment kodu:
-- (3) Wywolujemy procedure skladowana z parametrem
EXEC Promotorzy @Nazwisko='Kowalski'
GO
Modu 9
Procedury skadowane i wyzwalacze
Promotorzy i wybranie
co wywoa okienko, w ktrym mona
, jak na rys. 11.

Wywoanie procedury skadowanej z parametrem
fragment kodu.
procedur skadowanych dla nowych
ju istniejcych procedur skadowanych z parametrami.

Jeli nie masz zdefiniowanej maszyny wirtualnej w Microsoft Virtual
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
Microsoft SQL Server 2008 uruchom
z_parametrami.sql i kliknij
Zaznacz kod, ktry wywouje procedur skadowan Promotorzy:
(1) Ustawiamy sie na baze danych PraceDyplomowe
(2) Tworzymy procedure skladowana uytkownika z parametrem
nazwisko] = @Nazwisko
, aby uruchomi zaznaczony fragment kodu.
Promotorzy. Wcinij F5, aby
(3) Wywolujemy procedure skladowana z parametrem
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Problem 4 (czas realizacji
Po zdefiniowaniu procedur skadowanych wynikajcych z
pracujesz, kolejnym etapem jest stworzenie odpowiedniej liczby wyzwalaczy.
powinien obsugiwa nastpujcy warunek:
dyplomantw.
Zadanie Tok postpowania
1. Nawi
poczenie z SQL
Server 2008
Uruchom maszyn wirtualn

Kliknij
SQL Server Manageme
W oknie logowania kliknij
2. Utwrz
wyzwalacz
Z
Odszukaj plik
Zaznacz i uruchom (
--
USE PraceDyplomowe
GO
--
SELECT ID_Osoby, Nazwisko, Imie, Nr_Indeksu, ID_Stopnian
INTO Osoba_kopi
FROM Osoba
GO
Zaznacz i uruchom (
Wynik pokazano na
--
SELECT * FROM Osoba_kopi
GO

W obrbie okna
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Procedury skadowane i wyzwalacze
Strona 19/21
Problem 4 (czas realizacji 10 min)
Po zdefiniowaniu procedur skadowanych wynikajcych ze zmian, jakie zachodz w firmie
kolejnym etapem jest stworzenie odpowiedniej liczby wyzwalaczy.
en obsugiwa nastpujcy warunek: kady opiekun moe mie maksymalnie 10
Tok postpowania
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Jeli nie masz zdefiniowanej maszyny wirtualnej w
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
D:\VirtualPC\Dydaktyka\BD2008.vhd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008
SQL Server Management Studio.
W oknie logowania kliknij Connect.
menu gwnego wybierz File -> Open -> File.
Odszukaj plik C:\Labs\Lab10\Wyzwalacz_1.sql i kliknij
Zaznacz i uruchom (F5) poniszy fragment kodu:
-- (1) Ustawiamy si na baze danych PraceDyplomowe
USE PraceDyplomowe
GO
-- (2) przygotujmy tabele do testowania wyzwalaczy
SELECT ID_Osoby, Nazwisko, Imie, Nr_Indeksu, ID_Stopnian
INTO Osoba_kopi
FROM Osoba
GO
Zaznacz i uruchom (F5) fragment kodu oznaczonego w komentarzu (
Wynik pokazano na rys. 12:
-- (3) zobaczmy, co znajduje sie w tabeli
SELECT * FROM Osoba_kopi
GO
Rys. 12 Sprawdzenie zawartoci tabe

W obrbie okna Object Explorer wybierz Osoba ->
Modu 9
Procedury skadowane i wyzwalacze
jakie zachodz w firmie, w ktrej
kolejnym etapem jest stworzenie odpowiedniej liczby wyzwalaczy. Jeden z wyzwalaczy
kady opiekun moe mie maksymalnie 10

Jeli nie masz zdefiniowanej maszyny wirtualnej w Microsoft Virtual
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
Microsoft SQL Server 2008 uruchom
i kliknij Open.

PraceDyplomowe
(2) przygotujmy tabele do testowania wyzwalaczy
SELECT ID_Osoby, Nazwisko, Imie, Nr_Indeksu, ID_Stopnian
) fragment kodu oznaczonego w komentarzu (3).

Sprawdzenie zawartoci tabeli
> Triggers.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy danych
Wci
Zaznacz i uruchom (
--
CREATE TRIGGER Ocenay
ON Osoba
AFTER INSERT, UPDATE
AS
DECLARE @username as varchar(30)
SELECT @username = SYSTEM_USER
PRINT 'Uzytkownik '+ @username + ' zmienil zawartosc tabeli
Osoba!!!'
GO
W celu zobaczenia dziaania
zapytanie:
--
UPDATE O


GO

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Procedury skadowane i wyzwalacze
Strona 20/21
Wcinij prawy przycisk myszy i wybierz New Trigger
Zaznacz i uruchom (F5) poniszy fragment kodu:
-- (4) Tworzymy nowy wyzwalacz
CREATE TRIGGER Ocenay
ON Osoba
AFTER INSERT, UPDATE
AS
DECLARE @username as varchar(30)
SELECT @username = SYSTEM_USER
PRINT 'Uzytkownik '+ @username + ' zmienil zawartosc tabeli
Osoba!!!'
GO
W celu zobaczenia dziaania wyzwalacza
zapytanie:
-- (5) Sprawdzamy dzialanie wyzwalacza
UPDATE Osoba
SET [Nazwisko] = 'Nowak'
WHERE ID_Osoby=1
GO
Jeli wyzwalacz zadziaa poprawnie, w oknie
pojawi si komunikat o treci przedstawionej na
Rys. 13 Sprawdzanie efektu dziaania wyzwalacza

Modu 9
Procedury skadowane i wyzwalacze
New Trigger.

PRINT 'Uzytkownik '+ @username + ' zmienil zawartosc tabeli
wywoaj nastpujce
zadziaa poprawnie, w oknie Messages powinien
ci przedstawionej na rys. 13.

Sprawdzanie efektu dziaania wyzwalacza
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 9
ITA-101 Bazy danych Procedury skadowane i wyzwalacze
Strona 21/21
Laboratorium rozszerzone
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od swojego szefa, e
firma zarzdzajca baz AdventureWorks planuje rozszerzenie i modernizacje systemu. W
zwizku z modernizacj systemu bazodanowego oraz w celu spenienia standardw
bezpieczestwa, dostp do obiektw bazy danych powinien odbywa si poprzez procedury
skadowane. W wyniku tego cz procedur skadowanych powinna zosta zmodyfikowana i
przekompilowana, cz powinna zosta napisana od pocztku, a cz powinna zosta usunita.
Kolejnym pojawiajcym si problemem jest kwestia spjnoci zmodyfikowanej bazy danych. W tym
celu powinny zosta zmodyfikowane, utworzone lub usunite wyzwalacze suce do
zaimplementowania pewnych warunkw.
Zadanie, jakie przed Tob stoi, to:
1. Podjcie decyzji, jakie nowe procedury skadowane i wyzwalacze powinny zosta utworzone
w celu poprawienia bezpieczestwa bazy danych.
2. Podjcie decyzji, ktre procedury skadowane w bazie danych pozostan bez zmian, a ktre
zostan zmodyfikowane lub usunite.
3. Podjcie decyzji, ktre wyzwalacze w bazie danych pozostan bez zmian, a ktre zostan
zmodyfikowane lub usunite.


ITA-101 Bazy Danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Modu 10
Wersja 2.0
Bezpieczestwo w bazach danych
Spis treci
Bezpieczestwo w bazach danych ....................................................................................................... 1
Informacje o module ............................................................................................................................ 2
Przygotowanie teoretyczne ................................................................................................................. 3
Przykadowy problem .................................................................................................................. 3
Podstawy teoretyczne.................................................................................................................. 3
Przykadowe rozwizanie ............................................................................................................. 6
Porady praktyczne ..................................................................................................................... 10
Uwagi dla studenta .................................................................................................................... 10
Dodatkowe rda informacji..................................................................................................... 10
Laboratorium podstawowe ................................................................................................................ 12
Problem 1 (czas realizacji 45 min) .............................................................................................. 12
Laboratorium rozszerzone ................................................................................................................. 17
Zadanie 1 (czas realizacji 90 min) ............................................................................................... 17

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 10
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 2/17
Informacje o module
Opis moduu
W tym module dowiesz si, jak naley rozumie bezpieczestwo baz danych
oraz jakie s poziomy bezpieczestwa. Ponadto dowiesz si, jakim
zagroeniom naley przeciwdziaa, a jakich nie da si unikn oraz jak
naley planowa implementacj poszczeglnych poziomw bezpieczestwa
w aplikacji bazodanowej.
Cel moduu
Celem moduu jest przedstawienie czytelnikowi typowych zagadnie
zwizanych z zabezpieczeniami dostpu do danych w SQL Server 2008.
Uzyskane kompetencje
Po zrealizowaniu moduu bdziesz:
wiedzia jakie mechanizmy uwierzytelniania wspiera SQL Server 2008
potrafi doda uytkownika i nada mu odpowiednie prawa
rozumia czym s schematy zabezpiecze
Wymagania wstpne
Przed przystpieniem do pracy z tym moduem powiniene:
wiedzie, jak uywa oprogramowania Microsoft Virtual PC
zna podstawy obsugi systemu Windows 2000 lub nowszego
zna podstawy obsugi SQL Server Management Studio
Mapa zalenoci moduu
Zgodnie z map zalenoci przedstawion na rys. 1, istnieje konieczno
wykonania wczeniej moduu 3.


Rys. 1 Mapa zalenoci moduu
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 10
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 3/17
Przygotowanie teoretyczne
Przykadowy problem
Firma National Insurance wdroya Microsoft SQL Server 2008. Zaoono na nim kilka baz i hurtowni
danych. Ze wzgldu na pilne potrzeby firmy szybko te zasilono bazy z dostpnych rde danych.
Dostp do poszczeglnych baz danych zrealizowany jest poprzez dedykowane aplikacje czce si
z serwerem Microsoft SQL Server 2008 na prawach administratora. W pierwszych tygodniach po
wdroeniu system dzia sprawnie lecz pniej pojawiy si problemy z wydajnoci i dostpem do
danych. Niektrzy menaderowie zauwayli szereg niezgodnoci, informacje jakie wprowadzali nie
zgadzay si z danymi w raportach uzyskanych z systemu. Po krtkim czasie okazao si, e osoby
nieuprawnione maj dostp do poufnych danych, nie ma take adnej polityki bezpieczestwa dla
serwerw bazodanowych.
Rozwizanie tego problemu zoono na barki gwnego informatyka, jako osoby kompetentnej i
odpowiedzialnej za rozwj systemu bazodanowego firmy. W pierwszymi krokami jakie podj on po
otrzymaniu zadania by dokadny przegld stanu obecnego systemu i porwnanie go z wytycznymi i
najlepszymi praktykami z zakresu bezpieczestwa bazodanowego.
Podstawy teoretyczne
Pojcie bezpieczestwa baz danych wie si nieodcznie z bezpieczestwem serwera baz danych.
W hierarchii bezpieczestwo takiego serwera stoi wyej ni bezpieczestwo pojedynczej bazy,
poniewa brak zabezpiecze na tym poziomie pociga za sob brak zaufania do pojedynczych baz
danych znajdujcych si na serwerze.
Bezpieczestwo serwera baz danych to:
zapewnienie stabilnego i w miar moliwoci bezawaryjnego dziaania serwera baz danych
zapewnienie uprawnionym uytkownikom dostpu do odpowiednich baz danych
ograniczenie dostpu do danych dla uytkownikw nieuprawnionych
zapewnienie jak najmniejszej ingerencji serwera baz danych w dziaanie systemu
operacyjnego komputera
Bezpieczestwo baz danych natomiast dotyczy nastpujcych aspektw:
umoliwienie tylko autoryzowanym uytkownikom wykonywania odpowiednich operacji na
bazie danych
zapewnienie bezpieczestwa fizycznego bazy danych (odpowiednia strategia kopii
zapasowych)
Mwic o bezpieczestwie naley rozrnia dwa pojcia: uwierzytelnienie oraz autoryzacja.
Pierwsze pojcie oznacza identyfikacj uytkownika na podstawie jego nazwy i hasa. Z kolei
autoryzacja jest faz nastpujc po poprawnym uwierzytelnieniu i polega na okreleniu
uprawnie przypadajcych uwierzytelnionemu uytkownikowi.
Poziomy bezpieczestwa
W najoglniejszym ujciu mona wyodrbni nastpujce poziomy bezpieczestwa:
bezpieczestwo fizyczne danych
bezpieczestwo sieci
bezpieczestwo domeny
bezpieczestwo maszyny lokalnej
bezpieczestwo serwera baz danych
bezpieczestwo bazy danych
bezpieczestwo aplikacji bazodanowej
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 10
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 4/17
Bezpieczestwa doskonaego nie mona w praktyce nigdy zapewni, ale mona podj kroki, by
zapobiega skutkom wszelkich awarii, katastrof lub niepodanych ingerencji czynnika ludzkiego.
Aby zadba o globalne bezpieczestwo, naley zaplanowa strategi na kadym z wymienionych
poziomw.
Bezpieczestwo fizyczne danych
Poziom bezpieczestwa fizycznego danych okrela, czy w przypadku awarii sprztu, katastrofy (jako
katastrof rozumiemy nie tylko czynniki naturalne, jak np. powodzie, lecz take kradziee i inne
wpywy czynnika ludzkiego) lub fizycznego uszkodzenia plikw danych jestemy w stanie odtworzy
dane i jak dugo baza danych (lub serwer baz danych) bdzie niedostpny dla uytkownikw. Na
tym poziomie naley te odpowiedzie na pytanie, czy kopie danych s bezpieczne (m.in. czy
niepowoane osoby nie maj do nich dostpu).
Bezpieczestwo sieci
Poziom bezpieczestwa sieci okrela, czy dane s bezpiecznie przesyane w sieci. Szczeglnie
dotyczy to cile poufnych danych, tj. numerw kart kredytowych czy danych personalnych
klientw firmy.
Bezpieczestwo domeny
Poziom bezpieczestwa domeny okrela, czy komputery w domenie (w szczeglnoci kontrolery
domeny) s odpowiednio zabezpieczone. W dobie integracji serwerw baz danych (np. Microsoft
SQL Server) z systemami operacyjnymi, w przypadku braku zabezpiecze w systemie operacyjnym
bezpieczestwo serwera baz danych spada do minimum.
Bezpieczestwo serwera baz danych
Poziom bezpieczestwa serwera baz danych okrela, czy serwer baz danych jest odpowiednio
zabezpieczony przed nieuprawnionymi uytkownikami (fizycznie maszyna oraz wirtualnie
odpowiednie mechanizmy uwierzytelniajce).
Bezpieczestwo bazy danych
Poziom bezpieczestwa bazy danych okrela, czy dostp do bazy danych i rl w bazie danych jest
odpowiednio skonfigurowany (na og jest to sprawa konfiguracji w systemie bazodanowym).
Bezpieczestwo aplikacji bazodanowej
Poziom bezpieczestwa aplikacji bazodanowej okrela, czy kod aplikacji klienckiej wsppracujcej z
baz danych jest napisany w sposb bezpieczny (czy aplikacja nie umoliwia zmniejszenia
bezpieczestwa na ktrymkolwiek z pozostaych poziomw). Szczeglnie naley tu zwrci uwag
na dane wprowadzane przez uytkownikw.
Implementacja rnych poziomw bezpieczestwa
Kady z poziomw bezpieczestwa wymaga podjcia okrelonych krokw przez administratorw
systemw i baz danych.
Implementacja bezpieczestwa fizycznego
Zadaniem administratora baz danych jest zapewnienie tolerancji bdw dyskw fizycznych dla
systemu i dla danych oraz zaplanowanie strategii sporzdzania i przechowywania kopii zapasowych.
Tolerancj bdw dyskw fizycznych mona osign uywajc woluminw RAID (ang. Redundant
Array of Independent Disks) typu RAID-1 lub RAID-5.
Implementacja RAID-1 polega na jednoczesnym przechowywaniu danych na dwch fizycznych
dyskach stanowicy jeden dysk logiczny (dwie kopie danych w przypadku awarii jednego dysku,
drugi nadal umoliwia dostp do danych). Oznacza to, e 50% pojemnoci woluminu typu RAID-1
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 10
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 5/17
jest przeznaczone na przechowywanie danych, a druga poowa suy do przechowywania kopii
danych.
RAID-5 to dysk logiczny skadajcy si z co najmniej trzech dyskw fizycznych (z kadego dysku
wolumin zabiera tyle samo przestrzeni dyskowej). W woluminach typu RAID-5 cz przestrzeni
dyskowej jest powicana na zapis tzw. danych parzystoci (niezbdnych do odzyskania danych w
przypadku awarii jednego z dyskw wchodzcych w skad woluminu). Im wicej dyskw wchodzi w
skad woluminu, tym mniej przestrzeni dyskowej zajmuj dane parzystoci (mniejsza nadmiarowo
danych).
Najlepszym rozwizaniem w kwestii zapewnienia tolerancji bdw dyskw fizycznych s sprztowe
woluminy RAID pracujce z kontrolerami SCSI, z uwagi na szybsz prac ni RAID programowy.
Niestety jest to jednoczenie najdrosze rozwizanie.
Kopie bezpieczestwa, zwane te kopiami zapasowymi (ang. backup), powinny by przechowywane
bd na zewntrznym noniku (tamy, pyty CD lub inne noniki) lub na innym komputerze ni ten,
z ktrego kopiujemy dane. Ponadto noniki z kopiami zapasowymi powinny by przechowywane w
innym miejscu ni maszyna, z ktrej pochodz dane (zmniejszamy ryzyko utraty danych w
przypadku poarw czy powodzi).
Strategia kopii zapasowych powinna by zaplanowana przez administratora baz danych i
administratora systemu operacyjnego. Naley zaplanowa strategi, ktra odpowiada potrzebom
firmy, tzn. naley odpowiedzie na pytanie, czy waniejsze jest szybkie sporzdzanie kopii
zapasowych, czy te istotniejsze jest jak najszybsze przywracanie danych po awarii. Na og
strategia musi uwzgldni obie kwestie. Std najczciej powtarzanym schematem sporzdzania
kopii zapasowych jest wykonywanie co tydzie kopii wszystkich danych oraz codzienne
wykonywanie kopii przyrostowych (tylko dane zmodyfikowane danego dnia).
W budowaniu strategii kopii zapasowych naley te uwzgldni godziny szczytu pracy serwera
(proces wykonywania kopii zapasowych pociga za sob dodatkowe obcienie serwera). Dlatego
na og operacje te s wykonywane w godzinach nocnych i s planowane w ten sposb, by nie
kolidoway z czasem, gdy uytkowanie serwera przez klientw jest najintensywniejsze.
Implementacja bezpieczestwa sieci
Przy planowaniu bezpieczestwa sieci naley zada sobie pytanie, czy dane przesyane z naszego
serwera baz danych s poufne. Jeli tak, to moemy zastosowa dostpne protokoy szyfrujce,
takie jak SSH czy IPSec. Oprcz implementacji sieciowych protokow szyfrujcych do transmisji
danych, naley ograniczy ilo danych wysyanych w wiat do niezbdnego minimum (najlepiej nie
przedstawia si zbytnio w sieci ujawnienie oprogramowania serwera baz danych to pierwszy
krok do zachwiania bezpieczestwa naszego serwera).
Implementacja bezpieczestwa komputerw i domen
Aby zapewni komputerom i domenom niezbdny poziom bezpieczestwa, naley trzyma si kilku
zasad.
Nie naley instalowa serwerw baz danych na serwerach kluczowych dla domeny (kontrolery
domeny). Najlepsza struktura domeny to taka, w ktrej kady serwer peni pojedyncz funkcj (np.
serwer aplikacji, serwer plikw, serwer baz danych itd.).
Niezbdna jest odpowiednia polityka administratorw systemu (lub domeny), czyli:
utrzymywanie aktualnego poziomu zabezpiecze systemu operacyjnego oraz serwera baz
danych
odpowiednia polityka bezpiecznych hase uytkownikw
zmiana nazw kont administratorskich
monitorowanie logowania do systemu (domeny)
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 10
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 6/17
ograniczanie dostpu do plikw i folderw
nadawanie minimalnych wymaganych uprawnie dla uytkownikw i grup
jak najmniejsze wykorzystywanie kont administratorskich
implementacja zapr ogniowych (ang. firewall)
ograniczenie fizycznego dostpu do serwerw i kontrolerw domeny
uruchamianie usug serwera baz danych przy uyciu konta uytkownika specjalnie
stworzonego w tym celu (nie administratora) i zapewnienie stabilnoci tego konta (np. nigdy
nie wygasajce haso)
Implementacja bezpieczestwa serwera baz danych i samych baz
Pod hasem bezpieczestwa serwera baz danych rozumiemy umoliwienie korzystania z serwera
tylko osobom do tego uprawnionym. Wikszo systemw zarzdzania bazami danych oferuje
uwierzytelnianie uytkownikw na dwch poziomach: na poziomie serwera (uytkownik moe
dosta si do serwera) oraz na poziomie bazy danych (uytkownik serwera ma dostp do
konkretnej bazy danych).
Mechanizmy uwierzytelniania i autoryzacji s rne i zale od konkretnego rodowiska
bazodanowego. Zazwyczaj uytkownicy dzieleni s na role (grupy), natomiast rolom nadawane s
okrelone uprawnienia. Ponadto niezbdnym nawykiem administratora baz danych powinno by
rejestrowanie i monitorowanie zdarze na serwerze w poszukiwaniu nietypowych zdarze.
Implementacja bezpieczestwa aplikacji bazodanowej
Pit achillesow systemu informatycznego wsppracujcego z baz danych czsto jest interfejs
uytkownika (od strony programistycznej i implementacji logiki biznesowej). Szczeglnie chodzi tu o
umoliwienie uytkownikom oddziaywania na serwer baz danych lub nawet na system operacyjny
serwera z poziomu aplikacji klienckiej.
Naley ze szczegln uwag projektowa aplikacje bazodanowe. Oto kilka zasad, ktrymi naley si
kierowa przy tworzeniu interfejsw dla tych aplikacji:
zachowaj przezroczysto aplikacji i bazy danych (nie pokazuj informacji o rdle aplikacji i o
strukturze bazy danych), szczeglnie uwaaj na komunikaty domylne aplikacji (lepiej ustawi
swoje, ktre powiedz tylko, e wystpi bd)
nigdy nie ufaj uytkownikowi aplikacji i wpisywanym przez niego wartociom
sprawdzaj, czy wejcie jest tym, czego oczekujesz i odrzucaj wszystko inne wartoci
walidacj wejcia przeprowadzaj na wielu poziomach
uywaj wyrae regularnych
staraj si nie uywa konkatenacji do tworzenia zapyta SQL (zamiast tego uyj procedur z
parametrami)
cz si z baz danych uywajc w miar najmniej uprzywilejowanego konta uytkownika
Przykadowe rozwizanie
Zapewnienie bezpieczestwa serwerowi bazodanowemu jest spraw zoon i rozcignit na kilka
poziomw. Z punktu widzenia administratora systemu podstawowym poziomem jest kwestia
autoryzacji uytkownikw, ktrzy maj dostp do serwera SQL. Narzdzie SQL Server Management
Studio umoliwia kontrol nad wieloma parametrami nie tylko bazy danych, ale te samego
serwera. Jedn z grup interesujcych nas parametrw jest sposb uwierzytelniania uytkownikw,
co ilustruje rys. 2. Serwer SQL moe wykorzystywa do uwierzytelniania wasne konta
uytkownikw lub dodatkowo honorowa konta systemu operacyjnego.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 10
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 7/17

Rys. 2 Opcje bezpieczestwa serwera
Mieszany tryb uwierzytelniania, ktry jest zaznaczony na rys. 2, pozwala na czenie si z serwerem
take uytkownikom, ktrzy nie maj kont w systemie Windows w sieci, w ktrej pracuje serwer.
Dobr praktyk jest monitorowanie nieudanych prb logowania do systemu, co zapewnia opcja
Login auditing.

Inn interesujc grup s obiekty zwizane wewntrznymi kontami uytkownikw serwera SQL
dostpne w polu Logins. Procedura tworzenia nowego uytkownika jest podobna do analogicznej
procedury w systemie operacyjnym co ilustruje rys. 3.

Rys. 3 Tworzenie nowego loginu
Jeli Microsoft SQL Server 2008 zainstalowany jest na komputerze pracujcym pod kontrol
systemu Microsoft Windows Server 2003, mona wymusi odpowiedni polityk bezpieczestwa
hase serwera baz danych dziki polisom systemu operacyjnego.
Po zaoeniu odpowiednich kont moemy sprawdzi, czy logowanie do serwera przebiegao
pomylnie czy te byy z tym jakie problemy. Do monitorowania aktywnoci serwera suy
dziennik. Przykadow zawarto dziennika serwera SQL pokazuje rys. 4.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 10
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 8/17

Rys. 4 Dziennik systemowy SQL Server 2008
Dobry administrator ledzi przynajmniej nieudane prby logowania do systemu. Dziennik pokazany
na rys. 4 to dziennik to po prostu zdarze systemu Windows. Przegldarka dziennika systemu SQL
Server umoliwia jednoczesne przegldanie wszystkich zapisywanych w tym systemie informacji.
Utworzenie konta dla danego uytkownika nie oznacza jeszcze przyznanie mu jakichkolwiek praw
poza moliwoci poczenia z serwerem. Aby dany uytkownik mg skorzysta z baz danych
naley w kontekcie danej bazy przyzna mu prawo do poczenia si z ni. Po rozwiniciu drzewa
bazy w obszarze Object Explorer widzimy pole Security, gdzie moemy ustala, ktry uytkownik
posiada dostp i na jakich zasadach, co ilustruje rys. 5.

Rys. 5 Dodawanie uytkownika do bazy danych
Podobny efekt moemy uzyska uruchamiajc odpowiedni sekwencj kodu jzyka SQL. Do
nadawania i odbierania uprawnie uytkownikom su polecenia GRAND i REVOKE, tak jak to
pokazuje rys. 6. Naley jednak zauway, e do uruchomienia danego kodu SQL musimy posiada
konto, ktre:
ma dostp do danej bazy
posiada odpowiednie uprawnienia np. administracyjne w kontekcie tej bazy
W innym wypadku kontrolowanie uprawnie z poziomu jzyka SQL nie powiedzie si.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 10
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 9/17

Rys. 6 Nadanie uprawnie uytkownikowi Tomek
Jeeli posiadamy w systemie kilka kont uytkownikw, ktre s odpowiednio skonfigurowane i
posiadaj uprawnienia dostpu do bazy, moemy przecza pomidzy nimi kontekst
wykonywanych polece SQL. Suy do tego polecenie EXECUTE AS, jak pokazano na rys. 7.

Rys. 7 Wykonanie kodu SQL w kontekcie uytkownika Tomek
Komenda EXECUTE AS pozwala zmieni kontekst wykonywania polece na wybranego
uytkownika. Powrt do pierwotnego kontekstu zapewnia polecenie REVERT.
W rzeczywistych systemach pojawia si wiele kont i grup uytkownikw. Pomoc w zapanowaniu
nad mnogoci kont zapewniaj schematy. Schematy to przestrzenie nazw lub pojemniki na obiekty
w bazie danych. Upraszczaj one zarzdzanie uprawnieniami w bazie danych oraz stanowi
element niezbdny do poprawnego rozwizywania nazw w systemie Microsoft SQL Server 2008.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 10
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 10/17
Schematy umoliwiaj nadawanie uprawnie na wiele obiektw jednoczenie. Wystarczy umieci
je w jednym schemacie. Ponadto schematy pozwalaj unikn sytuacji, w ktrych usunicie
uytkownika z bazy jest niemoliwe, gdy jest on wacicielem obiektw w bazie danych (wczeniej
trzeba zmieni wacicieli wszystkich obiektw, ktrych wacicielem jest wspomniany uytkownik).
Do tworzenia schematw suy polecenie CREATE SCHEMA. Wicej informacji na temat tworzenia i
zarzdzania schematami znajduje si w laboratorium podstawowym i Books Online na stronie firmy
Microsoft.
Porady praktyczne
Nigdy nie myl, e system i serwer baz danych s bezpieczne. Jest to jedna z podstawowych zasad
przy projektowaniu lub inspekcji mechanizmw zabezpieczajcych systemy, nie tylko
informatyczne. Takie podejcie znacznie zwiksza szanse na znalezienie luki lub potencjalnego
problemu.
Nigdy nie ufaj temu, co uytkownik podaje na wejciu do systemu. Jeeli przewidujesz moliwo
wprowadzania danych przez uytkownika zawsze staraj si prawidowo i uwanie obsugiwa
pojawiajce si informacje automatycznie odrzucajc wartoci, ktrych si w danej sytuacji nie
spodziewasz.
Zachowuj zasad minimalnych uprawnie w stosunku do uytkownika. Prawidowe podejcie z
punktu widzenia bezpieczestwa to w pierwszym kroku zabranie uytkownikowi wszystkich
uprawnie w systemie a dopiero pniej ostrone przydzielenie mu takich jakie wydaj si by
niezbdne. Wprowadza to oczywicie wyduenie czasu dostosowania systemu do pracy w penym
wymiarze oraz swoiste niezadowolenie uytkownikw ale jest niezbdne. Zasada ta jest szczeglnie
wana dla uytkownikw typu serwis systemowy i implikuj kolejn o nazwie domylnie
zamknite. Obszary dziaania systemu takie jak porty dostpu, protokoy komunikacyjne czy same
bazy danych jeeli nie s w danej chwili uywane powinny mie status zamknitych dla
uytkownika. Dopiero formalna potrzeba uycia danej czci systemu moe j aktywowa.
Eliminuje to znakomit cz prb wama na nieuywane, upione ale cigle aktywne zasoby.
Regularnie szukaj nieprawidowoci w systemie. Systemy informatyczne to najczciej twory o
silnej dynamice podlegajce cigym zmianom. Zmiany te mog tworzy nowe, potencjalne furtki
dla wamywaczy. Inn spraw jest niedoskonao samego oprogramowania. Co prawda dla
rozwijanych systemw co jaki czas wydawane s aktualizacje jednake praktyka wskazuje, e atki
takie potrafi naprawia jedn cz a jednoczenie stwarza luki gdzie indziej.
Bd na bieco z technologiami i technikami programistycznymi aby wiedzie jak reagowa na
potencjalne zagroenia. Wiedza ta w przypadku systemw bazodanowych jest szczeglnie cenna
gdy cze funkcjonalnoci administrator moe sam bezporednio oprogramowa a co za tym idzie
posiada nad ni cakowita kontrol.
Uwagi dla studenta
Jeste przygotowany do realizacji laboratorium jeli:
rozumiesz, co oznacza serwis systemowy, serwis bazy danych, instalacja serwisu
rozumiesz zasad dziaania uruchomienia serwisw w kontekcie uytkownika
umiesz wymieni i opisa podstawowe komponenty systemu bazodanowego
umiesz poda przykad zastosowania systemu bazodanowego w praktyce
Pamitaj o zapoznaniu si z uwagami i poradami zawartymi w tym module. Upewnij si, e
rozumiesz omawiane w nich zagadnienia. Jeli masz trudnoci ze zrozumieniem tematu zawartego
w uwagach, przeczytaj ponownie informacje z tego rozdziau i zajrzyj do notatek z wykadw.
Dodatkowe rda informacji
1. Kalen Delaney, Microsoft SQL Server 2005: Rozwizania praktyczne krok po kroku, Microsoft
Press, 2006
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 10
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 11/17
Podrcznik ten jest idealn pomoc dla uytkownikw, ktry postawili ju pierwsze kroki w
systemach bazodanowych. Duo wicze i kodw rdowych odnoszcych si do sytuacji
spotykanych w praktyce jest doskona baz do rozwizywani problemw pojawiajcych si w
rzeczywistoci.
2. Edward Whalen, Microsoft SQL Server 2005 Administrators Companion, Microsoft Press, 2006
Kompleksowe opracowanie na temat zaplanowania I wdroenia system bazodanowego
opartego o MS SQL Server 2005 w maym i rednim przedsibiorstwie. Autorzy postawili na
formu przedstawiania wielu problemw z praktyki administratora baz danych oraz moliwych
drg do ich rozwizania. Ksika jest adresowana do praktykujcych uytkownikw.
3. Dusan Petkovic, Microsoft SQL Server 2008: A Beginner's Guide, McGraw-Hill, 2008
Pozycja adresowana do osb zaczynajcych przygod z bazami danych. Znajdziemy tu
wprowadzenie do relacyjnych baz danych, sposoby ich projektowania, optymalizacji i w kocu
wdroenia w najnowszej odsonie serwera SQL w wersji 2008. Omwienie jzyka T-SQL w
osobnej, duej czci ksiki jest kolejn mocn tej pozycji.
4. Strona domowa SQL Server 2008, http://www.microsoft.com/sql/2008/default.mspx
Tutaj znajdziemy wszystkie podstawowe informacje na temat MS SQL Server 2008 oraz nowoci
z nim zwizane.

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
Laboratorium podstawowe
Problem 1 (czas realizacji 45 min)
Pierwszym zadaniem, jakie sobie postawie
Server 2008 pod wzgldem tworzenia uytkownikw, nadawania im uprawnie i kontroli nad tymi
uprawnieniami. W celach testowych
zaoon na serwerze Evaluation
Zadanie Tok postpowania
1. Zmie tryb
uwierzytelniania
Uruchom maszyn wirtualn

Kliknij
SQL Server Management Studio
Po lewej stronie ekranu w oknie
przyciskiem myszy nazw
kontekstowego wybierz opcj
W lewej czci okna
Zaznacz opcj
Kliknij
Kliknij
restartu usugi serwera.
Dokonaj
2. Utwrz loginy W oknie
Prawym przyciskiem myszy kliknij
wybierz
W polu
Zaznacz opcj
W pola
Odznacz o
Kliknij
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 12/17
Laboratorium podstawowe
Problem 1 (czas realizacji 45 min)
jakie sobie postawie, jest zbadanie moliwoci serwera
2008 pod wzgldem tworzenia uytkownikw, nadawania im uprawnie i kontroli nad tymi
uprawnieniami. W celach testowych postanowie wykorzysta robocz baz
Evaluation.
Tok postpowania
Uruchom maszyn wirtualn BD2008.
Jako nazw uytkownika podaj Administrator.
Jako haso podaj P@ssw0rd.
Jeli nie masz zdefiniowanej maszyny wirtualnej w
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
D:\VirtualPC\Dydaktyka\BD2008.vhd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008
SQL Server Management Studio.
Po lewej stronie ekranu w oknie Object Explorer
przyciskiem myszy nazw serwera (EVALUATION
kontekstowego wybierz opcj Properties.
W lewej czci okna z listy Select a page wybierz Security
Zaznacz opcj SQL Server and Windows Authentication Mode
Kliknij OK.
Kliknij OK w oknie informujcym o tym, e nowe ustawienia wymagaj
restartu usugi serwera.
Dokonaj restartu maszyny i pocz si ponownie z serwerem SQL
W oknie Object Explorer rozwi zawarto folderu
Prawym przyciskiem myszy kliknij Logins i z menu kontekstowego
wybierz New Login.
W polu Login name wpisz Tomek.
Zaznacz opcj SQL Server authentication.
W polach Password i Confirm password wpisz P@ssw0rd
Odznacz opcj User must change password at next login
Kliknij OK.
Modu 10
Instalacja i konfiguracja MS SQL Server 2008
zbadanie moliwoci serwera Microsoft SQL
2008 pod wzgldem tworzenia uytkownikw, nadawania im uprawnie i kontroli nad tymi
robocz baz PraceDyplomowe,

Jeli nie masz zdefiniowanej maszyny wirtualnej w Microsoft Virtual
PC, dodaj now maszyn uywajc wirtualnego dysku twardego z pliku
Microsoft SQL Server 2008 uruchom
Explorer kliknij prawym
EVALUATION) i z menu
Security.
Windows Authentication Mode.
w oknie informujcym o tym, e nowe ustawienia wymagaj
pocz si ponownie z serwerem SQL.
rozwi zawarto folderu Security.
i z menu kontekstowego
P@ssw0rd.
User must change password at next login.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 10
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 13/17

Rys. 8 Tworzenie nowego loginu
3. Przeprowad
audyt prb
logowania
Z menu gwnego wybierz File -> New -> Database Engine Query.
W oknie Connect to Database Engine z listy Authentication wybierz SQL
Server Authentication.
W polu Login wpisz Tomek, za pole Password pozostaw puste.
Kliknij OK.
W oknie komunikatu o nieudanej prbie logowania kliknij OK.
Zamknij okno logowania klikajc Cancel.
W oknie Object Explorer rozwi zawarto folderu Management.
Prawym przyciskiem myszy kliknij SQL Server Logs i wybierz View -> SQL
Server and Windows Log.
Przeczytaj informacj o nieudanej prbie logowania uytkownika
Tomek.
Zamknij okno dziennika systemowego.

Rys. 9 Dziennik systemowy SQL Server 2008
Utwrz jeszcze jeden login w systemie. Po skonfigurowaniu wszystkich
opcji loginu (nazwa, haso, itd.) w grnej czci okna wybierz Script.
Przyjrzyj si skadni polecenia, ktre pojawi si w oknie edytora.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 10
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 14/17
4. Dodaj
uytkownika do
bazy danych
W oknie Object Explorer rozwi zawarto folderu Databases.
Rozwi zawarto bazy danych PraceDyplomowe.
W bazie PraceDyplomowe rozwi zawarto folderu Security.
Prawym przyciskiem myszy kliknij folder Users i wybierz New User.
W oknie Database User - New w pola User name i Login name wpisz
Tomek (klikajc na przycisku z trzema kropkami masz moliwo wyboru
istniejcego loginu z listy), a w polu Default schema wpisz Sales.
W grnej czci okna kliknij Script.
Kliknij OK i obejrzyj skrypt, ktry zosta wygenerowany.

Rys. 10 Dodawanie uytkownika do bazy danych
5. Nadaj
uprawnienia
uytkownikowi
Z menu gwnego wybierz File -> Open -> File.
Odszukaj plik Grant.sql i kliknij Open.
Wcinij F5, aby uruchomi kod. Kod ten nadaje uprawnienia do
wykonywania polecenia SELECT na tabeli PracaDyplomowa
uytkownikowi Tomek.
6. Wykorzystaj
stworzonego
uytkownika
Z menu gwnego wybierz File -> Open -> File.
Odszukaj plik SelectAsTomek.sql i kliknij Open.
Wcinij F5, aby uruchomi kod. Wykona on polecenie SELECT jako
uytkownik Tomek, ktremu odpowiednie uprawnienia nadae w kroku
5.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 10
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 15/17

Rys. 11 Wykonanie kodu SQL w kontekcie uytkownika Tomek
7. Utwrz
waciciela
schematu
Z menu gwnego wybierz File -> Open -> File.
Odszukaj plik Schema.sql i kliknij Open.
Zaznacz kod, ktry tworzy uytkownika Janek, bdcego wacicielem
nowego schematu:
USE PraceDyplomowe
GO
CREATE LOGIN Janek
WITH
PASSWORD = 'P@ssw0rd' MUST_CHANGE
, CHECK_EXPIRATION = ON
, CHECK_POLICY = ON
GO

CREATE USER Janek
FOR LOGIN Janek
WITH DEFAULT_SCHEMA = dbo
GO
Wcinij F5, by uruchomi zaznaczony kod.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
8. Utwrz
schemat
Zaznacz
NewSchema
oraz nadaje uprawnienia do wykonywania polecenia
uytkownikowi
--
CREATE SCHEMA NewSchema AUTHORIZATION Janek
CREATE TABLE NewTable(col1 int, col2 int)
GRANT SELECT ON NewTable TO Tomek
GO
9. Uzyskaj
dostp do danych
Zaznacz kod, ktry przeczy kontekst uytkownika na login
--
EXECUTE AS LOGIN = 'John';
Wcinij
Zaznacz kod, ktry wykona prb dostpu do danych
--
SELECT * FROM NewTable
Wcinij
Zaznacz kod, ktry wykona ponownie prb dostpu do danych
--
SELECT * FROM NewSchema.NewTable
Wcinij

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 16/17
Rys. 12 Tworzenie nowego uytkownika SQL Server
Zaznacz i uruchom (F5) poniszy fragment kod, ktry tworzy schemat
NewSchema dla uytkownika Janek, tabel NewTable
oraz nadaje uprawnienia do wykonywania polecenia
uytkownikowi Tomek:
--Tworzymy schemat
CREATE SCHEMA NewSchema AUTHORIZATION Janek
CREATE TABLE NewTable(col1 int, col2 int)
GRANT SELECT ON NewTable TO Tomek
GO
Zaznacz kod, ktry przeczy kontekst uytkownika na login
-- Zmieniamy kontekst (w SQL 2000 - setuser 'John')
EXECUTE AS LOGIN = 'John';
Wcinij F5, by uruchomi zaznaczony kod.
Zaznacz kod, ktry wykona prb dostpu do danych
-- Error!!! Nie ma Sales.NewTable ani dbo.NewTable
SELECT * FROM NewTable
Wcinij F5, by uruchomi zaznaczony kod.
Prba wykonania powyszego kodu spowoduje wywietlenie
komunikatu o bdzie, poniewa nie istnieje obiekt o nazwie
Sales.NewTable (Sales to domylny schemat dl
ani obiekt o nazwie dbo.NewTable.
Zaznacz kod, ktry wykona ponownie prb dostpu do danych
-- Ok.
SELECT * FROM NewSchema.NewTable
Wcinij F5, by uruchomi zaznaczony kod.
Powyszy kod zostanie poprawnie wykonany, poniewa
uprawnienia do wykonywania operacji na schemacie
bdc jego wacicielem.

Modu 10
Instalacja i konfiguracja MS SQL Server 2008

Tworzenie nowego uytkownika SQL Server
kod, ktry tworzy schemat
NewTable w tym schemacie
oraz nadaje uprawnienia do wykonywania polecenia SELECT na tabeli
Zaznacz kod, ktry przeczy kontekst uytkownika na login John:
setuser 'John')
Zaznacz kod, ktry wykona prb dostpu do danych:
ales.NewTable ani dbo.NewTable
spowoduje wywietlenie
komunikatu o bdzie, poniewa nie istnieje obiekt o nazwie
to domylny schemat dla uytkownika John)
Zaznacz kod, ktry wykona ponownie prb dostpu do danych:
Powyszy kod zostanie poprawnie wykonany, poniewa Janek ma
uprawnienia do wykonywania operacji na schemacie NewSchema,
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 10
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 17/17
Laboratorium rozszerzone
Zadanie 1 (czas realizacji 90 min)
Stworzenie uytkownikw i powizanie ich z odpowiednimi prawami do danych w bazach firmy
National Insurance znacznie zwikszyo poziom bezpieczestwa systemu bazodanowego.
Monitoring dziennikw systemowych pokaza, ktre aplikacje klienckie i ktrzy uytkownicy
sprawiali problemy. Wida byo take wyrane rezultaty zabezpiecze w postaci odrzuconych
nieuprawnionych prb dostpu do danych. Wyniki tych dziaa zachciy zarzd firmy do wsparcia
dalszych prac nad bezpieczestwem systemu bazodanowego. Jako gwny administrator masz za
zadanie zapozna si z moliwociami szyfrowania danych zawartymi w Microsoft SQL Server 2008
oraz wdroy je w firmie.
Zapoznaj si z moliwociami wykorzystania elementw kryptografii w SQL Server 2008 (plik
cryptography.sql).
Sprbuj wykorzysta szyfrowanie i certyfikaty cyfrowe do zabezpieczenia poszczeglnych
tabel bazy danych.
Wszystkie eksperymenty maj by dokonywane na bazie PraceDyplomowe. Jako rezultat masz
napisa raport zawierajcy przykady zastosowania moliwoci szyfrowania danych i autoryzacji
dostpu do nich.


ITA-101 Bazy Danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Modu 11
Wersja 1.0
Praca z XML
Spis treci
Praca z XML .......................................................................................................................................... 1
Informacje o module ............................................................................................................................ 2
Przygotowanie teoretyczne ................................................................................................................. 3
Przykadowy problem .................................................................................................................. 3
Podstawy teoretyczne.................................................................................................................. 3
Przykadowe rozwizanie ............................................................................................................. 4
Porady praktyczne ....................................................................................................................... 8
Uwagi dla studenta ...................................................................................................................... 8
Dodatkowe rda informacji....................................................................................................... 8
Laboratorium podstawowe .................................................................................................................. 9
Problem 1 (czas realizacji 45 min) ................................................................................................ 9
Laboratorium rozszerzone ................................................................................................................. 15
Zadanie 1 (czas realizacji 90 min) ............................................................................................... 15

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 11
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 2/15
Informacje o module
Opis moduu
Wymiana danych z relacyjnymi bazami danych moe by utrudniona ze
wzgldu na rnice programowo sprztowe itp. Rozwizaniem jest jzyk
XML, ktry jest niezaleny od standardw sprztowych / programowych.
Cel moduu
Celem moduu jest zapoznanie si z moliwociami zastosowania jzyka
XML w MS SQL 2008.
Uzyskane kompetencje
Po zrealizowaniu moduu bdziesz:
wiedzie, jak uzyska dokument XML ze zwykego wyniku zapytania
nauczysz si sterowa zapisem danych do dokumentu XML
bdziesz umia zapisa informacje z dokumentu XML do bazy danych
nauczysz si przeprowadza walidacj danych XML wedug zadanych
schematw
poznasz jzyk XQuery, ktry umoliwia wykonywanie operacji na
danych XML
Wymagania wstpne
Przed przystpieniem do pracy z tym moduem powiniene:
wiedzie, jak uywa oprogramowania Microsoft Virtual PC
zna podstawy obsugi systemu Windows 2000 lub nowszego
zna podstawy obsugi SQL Server Management Studio
Mapa zalenoci moduu
Zgodnie z map zalenoci przedstawion na Rys. 1, istnieje konieczno
wykonania wczeniej moduu 3.


Rys. 1 Mapa zalenoci moduu
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 11
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 3/15
Przygotowanie teoretyczne
Przykadowy problem
Firma National Insurance wykupia niedawno udziay w mniejszej, prnie dziaajcej firmie
informatycznej Miracle. Poniewa dzia IT w Miracle uywa innej architektury bazodanowej,
nastpi problem z wymian danych pomidzy central a nowym oddziaem. Informatycy obydwu
oddziaw wpadli na pomys uycia uniwersalnego jzyka XML do wymiany danych pomidzy
platformami. Przed podjciem stosownych dziaa dyrektor dziau IT postanowi sprawdzi, co
oferuje system MS SQL Server 2008 w tym zakresie.
Podstawy teoretyczne
XML (ang. eXtensible Markup Language) jest jzykiem znacznikw (jak HTML), w ktrym to
programista decyduje o tym, jaka bdzie struktura znacznikw. W ostatnich latach XML zyska
ogromn popularno jako format idealny do wymiany danych midzy aplikacjami, nonik
konfiguracji aplikacji, format zapisu danych. Znajomo moliwoci XML i standardw skojarzonych
jest dzi waciwie niezbdna nie tylko w pracy z bazami danych, ale rwnie z technologiami
programistycznymi.
W dzisiejszym wiecie informacja jest przechowywana w rnych formatach. Jednym z do czsto
spotykanych formatw jest XML. Oznacza to, e system bazodanowy powinny oferowa moliwo
zapisu w swoich strukturach (w swoich bazach danych) danych przemieszanych ze znacznikami
XML.
Format danych
Kady system bazodanowy oferuje bogaty zestaw typw danych. Wrd tych typw mona znale
sporo typw przechowujcych tekst. Poniewa XML jest formatem tekstowym, moe by
przechowywany jako tekst, ale typ danych, ktry w bazach danych ma suy do przechowywania
danych XML, powinien charakteryzowa si czym wicej ni tylko moliwoci zapisu znacznikw i
zaszytych w nich informacji.
Jedn z podstawowych waciwoci dokumentu XML jest wymg, ktry mwi, e dokument XML
musi posiada odpowiedni form. Oznacza to, e:
dokument ma jeden element gwny (ang. root), w ktrym zawarte s pozostae elementy
pojedynczy znacznik nie zawiera dwch atrybutw o takiej samej nazwie
wartoci atrybutw powinny znale si w ogranicznikach (cudzysowy lub apostrofy)
znaczniki nie powinny si zazbia.
Poniszy listing ilustruje przykadowy fragment poprawnego dokument XML:
<panstwa>
<panstwo nazwa="Polska">
<stolica>Warszawa</stolica>
<obszar>312680</obszar>
<ludnosc>38456785</ludnosc>
<glowne_miasta>Wrocaw</glowne_miasta>
<glowne_miasta>Gdask</glowne_miasta>
<glowne_miasta>Krakw</glowne_miasta>
<glowne_miasta>Pozna</glowne_miasta>
</panstwo>
<panstwo nazwa="Niemcy">
<stolica>Berlin</stolica>
<obszar>356910</obszar>
<ludnosc>81700000</ludnosc>
<glowne_miasta>Monachium</glowne_miasta>
</panstwo>
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 11
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 4/15
<panstwo nazwa="Czechy">
<stolica>Praga</stolica>
<obszar>78703</obszar>
<ludnosc>10300000</ludnosc>
</panstwo>
</panstwa>
Idealny format do przechowywania danych XML powinien zapewnia automatyczn kontrol
poprawnoci zapisu danych.
Walidacja
Bardzo czsto struktura dokumentw XML jest w jednoznaczny sposb okrelona przy pomocy
innych standardw, takich jak XML Schema czy DTD (ang. Document Type Definition). Szczeglnie
XML Schema jest doskonaym formatem opisujcym struktury XML. Idealnie zatem byoby, gdyby
system bazodanowy umoliwia wykorzystanie standardw walidujcych XML do kontroli struktury
danych zapisywanych w bazach danych.
MS SQL Server 2000 wprowadzi moliwo konwersji danych pobieranych z bazy do dokumentu
XML oraz danych z tych plikw na wiersze bazy danych. Umoliwiaj to sowa kluczowe jzyka
Transact-SQL:
FOR XML
OPENXML
MS SQL Server 2005 rozszerza moliwoci w/w sw kluczowych, dziki czemu mona sterowa
sposobem tworzenia dokumentu XML (dokadne informacje w dokumentacji do tych polece).
Dodatkowo umoliwiono tworzenie natywnych typw danych XML pozwalajcych na tworzenie
wasnych zmiennych oraz dodawanie kolumn do danych XML. Odpowiedzialne za to jest polecenie
CREATE XML SCHEMA COLLECTION (dokumentacja: http://msdn2.microsoft.com/en-
us/library/ms176009.aspx), a w poczeniu z XQuery (jzyk pozwalajcy na pisanie zapyta
przeszukujcych dokumenty XML, dokumentacja: http://msdn2.microsoft.com/en-
us/library/ms189075(SQL.100).aspx) pozwala na pisanie zapyta do treci XML, ktrych wynik
take jest przedstawiony w dokumencie XML. Innym udoskonaleniem jest moliwo nadania
indeksw kolumnom typu XML. Pozwala to na zwikszenie oglnej wydajnoci.
MS SQL 2008 wprowadzi dalsze udoskonalenia w zakresie walidacji danych. Dodano moliwo
stworzenia schematu ktry moe by dopasowany do dowolnych danych. Dodano sowo kluczowe
let do XQuery (podstawy mona opanowa na bazujc na tutorialach:
http://www.w3schools.com/xquery/default.asp) dziki, ktremu mona przypisywa wartoci do
zmiennych. Ponadto za pomoc XQuery mona wykonywa operacje na danych XML za pomoc
insert, replace value of, delete, modify, a MS SQL Server 2008 pozwala na uycie danych
XML jako argumentu dla polecenia insert.
Przykadowe rozwizanie
Rozpoczynajc prac z plikami XML naley zastanowi si jakie dane bdziemy w nich
przechowywa. Dane z bazy wybieramy np.: poleceniem SELECT. Aby trafiy one do pliku XML na
kocu skryptu SQL naley dopisa sekwencj FOR XML z odpowiednimi parametrami. Przykadowo,
wybierajc dane z tabeli Customers utworzenie pliku XML zapewni nam sekwencja
FOR XML RAW('Customer'), ELEMENTS, ROOT
Po uruchomieniu takiego kodu w Management Studio jako rezultat pojawi nam si odnonik do
pliku XML tak jak pokazano na Rys. 2:
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 11
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 5/15

Rys. 2 Generowanie kodu XML
W tym momencie uzyskalimy wynik zapytania w postaci dokumentu XML. Klikajc na odnonik
moemy obejrze struktur pliku a nastpnie zapisa go jako zwyky plik systemowy. Znajc
podstawy jzyka XML atwo wprowadza modyfikacje i rozbudowywa tego typu pliki nawet poza
rodowiskiem bazodanowym. Wystarczy dysponowa dowolnym edytorem testu.

Rys. 3 Wywietlenie kodu XML
Pracujc z plikami XML zawsze naley zwraca uwag na sposb kodowania znakw. Warto
wymusi odpowiednie kodowanie umieszczajc na pocztku pliku nastpujc sekwencj
<?xml version="1.0" encoding="utf-16"?>
Co prawda same polecenia XML nie zawieraj w swojej strukturze znakw narodowych ale dane
pojawiajce si w plikach przewanie takie posiadaj. Aby unikn przekama rozsdnie
rozpocz plik XML tak jak pokazano na rys 4.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
W tym momencie posiadamy penowartociowy plik XML zawierajcy dane z naszej bazy.
uzyskane dane mona z atwoci przenie do innej bazy danych np. MySql, poniewa zostay
zapisane w uniwersalnym formacie (naley jedynie pamita

Isnieje moliwo wyeksportowania do pliku XML bardziej zoonych danych. Poniszy kod SQL
wybierze wszystkie zamwienia, ktrych
declare @CustomerID nchar(5)
select @CustomerID = 'ALFKI'
SELECT 1
NULL as Parent,
CustomerID as [Customer!1!customerid],
ContactName as [Customer!1],
NULL as [Order!2!orderid],
NULL as [Order!2]
FROM Customers
where Customers.CustomerID = @CustomerID
UNION
SELECT
2 as tag,
1 as parent,
Customers.CustomerID,
Customers.ContactName,
Orders.OrderID,
Orders.ShipAddress
FROM Customers, Orders
WHERE (Customers.CustomerID = @CustomerID)
AND (Customers.CustomerID = Orders.CustomerID)
FOR XML EXPLICIT
Moemy wic jasno i precyzyjnie okreli interesujcy nas zakres danych, ktry bdzie
wyeksportowany z systemu bazodanowego.

Porwnaj dziaanie polecenia
ELEMENTS, ROOT
http://msdn2.microsoft.com/en

Posiadajc gotowy plik XML zawierajcy dane wyeksportowane z systemu bazodanowego moe
w prosty sposb wczyta te dane do swojej bazy. W ty
typu XML i wczyta do tak zadeklarowanej zmiennej dane ze wskazanego pliku. Tak operacj
wykonuje przykadowy kod SQL:
DECLARE @xmlDoc XML
SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK 'C:
SINGLE_NCLOB ) AS xmlData)
SELECT @xmlDoc
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 6/15
Rys. 4 Dodanie tagu kodowania
W tym momencie posiadamy penowartociowy plik XML zawierajcy dane z naszej bazy.
uzyskane dane mona z atwoci przenie do innej bazy danych np. MySql, poniewa zostay
zapisane w uniwersalnym formacie (naley jedynie pamita o odpowiednim kodowa
Isnieje moliwo wyeksportowania do pliku XML bardziej zoonych danych. Poniszy kod SQL
wybierze wszystkie zamwienia, ktrych ID_Klienta jest rwne "ALFKI".
declare @CustomerID nchar(5)
select @CustomerID = 'ALFKI'
as Tag,
NULL as Parent,
CustomerID as [Customer!1!customerid],
ContactName as [Customer!1],
NULL as [Order!2!orderid],
NULL as [Order!2]
where Customers.CustomerID = @CustomerID

Customers.ContactName,
FROM Customers, Orders
WHERE (Customers.CustomerID = @CustomerID)
AND (Customers.CustomerID = Orders.CustomerID)
y wic jasno i precyzyjnie okreli interesujcy nas zakres danych, ktry bdzie
wyeksportowany z systemu bazodanowego.
Porwnaj dziaanie polecenia FOR XML z atrybutami RAW, AUTO oraz
(oraz bez tych opcji) i innymi zgodnie z dokumentacj na:
http://msdn2.microsoft.com/en-us/library/ms173812.aspx
Posiadajc gotowy plik XML zawierajcy dane wyeksportowane z systemu bazodanowego moe
w prosty sposb wczyta te dane do swojej bazy. W tym celu naley posuy si zmiennymi T
typu XML i wczyta do tak zadeklarowanej zmiennej dane ze wskazanego pliku. Tak operacj
wykonuje przykadowy kod SQL:
SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK 'C:\pliczek.xml', CODEPA
SINGLE_NCLOB ) AS xmlData)
Modu 11
Instalacja i konfiguracja MS SQL Server 2008

W tym momencie posiadamy penowartociowy plik XML zawierajcy dane z naszej bazy. Tak
uzyskane dane mona z atwoci przenie do innej bazy danych np. MySql, poniewa zostay
o odpowiednim kodowaniu znakw).
Isnieje moliwo wyeksportowania do pliku XML bardziej zoonych danych. Poniszy kod SQL
y wic jasno i precyzyjnie okreli interesujcy nas zakres danych, ktry bdzie
oraz PATH oraz atrybutami
(oraz bez tych opcji) i innymi zgodnie z dokumentacj na:
Posiadajc gotowy plik XML zawierajcy dane wyeksportowane z systemu bazodanowego moemy
m celu naley posuy si zmiennymi T-SQL
typu XML i wczyta do tak zadeklarowanej zmiennej dane ze wskazanego pliku. Tak operacj
.xml', CODEPAGE='utf-16',
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
Wynikiem jest wczytana tre wczeniej utworzonego pliku, znajdujca si w jednej kolumnie typu
XML co ilustruje rysunek 5.

W operowaniu na danych XML pomocny jest
typu dokumentw.

Do tej pory jedynie wywietlalimy
aby za pomoc pliku mapujcego dokona
mapujcy odzwierciedla dane z pliku XML na tabele w
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas
xmlns:dt="urn:schemas
xmlns:sql="urn:schemas
<ElementType name="CustomerID" dt:type="string" />
<ElementType name="CompanyName" dt:type="string" />
<ElementType name="City" dt:type="string" />
<ElementType name="ROOT" sql:is
<element type="Customer" />
</ElementType>
<ElementType name="Customer" sql:relation="Customers">
<element type="CustomerID" sql:field="CustomerId" />
<element type="CompanyName" sql:field="CompanyName" />
<element type="City" sql:field="City" />
</ElementType>
</Schema>
Pozostaje nam tylko stworzy odpowiedni skrypt
do bazy wedug zadanego wczeniej schematu:
Set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")
objBL.ConnectionString = "Prov
Catalog=Northwind;Integrated Security=SSPI;"
objBL.ErrorLogFile = "c:
objBL.Execute "c:\customersmapping.xml", "c:
Set objBL = Nothing
Skrypt poczy si z naszym serwerem bazodanowym a
plikami XML co ilustruje rysunek
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 7/15
Wynikiem jest wczytana tre wczeniej utworzonego pliku, znajdujca si w jednej kolumnie typu

Rys. 5 Wczytanie pliku XML
W operowaniu na danych XML pomocny jest XQuery, czyli jzyk zapyta wanie dla tego
Do tej pory jedynie wywietlalimy zawarto wczytanego pliku XML. Nic nie stoi na przeszkodzie
pomoc pliku mapujcego dokona jego zapisu w odpowiedniej tabeli
odzwierciedla dane z pliku XML na tabele w przykadowej bazie Northwind:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:xml:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql" >
<ElementType name="CustomerID" dt:type="string" />
<ElementType name="CompanyName" dt:type="string" />
<ElementType name="City" dt:type="string" />
<ElementType name="ROOT" sql:is-constant="1">
type="Customer" />
<ElementType name="Customer" sql:relation="Customers">
<element type="CustomerID" sql:field="CustomerId" />
<element type="CompanyName" sql:field="CompanyName" />
<element type="City" sql:field="City" />
Pozostaje nam tylko stworzy odpowiedni skrypt Visual Basic, ktry zrealizuje wstawianie danych
do bazy wedug zadanego wczeniej schematu:
Set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")
objBL.ConnectionString = "Provider=SQLOLEDB;Data Source=EVALUATION;Initial
Catalog=Northwind;Integrated Security=SSPI;"
objBL.ErrorLogFile = "c:\error.log"
customersmapping.xml", "c:\customers.xml"
Skrypt poczy si z naszym serwerem bazodanowym a nastpnie wykona zapy
plikami XML co ilustruje rysunek 6.
Modu 11
Instalacja i konfiguracja MS SQL Server 2008
Wynikiem jest wczytana tre wczeniej utworzonego pliku, znajdujca si w jednej kolumnie typu

, czyli jzyk zapyta wanie dla tego
zawarto wczytanego pliku XML. Nic nie stoi na przeszkodzie
wiedniej tabeli bazy danych. Plik
bazie Northwind:
ry zrealizuje wstawianie danych
ider=SQLOLEDB;Data Source=EVALUATION;Initial
nastpnie wykona zapytania SQL zgodnie z
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 11
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 8/15

Rys. 6 Wynik zapytania do bazy po aktualizacji danych
Porady praktyczne
Praca z plikami XML moe by wydajna i przyjemna. Warto jednak zaznaczy, e szczeglnie
pocztkujcy uytkownicy mog popenia drobne, ale mczce bdy zwizane gwnie z
niecisociami w nazewnictwie:
Zawsze sprawdzaj poprawno nazw wszelkich plikw i ich cieek dostpu. Czsto
niemono zlokalizowania pliku skutkuje komunikatami o innych bdach.
Poprawne okrelenie kodowania zapobiega przekamaniom w obrbce danych. Czasami ze
kodowanie w ogle wyklucza wykonanie danej operacji.
Dowied si nieco wicej o podstawach programowania w VBscript. Jest to bardzo prosty,
obiektowy jzyk programowania, wykorzystywany w budowie skryptw.
Czytaj uwanie dziennik bdw. W wikszoci przypadkw dziennik wskazuje na poprawne
rozwizanie problemu.
Uwagi dla studenta
Jeste przygotowany do realizacji laboratorium jeli:
rozumiesz, czym rni si jzyk XML od HTML
rozumiesz zasad dziaania struktury XML Schema
umiesz zdefiniowa przykadow struktur pliku XML
umiesz poda przykad zastosowania narzdzia XQuery.
Pamitaj o zapoznaniu si z uwagami i poradami zawartymi w tym module. Upewnij si, e
rozumiesz omawiane w nich zagadnienia. Jeli masz trudnoci ze zrozumieniem tematu zawartego
w uwagach, przeczytaj ponownie informacje z tego rozdziau i zajrzyj do notatek z wykadw.
Dodatkowe rda informacji
1. William R. Stanek, Microsoft XML Vademecum, Microsoft Press, 2002
2. Elizabeth Castro, Po prostu XML, Helion, 2001
3. Priscilla Walmsley, Wszystko o XML Schema, WNT, 2007
4. Przemysaw Kozienko, Krzysztof Gwiazda, XML na powanie, Helion, 2002
5. Scott Short , Zastosowanie XML do tworzenia usug internetowych na platformie Microsoft .NET,
Microsoft Press 2003

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 11
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 9/15
Laboratorium podstawowe
Problem 1 (czas realizacji 45 min)
Jeste administratorem systemu bazodanowego w firmie National Insurance. Twj szef zleci Ci
rozpoznanie moliwoci pyncych z uycia jzyka XML w systemie MS SQL Server 2008. W
pierwszej kolejnoci postanowie uy narzdzi dostpnych w systemie na roboczym serwerze
Evaluation i sprawdzonej bazie danych Northwind.
Zadanie Tok postpowania
1. Nawizywanie
poczenia z SQL
Server 2008
Zaloguj si do maszyny wirtualnej BD jako uytkownik Administrator z
hasem P@ssw0rd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008 uruchom
SQL Server Management Studio.
W oknie logowania kliknij Connect.
2. Wygenerowan
ie pliku XML na
podstawie danych
z bazy
W oknie Object Explorer rozwi list tabel bazy danych
Northwind -> Databases -> Tables.
Kliknij prawym klawiszem myszki tabel Customers i wybierz opcj
Select Top 1000 Rows.

Rys. 7 Wybieranie danych z bazy Northwind
W okienku, ktre si pokae, zamie warto 1000 na 10 (nie potrzeba
tyle danych do testw), a na samym kocu skryptu dopisz:
FOR XML RAW('Customer'), ELEMENTS, ROOT
wykonaj zapytanie klikajc przycisk Execute.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 11
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 10/15

Rys. 8 Generowanie kodu XML
Kliknij na odnonik <Root><Customer> w celu otwarcia okna z kodem
XML.

Rys. 9 Wywietlenie kodu XML
zapisz ten wynik do pliku: c:\customers.xml klikajc na menu File->Save
As.
Moesz otworzy plik w przegldarce, aby zobaczy jego struktur,
jednak zanim to zrobisz, dopisz na samym pocztku, najlepiej w
edytorze w MS SQL, nastpujc lini:
<?xml version="1.0" encoding="utf-16"?>
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
zamkni
3. Wczytanie
danych XML do
MS SQL
Kliknij przycisk
Wpisz nastpujcy kod SQL do nowego okna zapytania:
DECLARE @xmlDoc XML
SET @xmlDoc
'C:
SELECT @xmlDoc
Kliknij przycisk
4. Odczyt danych
XML - poruszanie
si po drzewie
danych
Zmie zapytanie SQL z poprzedniego zadania na nastpujce:
DECLARE @xmlDoc XML
SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK
'C:
SELECT @xmlDoc.query(
'<Customers>
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 11/15
Rys. 10 Dodanie tagu kodowania
zamknij utworzone zapytania w gwnym oknie Management Studio

Kliknij przycisk NewQuery.
Wpisz nastpujcy kod SQL do nowego okna zapytania:
DECLARE @xmlDoc XML
SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK
'C:\customers.xml', CODEPAGE='utf-16', SINGLE_NCLOB ) AS xmlData)
SELECT @xmlDoc
Kliknij przycisk Execute.
Rys. 11 Wczytanie pliku XML
Jeli nie mona wczyta pliku albo na pocztku treci pojawiaj
tzw. krzaczki, to prosz si cofn do momentu zapisu i zamiast
przez edytor z MSSQL, prosz zapisa metod kopiowania i wklejania
treci dokumentu XML do notatnika
W operowaniu na danych XML pomocny jest
zapyta wanie dla tego typu dokumentw.
Zmie zapytanie SQL z poprzedniego zadania na nastpujce:
DECLARE @xmlDoc XML
SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK
'C:\customers.xml', CODEPAGE='utf-16', SINGLE_NCLOB ) AS xmlData)
SELECT @xmlDoc.query(
'<Customers>
Modu 11
Instalacja i konfiguracja MS SQL Server 2008


Management Studio
Wpisz nastpujcy kod SQL do nowego okna zapytania:
= ( SELECT * FROM OPENROWSET ( BULK
16', SINGLE_NCLOB ) AS xmlData)

Jeli nie mona wczyta pliku albo na pocztku treci pojawiaj si
to prosz si cofn do momentu zapisu i zamiast
przez edytor z MSSQL, prosz zapisa metod kopiowania i wklejania
W operowaniu na danych XML pomocny jest XQuery, czyli jzyk
Zmie zapytanie SQL z poprzedniego zadania na nastpujce:
SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK
16', SINGLE_NCLOB ) AS xmlData)
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 11
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 12/15
{
for $i in /root/Customer
where $i/Country="Mexico"
return
<Order>
{$i/CompanyName}
</Order>
}
</Customers>'
)
Uruchom zapytanie klikajc przycisk Execute.
Kliknij na odnonik do kodu XML.


Rys. 12 Generowanie kodu XML
5. Eksport
wybranych
danych do pliku
XML
Kliknij przycisk NewQuery.
W nowym oknie wpisz nastpujcy kod SQL:
use Northwind
declare @CustomerID nchar(5)
select @CustomerID = 'ALFKI'
SELECT 1 as Tag,
NULL as Parent,
CustomerID as [Customer!1!customerid],
ContactName as [Customer!1],
NULL as [Order!2!orderid],
NULL as [Order!2]
FROM Customers
where Customers.CustomerID = @CustomerID
UNION
SELECT
2 as tag,
1 as parent,
Customers.CustomerID,
Customers.ContactName,
Orders.OrderID,
Orders.ShipAddress
FROM Customers, Orders
WHERE (Customers.CustomerID = @CustomerID)
AND (Customers.CustomerID = Orders.CustomerID)
FOR XML EXPLICIT
Kliknij na nowy odnonik do kodu XML.
Dodaj w pierwszej linijce pliku okrelenie kodowania znakw:
<?xml version="1.0" encoding="unicode"?>
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
Kliknij na menu
Zapisz kod XML do pliku
Kliknij przycisk
W nowym oknie wpisz nastpuj
DECLARE @xmlDoc XML
SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK 'C:
Settings
SINGLE_NCLOB ) AS xmlData)
SELECT @xmlDoc
SELECT @xmlDoc.query(
'<Orders>
{
for $i in /Custo
let $count :=count($i/Order)
return
<OrdersNumber>
{$i/Customer}
<ItemCount>{$count}</ItemCount>
</OrdersNumber>
}
</Orders>')
Kliknij na nowy odnonik do kodu XML
6. Zapisanie
wczytanych
danych XML do
tabeli za pomoc
pliku mapujcego
Kliknij menu
Wpisz w oknie notatnika nastpujcy kod XML, w ktrym znajdowa si
bd informacje, ktre chcemy zapisa w bazie:
<?xml version="1.0" encoding="unicode"?>
<root>





</root>
Zapisz plik pod nazw
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 13/15
Rys. 13 Dodanie tagu kodowania znakw
Kliknij na menu File->Save As.
Zapisz kod XML do pliku C:\explicit.xml.
W nastpnym kroku wczytasz wczeniej zapisany plik explicit.xml i
uruchomisz zapytanie SQL zliczajce ilo wystpie tagu Order,
kadego elementu Customer:
Kliknij przycisk NewQuery.
W nowym oknie wpisz nastpujcy kod SQL:
DECLARE @xmlDoc XML
SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK 'C:
Settings\Administrator\Desktop\explicit.xml', CODEPAGE='unicode',
SINGLE_NCLOB ) AS xmlData)
SELECT @xmlDoc
SELECT @xmlDoc.query(
'<Orders>

for $i in /Customer
let $count :=count($i/Order)
return
<OrdersNumber>
{$i/Customer}
<ItemCount>{$count}</ItemCount>
</OrdersNumber>

</Orders>')
Kliknij na nowy odnonik do kodu XML.
Rys. 14 Wywietlenie wynikw z kodu XML
Kliknij menu START->Programs->Accessories->Notepad
Wpisz w oknie notatnika nastpujcy kod XML, w ktrym znajdowa si
bd informacje, ktre chcemy zapisa w bazie:
<?xml version="1.0" encoding="unicode"?>
<root>
<Customer>
<CustomerID>Test</CustomerID>
<CompanyName>Teeest</CompanyName>
<City>Warsaw</City>
</Customer>
</root>
Zapisz plik pod nazw c:\customers.xml.
Modu 11
Instalacja i konfiguracja MS SQL Server 2008

Dodanie tagu kodowania znakw
W nastpnym kroku wczytasz wczeniej zapisany plik explicit.xml i
uruchomisz zapytanie SQL zliczajce ilo wystpie tagu Order,
SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK 'C:\Documents and
explicit.xml', CODEPAGE='unicode',

Wywietlenie wynikw z kodu XML
>Notepad.
Wpisz w oknie notatnika nastpujcy kod XML, w ktrym znajdowa si
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 11
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 14/15
W oknie notatnika kliknij menu File->New.
Wpisz nastpujcy kod XML, ktry odzwierciedla dane z pliku XML na
tabele w bazie Northwind:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:xml:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql" >
<ElementType name="CustomerID" dt:type="string" />
<ElementType name="CompanyName" dt:type="string" />
<ElementType name="City" dt:type="string" />
<ElementType name="ROOT" sql:is-constant="1">
<element type="Customer" />
</ElementType>
<ElementType name="Customer" sql:relation="Customers">
<element type="CustomerID" sql:field="CustomerId" />
<element type="CompanyName" sql:field="CompanyName" />
<element type="City" sql:field="City" />
</ElementType>
</Schema>
Zapisz plik pod nazw c:\customersmapping.xml.
W oknie notatnika kliknij menu File->New.
Wpisz nastpujcy skrypt Visual Basic, ktry zrealizuje wstawianie
danych do bazy wedug zadanego wczeniej schematu:
Set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")
objBL.ConnectionString = "Provider=SQLOLEDB;Data
Source=EVALUATION;Initial Catalog=Northwind;Integrated
Security=SSPI;"
objBL.ErrorLogFile = "c:\error.log"
objBL.Execute "c:\customersmapping.xml", "c:\customers.xml"
Set objBL = Nothing
Zapisz plik pod nazw c:\ Insertcustomers.vbs.
Przejd na dysk lokalny C: i uruchom plik Insertcustomers.vbs.

Rys. 15 Wynik zapytania do bazy po aktualizacji danych
Moesz sprawdzi za pomoc SQL Management Studio->Object Explorer,
czy rzeczywicie zaszy zmiany w tabeli Customers bazy Northwind.

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 11
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 15/15
Laboratorium rozszerzone
Zadanie 1 (czas realizacji 90 min)
Zapoznae si z podstawami obsugi jzyka XML w firmowym systemie bazodanowym.
Postanowie wykorzysta zdobyt wiedz do przeniesienia danych z bazy PraceDyplomowe
znajdujcej si w centrali do bazy w nowym oddziale firmy. Zanim jednak dane trafi do oddziau,
bdziesz chcia zweryfikowa poprawno zapisu w plikach XML:
Utwrz skrypty SQL zapisujce do plikw XML jak najwicej informacji z bazy danych
PraceDyplomowe
Utwr now, robocz baz PraceDyplomowe_TEMP
Odzyskaj zapisane dane do bazy PraceDyplomowe_TEMP za pomoc odpowiedniego
skryptu Visual Basic.
Zapisz swoje uwagi w pliku raportu i przedyskutuj z innymi zespoami.


ITA-101 Bazy Danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Modu 12
Wersja 1.0
Praca z Reporting Services
Spis treci
Praca z Reporting Services ................................................................................................................... 1
Informacje o module ............................................................................................................................ 2
Przygotowanie teoretyczne ................................................................................................................. 3
Przykadowy problem .................................................................................................................. 3
Podstawy teoretyczne.................................................................................................................. 3
Przykadowe rozwizanie ............................................................................................................. 6
Porady praktyczne ..................................................................................................................... 12
Uwagi dla studenta .................................................................................................................... 12
Dodatkowe rda informacji..................................................................................................... 13
Laboratorium podstawowe ................................................................................................................ 14
Problem 1 (czas realizacji 45 min) .............................................................................................. 14
Laboratorium rozszerzone ................................................................................................................. 24
Zadanie 1 (czas realizacji 90 min) ............................................................................................... 24

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 2/24
Informacje o module
Opis moduu
Aby osign sukces na dzisiejszym, konkurencyjnym rynku,
przedsibiorstwa gromadzce due iloci danych powinny wprowadzi
rozwizania biznesowe dziaajce w czasie rzeczywistym zapewniajce
bezproblemow, skuteczn wymian informacji pomidzy wasnymi
oddziaami, swoimi partnerami, a take klientami. Microsoft SQL Server
Reporting Services jest rozwizaniem, ktre pozwala szybko i komfortowo
dzieli i udostpnia dane biznesowe, przy niszych nakadach rozmaitych
zasobw.
Cel moduu
Celem moduu jest zapoznanie si z podstawow funkcjonalnoci systemu
raportowania w MS SQL Server 2008.
Uzyskane kompetencje
Po zrealizowaniu moduu bdziesz:
poznasz podstawy MS SQL Server Reporting Services
dowiesz si, jak zainstalowa narzdzie MS SQL Server Reporting
Services
nauczysz si, jak wykorzystywa MS SQL Server Reporting Services do
tworzenia raportw
Wymagania wstpne
Przed przystpieniem do pracy z tym moduem powiniene:
wiedzie jak uywa oprogramowania Microsoft Virtual PC
zna podstawy obsugi systemu Windows 2000 lub nowszego
zna podstawy obsugi SQL Management Studio
Mapa zalenoci moduu
Zgodnie z map zalenoci przedstawion na Rys. 1, istnieje konieczno
wykonania wczeniej moduu 3.


Rys. 1 Mapa zalenoci moduu
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 3/24
Przygotowanie teoretyczne
Przykadowy problem
W firmie National Insurance dyrektor dziau marketingu zosta poproszony o przygotowanie akcji
marketingowej skierowanej do klientw firmy. Liczba klientw w bazie danych wynosi okoo
miliona osb, a koszt dotarcia do kadego klienta 10 PLN. Akcja dotyczy luksusowego produktu,
ktrym zainteresowani mog by wybrani klienci. Jeste specjalist analitykiem w dziale IT i masz
dostp do bazy danych firmy. Administrator nowego serwera MS SQL Server wskaza na
interesujc usug o nazwie Reporting Services, pozwalajc w ciekawy i wygodny sposb
przedstawia dane pobierane z bazy. Postanowie zapozna si z now usug.
Podstawy teoretyczne
MS SQL Server Reporting Services jest platform raportujc, ktra uywana jest do zarzdzania
tabelarycznymi, macierzowymi lub innymi raportami zawierajcymi dane z wielowymiarowych
rde. Raporty tworzone za pomoc MS SQL Server Reporting Services mog by udostpniane i
zarzdzane przez sie WWW. Podstawowe komponenty MS SQL Server Reporting Services to:
peny zestaw narzdzi do tworzenia, zarzdzania i udostpniania raportw
serwer raportujcy (ang. Report Server) udostpniajcy i przetwarzajcy raporty w wielu
formatach danych (np. HTML, PDF, TIFF, Excel, CSV, etc.)
API, za pomoc, ktrego programici i deweloperzy mog rozszerzy, zintegrowa (dane i
przetwarzanie raportw) oraz utworzy aplikacje do zarzdzania raportami.
Dane rdowe dla raportw tworzonych za pomoc MS SQL Server Reporting Services mog
pochodzi z relacyjnych lub wielowymiarowych zbiorw danych. Ich dostawc moe by SQL
Server, Analysis Services, Oracle lub inny dostawca danych, taki jak ODBC lub OLE DB. Raporty
mog mie posta tabelaryczn, macierzow lub dowoln inn, mona te tworzy raporty ad-hoc
(przy wykorzystaniu predefiniowanych modeli).
Swoj funkcjonalnoci i metodami wizualizacji MS SQL Server Reporting Services przewysza
dotychczasowe rozwizania raportowe, midzy innymi dziki opartej na sieci WWW wizualizacji.
W dalszej czci przyjrzymy si podstawowym cechom MS SQL Server Reporting Services.
Raporty
Dane rdowe w postaci relacyjnej, wielowymiarowej, a take XML dane do raportw
mog by dostarczone przez MS SQL Server, Analysis Services, Oracle (poprzez .NET
Framework), ODBC, OLE DB, a take ze zbiorw zapisanych w formacie XML.
Raporty mog by prezentowane za pomoc rozmaitych rozkadw, takich jak tabele (np. dla
danych kolumnowych), macierze (np. dla danych streszczonych), wszelakie wykresy (dane
prezentowane graficznie), a take rozkad dowolny, oparty na dowolnie ustawianych
kontrolkach i polach wewntrz kontenera. W razie potrzeby moliwe jest poczenie rnych
rozkadw w jednym raporcie.
Raporty typu ad-hoc istnieje moliwo tworzenia i zapisywania raportw bezporednio na
serwerze raportujcym za pomoc aplikacji ClickOnce (Report Builder). Raporty ad-hoc
wykonywane s poprzez klienta ciganego z serwer raportujcego.
Udoskonalone przegldanie raportw istnieje moliwo dodania interaktywnych
elementw (np. linki), zapewniajcych dostp do spokrewnionych raportw, a take do
raportw bardziej szczegowych. Do raportw mona take doda skrypty napisane w
jzyku Visual Basic.
Parametryzacja raportw istnieje moliwo dodawania parametrw do raportw, eby
uszczegowi zapytanie lub przefiltrowa zbir danych. Parametry dynamiczne pobieraj
wartoci w czasie wykonywania na podstawie wyboru uytkownika.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 4/24
Moliwo prezentacji danych w wielu formatach format prezentacji moe by zmieniany
w trakcie ogldania raportu. Dostpne formaty: HTML, MHTML, PDF, XML, CSV, TIFF oraz
Excel.
Dodatkowe kontrolki funkcjonalno Reporting Services mona rozszerza za pomoc
dodatkowych kontrolek dostarczanych przez formy trzecie Dodatkowe kontrolki wymagaj
specjalnego rozszerzenia przetwarzajcego dane.
Nawigacja istnieje moliwo dodawania zakadek oraz map do wikszych raportw, by
uatwi poruszanie si po nich.
Agregacja danych dane mog by czone i streszczane za pomoc kontrolek i wyrae.
Dostpne operacje to m.in. suma, rednia, min, max i wiele innych.
Elementy graficzne do raportw mona dodawa rozmaite elementy graficzne.
Projektowanie raportw i modeli
Projektowanie raportw tworzenie raportw za pomoc rozbudowanej aplikacji
dostarczanej wraz z Business Intelligence Development Studio. Aplikacja ta niesamowicie
uatwia proces tworzenia raportw poprzez m.in. definiowanie rozkadu, publikowanie
raportu, generator zapyta oraz wiele innych, a wszystko to moe by wykonywane krok po
kroku.
Projektowanie modeli narzdzie to umoliwia definiowanie wzorcw/modeli do
automatycznego generowania raportw w trybie ad-hoc.
Generator raportw generator raportw umoliwia tworzenie raportw w trybie ad-hoc
opartych na wczeniej zdefiniowanych modelach.
Udostpnianie i administracja
Konfiguracja Raporting Services udostpnianie i utrzymywanie serwera raportujcego za
pomoc graficznego interfejsu uytkownika, uywanego midzy innymi do konfiguracji kont,
wirtualnych, folderw, kluczy szyfrowania.
Zarzdca raportw za pomoc zarzdcy raportw mona nadzorowa m.in. tworzenie
raportw, historie raportw oraz ustala limity na najrniejsze parametry, takie jak np. czas
przetwarzania.
Integracja Raporting Services z SQL Server Management Studio, SQL Server Configuration
Manager oraz narzdziami Surface Area Configuration.
Moliwo zarzdzania serwerem z poziomu linii komend.
Uytkownicy serwera przypisani s do rl z ktrych kada ma wyznaczone uprawnienia i
prawa dostpu. Poziom bezpieczestwa serwera wzrasta.
Dostp do raportw i ich dostarczanie:
Moliwo dostpu poprzez sie WWW za pomoc zwykej przegldarki internetowej.
Moliwo integracji Reporting Services z Microsoft SharePoint Portal.
Moliwo przechowywania raportw i zarzdzania nimi we wasnej przestrzeni pracy.
Reporting Services umoliwia ustawienie subskrypcji, za pomoc ktrej raport bdzie trafia
na adres e-mail jako zacznik lub link do strony. Format raportu moe by dowolnie
definiowany.
Programowanie i rozszerzalno:
Report Definition Language (RDL) RDL opisuje wszystkie moliwe elementy raportu za
pomoc jzyka XML. Zachowanie kadego raportu w czasie wykonywania jest zdefiniowane
w specjalnym pliku XML. RDL jest jzykiem rozszerzalnym, mona do niego dodawa wasne
definicje.
SOAP API moliwo dostpu do Reporting Services z poziomu napisanej przez siebie
aplikacji.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 5/24
Dostp URL kady element raportu moe mie wasny adres URL i by osigalny
bezporednio z sieci.
WMI Reporting Services zawiera wasnego dostawc WMI, za pomoc ktrego mona
zarzdza serwisem Report Server Windows.
Przypadki uycia Reporting Services
Raporty biznesowe wiele przedsibiorstw uywa oprogramowania raportujcego
dystrybuujc informacj do uytkownikw, ktrzy zajmuj si podejmowaniem decyzji (np.
wynajdywanie nowych moliwoci czy analiza zagroe). Reporting Services zawiera cae
spektrum gotowych do uycia narzdzi, za pomoc ktrych mona utworzy, udostpni, a
take zarzdza raportami w danej organizacji. Narzdzie administracyjne i autoryzacyjne
zawieraj: Report Designer, SQL Server Management Studio, Report Manager oraz Reporting
Services Configuration. Uytkownicy biznesowi mog uywa Report Manager, SharePoint, a
take zwykej przegldarki internetowej, eby oglda raporty na danie lub dokona
subskrypcji raportw tak, aby byy dostarczane wprost do skrzynki poczty elekronicznej.
Raporty ad-hoc uytkownicy, ktrzy pracuj z danymi biznesowymi czsto potrzebuj
moliwoci utworzenia lub zmiany raportu na szybko. Reporting Services ma wbudowany
generator raportw, specjalne narzdzie za pomoc ktrego mona wybra wzorzec i model
raportu, przecign pola danych i elementy graficzne na projekt raportu, utworzy
podstawowy raport i cao zapisa na serwerze. Raporty typu ad-hoc wymagaj specjalnych
predefiniowanych modeli, utworzonych w generatorze modeli, a nastpnie zapisanych na
serwerze do dalszego wykorzystania.
Wbudowane raporty istnieje moliwo wykorzystania Reporting Services, aby w napisanej
przez siebie aplikacji zapewni mechanizmy raportowania. Aby byo to moliwe, naley uy
generatora raportw do stworzenia raportu dla danych dostpnych publicznie lub z aplikacji,
a nastpnie za pomoc API zdefiniowa dostpno i zachowanie wszystkich elementw
raportu, ktry ma by zaczony do tworzonej aplikacji. Jako fragment aplikacji naley
umieci baz danych, na ktrej zbudowany zosta raport, oraz inne konieczne metadane. W
czasie wykonywania aplikacji jej kod wywouje Report Server Web Service, poprzez ktry
otrzymuje si dane dotyczce raportu. Jeli tworzona aplikacja nie wymaga penej
funkcjonalnoci, do przegldania raportu mona wykorzysta zwyka kontrolk RaportViewer
dostpn w Visual Studio 2005.
Integrowanie raportw poniewa raporty czsto prezentuj dane z wielu rde, bardzo
uyteczne jest integrowanie wielu rde danych na jednym raporcie. Dlatego zamiast
wykonywa nowy raport dla kadego rda danych czsto duo bardziej uyteczne jest
dodawanie danych do jednego raportu i wywietlanie ich za pomoc zestawu kontrolek i
elementw graficznych.
Raportowanie przez WWW dla pracownikw, ktrzy nie pracuj w centrali, ale np. w
biurach regionalnych, mona udostpnia raporty poprzez sie WWW, ale naley wtedy
zwrci szczegln uwag na bezpieczestwo.
Dostosowywanie rodowiska Reporting Services do wasnych wymaga narzdzie i
aplikacje domylnie dostarczane z Reporting Services s oparte na interfejsie
programistycznym i dostpne dla wszystkich uytkownikw. Oznacza to, e domylnie
dostarczone narzdzie mona zastpi dowolnymi innymi, dostpnymi lub napisanymi przez
samego siebie. Do tego wanie celu suy WMI Reporting Services.
Rozszerzanie dostpnej funkcjonalnoci Reporting Services zostao zaprojektowane tak, by
mona byo je dowolnie rozszerza. Istnieje moliwo tworzenia wasnych rozszerze dla
wsparcia dodatkowych typw rde danych, dostarczanie raportw, a take ich
bezpieczestwa. Zoono procesu tworzenia dodatkowych rozszerze zaley gwnie od
stopnia skomplikowania danego rozszerzenia, a take jego funkcjonalnoci. Wicej na ten
temat mona dowiedzie si sigajc do dokumentacji RDL.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 6/24
Przykadowe rozwizanie
W pierwszej kolejnoci naley stworzy nowy raport odpowiedniego typu. Najwygodniej posuy
si nowym narzdziem serwera 2008 o nazwie Business Intelligence Development Studio.
Wybieramy projekt o typie Report Server zgodnie z rysunkiem 2.

Rys. 2 Tworzenie nowego projektu raportu
Kolejnym krokiem jest okrelenie rda danych dla naszego raportu. Moemy skorzysta z
dowolnych rde dostpnych w naszym systemie bazodanowym. W typowej sytuacji rdem
bdzie baza danych umieszczona na firmowym serwerze SQL. Tutaj take doprecyzowujemy zakres
danych poprzez podanie odpowiedniego zapytania SQL typu SELECT.


Rys. 3 Wskazanie serwera SQL jako rda danych
Po utworzeniu poczenia z baz danych moemy przystpi do modelowania wizualnego wygldu
raportu. Jak pokazano na rysunku 4 metod przecignij i upu przesuwamy interesujce nas pola
do gwnego okna programu.

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 7/24



Rys. 4 Modelowanie raportu
Oczywicie najwaniejsze s pola reprezentujce poszczeglne kolumny danych z bazy. Stanowi
one trzon raportu, ich wybr musi by przemylany.

Rys. 5 Ustalanie nazw i zawartoci kolumn raportu
W kadej chwili moemy podeje jak w danym momecie bdzie wyglda nasz raport od strony
odbiorcy. Jest to przydatne szczeglnie wwczaj, gdy testujemy rne pomysy na prezentacj
strony graficznej raportu. Rysunek 6 ilustruje podgld prostego raportu we wczesnej fazie
konstrukcji.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 8/24

Rys. 6 Podgld gotowego raportu
Podczas projektowania raportu dodajemy i modyfikujemy kolumny i wiersze z danymi. Rozbudowa
raportu w Business Intelligence Studio jest bardzo intuicyjna i szybka. Na tym etapie projektowanie
mona porwna do konstrukcji arkusza danych w arkuszu kalkulacyjnym.

Rys. 7 Dodawanie kolumn do raportu
Kade z dodanych pl reprezentuje grup danych z bazy. Grup t mona dowolnie zmienia
poddawa przeksztaceniom zagldajc do waciwoci danego pola. Rysunek 8 ilustruje
waciwoci pola Nazwisko, ktre odwouje si do odpowiedniego atrybutu wskazanej tabeli w
bazie danych PraceDyplomowe.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 9/24

Rys. 8 Ustalanie zawartoci nowych kolumn
Waciwoci danego pola nie tylko wskazuj skojarzone rdo danych ale take pozwalaj na
rozbudowan manipulacj tymi danymi. Konwersja, wyliczanie, zmiana wygldu czy formatu
wywietlania danych dokonywana jest poprzez wpisanie (lub wybranie z menu kontekstowego)
odpowiedniego wyraenia w polu Expression. Przykadowo zastosowanie agregacji uredniajcej
dane z powizanej bazy ilustruje rysunek 9.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 10/24

Rys. 9 Dodanie funkcji agregujcej do nowego pola raportu
Zmiana formatu wywietlania daty take nie jest spraw skomplikowan. Odpowiednie wyraenie
mona zbudowa poprzez kilka klikni myszk.


Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
Rys.
Po ustaleniu wszystkich pl i ich waciwoci nadeszla pora do publik
odbiorcw. Publikacja przebiega w dwch etapach: generowanie finalnej wersji raportu oraz
przesanie go na wskazany serwer WWW. Serwer stron WWW musi by wczeniej przygotowany (a
z pewnoci musimy posiada na nim odpowiednie u
Adres URL serwera naley poda w
Wygodniej i zapobiegliwej jest jednak
raportujcego uywajc Reporting S
Jak pokazano na rysunku 1
WWW.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 11/24
Rys. 10 Ustalanie formatu wywietlania daty w polu raportu
Po ustaleniu wszystkich pl i ich waciwoci nadeszla pora do publikacji raportu dla waciwych
odbiorcw. Publikacja przebiega w dwch etapach: generowanie finalnej wersji raportu oraz
przesanie go na wskazany serwer WWW. Serwer stron WWW musi by wczeniej przygotowany (a
z pewnoci musimy posiada na nim odpowiednie uprawnienia do zamieszczania kodu HTML).
Adres URL serwera naley poda w polu TargetServerURL w narzdziu Business Intelligence Studio.
Wygodniej i zapobiegliwej jest jednak dokona tego wraz z konfiguracj caego serwera
Reporting Services Configuration Manager z grupy SQL Server 2008.
Jak pokazano na rysunku 11 Gotowy raport moemy obeje w dowolnej przegldarce stron
Modu 12
Instalacja i konfiguracja MS SQL Server 2008


acji raportu dla waciwych
odbiorcw. Publikacja przebiega w dwch etapach: generowanie finalnej wersji raportu oraz
przesanie go na wskazany serwer WWW. Serwer stron WWW musi by wczeniej przygotowany (a
prawnienia do zamieszczania kodu HTML).
Business Intelligence Studio.
dokona tego wraz z konfiguracj caego serwera
z grupy SQL Server 2008.
Gotowy raport moemy obeje w dowolnej przegldarce stron
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 12/24


Rys. 11 Podgld strony WWW z raportem

Porady praktyczne
W niektrych systemach usuga raportowania nie jest standardowo zainstalowana z MS SQL
Server. Dodaj t usug osobno lub popro administratora systemu o doinstalowanie.
Przed przystpieniem do pracy z serwerem raportujcym upewnij si, e usuga Reporting
Services jest wczona w systemie. Unikniesz dziki temu dugiego szukania przyczyn
odmowy generowania raportu.
Dla czsto generowanych typw raportw stwrz swoj baz szablonw raportw.
Znajdowa si w niej bd raporty obejmujce swoim zakresem najczstsze zapytania do
bazy. Zawsze bd pod rk, a ich modyfikacja jest bardzo atwa.
Jeeli nie potrafisz szybko stworzy zapytania SQL, posu si graficznym narzdziem do
konstrukcji zapyta. Aby go uy, jako poczenie z serwerem SQL wybierz ODBC.
Upewnij si, e posiadasz dostp do konta uprawnionego do publikacji raportw na serwerze
WWW. Bez tych praw bdziesz mg tylko podejrze raporty w narzdziu Bussines
Intelligence Development Studio.
Zadbaj o dostpno odpowiednio przygotowanego serwera WWW. Serwer taki powinien
by dostpny z punktu widzenia narzdzia raportujcego oraz widoczny dla Twoich
odbiorcw raportw.
Uwagi dla studenta
Jeste przygotowany do realizacji laboratorium jeli:
rozumiesz, co oznacza budowa raportu typu ad-hoc
rozumiesz zasad dziaania generowania raportu na serwerze WWW
umiesz zdefiniowa rol jzyka RDL
umiesz poda przykad serwisw, z ktrymi Reporting Server dobrze si integruje.
Pamitaj o zapoznaniu si z uwagami i poradami zawartymi w tym module. Upewnij si, e
rozumiesz omawiane w nich zagadnienia. Jeli masz trudnoci ze zrozumieniem tematu zawartego
w uwagach, przeczytaj ponownie informacje z tego rozdziau i zajrzyj do notatek z wykadw.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 13/24
Dodatkowe rda informacji
1. Stacia Misner, Hitachi Consulting, Microsoft SQL Server 2005 Reporting Services krok po kroku,
Microsoft Press, 2006
2. William R. Stanek, Vademecum Administratora Microsoft SQL Server 2005, Microsoft Press,
2006
3. Sikha Saha Bagui, Richard Walsh Earp, Business SQL dla SQL Server 2005. Wprowadzenie,
OReilly, 2007
4. http://www.wss.pl

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 14/24
Laboratorium podstawowe
Problem 1 (czas realizacji 45 min)
Administrator systemu bazodanowego nada ci odpowiednie prawa do testowego serwera
bazodanowego o nazwie Evaluation. Wskaza te baz danych PraceDyplomowe jako rdo
danych, ktre zazwyczaj wykorzystuje do eksperymentw. Postanowie uy Reporting Services do
wydobycia i prezentacji danych z bazy PraceDyplomowe.
Zadanie Tok postpowania
1. Nawizywanie
poczenia z SQL
Server 2008
Zaloguj si do maszyny wirtualnej BD jako uytkownik Administrator z
hasem P@ssw0rd.
Kliknij Start. Z grupy programw Microsoft SQL Server 2008 uruchom
SQL Server Management Studio.
W oknie logowania kliknij Connect.
2. Tworzenie
nowego raportu
Kliknij Start. Z grupy programw Microsoft SQL Server 2008 uruchom
SQL Server Business Intelligence Development Studio.
Z menu wybierz File -> New -> Project.
W oknie New Project wybierz Report Server Project.
Wprowad w polu Name nazw projektu BD2008.
Kliknij przycisk OK.
W oknie Solution Explorer kliknij prawym klawiszem myszy na Reports -
> Add -> New item.
W oknie Add new item wybierz Report, a nastpnie wprowad nazw
raportu: RS_Raport1.rdl.
kliknij Add.
Nastpnie naley utworzy poczenie z baz. W oknie Report Data
wybierz z menu New -> Dataset.
W oknie Dataset Properties w polu Name wpisz PraceDyplomowe,

Rys. 12 Tworzenie nowego zbioru danych dla raportu
kliknij przycisk New.
W oknie Data Source Properties w polu Name wpisz PraceDyplomowe.
wybierz Type -> Microsoft SQL Server.
kliknij przycisk Edit.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 15/24

Rys. 13 Wskaznie serwera SQL jako rda danych
W oknie Connection Properties/Server Name wybierz nazw serwera,
na ktrym zainstalowana jest baza danych (EVALUATION).
W polu Select or enter database name wybierz baz PraceDyplomowe.

Rys. 14 Wskazanie bazy danych jako rda danych
Zatwierd klikajc przycisk OK, a nastpnie raz jeszcze OK.
W oknie Dataset Properties w polu Query wprowad zapytanie SQL do
bazy danych:
SELECT Osoba.Imie, PracaDyplomowa.Temat, Osoba.Nazwisko,
PracaDyplomowa.Data, PracaDyplomowa.Ocena
FROM Osoba
INNER JOIN PracaDyplomowa ON Osoba.ID_Osoby =
PracaDyplomowa.ID_Promotor
Kliknij przycisk OK.
3. Projektowanie
raportu
Kliknij pole Toolbox.
Za pomoc kursora przecignij obiekt Table na rodek ekranu.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 16/24

Rys. 15 Modelowanie raportu
Kliknij zakadk Report Data.
Z okna Report Data przecignij pole Data do pierwszej kolumny
stworzonej tabeli.
Przecignij pole Temat do rodkowej kolumny.
Przecignij pole Ocena do trzeciej kolumny.

Rys. 16 Ustalanie nazw i zawartoci kolumn raportu
Aby zobaczy wygenerowany raport, wybierz zakadk Preview.
4. Grupowanie
danych
Aby doda grup do raportu w tabeli, kliknij prawym klawiszem myszy
na szar obwdk tabelki na wysokoci drugiego wiersza.
Z menu wybierz DetailsGroup Group -> Properties.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 17/24
Rys. 17 Tworzenie grup danych
W oknie Tablix Group Properties w polu Name wpisz Tabela1_grupa1.
nastpnie kliknij przycisk Add.
w polu Group On wybierz opcj [Nazwisko].
nastpnie kliknij przycisk Add.
w polu And On wybierz opcj [Imie].

Rys. 18 Wybr danych w obrbie grupy
W zakadce Sorting kliknij przycisk Add.
nastpnie w polu Sort By wybierz opcj [LastName], Order A to Z.
Kliknij przycisk Add i w polu Then By wybierz opcj [FirstName], Order
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 18/24
A to Z.
Zatwierdzi klikniciem przycisku OK.

Rys. 19 Wybr danych w obrbie grupy
W tym celu naley kliknij prawym przyciskiem myszy na szar ramk nad
kolumn OrderDate.
z menu wybierz Insert Column -> Left.

Rys. 20 Dodawanie kolumn do raportu
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 19/24
W pierwszym wierszu nowej kolumny wpisz nazw kolumny
Dyplomant.
W drugim wierszu nowej kolumny kliknij prawym przyciskiem myszy i z
menu wybierz Expression.

Rys. 21 Ustalanie zawartoci nowych kolumn
Zatwierd klikniciem przycisku OK.
Kliknij przycisk Preview.
Kolejnym krokiem bdzie pogrupowanie wynikw wg nazwiska, a
nastpnie daty obrony.
Kliknij prawym przyciskiem myszy na szar ramk wok tabelki na
wysokoci drugiego wiersza.
Z menu wybierz Tabla1_groupa1 Group -> Properties.
Nastpnie kliknij w oknie Tablix Group Properties przycisk Add
w nowym polu Add On wybierz warto Order Date.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 20/24

Rys. 22 Pogrupowanie danych w nowej kolumnie
5. Dodanie
funkcji
agregujcych
Kliknij prawym klawiszem myszy na szar obwdk tabeli na wysokoci
drugiego wiersza.
Z menu wybierz Insert Row -> Outside Group Below.

Rys. 23 Dodanie nowego wiersza
W ostatniej kolumnie w ostatnim wierszu kliknij prawym klawiszem
myszy i wybierz Expressions.
W oknie Expression w kolumnie Category wybierz zakadk Common
Functions -> Aggregate
nastpnie w polu Item wybierz Avg.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
6. Formatowanie
wywietlanych
danych
kliknij prawym klawiszem myszy na komrk zawierajc formu daty
z menu wybierz
W oknie
w polu
7. Publikowanie
gotowego raportu
W oknie Solution Explorer kliknij prawym klawiszem myszy na
BD2008
W oknie
jest wybrana opcja
wybierz przycisk
w polu
zamknij okno klikajc przycisk
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 21/24
kliknij prawym klawiszem myszy na komrk zawierajc formu daty
z menu wybierz Textbox Properties.
W oknie Text Box Properties kliknij Number -> Date
w polu Type wybierz dowolny format.
Rys. 24 Ustalanie formatu wywietlania daty w polu raportu
Analogicznie mona przeprowadzi formatowanie pola, na ktrym
wywietlana jest ilo pienidzy (Number -> Currency
pl.
W oknie Solution Explorer kliknij prawym klawiszem myszy na
BD2008 -> Properties.
W oknie BD2008 Property Pages upewnij si, czy w polu
jest wybrana opcja Active Release.
wybierz przycisk Configuration Manager.
w polu Active Solution Configuration wybierz Release
zamknij okno klikajc przycisk Close.
Modu 12
Instalacja i konfiguracja MS SQL Server 2008
kliknij prawym klawiszem myszy na komrk zawierajc formu daty
> Date.

Ustalanie formatu wywietlania daty w polu raportu
Analogicznie mona przeprowadzi formatowanie pola, na ktrym
> Currency), a take innych
W oknie Solution Explorer kliknij prawym klawiszem myszy na
czy w polu Configuration
Release.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
W polu
Zatwierd klikajc przycisk
Kliknij
Jeli to konieczne
umieszczania raportw na serwerze
Jeli wszystkie czynnoci zostay wykonane poprawnie
zostanie wywietlona strona zawierajca raport.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Instalacja i konfiguracja MS SQL Server 2008
Strona 22/24
Rys. 25 Generowanie raportu
W polu TargetServerURL podaj adres URL serwera raportujcego
adres URL serwera mona znale otwierajc Reporting Services
Configuration Manager w zakadce Web Service URL
Zatwierd klikajc przycisk OK.
Kliknij Menu -> Debug -> Start without debugging
Jeli to konieczne, podaj haso i login osoby upowanionej do
umieszczania raportw na serwerze.
Rys. 26 Generowanie raportu
Jeli wszystkie czynnoci zostay wykonane poprawnie
zostanie wywietlona strona zawierajca raport.
Modu 12
Instalacja i konfiguracja MS SQL Server 2008

serwera raportujcego.
adres URL serwera mona znale otwierajc Reporting Services
Configuration Manager w zakadce Web Service URL.
without debugging
podaj haso i login osoby upowanionej do

Jeli wszystkie czynnoci zostay wykonane poprawnie, automatycznie

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 23/24

Rys. 27 Podgld strony serwera WWW z raportami
Kliknij na odnonik do raportu. Raport bdzie wygenerowany i
wywietlony w oknie przegldarki.


Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 12
ITA-101 Bazy Danych Instalacja i konfiguracja MS SQL Server 2008
Strona 24/24
Laboratorium rozszerzone
Zadanie 1 (czas realizacji 90 min)
Pierwsze testy nowego narzdzia raportujcego wypady pomylnie. Dyrektor Dziau Marketingu
firmy National Insurance poleci przygotowa kilka raportw o stanie sprzeday kluczowych
produktw. Uzyskae dostp do bazy AdventureWorks, w ktrej przechowywane s informacje
m.in. na temat pracownikw, sprzeday, produktw i kluczowych transakcji. Twoim zadaniem jest
przygotowanie zwizych i efektownych raportw zawierajcych dane z ostatniego miesica (lub
kwartau) o:
Sprzedanych produktach
Sprzedawcach
Zawartych transakcjach
Wielkoci sprzeday
Miejscach najwikszej sprzeday
Producentach najpopularniejszych produktw
Raporty naley opublikowa w firmowej sieci intranet na wskazanym (domylnym) serwerze
WWW. Do utworzenia i publikacji raportu naley uy narzdzia Reporting Services.


ITA-101 Bazy Danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
Modu 13
Wersja 1.0
Budowa interfejsu
Spis treci
Budowa interfejsu ................................................................................................................................ 1
Informacje o module ............................................................................................................................ 2
Przygotowanie teoretyczne ................................................................................................................. 3
Przykadowy problem .................................................................................................................. 3
Podstawy teoretyczne.................................................................................................................. 3
Przykadowe rozwizanie ............................................................................................................. 5
Porady praktyczne ....................................................................................................................... 8
Uwagi dla studenta ...................................................................................................................... 9
Dodatkowe rda informacji....................................................................................................... 9
Laboratorium podstawowe ................................................................................................................ 11
Problem 1 (czas realizacji 45 minut) .......................................................................................... 11
Laboratorium rozszerzone ................................................................................................................. 16
Zadanie 1 (czas realizacji 90 min) ............................................................................................... 16

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 13
ITA-101 Bazy Danych Budowa interfejsu
Strona 2/16
Informacje o module
Opis moduu
W module tym zobaczysz, jak napisa aplikacj, ktra bdzie wycigaa
informacje z bazy danych prac dyplomowych. Dowiesz si, jak za pomoc
Visual Studio utworzy baz danych, poczy si z ni i wprowadzi do niej
dane. Nastpnie zobaczysz, jak stworzy aplikacj Windows, ktra bdzie
korzystaa z tych danych.
Cel moduu
Celem moduu jest zapoznanie czytelnika z podstawami programowania w
Visual Studio 2008 w takim stopniu, eby potrafi samodzielnie stworzy
aplikacj dostpow do danych zgromadzonych w bazie danych.
Uzyskane kompetencje
Po zrealizowaniu moduu bdziesz:
potrafi samodzielnie stworzy prost aplikacj dostpu do danych
potrafi stworzy baz danych za pomoc Microsoft Visual Studio
2008
potrafi nawiza poczenie z baz danych Microsoft SQL Server
2008
umia porusza si po Microsoft Visual Studio 2008
wiedzia co to jest ADO.NET
Wymagania wstpne
Przed przystpieniem do pracy z tym moduem powiniene:
potrafi zaprojektowa baz danych
potrafi zaimplementowa baz danych wraz z jej obiektami
potrafi tworzy proste procedury skadowane i wyzwalacze
potrafi definiowa uytkownikw i nadawa im uprawnienia
Mapa zalenoci moduu
Zgodnie z map zalenoci przedstawion na rys. 1, przed przystpieniem
do realizacji tego moduu naley zapozna si z materiaem zawartym
w moduach 1, 3, 9, 10 i 11.
Modu 13
Dodatek
Modu 1
Modu 2
Modu 3
Modu 4
Modu 5
Modu 6
Modu 7
Modu 8
Modu 9
Modu 10
Modu 11
Modu 12

Rys. 1 Mapa zalenoci moduu
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 13
ITA-101 Bazy Danych Budowa interfejsu
Strona 3/16
Przygotowanie teoretyczne
Przykadowy problem
Ostatnim etapem wytwarzania bazy danych wraz z dostpem do niej z poziomu aplikacji jest
konstrukcja interfejsu uytkownika. Istnieje wiele metod i narzdzi do tworzenia graficznego
interfejsu uytkownika. Poczwszy od rozwiza prostszych, a co za tym idzie przewanie nie
wykorzystujcych dobrodziejstw, jakie daje nam baza danych postawiona na SQL Server 2008, do
rozwiza profesjonalnych, wykorzystujcych moliwoci serwera bazodanowego.
Jeeli baza danych zostaa profesjonalnie zaprojektowana, zaimplementowana i oprogramowana,
to wykorzystujc na przykad Microsoft Visual Studio 2008 jestemy w stanie w atwy sposb
stworzy aplikacj dostpow o wysokim poziomie bezpieczestwa wykorzystujc wszystkie
zaawansowane mechanizmy zabezpiecze dostpne w SQL Server 2008. Aplikacja taka bdzie
odporna na typowe zagroenia typu SQL Injection, gdy zapytania zostan ukryte w procedurach
skadowanych, a zatem haker bdzie widzia jedynie, e po sieci przesyane s pewne funkcje wraz z
parametrami. Naley podkreli fakt, i w celu stworzenia bezpiecznej bazy danych i aplikacji
dostpowej wymagana jest ciga wsppraca rnych czonkw zespou projektowego, poczwszy
od projektanta, administratora i programisty bazy danych, poprzez projektanta interfejsu
uytkownika, a skoczywszy na projektancie i programicie aplikacji dostpowej.
Podstawy teoretyczne
Rzadko wprowadza si dane do bazy za pomoc SQL Server 2008 za pomoc SQL Server
Management Studio. Zwykle daje si moliwo wprowadzania danych uytkownikom za pomoc
aplikacji dostpowej do bazy danych. Dane mona rwnie importowa z rnych rde
zewntrznych lub tworzy je za pomoc skryptw SQL, co zostao przedstawione we wczeniejszych
moduach.
W dalszej czci skoncentrujmy si na tworzeniu aplikacji Windows, ktra komunikuje si z SQL
Server 2008 korzystajc z ADO.NET.
Co to jest ADO.NET
ADO.NET zapewnia jednolity dostp zarwno do rde danych, takich jak na przykad SQL Server
2008, jak rwnie rde danych publikowanych za pomoc OLE DB lub XML. Naley zauway, i
aplikacje, ktre wspdziel dostp do danych, mog korzysta wanie z ADO.NET w celu czenia
si ze rdami, pobierania danych oraz manipulowania nimi.
Si ADO.NET jest wyrane rozdzielenie dostpu do danych od manipulowania danymi na
niezalenie odseparowane skadniki. Skadniki te mog by wykorzystywane razem lub osobno.
ADO.NET wykorzystuje tzw. dostawcw danych, za pomoc ktrych mona tworzy poczenia z
bazami danych, wykonywa polecenia i odbiera wyniki. Wyniki te mog po pierwsze by
przetwarzane bezporednio, a po drugie mog trafia do zbioru danych, tzw. obiektw DataSet.
W takiej sytuacji dane s udostpniane uytkownikom w dowolny sposb. Warto wspomnie, e
obiekty DataSet mona wykorzystywa niezalenie od dostawcw ADO.NET do lokalnego
zarzdzania danymi oraz w aplikacjach wczytujcych dane w formacie XML.
Klasa ADO.NET znajduje si w podzespole System.Data.dll i jest zintegrowana z klasami XML
znajdujcymi si w podzespole System.Xml.dll. W momencie kompilacji kodu odwoujcego si do
przestrzeni nazw System.Data naley wskaza zarwno System.Data.dll, jak rwnie
System.Xml.dll.
ADO.NET zapewnia programistom tworzcym aplikacje w rodowisku .NET Framework sposb
dostpu do danych oraz co bardzo wanego moliwo programowego manipulowania nimi.
Manipulacja oczywicie moe odbywa si rwnie na innych rdach danych, na przykad na
rdle XML.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 13
ITA-101 Bazy Danych Budowa interfejsu
Strona 4/16
Dostp do danych z uyciem ADO.NET
Tworzc aplikacje korzystajce z ADO.NET mona spotka si z rnymi wymaganiami dotyczcymi
pracy z danymi. W pewnych sytuacjach wystarczy wywietlenie danych w formularzu, innych razem
trzeba opracowa na przykad sposb wymiany informacji z inn firm.
Niezalenie od tego, co zamierzamy robi z danymi, warto pozna kilka podstawowych zasad
dotyczcych obsugi danych w ADO.NET. By moe nigdy nie bdziemy musieli zna szczegw
obsugi danych, natomiast kluczow spraw jest zrozumienie architektury danych w ADO.NET,
poznanie podstawowych komponentw oraz sposobu ich wsppracy.
ADO.NET a uwierzytelnianie otwartego poczenia z baz danych
W tradycyjnych aplikacjach typu klient/serwer komponenty ustanawiay poczenie z baz danych i
utrzymyway to poczenie przez cay czas dziaania aplikacji. Z kilku wzgldw metoda ta nie jest
zbyt praktyczna:
Otwarte poczenie z baz danych zajmuje wiele zasobw systemowych, ktre mogyby
zosta wykorzystane do innych celw. W wyniku utrzymywania staego poczenia z baz
danych zmniejsza si liczba rwnoczenie utrzymywanych pocze. Obcienie
spowodowane utrzymywaniem otwartych pocze zmniejsza ogln wydajno aplikacji.
Bardzo trudne jest skalowanie aplikacji, ktra wymaga otwartego poczenia z baz danych.
Naley pamita o tym, e aplikacja, ktra nie jest w peni skalowalna, moe na przykad
dobrze dziaa z czterema uytkownikami, ale w aden sposb nie poradzi sobie z setk
rwnoczesnych uytkownikw. Wymg atwej skalowalnoci dotyczy szczeglnie aplikacji
internetowych, gdy obcienie witryny internetowej moe w bardzo niewielkim czasie
zwikszy si nawet o kilka rzdw wielkoci.
W aplikacjach internetowych komponenty nie s ze sob poczone. W momencie kiedy
serwer zakoczy przetwarzanie i transmisj dokumentu w odpowiedzi na danie
przegldarki, pomidzy serwerem a przegldark nie jest utrzymywane adne poczenie.
Poczenie jest wznawiane w chwili kolejnego dania, a zatem utrzymywanie otwartego
poczenia z baz w aden sposb si nie opaca, poniewa nie jestemy w stanie
przewidzie, czy klient bdzie jeszcze potrzebowa dostpu do danych.
Model, ktrego dziaanie oparte jest na utrzymywaniu otwartych pocze ze rdami
danych moe przyczyni si do tego, e wymiana danych bdzie skomplikowana i
niepraktyczna. Jeli dwa komponenty musz mie dostp do tych samych danych, obydwa
musz utrzymywa poczenie ze rdem danych lub musi by dostpny jaki inny sposb
przekazywania danych.
Midzy innymi z wyej wymienionych powodw dostp do danych w ADO.NET zosta
zaprojektowany w taki sposb, aby przede wszystkim oszczdnie korzysta z pocze. A zatem
aplikacje utrzymuj poczenie z baz danych tylko na czas odczytywania lub zapisywania danych.
Poniewa bazy danych nie musz utrzymywa nieaktywnych pocze, mog obsuy znacznie
wicej uytkownikw.
Wsppraca z bazami danych za pomoc obiektw Command
Jednym z najpowszechniejszych zada dostpu do danych jest odczytanie danych z bazy, a
nastpnie wykonanie na nich jakich operacji. W czasach wielkiej liczby informacji bardzo czsto
dochodzi do sytuacji, e aplikacja musi przetworzy nie jeden rekord, lecz ich cay zbir. W wielu
przypadkach przetwarzane dane pochodz nie z jednej, lecz z wielu tabel.
Rekordy, ktre czytane s przez aplikacj, traktowane s jako grupa. Na przykad aplikacja moe
zezwoli uytkownikowi na przejrzenie listy wszystkich autorw o nazwisku Kowalski, a nastpnie
sprawdzi wszystkie ksiki napisane przez jednego Kowalskiego, potem przez kolejnego
Kowalskiego i tak dalej.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 13
ITA-101 Bazy Danych Budowa interfejsu
Strona 5/16
Takie kadorazowe odwoywanie si do bazy danych, gdy aplikacja potrzebuje kolejnego rekordu
do przetworzania jest niepraktyczne. W myl tego, co zostao powiedziane wczeniej, takie
podejcie moe zniwelowa zalety pynce z utrzymywania maej liczby jednoczenie otwartych
pocze. Pewnym rozwizaniem jest tymczasowe przechowywanie odczytanych z bazy rekordw i
praca na takim tymczasowym zbiorze.
Na tym wanie polega idea obiektu DataSet. DataSet jest swego rodzaju buforem, w ktrym
znajduj si przechowywane rekordy pobrane z bazy danych. Obiekt ten dziaa podobnie do
wirtualnej skadnicy danych, a zatem zawiera jedn lub wicej tabel. Tabele te s fragmentami
tabel rzeczywistej bazy danych. Ponadto obiekt DataSet posiada informacje o relacjach pomidzy
tymi tabelami oraz o ograniczeniach wartoci danych, jakie mog si znale w tych tabelach.
Naley pamita, e dane przechowywane w DataSet nie s penym odzwierciedleniem fizycznej
tabeli. S one niewielkim podzbiorem danych przechowywanych w bazie. Zalet jednak jest to, e
mona z nimi pracowa w sposb podobny do pracy z danymi z rzeczywistej bazy danych.
Czasem zdarza si e aplikacja musi zapisa dane do bazy. Dane te mona przetwarza wewntrz
obiektu DataSet, a nastpnie przesa je do podstawowej bazy danych.
Dane przechowywane w formacie XML
Wszystkie dane s przesyane ze skadnicy danych do DataSet, a nastpnie z DataSet do innych
komponentw. ADO.NET do przesyania danych wykorzystuje format XML. Pliki XML mog by
uywane jak kade inne rdo danych. Ich zawarto mona atwo wczyta do obiektu DataSet.
XML jest podstawowym formatem danych w ADO.NET. API w ADO.NET automatycznie tworz pliki
lub strumienie XML (na podstawie DataSet) i wysyaj je do innego komponentu. Nastpnie
komponent taki moe wywoa inne API, by ponownie wczyta XML do obiektu DataSet.
Oparcie protokow wymiany danych na XML przynosi wiele korzyci:
XML jest standardem przemysowym, a zatem komponenty obsugi danych w jednej aplikacji
mog wymienia dane z komponentami w innej aplikacji. Warunkiem jest obsuga przez
aplikacj formatu XML.
XML jest formatem tekstowym. Danych w postaci XML nie zawiera informacji binarnych, a
zatem mona je przesya za pomoc dowolnego protokou na przykad HTTP.
Przykadowe rozwizanie
Tworzenie bazy danych z poziomu Microsoft Visual Studio 2008
Baz danych, do ktrej bdziemy tworzyli aplikacje dostpow, mona stworzy na dwa sposoby.
Sposb pierwszy polega na definiowaniu bazy danych wraz z jej obiektami z poziomu SQL Server
2008. Sposb ten poznae w poprzednich moduach. Sposb drugi polega na stworzeniu bazy
danych z poziomu Microsoft Visual Studio 2008.
Definicja bazy danych Dziekanat
Aby stworzy baz danych w Visual Studio 2008, w pierwszym kroku uruchamiamy rodowisko.
Nastpnie w oknie Database Explorer klikamy prawym przyciskiem myszy Data Connections i
wybieramy Add Connection, co pokazano na rys. 2.
W obrbie okna definicji poczenia z baz danych moemy ustawi rdo danych oraz wskaza
istniejcy lub stworzy nowy plik bazy danych. W kolejnym etapie okrelamy sposb autoryzacji.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 13
ITA-101 Bazy Danych Budowa interfejsu
Strona 6/16

Rys. 2 Okno definicji poczenia z baz danych
Stwrzmy testow baz danych Dziekanat. Wynik pokazano na rys. 3.

Rys. 3 Testowa baza danych dziekanat
Definicja tabeli, diagramu, widoku
W kolejnym kroku naley zdefiniowa podstawowe obiekty bazy danych tabele i widoki. W tym
celu klikamy prawym przyciskiem myszy katalog Tables i wybieramy Add New Table. Tworzenie
przykadowej tabeli Student pokazano na rys. 4.

Rys. 4 Przykadowa tabela Student
W analogiczny sposb definiujemy pozostae tabele w bazie danych. Nastpnie wypeniamy j
przykadowymi danymi. Ostatnim krokiem jest stworzenie przykadowego widoku. W tym celu
klikamy prawym przyciskiem myszy zakadk Views i wybieramy Add New View. Nastpnie w oknie
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 13
ITA-101 Bazy Danych Budowa interfejsu
Strona 7/16
Add Table wybieramy tabele, ktrych bdziemy uywali w definiowanym widoku. Kolejny krok to
wybr kolumn, ktre maj zosta uyte w definicji widoku. Na rys. 5 pokazano przykadowy widok
na przedmioty, na ktre zapisani s studenci.

Rys. 5 Definicja widoku na przedmioty, na ktre zapisani s studenci
Tworzenie zestawu danych w Microsoft Visual Studio 2008
Stwrzmy aplikacj dostpow do zarzdzania baz danych przygotowan w poprzednich krokach.
Aby utworzy obiekt DataSet, w pasku Data Sources klikamy odsyacz Add New Data Sources.
Pierwszy ekran konfiguracji rda danych umoliwia wybr typu rda danych, ktre chcemy
poczy. Wybieramy Dziekanat.mdf, co pokazano na rys. 6.

Rys. 6 Wybr rda danych
Nastpnie wybieramy wszystkie obiekty z bazy danych, ktre maj zosta uwzgldnione w obiekcie
DataSet zatem wybieramy wszystkie tabele i widok. W wyniku powyszych operacji projekt
powinien wyglda mniej wicej tak, jak na rys. 7.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 13
ITA-101 Bazy Danych Budowa interfejsu
Strona 8/16

Rys. 7 Projekt aplikacji Dziekanat
Nastpnie w panelu Data Sources wybieramy wze Przedmiot i klikamy wskazujc w d strzak,
rozwijajc list. Wybieramy prezentacj danych jako widok siatki danych. Spowoduje to pobranie
do formularza wszystkich pl z obiektu DataSet w wielu wierszach w postaci siatki komrek, co
pokazano na rys. 8.

Rys. 8 Stworzony formularz
W celu uruchomienia aplikacji naley wybra przycisk F5. Wynik skompilowanej aplikacji
przedstawia rys. 9.

Rys. 9 Wynik dziaania aplikacji
Porady praktyczne
Jeli korzystamy z obiektw SqlCommand z waciwoci CommandType ustawion na Text i
przy ich pomocy przekazujemy do bazy danych informacje otrzymane od klienta, informacje
te naley zawsze podda procesowi walidacji. Niektrzy uytkownicy mog prbowa wysa
zmodyfikowane lub dodatkowe polecenia SQL w celu zdobycia dostpu do danych lub
uszkodzenia bazy danych. Z tego wzgldu bardzo wane jest, eby zawsze przed
przekazaniem do bazy wprowadzonych przez uytkownika danych przeprowadzi proces
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 13
ITA-101 Bazy Danych Budowa interfejsu
Strona 9/16
walidacji, czy dane te s poprawne. Najlepsz praktyk jest stosowanie procedur
skadowanych.
Naley pamita, e DataSet jest tylko kontenerem przechowujcym dane. Aby odczyta i
zapisa dane z bazy naley uy obiektu DataAdapter. DataAdapter zawiera jeden lub
wicej obiektw SqlCommand uywanych do wypenienia pojedynczej tabeli obiektu
DataSet. Obiekt ten zawiera cztery obiekty SqlCommand (do pobierania, dopisywania,
uaktualniania i usuwania rekordw).
Konfiguracja aplikacji jest przechowywana w pliku XML o takiej samej nazwie jak plik
wykonywalny .exe.
W wyniku skonfigurowania obiektu DataSet zosta utworzony plik .xsd, czyli dokument
schematu XML definiujcy wewntrzna struktur zestawu danych. Pamitaj, e zestaw
danych jest przechowywany w pamici reprezentujcej jedn lub wiele tabel z bazy danych.
ADO.NET bdzie korzysta z pliku schematu przy wsppracy z aplikacj.
Przewanie w projektach mamy jedna baz danych, ale nie jest niczym niezwykym potrzeba
komunikowania si z dwiema lub wicej bazami danych. Z tego powodu poczenia z bazami
danych uoone s w drzewiastej strukturze, w ktrej kada baza danych jest
reprezentowana przez osobny wze.
Dopki nie zapiszemy projektu, znajduje si on w tymczasowym folderze. Po zapisaniu
wszystkich plikw projektu baza danych zostanie zapisana razem z innymi plikami projektu.
Nie wszystkie kontrolki Windows mona podczy do rde danych. Te, ktre mona,
posiadaj waciwoci DataBindings.
Po przecigniciu zestawu danych ponad obszar projektowania, do znajdujcego si niej
szarego panelu s dodawane nowe pozycje. Dolna cz obszaru projektowania nazywamy
panelem komponentw. Visual Studio umieszcza w nim kontrolki, ktre nie posiadaj
graficznej reprezentacji.
W Visual Studio istnieje moliwo zastosowania metody Smart Defaults. Polega ona na
sprawdzeniu, czy tabela z zestawu danych oprcz ID lub klucza gwnego zawiera jak
kolumn typu tekstowego. Jeeli tak, to kolumna ta jest podczana do kontrolki.
Gdy zajrzysz do panelu Properties obiektu tabeli, zobaczysz e w Visual Studio automatycznie
s generowane cztery typy instrukcji: SELECT, INSERT, DELETE oraz UPDATE. S to
instrukcje, ktre umoliwiaj przygotowanie w peni dziaajcej aplikacji bez pisania kodu
rdowego
Uwagi dla studenta
Jeste przygotowany do realizacji laboratorium jeli:
rozumiesz co to jest ADO.NET
rozumiesz na czym polega dostp do danych poprzez ADO.NET
potrafisz stworzy prosta baz danych korzystajc z Visual Studio 2008
potrafisz stworzy prosty formularz obiektu typu tabela
Pamitaj o zapoznaniu si z uwagami i poradami zawartymi w tym module. Upewnij si, e
rozumiesz omawiane w nich zagadnienia. Jeli masz trudnoci ze zrozumieniem tematu zawartego
w uwagach, przeczytaj ponownie informacje z tego rozdziau i zajrzyj do notatek z wykadw.
Dodatkowe rda informacji
1. Patrice Pelland, Projektuj sam. Microsoft Visual C# 2008, APN Promise,
W ksice autor w prosty i przejrzysty sposb prezentuje, jak naley porusza si po
Microsoft Visual Studio 2008, jak tworzy proste projekty. Pozycja szczeglnie
polecana dla osb pocztkujcych.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 13
ITA-101 Bazy Danych Budowa interfejsu
Strona 10/16
2. Kalen Delaney, Microsoft SQL Server 2005: Rozwizania praktyczne krok po kroku, Microsoft
Press, 2006
W ksice autor w przystpny i zrozumiay sposb przedstawia podstawowe
mechanizmy zwizane z bezpieczestwem bazy danych przy zaoeniu dostpu do
niej poprzez aplikacj klienck pisan w Microsoft Visual Studio. Pozycja polecana
zarwno dla osb pocztkujcych, jak i pragncych poszerzy swoj wiedz z tej
tematyki.
3. Nick Randolph, David Gardner, Professional Visual Studio 2008, Wrox, 2008
W ksice autor w prosty i przejrzysty sposb omawia zaawansowane mechanizmy
dostpne w Microsoft Visual Studio 2008. Prezentuje, jak naley porusza si w tym
rodowisku oraz jak tworzy proste i zaawansowane projekty. W ksice znajdziesz
rozszerzony opis ADO.NET. Pozycja szczeglnie polecana dla osb
zaawansowanych, chccych poszerzy swoj wiedz z zakresu programowania
aplikacji klienckich.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 13
ITA-101 Bazy Danych Budowa interfejsu
Strona 11/16
Laboratorium podstawowe
Problem 1 (czas realizacji 45 minut)
Jeste administratorem w firmie National Insurance. Wanie dowiedziae si od swojego szefa, e
firma planuje rozszerzenie systemu prac dyplomowych, ktrym zarzdza na Twoim wydziale,
dodajc now funkcjonalno zwizan z wyszukiwaniem informacji o tym, na jakie przedmioty
chodzili studenci podczas piciu lat studiw. Zadanie, jakie przed Tob stoi, to zmodyfikowanie
struktury fizycznej bazy danych oraz stworzenie moduu aplikacyjnego.
Zadanie Tok postpowania
1. Utwrz
projekt
Uruchom Microsoft Visual Studio 2008, wybierajc Start -> Programy ->
Microsoft Visual C# 2008.
Z menu gwnego wybierz File -> New Project -> Windows Form
Application.
Nadaj nazw dla projektu Dziekanat-aplikacja.
2. Utwrz baz
danych
W obrbie okna Database Explorer wybieramy Data Connections.
Kliknij prawym przyciskiem myszy Data Connections i wybierz Add
Connection.
W polu Data Sources ustaw Microsoft SQL Server database File
(SqlClient).
W polu Database file name (new or existing) wpisz nazw bazy danych
Dziekanat.

Rys. 10 Definicja poczenia do bazy danych
3. Zdefiniuj
tabele
W panelu Database Explorer prawym przyciskiem myszy kliknij ikon
folderu Tables i wybierz Add New Table.
Zdefiniuj kolumny nowej tabeli jak na rys. 11 i zapisz j pod nazw
Student.

Rys. 11 Definicja tabeli Student
Dodaj kolejn tabel, zdefiniuj jej kolumny jak na rys. 12 i zapisz j pod
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 13
ITA-101 Bazy Danych Budowa interfejsu
Strona 12/16
nazw Przedmiot.

Rys. 12 Definicja tabeli Przedmiot
Dodaj kolejn tabel, zdefiniuj jej kolumny jak na rys. 13 i zapisz j pod
nazw Student_Przedmiot.

Rys. 13 Definicja tabeli Student_Przedmiot
4. Zdefiniuj
Diagram
Przejd do panelu Database Explorer, prawym przyciskiem myszy kliknij
wze Database Diagram i wybierz Add New Diagram.
Wybierz wszystkie tabele i kliknij Add.
Kliknij przycisk Close, aby poinformowa Visual Studio, e ju masz
wszystkie potrzebne tabele.
Pocz tabele zwizkami jak na rys. 14.

Rys. 14 Diagram bazy danych Dziekanat
5. Zdefiniuj
widok
Przejd do panelu Database Explorer, prawym przyciskiem myszy kliknij
wze Views i wybierz Add New View.
Wybierz tabele Student, Przedmiot i Student_Przedmiot, ktre
potrzebne s do utworzenia widoku i kliknij Add.
Kliknij przycisk Close, aby poinformowa Visual Studio, e ju masz
wszystkie potrzebne tabele.
Zaznacz kolumny, ktre chcesz eby weszy do definiowanego widoku.
Wynik pokazano na rys. 15.
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych
6. Uwrz obiekt
DataSet
Przejd do panelu
Sources
Wybierz
Wybier
Zaznacz opcj
W
Finish
7. Utwrz
interfejs
uytkownika
Przejd do panelu
Label
W oknie waciwoci w polu
dziekanatu
Przejd
TabCotrol
W oknie waciwoci w polu
Studenci
17
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski

Strona 13/16
Rys. 15 Definicja widoku
Przejd do panelu Data Sources i kliknij odsyacz
Sources.
Wybierz Database, a nastpnie kliknij przycisk Next
Wybierz baz danych Dziekanat.mdf i kliknij przycisk
Zaznacz opcj Yes, save the connection as.
Wybierz wszystkie tabele i widoki z bazy danych
Finish.
W Data Sources powinno pojawi si nowo
danych, co pokazano na rys. 16.
Rys. 16 Zdefiniowane poczenie z baz danych Dziekanat
Przejd do panelu Toolbox, a nastpnie przecignij na
Label.
W oknie waciwoci w polu Text wpisz Mini aplikacja obsugi
dziekanatu.
Przejd do panelu Toolbox, a nastpnie przecignij na
TabCotrol.
W oknie waciwoci w polu Text dla kolejnych
Studenci, Przedmioty i Na jakie przedmioty uczszczaj studenci
17).
Modu 13
Budowa interfejsu

i kliknij odsyacz Add New Data
Next.
przycisk Next.
z bazy danych, a nastpnie kliknij
nowo zdefiniowane rdo

Zdefiniowane poczenie z baz danych Dziekanat
przecignij na formularz obiekt
Mini aplikacja obsugi
a nastpnie przecignij na formularz obiekt
kolejnych zakadek wpisz:
Na jakie przedmioty uczszczaj studenci (rys.

Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 13
ITA-101 Bazy Danych Budowa interfejsu
Strona 14/16
Rys. 17 Dodane obiekty Label i TabControl
Przejd do panelu Data Sources i rozwi zakadk Student.
Kliknij wskazujc w d strzak, rozwijajc list.
Wybierz Details jako prezentacj danych i przecignij na formularz na
zakadk Studenci (rys. 18).

Rys. 18 Zakadka Studenci
Przejd do panelu Data Sources i rozwi zakadk Przedmiot.
Kliknij wskazujc w d strzak, rozwijajc list.
Wybierz Details jako prezentacj danych i przecignij na formularz na
zakadk Przedmiot (rys. 19).

Rys. 19 Zakadka Przedmioty
Przejd do panelu Data Sources i rozwi zakadk Na jakie przedmioty
jest zapisany student.
Kliknij wskazujc w d strzak, rozwijajc list.
Wybierz DataGridView jako prezentacj danych i przecignij na
formularz na zakadk Na jakie przedmioty uczszczaj studenci (rys.
20).
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 13
ITA-101 Bazy Danych Budowa interfejsu
Strona 15/16

Rys. 20 Zakadka Na jakie przedmioty uczszczaj studenci
Uruchom aplikacj wybierajc przycisk F5. Wynik skompilowanej
aplikacji przedstawia rys. 21.

Rys. 21 Wynik dziaania aplikacji


Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski Modu 13
ITA-101 Bazy Danych Budowa interfejsu
Strona 16/16
Laboratorium rozszerzone
Zadanie 1 (czas realizacji 90 min)
Jeste programist w firmie National Insurance. Wanie dowiedziae si od swojego szefa, e
firma zarzdzajca baz AdventureWorks planuje rozszerzenie i modernizacje systemu w celu
spenienia pewnych standardw. W zwizku z modernizacj systemu bazodanowego
najprawdopodobniej ulegn zmianie pewne metody wybierania danych w celu zapewnienia
wyszego poziomu bezpieczestwa. Dostaniesz dodatkowe procedury skadowane i funkcje, ktre
bdziesz musia wykorzysta w nowym module aplikacji klienckiej.
Zadanie, jakie przed Tob stoi, to:
1. Podjcie decyzji, jakie procedury skadowane powinny zosta napisane dla nowego moduu
bazy danych oraz jak ich uy w aplikacji klienckiej.
2. Podjcie decyzji, jak ma wyglda interfejs uytkownika.


ITA-101 Bazy danych
Wodzimierz Dbrowski, Przemysaw Kowalczuk, Konrad Markowski
DODATEK A
Wersja 1.0
Podstawy
Spis treci
Podstawy .............................................................................................................................................. 1
Informacje o module ............................................................................................................................ 2
Przygotowanie teoretyczne ................................................................................................................. 3
Przykadowy problem .............................................................. Bd! Nie zdefiniowano zakadki.
Podstawy teoretyczne.................................................................................................................. 3
Uwagi dla studenta .................................................................................................................... 11
Dodatkowe rda informacji..................................................................................................... 11

W.Dbrowski, P.Kowalczuk, K.Markowski Dodatek A
ITA-101 bazy danych Podstawowe pojcia
Strona 2/11
Informacje o module
Opis moduu
W tym module zajmiemy si zebraniem najwaniejszych informacji na
temat baz danych niezbdnych do zrozumienia i penego wykorzystania
dalszych moduw. Zebrane, najwaniejsze pojcia nie zastpuj penego
wykadu na ten temat i nie zwalniaj Ci z przestudiowania wykadu lub
podrcznika z zakresu baz danych. Maj one jedynie na celu zebra
i utrwali najwaniejsze elementy potrzebne do wykonywania kolejnych
moduw. Zazwyczaj pierwsze zajcia laboratorium s zajciami
organizacyjnymi.
Cel moduu
Celem moduu jest utrwalenie i sprawdzenie rozumienia podstawowych
poj z baz danych oraz przygotowanie do pracy z kolejnymi moduami
kursu.
Uzyskane kompetencje
Po zrealizowaniu moduu bdziesz:
rozumia czym jest baza danych,
rozumia na czym polega model relacyjnej bazy danych,
umia swobodnie porusza si wrd podstawowych poj baz
danych.
Wymagania wstpne
Ten modu nie ma wymaga wstpnych. Moesz od razu rozpocz prac
z tym moduem.
Mapa zalenoci moduu
Przed przystpieniem do realizacji tego moduu nie jest wymagane
zapoznanie si z materiaem zawartym w innych moduach.

W.Dbrowski, P.Kowalczuk, K.Markowski Dodatek A
ITA-101 bazy danych Podstawowe pojcia
Strona 3/11
Przygotowanie teoretyczne
Podstawy teoretyczne
Na pewno pojcie bazy danych nie jest dla Ciebie nowe. Pewnie kady korzysta te z jakiej bazy
danych. Czy jednak zastanawiae si, co to jest baza danych? Od kiedy ludzie posuguj si bazami
danych? Wanie na te i inne podstawowe pytania dotyczce pojcia baz danych sprbujemy
odpowiedzie w tym module.
Zastanw si, co rozumiesz pod pojciem bazy danych, co to takiego? Zapisz swoje okrelenie,
a nastpnie porwnaj z naszym.
Baz danych (ang. database) bdziemy nazywa trway, zamknity i dobrze zorganizowany
magazyn danych. Baza danych charakteryzuje si trzema wanymi cechami: trwaoci,
ograniczonoci (zamknitoci) i dobr organizacj (co dla kogo jest dobre jest rzecz dyskusyjn
postaramy si jednak sprecyzowa, co dla nas bdzie oznacza dobra organizacja magazynu).
Trwao bazy danych
Trwao oznacza, e dane zapisane w bazie danych s w niej zapisane w sposb nieulotny. Nie
mona zbudowa bazy danych w pamici operacyjnej komputera, gdy po doczeniu zasilania
dane w niej zapisane s tracone. Na trway magazyn danych dobrze natomiast nadaje si kamie
(zapisy dokonane w kamieniu przetrway tysice lat), papier (ten nie jest ju tak trway) czy dyski
magnetyczne lub inne noniki magnetooptyczne. Trwao danych zapisanych w bazie danych jest
bardzo wanym postulatem. Wszystkie wspczesne systemy baz danych musz go spenia.
Ograniczono bazy danych
Ograniczono oznacza, e w bazie danych nie mona zapisa zupenie dowolnych danych. Baza
oparta jest na pewnym modelu rzeczywistoci (modelu danych). Modele te mog by bardzo rne
i niektre z nich pokrtce omwimy w dalszej czci. Model danych definiowany jest przez
projektanta bazy danych. Okrela on, w jaki sposb dane wystpujce w rzeczywistoci (np. dane
adresowe studentw) bd reprezentowane w bazie. Przyjty model ogranicza wic (determinuje)
dane, ktre moemy trwale przechowywa w bazie.
Dobra organizacja bazy danych
Aby zbir danych mona byo uwaa za baz danych, musi on by odpowiednio zorganizowany.
Organizacja ta musi zapewnia moliwo nie tylko sprawnego umieszczania danych w bazie, ale
rwnie moliwo odszukiwania i odczytywania danych ju w niej zapisanych. Jeli wic znalezienie
danych zapisanych w magazynie wymaga od nas miesica przegldania zapisanych danych, to taki
magazyn nie moe by uznany za baz danych.
Baza danych to oczywicie kady magazyn danych speniajcy powysze warunki. Ludzko
dostrzega potrzeb tworzenia baz danych ju bardzo dawno. J. Diamond w swojej ksice Guns,
Germs and Steel: The Fastest of Human Societies twierdzi, e bazy danych istniay od czasw, kiedy
cywilizacja umeryjska i egipska zaczy korzysta z pisma klinowego i hieroglifw do zapisu
informacji w formie trwaej i moliwej do odczytania na kade danie. Stosowane w tamtych
czasach noniki danych byy mao wygodne. Nasza cywilizacja przez cae wieki budowaa swoje bazy
danych wykorzystujc jako trway nonik danych papier. Bazy papierowe maj jednak bardzo
wiele wad, takich jak due rozmiary magazynu, trudnoci w wyszukiwaniu danych, brak
wielodostpu itd. Do budowy i obsugi baz danych nadaj si natomiast znakomicie maszyny
cyfrowe. Dzisiaj mwic baza danych mamy w zasadzie na myli komputerowe bazy danych.
W dalszej czci naszych wykadw pod pojciem bazy danych bdziemy wic rozumieli baz
zorganizowan i zarzdzan z wykorzystaniem komputera.
W.Dbrowski, P.Kowalczuk, K.Markowski Dodatek A
ITA-101 bazy danych Podstawowe pojcia
Strona 4/11
Gdzie i w jakim celu stosuje si bazy danych
Bazy danych spotykamy waciwie na kadym kroku. Kady na pewno korzysta z bazy papierowej
takiej jak encyklopedia, ksika telefoniczna czy kartoteka w bibliotece. Bazy danych s te
powszechne w wiecie informatyki. Wikszo systemw informatycznych wsppracuje z bazami
danych, gdy musz one przechowywa dane. S aplikacje, ktrych gwnym zadaniem jest
przechowywanie, zarzdzanie i udostpnianie danych. Potocznie s one nazywane bazami danych
lub, dla podkrelenia faktu istnienia odpowiednich dodatkw uatwiajcych prac, aplikacjami
bazodanowymi. Naley jednak mie wiadomo, e znakomita wikszo aplikacji to aplikacje,
ktre wsppracuj z bazami danych mniej lub bardziej skomplikowanymi.
Zastanowimy si teraz nad najwaniejszymi cechami bazy danych, ktre powinna ona spenia, aby
moga sprosta stawianym przed ni dzisiaj wymaganiom.
Proponujemy, aby przyjrza si dowolnej bazie danych, z ktr si spotkae, przeanalizowa jej
cechy (te, ktre ma i ktre Twoim zdaniem powinna mie) i wypisa je. Nastpnie sprawd, ile
z wypisanych przez Ciebie cech pokrywa si uznanymi przez nas za najwaniejsze.
Zgodno z rzeczywistoci
Postulat zgodnoci danych zapisanych w bazie z rzeczywistoci jest jednym z waniejszych
postulatw stawianych bazom danych. Na przykad, jeli baza opisuje dane osobowe pracownikw,
takie jak ich imi, nazwisko, telefon, adres zamieszkania, stanowisko itd., to postulat zgodnoci
z rzeczywistoci oznacza, e w chwili, gdy pracownik zmienia stanowisko pracy (a tym samym
rwnie telefon), to rwnie w bazie danych dokonywane s odpowiednie zmiany danych.
Postulat zgodnoci z rzeczywistoci oznacza, e dane zgromadzone w bazie s danymi
prawdziwymi, odpowiadajcymi faktycznemu stanowi wiata, ktrego dotycz. Na pewno kady
z nas spotka si z baz, ktra nie speniaa tego postulatu i przechowywaa dane dawne ju
nieaktualne.
Z takimi bazami czsto spotykam si dzisiaj zagldajc do oferty sklepw i firm internetowych.
Niezwykle rzadko zdarza si, aby dane podawane w bazach udostpnianych przez te podmioty byy
prawdziwe. Najczciej nie zgadzaj si ani ceny towarw, ani ich dostpno w magazynie.
Powoduje to nie tylko strat naszego czasu (bo i tak trzeba zadzwoni do ywego czowieka), ale
rwnie utrat zaufania do firmy, ktra udostpnia baz z danymi niezgodnymi z rzeczywistoci.
Spenienie postulatu zgodnoci z rzeczywistoci nie jest atwe. Trudnoci nie le w zasadzie po
stronie technicznej, ale po stronie ludzkiej. Nie mona (jak na razie) cakowicie zautomatyzowa
procesw biznesowych i w kadym z nich niezbdnym ogniwem jest czowiek. Aby zapewni
zgodno danych przechowywanych w bazie z danymi rzeczywistymi, trzeba opracowa i stosowa
w firmie odpowiednie procedury.
Na przykad w wypadku zmiany stanowiska przez pracownika, dzia kadr mgby (obowizkowo)
przesya odpowiednie zgoszenie do operatora bazy (albo wprowadza samodzielnie) z informacj
o zaistniaych zmianach. Sposb przesyania takiego zgoszenia, jego zawarto, okrelenie
odpowiedzialnoci itd. powinien by wanie okrelony w takiej procedurze.
Problem aktualnoci danych w bazie jest jednym z trudniejszych problemw do rozwizania,
szczeglnie kiedy w przedsibiorstwie dziaa wiele rnych systemw i baz danych. Dlatego te
obserwuje si dzisiaj siln tendencj do integracji rnych systemw w jeden spjny system, ktry
potrafiby automatycznie wymienia dane midzy swymi moduami (czciami). Rozwizania tego
typu nosz nazw rozwiza EAI (ang. Enterprise Architecture Integration) i s oferowane
i rozwijane przez wiodcych dostawcw systemw bazodanowych.
W.Dbrowski, P.Kowalczuk, K.Markowski Dodatek A
ITA-101 bazy danych Podstawowe pojcia
Strona 5/11
Ilustracja fragmentu rzeczywistoci
Projektujc baz danych naley pamita, e stanowi ona pewien model otaczajcego nas wiata.
Aby baza speniaa swoje zadania, musi by ilustracj kompletnego i dobrze zdefiniowanego
fragmentu rzeczywistoci. Mona oczywicie zbudowa dziaajc baz danych, ktra bdzie
pozwalaa na poprawne wprowadzanie, usuwanie i modyfikacj danych, ale ktra nie bdzie
zwizana ze wiatem rzeczywistym. Przydatno takiej bazy stoi oczywicie pod znakiem zapytania.
Aby speni ten postulat, naley prawidowo zdefiniowa dziedzin problemow, ktra bdzie
modelowana za pomoc bazy oraz wykona odpowiadajcy tej rzeczywisto model logiczny bazy.
Okrelaniem wymaga i budow modelu logicznego bazy danych bdziemy si zajmowa
w module 2.
Kontrola replikacji danych
Replikacja danych oznacza reprezentowanie w bazie tego samego faktu w wielu jej miejscach lub
w rnych formach. Na przykad baza danych zawierajca informacje o dostawach towarw moe
przechowywa nazw i adres dostawcy w specjalnej licie dostawcw wsppracujcych z nasz
firm oraz te same dane w wykazie zamwie. Taka sytuacja jest zazwyczaj niepodana. Moe ona
prowadzi do:
niepotrzebnego zwikszenia miejsca zajmowanego przez baz,
niepotrzebnego angaowania mocy obliczeniowych w przeprowadzanie operacji w wielu
miejscach (np. zmiana adresu dostawcy bdzie musiaa by wykonana i na licie dostawcy
i przy kadym zamwieniu),
powstania bdw i niezgodnoci danych gromadzonych w bazie z danymi rzeczywistymi (np.
zapomnimy o zmianie adresu dostawcy przy zamwieniach z lipca).
Czasem jednak zachodzi potrzeba replikacji danych. Moe ona wynika ze wzgldw
wydajnociowych lub ze wzgldw bezpieczestwa. Trzeba jednak zawsze pamita, e jeli
decydujemy si na zastosowanie (dopuszczenie) replikacji, to zawsze naley powici jej
szczegln uwag, aby pozostawaa pod kontrol.
Spjny model danych
Baza danych powinna by zbudowana na podstawie spjnego modelu. Spjny model danych
oznacza, e fragment rzeczywistoci, ktrego dotyczy baza zosta zamodelowany w jednym
z moliwych modeli oraz e dane i pojcia (np. pojcie faktury) reprezentowane w bazie bd ze
sob poczone tworzc jedn spjn logicznie cao.
Spjny model naley zapewni na etapie projektowania logicznego bazy, a jego wyegzekwowanie
w czasie eksploatacji bazy jest moliwe dziki narzuceniu na baz odpowiednich warunkw
i wizw (np. zwizkw, o ktrych wicej w module 2).
Wspbieny dostp do danych
Mona sobie oczywicie wyobrazi baz (a nawet znale takie dziaajce bazy), ktra bdzie
umoliwia dostp w danej chwili tylko jednemu uytkownikowi. Taka cecha nie powinna nikogo
z nas dziwi, gdy wiele baz papierowych, z ktrych korzystamy dziaa w ten wanie sposb. Nie
jest to jednak wygodne, w szczeglnoci jeli baza ma suy wielu uytkownikom. Problem ten
zauwaono ju dawno i radzono sobie z nim powielajc zbiory danych. Na przykad ksika
telefoniczna jest drukowana w wielu tysicach egzemplarzy, dziki czemu z danych w niej
zawartych moe jednoczenie korzysta wielu uytkownikw. Nikogo jednak nie trzeba
przekonywa, jak wiele wad ma to rozwizanie.
Systemy komputerowe pozwalaj na dostp do danych wielu uytkownikom jednoczenie.
Oczywicie udostpnienie danych wielu osobom na raz stwarza dodatkowe problemy zwizane
z zarzdzaniem dostpem do tych danych i wymaga odpowiedniego zaprojektowania i organizacji
bazy danych.
W.Dbrowski, P.Kowalczuk, K.Markowski Dodatek A
ITA-101 bazy danych Podstawowe pojcia
Strona 6/11
Bezpieczestwo danych
Bazy danych s dzisiaj obecne w bardzo wielu miejscach i instytucjach, wspomagaj nasze ycie
codzienne i bior udzia w licznych procesach biznesowych. S w nich gromadzone informacje
finansowe, ksigowe, dane osobowe, transakcje bankowe itp. Z oczywistych powodw wymagaj
one ochrony. Dobra baza danych musi zapewnia odpowiednie mechanizmy identyfikacji,
uwierzytelnienia, autoryzacji, poufnoci, integralnoci i dostpnoci.
Rodzaje, klasyfikacja i przykady SZBD
Sprostanie wymaganiom stawianym dzisiaj bazom danych nie jest atwe, dlatego budowane s
zoone systemy zawierajce zbir gotowych narzdzi zapewniajcych odpowiedni dostp,
manipulacj i aktualizacj do danych gromadzonych w systemach komputerowych. Narzdzia te to
Systemy Zarzdzania Baz Danych w skrcie SZBD (ang. Database Management Systems
DBMS).
Do najwaniejszych cech charakteryzujcych SZBD moemy zaliczy:
operowanie na duych i bardzo duych zbiorach danych,
zarzdzanie zoonymi strukturami,
dziaanie w dugim cyklu ycia.
Schemat SZBD wraz z otaczajcym go rodowiskiem pokazuje poniszy Rys. 1 System Zarzdzania
Bazami Danych.

Rys. 1 System Zarzdzania Bazami Danych
SZBD skada si z:
menedera bazy danych (ang. DB manager) jego rola polega na zarzdzaniu obiektami
bazy danych
procesora zapyta (ang. query procesor) jego rola polega na przetwarzaniu zapyta
(polece) kierowanych do bazy danych,
kompilatora definicji schematu (ang. pattern compiler) jego rola polega na przetwarzaniu
definicji obiektw znajdujcych si w bazie na posta zrozumia dla menedera bazy.
Jak wida na rys. 1.1, SZBD komunikuje si jednej strony z menederem plikw (ang. file manager),
a z drugiej z warstw wyszego poziomu. Meneder plikw jest odpowiedzialny za obsug
fizycznych nonikw danych zna i rozumie sposb organizacji tych nonikw (systemu plikw).
W.Dbrowski, P.Kowalczuk, K.Markowski Dodatek A
ITA-101 bazy danych Podstawowe pojcia
Strona 7/11
W warstwie wyszego poziomu mog natomiast znajdowa si aplikacje uytkownika (ang.
application), zapytania formuowane przez uytkownika (ang. user query), narzdzia do
definiowania schematu bazy danych (ang. pattern description) itp.
Na rynku dostpnych jest wiele Systemw Zarzdzania Bazami Danych dostarczanych przez rnych
producentw. Do najwaniejszych nale:
Oracle
MS SQL Server
DB2
Sybase
Informix
Adabase
ObjectStore
MS Access
oraz wiele innych.
Kryteria doboru SZBD
Wybr odpowiedniego systemu SZBD nie jest atwy. Przed podjciem decyzji warto jest rozway
wiele aspektw zwizanych zarwno z tym co baza danych ma robi, jak i innymi uwarunkowaniami
po stronie dostawcy systemu i jego uytkownika.
Do najwaniejszych kryteriw doboru SZBD nale:
Wydajno (ang. performance) okrela, jak szybko system bdzie reagowa na wydawane
mu polecenia, ile jednoczenie bdzie potrafi obsuy zlece czy uytkownikw.
Skalowalno (ang. scalability) okrela, jak zmieni si dziaanie systemu (jego wydajno),
jeli wzronie liczba uytkownikw lub danych. Cecha ta okrela rwnie moliwo adaptacji
systemu do nowych warunkw obcienia i moliwo jego rozbudowy w celu sprostania
nowym, wikszym obcieniom.
Funkcjonalno (ang. functionality) okrela, jakie funkcje s dostpne w systemie. Warto
zwrci uwag zarwno na funkcje wykorzystywane przez uytkownika, jak i administratora
czy projektanta takiego systemu. Najczciej brak odpowiednich funkcji szczeglnie
potrzebnych projektantom i administratorom pociga za sob konieczno dokupienia
dodatkowych narzdzi i zwiksza koszty systemu.
Zgodno ze standardami oznacza spenienie przez system pewnych zasad i regu uznanych
za powszechne, czyli standardw (np. standard jzyka, standard protokou, itp.). Spenienie
powszechnie stosowanych standardw uniezalenia nas od dostawcy systemu i pozwala na
dokadanie do niego innych elementw proponowanych przez rnych dostawcw
(oczywicie jeli s godne ze standardem).
atwo uycia (ang. usability) jest wan cech systemu. Zdarzaj si systemy o bardzo
dobrych parametrach wydajnociowych lub duej niezawodnoci, ktre jednak s tak trudne
w obsudze, e uytkownicy z nich rezygnuj. Ocena tej cechy zaley od uytkownika
systemu, jego przygotowania i dowiadczenia. Jest wic cech subiektywn i ten sam system
przez rnych uytkownikw moe by zakwalifikowany jako atwy lub trudny w uyciu.
Niezawodno (ang. reliability) oznacza, jak czsto system przestaje dziaa. Oczywicie, im
wiksza niezawodno systemu, tym wiksze s jego koszty wytworzenia. Trzeba wic
wyway odpowiedni proporcj midzy niezawodnoci systemu a potrzebami
uytkownika. Cho kady chciaby, aby jego system dziaa bezbdnie (by niezawodny) w jak
najwikszym stopniu, to jednak czsto jestemy gotowi zaakceptowa przestj systemu
trwajcy godzin w zamian za przystpn cen.
Wspomaganie (ang. support) oznacza zapewnienie odpowiedniej pomocy przez dostawc
systemu. Z ca pewnoci jest to bardzo wana cecha systemu. Z pewnoci warto zapaci
W.Dbrowski, P.Kowalczuk, K.Markowski
ITA-101 bazy danych
wysz cen za produkt, ktrego producent zapewnia dobry
przecie systemw niezawodnych
o sposobie ich uytkowania.
rodowisko (ang. environment
dziaa nasz system.
Cena (ang. price) oznacza nie tylko koszt zakupu systemu, ale rwnie wszystkie pozostae
koszty zwizane z
eksploatacji. Koszt zakupu jest cz
Uytkownicy baz danych i
Wrd najwaniejszych grup uytkownikw systemw SZBD moemy wyrni nastpujce grupy:
Administrator systemu
systemem. To on definiuje bazy danych
globalnym itp.
Administrator bazy danych
ma pod swoj opiek. Ma on uprawnienia do zakadania
ale tylko w obrbie danej bazy danych.
Programista aplikacji
bdzie wspomaga uytkowanie bazy (np. procedur skadowanych).
Operator czuwa nad codzienn eksploatacj bazy. Czuwa nad wykonaniem kopii
bezpieczestwa i wykonuje inne proste, codzienne czynnoci admnistracyjne.
Uytkownik (ang. user
pozostaych grup.
Modele struktury logiczne
Modele struktury logiczn
odzwierciedli rzeczywisto, ktrej baza dotyczy oraz maj zasadniczy
i dziaanie bazy. Dzisiaj najpopularniejszym modelem stosowanym
Obok niego funkcjonuj te inne modele
popularno model obiektowy.
Model hierarchiczny
Model hierarchiczny przypomina odwrcone drzewo. Jeden
a pozostae tworz gazie
zwizkami ojciec-syn.
Zwizki takie charakteryzuj si tym, e
z wieloma innymi obiektami podrzdnymi (synowie), natomiast tylko
nadrzdnym w stosunku do niego (jego ojcem).
W.Dbrowski, P.Kowalczuk, K.Markowski

Strona 8/11
sz cen za produkt, ktrego producent zapewnia dobry i stabilny serwis. Nie ma
przecie systemw niezawodnych w stu procentach ani systemw, ktre nie kryj tajemnic
sposobie ich uytkowania.
environment) okrela, na jakim sprzcie czy systemie operacyjnym bdzie

oznacza nie tylko koszt zakupu systemu, ale rwnie wszystkie pozostae
wdroeniem tego systemu oraz przewidywanymi kosztami jego
eksploatacji. Koszt zakupu jest czsto tylko elementem skadowym oglnej ceny systemu.
i ich rola w systemie
Wrd najwaniejszych grup uytkownikw systemw SZBD moemy wyrni nastpujce grupy:
Administrator systemu (ang. system administrator) jego zadaniem jes
systemem. To on definiuje bazy danych w systemie, zakada uytkownikw
Administrator bazy danych (ang. database administrator) administruje jedynie baz, ktr
ma pod swoj opiek. Ma on uprawnienia do zakadania i administrowania obiektami bazy
obrbie danej bazy danych.
Programista aplikacji (ang. application programmer) jego rol jest pisanie kodu, ktry
e wspomaga uytkowanie bazy (np. procedur skadowanych).
czuwa nad codzienn eksploatacj bazy. Czuwa nad wykonaniem kopii
wykonuje inne proste, codzienne czynnoci admnistracyjne.
user) to kto wykonujcy czynnoci nie wchodzce
Modele struktury logicznej bazy danych
ej bazy danych mog by bardzo rne. Modele te staraj si
, ktrej baza dotyczy oraz maj zasadniczy wpyw na implementacje
dziaanie bazy. Dzisiaj najpopularniejszym modelem stosowanym w SZBD jest
Obok niego funkcjonuj te inne modele starszy model hierarchiczny i
model obiektowy.
przypomina odwrcone drzewo. Jeden z elementw peni role korzenia,
pozostae tworz gazie i licie. W modelu tym wystpuj zwizki midzy obiektam
Zwizki takie charakteryzuj si tym, e obiekt nadrzdny (ojciec) moe pozostawa
wieloma innymi obiektami podrzdnymi (synowie), natomiast tylko
stosunku do niego (jego ojcem).
Rys. 2. Model hierarchiczny
Dodatek A
Podstawowe pojcia
stabilny serwis. Nie ma
stu procentach ani systemw, ktre nie kryj tajemnic
czy systemie operacyjnym bdzie
oznacza nie tylko koszt zakupu systemu, ale rwnie wszystkie pozostae
wdroeniem tego systemu oraz przewidywanymi kosztami jego
sto tylko elementem skadowym oglnej ceny systemu.
Wrd najwaniejszych grup uytkownikw systemw SZBD moemy wyrni nastpujce grupy:
jego zadaniem jest nadzr nad caym
systemie, zakada uytkownikw o charakterze
administruje jedynie baz, ktr
administrowania obiektami bazy
jego rol jest pisanie kodu, ktry

czuwa nad codzienn eksploatacj bazy. Czuwa nad wykonaniem kopii
wykonuje inne proste, codzienne czynnoci admnistracyjne.
czynnoci nie wchodzce w zakres obowizkw
j bazy danych mog by bardzo rne. Modele te staraj si
wpyw na implementacje
SZBD jest model relacyjny.
i zyskujcy sobie powoli
elementw peni role korzenia,
modelu tym wystpuj zwizki midzy obiektami zwane
obiekt nadrzdny (ojciec) moe pozostawa w zwizku
wieloma innymi obiektami podrzdnymi (synowie), natomiast tylko z jednym obiektem

W.Dbrowski, P.Kowalczuk, K.Markowski
ITA-101 bazy danych
Na Rys. 2 przedstawiono przykad modelu hierarchicznego dla bazy przechowujcej informacje
o wykadach, wykadowcach oraz studentach uczszczajcych na te wykady.
Model hierarchiczny ma jednak wiele w
niemono zapisania
roku nie prowadzi wykadw)
nadmiarowo danych (np. dane
i przedmiotach),
brak moliwoci obsugi bardziej zoonych zwizkw midzy obiektami (np. zwizkw
do wiele).
Zalet tego modelu jest atwo (a co za tym idzie szybko) dojcia do szukanych danych (idziemy
od korzenia wzdu gazi a do celu), ale pod warunkiem
Model hierarchiczny stosowany jest dzi
drzewiast) oraz w wielu popularnych aplikacjach (np. MS Outlook, Lotus Notes).
Model relacyjny
W celu wyeliminowania wad modelu
siedemdziesitych nowy model zwany
relacyjnego opracowa dr E. Codd pracujc
tytuem Relacyjny model logiczny dla duych bankw danych
podstawach matematycznych
Idea modelu relacyjnego bazuje na pojciu
przechowywane w tabelach (relacjach). T
zwizkami. Rysunek rys. 1.
relacyjnych jest ich znaczna rozbieno
modelowa. Pozwalaj za to n
(powtarzalno) i pozwalaj na atwe wyszukiwanie danych.
Bazy danych oparte na modelu relacyjnym s obecnie najbardziej rozpowszechnionym rodza
baz danych.
Model obiektowy
Obecnie technologi, ktra pozwala najlepiej odwzorowywa wiat rzeczywisty
oprogramowania, jest technologia obiektowa.
programowania jak C++ czy Java.
przy tworzeniu duych i zoonych projektw.
W.Dbrowski, P.Kowalczuk, K.Markowski

Strona 9/11
przedstawiono przykad modelu hierarchicznego dla bazy przechowujcej informacje
wykadach, wykadowcach oraz studentach uczszczajcych na te wykady.
Model hierarchiczny ma jednak wiele wad. Do najwaniejszych nale:
niemono zapisania w bazie danych, ktre nie maj ojca (np. wykadowcy, ktry
roku nie prowadzi wykadw),
nadmiarowo danych (np. dane o przedmiocie s wpisane w bazie dwa razy
brak moliwoci obsugi bardziej zoonych zwizkw midzy obiektami (np. zwizkw
Zalet tego modelu jest atwo (a co za tym idzie szybko) dojcia do szukanych danych (idziemy
od korzenia wzdu gazi a do celu), ale pod warunkiem, e znamy struktur tego modelu.
Model hierarchiczny stosowany jest dzi w systemach plikw (struktura katalogw ma struktur
wielu popularnych aplikacjach (np. MS Outlook, Lotus Notes).
W celu wyeliminowania wad modelu hierarchicznego opracowano na pocztku lat
siedemdziesitych nowy model zwany modelem relacyjnym. Podstawy teoretyczne dla modelu
relacyjnego opracowa dr E. Codd pracujc w firmie IBM i opublikowa w roku 1970
logiczny dla duych bankw danych. Model ten oparty jest na silnych
podstawach matematycznych, gwnie teorii mnogoci.
Idea modelu relacyjnego bazuje na pojciu relacji czyli tabeli. Wszystkie dane
tabelach (relacjach). Tabele te mog by ze sob powizane tak zwanymi
. Rysunek rys. 1.3 przedstawia przykad modelu relacyjnego. Zasadnicz wad modeli
relacyjnych jest ich znaczna rozbieno w stosunku do wiata rzeczywistego, ktry maj
modelowa. Pozwalaj za to na efektywne przechowywanie danych, obniaj redundancj danych
pozwalaj na atwe wyszukiwanie danych.
Rys. 3. Model relacyjny
Bazy danych oparte na modelu relacyjnym s obecnie najbardziej rozpowszechnionym rodza
Obecnie technologi, ktra pozwala najlepiej odwzorowywa wiat rzeczywisty
oprogramowania, jest technologia obiektowa. O jej sukcesie wiadczy popularno takich jzykw
programowania jak C++ czy Java. Technologia obiektowa jest obecnie dominujcym narzdziem
zoonych projektw.
Dodatek A
Podstawowe pojcia
przedstawiono przykad modelu hierarchicznego dla bazy przechowujcej informacje
wykadach, wykadowcach oraz studentach uczszczajcych na te wykady.
bazie danych, ktre nie maj ojca (np. wykadowcy, ktry w danym
bazie dwa razy w wykadach
brak moliwoci obsugi bardziej zoonych zwizkw midzy obiektami (np. zwizkw wiele
Zalet tego modelu jest atwo (a co za tym idzie szybko) dojcia do szukanych danych (idziemy
namy struktur tego modelu.
systemach plikw (struktura katalogw ma struktur
wielu popularnych aplikacjach (np. MS Outlook, Lotus Notes).
hierarchicznego opracowano na pocztku lat
. Podstawy teoretyczne dla modelu
roku 1970 w ksice pod
. Model ten oparty jest na silnych
. Wszystkie dane w tym modelu s
abele te mog by ze sob powizane tak zwanymi
przedstawia przykad modelu relacyjnego. Zasadnicz wad modeli
stosunku do wiata rzeczywistego, ktry maj
a efektywne przechowywanie danych, obniaj redundancj danych

Bazy danych oparte na modelu relacyjnym s obecnie najbardziej rozpowszechnionym rodzajem
Obecnie technologi, ktra pozwala najlepiej odwzorowywa wiat rzeczywisty w projektowaniu
jej sukcesie wiadczy popularno takich jzykw
Technologia obiektowa jest obecnie dominujcym narzdziem
W.Dbrowski, P.Kowalczuk, K.Markowski Dodatek A
ITA-101 bazy danych Podstawowe pojcia
Strona 10/11
Obiektowo nie ogranicza si jedynie do nowego sposobu organizacji kodu w jzykach
programowania. Jest ona pewn ideologi w informatyce, ktrej cech jest ch dopasowania
modeli pojciowych stosowanych w informatyce do modelu wiata postrzeganego przez czowieka.
Jest to kolejny krok w ewolucji kontaktw czowiek-maszyna (a cilej programista-komputer).
ledzc, nawet pobienie, rozwj jzykw programowania widzimy, e ewolucja ta przebiega cigle
w stron uatwiania ycia czowiekowi. Wynika to z rozwoju technologii i zwizanego z tym
zwikszania zoonoci modelowanych procesw. Bez wprowadzania nowych metod, wyszych
poziomw abstrakcji w projektowaniu i programowaniu , czowiek szybko staje si najsabszym
ogniwem w procesie tworzenia oprogramowania.
Wikszo producentw systemw relacyjnych baz danych wyposaa obecnie swoje produkty
w rozszerzenia obiektowe. S one implementowane w rnym stopniu i zakresie. Obejmuj takie
funkcje jak obsuga abstrakcyjnych typw danych, klas, przechowywanie obiektw, wyzwalacze,
procedury skadowane. Podstaw takiego systemu jest najczciej ten sam silniczek, jaki by
stosowany w wersji relacyjnej dobry i sprawdzony, ale pisany z myl o modelu relacyjnym, a nie
obiektowym. Systemy tego typu nie speniaj w peni paradygmatu obiektowoci, mog by
traktowane raczej jako rozszerzenie systemw relacyjnych o pewne atrakcyjne cechy umoliwiajce
efektywne tworzenie aplikacji, a nie jako penowartociowe systemy obiektowe.
Systemy w peni obiektowe zrywaj natomiast z zaoeniami modelu relacyjnego i opieraj si
w caoci na technologii obiektowej. Zapewniaj tradycyjn funkcjonalno bazy danych (trwao,
integralno danych, obsug wielodostpu, odtwarzanie danych) przy zastosowaniu obiektowego
modelu danych. Wiele tego typu systemw obsuguje rwnie bardziej zaawansowane funkcje jak
np. obsuga rozproszonych baz danych.
Systemy obiektowych baz danych s najlepiej dopasowane do potrzeb zorientowanych obiektowo
aplikacji przetwarzajcych due iloci danych oraz obsugujcych wielu uytkownikw. Istniejce
rozwizania obejmuj rne zakresy funkcjonalnoci od prostych systemw przeznaczonych do
obsugi maej liczby uytkownikw, dostosowanych do jednego jzyka programowania, a do
bardzo zaawansowanych rozwiza, w ktrych wydajny serwer obiektowej bazy danych jest
sercem caego systemu serwera aplikacji.
Naley jednak zwrci uwag, e systemy obiektowe cigle stanowi przedmiot bada i nie
osigny jeszcze penej dojrzaoci.
Podsumowanie
Wspczesne systemy informatyczne wykorzystuj bazy danych, od maych baz budowanych
specjalnie na ich potrzeby, a po due i bardzo due uniwersalne bazy i systemy baz danych.
W zasadzie trudno byoby znale program komputerowy, ktry nie korzystaby z baz danych.
Nie kad struktur przechowujc dane moemy jednak uzna za baz danych. Baza danych musi
charakteryzowa si odpowiednimi cechami. Poniewa dzisiaj przed bazami danych stawia si coraz
wiksze wymagania zwizane z wydajnoci, bezpieczestwem itd. Wymaganiom tym mog
sprosta dopiero Systemy Zarzdzania Bazami Danych, ktre s wyposaone w odpowiednie
mechanizmy zapewniajce bezpieczestwo, spjno, wydajno i atwo obsugi.
Modele baz danych s rne. Do najpopularniejszych nale model hierarchiczny, relacyjny
i obiektowy. Kady z nich nadaje si do innych celw, a najbardziej rozpowszechnionym modelem
w bazach spotykanych w rozwizaniach przemysowych jest model relacyjnym. Nasze zajcia
powicone s wanie temu modelowi.
W.Dbrowski, P.Kowalczuk, K.Markowski Dodatek A
ITA-101 bazy danych Podstawowe pojcia
Strona 11/11
Uwagi dla studenta
W tym module nie jest przewidziane laboratorium. Jeli chcesz si przekona, czy jeste gotowy do
wykonywania laboratoriw w kolejnych moduach, zastanw si i odpowiedz na nastpujce
pytania:
czy rozumiesz, czym jest baza danych,
czy potrafisz uzasadni stosowanie baz danych do przechowywania danych zamiast
innych struktur,
czy umiesz wymieni podstawowe cechy baz danych,
czy rozumiesz zaoenia modelu relacyjnego?
Jeli potrafisz na te pytania odpowiedzie twierdzco, to jeste przygotowany do dalszej drogi przez
wiat baz danych. Jeli nie, to zapoznaj si ponownie z uwagami i poradami zawartymi w tym
module. Upewnij si, e rozumiesz omawiane w nich zagadnienia. Jeli masz trudnoci ze
zrozumieniem tematu zawartego w uwagach, przeczytaj ponownie informacje z tego rozdziau
i zajrzyj do notatek z wykadw.
Dodatkowe rda informacji
1. Jeffrey D. Ullman, Jennifer Widom, Podstawowy wykad z systemw baz danych, WNT, 2000
Ksika zawiera peny akademicki wykad z baz danych. Znajdziesz w niej szerokie
omwienie wszystkich przedstawianych w tym module poj wraz z licznymi
przykadami. Jeli jeste zainteresowany odrobin teorii i chciaby dogbnie
zrozumie jak dziaaj bazy danych to jest to ksika dla Ciebie.
2. Rebeca R. Riordan, Projektowanie relacyjnych baz danych, Microsoft Press, 2000
Ksika powicona jest praktycznym aspektom projektowania relacyjnych baz
danych w rodowisku aplikacji firmy Microsoft. Rebeca Riordan znana jest
z atwego i zrozumiaego jzyka i atwoci tumaczenia zagadnie trudnych. Ten
swj talent wykorzystuje rwnie w tej pozycji. Jeli nie interesuje Ci zgbianie
teoretycznych podstaw dziaania baz danych, a bardziej nastawiony jeste na
praktyczne wykorzystanie wiedzy, to jest to ksika dla Ciebie.
3. C.J.Date, Wprowadzenie do systemw baz danych, WNT, 2000
Jest to peny podrcznik do wykadu z baz danych znanego i cenionego na caym
wiecie autora. Znajdziesz w nim szersze spojrzenie na problematyk budowy
i modelowania baz danych. Polecamy j wszystkim, ktrzy chcieliby poszerzy
swoje wiadomoci z tego zakresu.

You might also like