background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk,  

Konrad Markowski 

Bazy danych 

ITA-101 

Wersja 1 

Warszawa, wrzesień 2009 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

 

ITA-101 Bazy danych 

 

 

Strona i-2 

2008 Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski. 

Autorzy udzielają prawa do bezpłatnego kopiowania i dystrybuowania 
wśród pracowników uczelni oraz studentów objętych programem 
ITAcademy. Wszelkie informacje dotyczące programu można uzyskać: 
pledu@microsoft.com. 

 

Wszystkie inne nazwy firm i producentów wymienione w niniejszym 
dokumencie mogą być znakami towarowymi zarejestrowanymi przez ich 
właścicieli. 

 

Inne produkty i nazwy firm używane w treści mogą być nazwami 
zastrzeżonymi przez ich właścicieli. 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

 

ITA-101 Bazy danych 

 

 

Strona i-3 

Wprowadzenie  

Informacje o kursie 

Opis kursu 
We współczesnej informatyce coraz większą rolę odgrywa przepływ 
informacji. Dane są gromadzone i przekazywane w ilościach dotąd 
niespotykanych. Od umiejętnego sterowania przepływem danych zależy los 
wielu wielkich firm. Odpowiednia automatyzacja procesu przepływu 
informacji daje ogromne wymierne korzyści. Bazy danych i systemy 
zarządzania bazami danych służą właśnie temu, by móc przechowywać 
nawet ogromne ilości danych bez narażenia na ich utratę oraz by móc 
odpowiednio szybko i wygodnie sterować ich przepływem. 

Bazy danych wdarły się zarówno do sieci lokalnych w firmach, gdzie 
gromadzone są dane na potrzeby pracowników, jak również do Internetu, 
gdzie dostęp do nich mają miliardy użytkowników na całym świecie. 
Dynamiczny rozwój baz danych implikował powstanie wielu nowych 
technologii programowania ukierunkowanych na jeszcze wydajniejsze 
wykorzystanie baz danych w aplikacjach. 

Z kolei administracja systemami zarządzania bazami danych stała się osobną 
gałęzią informatyki, tak jak administracja systemami operacyjnymi 
komputerów lub administracja sieciami komputerowymi. Wielu 
pracodawców poszukuje wykwalifikowanych specjalistów z zakresu 
określonych systemów zarządzania bazami danych (jak Oracle czy MS SQL 
Server). Znajomość zarówno teorii baz danych, jak i konkretnego 
środowiska pracy z nimi, jest więc okazją podniesienia swoich kwalifikacji. 

Wykorzystując możliwości systemu zarządzania bazami danych Microsoft 
SQL Server 2008 postaramy się w niniejszym podręczniku zilustrować 
podstawowe własności baz danych (w szczególności relacyjnych baz 
danych) oraz systemów zarządzania tymi bazami. 

Mamy nadzieję, że podręcznik pozwoli Państwu na bliższe zapoznanie się z 
tematyką baz danych oraz systemem Microsoft SQL Server 2008. Życzymy 
owocnej pracy z naszym podręcznikiem. 

Uzyskane kompetencje 
Po zrealizowaniu kursu będziesz: 

 

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 języku T-SQL, 

 

Monitorować i dokonywać tuningu baz danych, 

 

Dbać o bezpieczeństwo systemów SZBD w podstawowym zakresie, 

 

Używać języka XML w procesie komunikacji z SZBD, 

 

Tworzyć raporty przy użyciu MS SQL Reporting Services 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

 

ITA-101 Bazy danych 

 

 

Strona i-4 

Wymagania wstępne 
Aby przystąpić do pracy z podręcznikiem musisz: 

 

umieć obsługiwać komputer z zainstalowanym systemem 
operacyjnym Microsoft Windows 9X/NT/2000/ME/XP/2003,  

 

znać podstawowe zagadnienia dotyczące programowania (m.in. 
wiedzieć, co to jest zmienna, procedura, pętla), 

 

nie musisz znać teorii baz danych - poznasz ją czytając wykłady 
zawarte w niniejszym podręczniku. 

Zakres tematyczny kursu 

Opis modułów 
W Tab. 1 przedstawiony został opis modułów, zawierający podział na 
zajęcia. Każde zajęcie jest zaplanowane na 90 minut. Wykładowca może 
dostosować harmonogram do swoich potrzeb. 

Tab. 1 Zakres tematyczny modułów 

Numer moduł 
Tytuł  

Opis 

Moduł 1 

Budowa diagramów 
ERD 

W tym module zajmiemy się pierwszym krokiem, jaki 
należy wykonać projektując bazę danych. Będzie nim 
identyfikacja encji i narysowanie na diagramie, zwanym 
diagramem ERD, zależności między nimi. Prawidłowy i 
przejrzysty diagram ERD jest kluczowym czynnikiem 
sukcesu dla zaprojektowania, a później 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 należy instalacja serwera baz danych, 
konserwacja oraz aktualizacji serwisów serwera. 
Prawidłowe przygotowanie środowiska pracy zapewni 
stabilność oraz pozwoli na poznanie systemu 
bazodanowego od podstaw. 

Moduł 3 

Definiowanie i 
zarządzanie bazą 
danych 

Dobry administrator Systemu Zarządzania Bazami Danych 
wie wszystko o bazach danych. W dzisiejszych czasach 
rola administratora nie ogranicza się do zarządzania 
istniejącymi bazami danych, ale również wymaga 
umiejętności zakładania, konserwacji oraz aktualizacji baz 
danych znajdujących się pod jego opieką. Moduł przybliży 
wszystkie te zagadnienia 

Moduł 4 

Wewnętrzna 
struktura bazy 
danych 

W tym module znajdziesz informacje w jaki sposób w SQL 
Server 2008 przechowywane są dane oraz w jaki sposób 
przechowywane są podstawowe obiekty w bazie danych. 

Moduł 5 

Język SQL - DCL, DDL 

Język SQL został opracowany w 1987 roku z myślą o 
relacyjnych bazach danych. Składa się on z trzech 
składowych: języka definiowania danych (DDL), języka 
sterowania danymi (DCL) oraz języka operowania na 
danych (DML). W module tym zostaną wprowadzone, a 
następnie przedstawione na przykładach podstawowe 
instrukcje języka definiowania danych – języka SQL DDL  
oraz języka sterowania danymi – języka SQL DCL. 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

 

ITA-101 Bazy danych 

 

 

Strona i-5 

Moduł 6 

Język SQL - DML 

Język SQL składa się z trzech składowych: języka 
definiowania danych (DDL), języka sterowania danymi 
(DCL) oraz języka operowania na danych (DML). W 
module tym zostaną wprowadzone, a następnie 
przedstawione na przykładach podstawowe instrukcje 
języka sterowania na danych – języka SQL DML 

Moduł 7 

Indeksy i transakcje 

W module tym znajdziesz informacje na temat dostępu 
fizycznego do danych oraz optymalizacji dostępu. 
Poznasz indeksy i ich rodzaje a następnie dowiesz się 
jakie operacje wykonywane są na indeksach. Dowiesz się, 
że jest to parametr niezbędny do zapewnienia 
rozsądnych czasów wyszukiwania informacji. W drugiej 
części poznasz transakcje, które służą do zapewnienia 
spójności bazy danych i mają wpływ na wydajność bazy 
danych. Dowiesz się, że obsługa transakcji nie jest rzeczą 
łatwą i wymaga rozwiązywania wielu trudnych 
problemów. 

Moduł 8 

Programowanie 
zaawansowane  
w T-SQL 

Programowanie w języku zapytań to ważna umiejętność. 
Powinni ją opanować zarówno programiści, jak i 
administratorzy. Różne dialekty języka SQL oferują różne 
składnie, jednak reguły, jakimi powinien kierować się 
tworzący kod, są te same niezależnie od SZBD. Bardzo 
często opanowanie w zaawansowanym stopniu składni 
jednego języka pozwala w przyszłości na łatwe 
opanowanie innego.  W module tym znajdziesz 
informację na temat zaawansowanego programowania w 
T-SQL. 

Moduł 9 

Procedury 
składowane i 
wyzwalacze 

W module zostanie zaprezentowany sposób działania 
oraz podstawy tworzenia procedur składowanych. 
Dowiesz na czym polega różnica pomiędzy zwykłym 
zapytaniem T-SQL a procedurą składowaną oraz co to jest 
kompilacja i rekompilacja procedury. Zostanie 
wprowadzony również specjalny rodzaj procedury 
składowanej – wyzwalacz. 

Moduł 10 

Bezpieczeństwo w 
bazach danych 

W tym module dowiesz się, jak należy rozumieć 
bezpieczeństwo baz danych oraz jakie są poziomy 
bezpieczeństwa. Ponadto dowiesz się, jakim zagrożeniom 
należy przeciwdziałać, a jakich nie da się uniknąć oraz jak 
należy planować implementację poszczególnych 
poziomów bezpieczeństwa w aplikacji bazodanowej. 

Moduł 11 

Praca z XML 

Wymiana danych z relacyjnymi bazami danych może być 
utrudniona ze względu na różnice programowo – 
sprzętowe itp. Rozwiązaniem jest język XML, który jest 
niezależny od standardów sprzętowych / programowych. 

Moduł 12 

Praca z Reporting 
Services 

Aby osiągnąć sukces na dzisiejszym, konkurencyjnym 
rynku, przedsiębiorstwa gromadzące duże ilości danych 
powinny wprowadzić rozwiązania biznesowe działające w 
czasie rzeczywistym zapewniające bezproblemową, 
skuteczną wymianę informacji pomiędzy własnymi 
oddziałami, swoimi partnerami, a także klientami. 
Microsoft SQL Server Reporting Services jest 
rozwiązaniem, które pozwala szybko i komfortowo dzielić 
i udostępniać dane biznesowe, przy niższych nakładach 
rozmaitych zasobów. 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

 

ITA-101 Bazy danych 

 

 

Strona i-6 

Moduł 13 

Budowa interfejsu 

W module tym napiszemy aplikację , która będzie 
wyciągała informacje z bazy danych Prace Dyplomowe. 
Zostanie pokazane jak za pomocą Visual Studio 
utworzyć bazę danych, jak połączyć się z bazą danych w 
jaki sposób wprowadzać dane. Następnie stworzymy 
aplikacje Windows, która będzie korzystała z tych 
danych. 

Dodatek 

Podstawy 

W tym module zajmiemy się zebraniem 
najważniejszych informacji na temat baz danych 
niezbędnych do zrozumienia i pełnego wykorzystania 
dalszych modułów. Zebrane, najważniejsze pojęcia nie 
zastępują pełnego wykładu na ten temat i nie zwalniają 
Cię z przestudiowania wykładu lub podręcznika z 
zakresu baz danych. Mają one jedynie na celu zebrać i 
utrwalić najważniejsze elementy potrzebne do 
wykonywania kolejnych modułów. Zazwyczaj pierwsze 
zajęcia laboratorium są zajęciami organizacyjnymi. 

 

background image

 

 

ITA-101 Bazy danych 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 1 

Wersja 1.0 

Budowa diagramów ERD 

Spis treści 

Budowa diagramów ERD ...................................................................................................................... 1 

Informacje o module ............................................................................................................................ 2 

Przygotowanie teoretyczne ................................................................................................................. 3 

Przykładowy problem .................................................................................................................. 3 

Podstawy teoretyczne.................................................................................................................. 3 

Przykładowe rozwiązanie ............................................................................................................. 7 

Porady praktyczne ..................................................................................................................... 12 

Uwagi dla studenta .................................................................................................................... 13 

Dodatkowe źródła 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 

 

 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Moduł 1 

ITA-101 bazy danych 

 

Budowa diagramów ERD 

Strona 2/18 

Informacje o module 

Opis modułu 

W  tym  module  zajmiemy  się  pierwszym  krokiem,  jaki  należy  wykonać 
projektując  bazę  danych.  Będzie  nim  identyfikacja  encji  i narysowanie  na 
diagramie,  zwanym  diagramem  ERD,  zależności  między  nimi.  Prawidłowy 
i przejrzysty  diagram  ERD  jest  kluczowym  czynnikiem  sukcesu  dla 
zaprojektowania, a później eksploatacji bazy danych. 

Cel modułu 

Celem  modułu  jest  wykształcenie  umiejętności  budowania  poprawnych, 
przejrzystych 

i dobrze 

udokumentowanych 

diagramów 

ERD 

z wykorzystaniem narzędzia MS VISIO. 

Uzyskane kompetencje 

Po zrealizowaniu modułu będziesz: 

 

rozumiał, czym jest diagram ERD, 

 

rozumiał,  w jaki  sposób  buduje  się  diagramy  związków  encji  na 
różnych poziomach abstrakcji, 

 

umiał zbudować poprawny diagram ERD, 

 

umiał  dokonać  przekształcenia  diagramu  ERD  tak,  aby  był  on 
implementowany w relacyjnej bazie danych. 

Wymagania wstępne 

Przed przystąpieniem do pracy z tym modułem powinieneś: 

 

rozumieć, czym jest baza danych i jakie powinna mieć cechy, 

 

znać założenia modelu relacyjnego baz danych. 

Mapa zależności modułu 

Przed  przystąpieniem  do  realizacji  tego  modułu  nie  są  wymagane  inne 
moduły. 

 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Moduł 1 

ITA-101 bazy danych 

 

Budowa diagramów ERD 

Strona 3/18 

Przygotowanie teoretyczne 

Przykładowy problem 

Wyobraź  sobie,  że  zostałeś  poproszony  o przygotowanie  bazy  danych  ułatwiającej  zarządzanie 
przydziałem sal i zajęć na swoim wydziale na uczelni. Pani Jola zajmująca się przydzielaniem sal na 
zajęcia chciałaby uzyskać narzędzie do kontroli i monitorowania obciążenia sal przez różne zajęcia 
dydaktyczne  oraz  chciałaby  przy  tej  okazji  zminimalizować  liczbę  popełnianych  błędów.  Błędy 
polegają najczęściej na tym, że w jednej sali umieszczane są w tym samym czasie różne zajęcia lub 
na  tym,  że  ta  sama  grupa  studencka  ma  zajęcia  w różnych  salach  w jednym  czasie.  Pani  Jola 
chciałaby  też  mieć  możliwość  szybkiego  generowania  raportów  o przydziale  sal  i zajęć.  Dla 
uniknięcia  nieporozumień  przy  pracach  nad  narzędziem  wspomagającym  pracę  pani  Joli  zostałeś 
poproszony o przygotowanie prostego i krótkiego dokumentu przedstawiającego, jakie dane będą 
gromadzone  w bazie  danych  i jakie  będą  między  nimi  zależności.  Dokument  ten  powinien  zostać 
zweryfikowany i zaakceptowany przez panią Jolę przed przystąpieniem do dalszych prac. 

Podstawy teoretyczne 

Przy  modelowaniu  baz  danych  możemy  posłużyć  się  notacją  graficzną  modelowania  danych  – 
diagramem  związków  encji  (ERD,  ang.  Entity-Relationship  Diagram).  Jest  to  model  sieciowy 
opisujący na wysokim poziomie abstrakcji dane, które są przechowywane w systemie. 

Model ERD budowany jest przez analityka. Służy on do zobrazowania w sposób zrozumiały zarówno 
dla  projektanta,  jak  i osoby  niemającej  wykształcenia  informatycznego  (np.  klienta)  obiektów 
i związków zachodzących w projektowanej dziedzinie problemowej. 

Model  ERD  nie  jest  związany  z konkretną  implementacją  systemu  (np.  na  serwerze  MS  SQL  czy 
Oracle),  choć  jego  odmiany  mogą  zawierać  informacje  specyficzne  dla  danego  języka  lub 
środowiska implementacyjnego. Staje się on wówczas modelem projektowym 

Encja 

Encja (ang. entity) jest to coś, co istnieje, co odróżnia się od innych, o czym trzeba mieć informacje. 
Zbiory encji reprezentują zbiór elementów występujących w rzeczywistym świecie i każdy element 
tego zbioru musi posiadać następujące cechy: 

 

Każdy  element  musi  być  unikalny,  jednoznacznie  określony,  w celu  odróżnienia  go  od 
pozostałych. 

 

Każdy  element  musi  odgrywać  jakąś  rolę  w projektowanym  systemie,  nie  może  zdarzyć  się 
sytuacji, w której system może działać bez dostępu do danego elementu. 

 

Każdy element powinien być opisany przez odpowiednią liczbę atrybutów. 

W  diagramach  ERD  encja  jest  reprezentowana  przez  prostokąt,  a jej  nazwa  powinna  być 
rzeczownikiem.  

Atrybut 

Atrybut  (ang.  attribute)  jest  pewną  własnością  encji,  o której  chcemy  przechowywać  informacje. 
Atrybut jest reprezentowany przez pewną wartość. Na przykład encja Student może mieć atrybut 
Nazwisko reprezentowany przez wartość Kowalski. 

Wśród atrybutów encji wyróżniamy jeden atrybut lub zbiór atrybutów, którego wartość w sposób 
jednoznaczny identyfikuje instancję (egzemplarz) encji. Taki atrybut lub zbiór atrybutów nazywamy 
kluczem głównym encji. Klucz główny oznacza się często na wykresach symbolem PK (ang. Primary 
Key
) umieszczanym obok nazwy atrybutu. 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski

ITA-101 bazy danych 

Drugim  rodzajem  klucza 
nazywamy atrybut encji, który wskazuje na klucz główny innej encji. Klucz obcy oznacza się często 
na wykresach symbolem FK (ang. 

Związek 

Bardzo  ważnym  elementem
i warunki  określające  te  związk
związków to powiązania stopnia drugiego 
bierze  udział  dwóch  uczestników  (dwie  encje).  Mogą  występować  także 
powiązana z samą sobą), jak również 

W  zależności  od  tego,  jakiego  typu  jest  uczestnic
encje  na  słabe  lub  regularne. 
w powiązaniu, to oznacza, że encja nie może istnieć bez tego powiązania (np. encja 
nie  może  istnieć  bez  powiązania
w związku  jest  tylko  częściowe,  czyli  encja  może  istnieć  samodzielnie  bez  powiązania  (np.  encja 
Klienci może istnieć bez powiązania

Bardzo  istotnym  czynnikiem  określanym  przy  z
jako maksymalną liczbę instancji jednej encji (wystąpień
z instancją innej encji. Ze względu na wartość mocy możemy wyróżnić trzy typy powiązań:

 

jeden-do-jeden, 

 

jeden-do-wiele, 

 

wiele-do-wiele.  

Związki binarne

 

Związek jeden-do-jeden (jedno

Jest to najprostszy typ powiązania, występuje wtedy, gdy tylko jedna instancja pierwszej encji jest 
powiązana  z tylko  jedną  instancją  drugiej  encji.  Jest  to  powiązanie
ograniczenia,  gdyż  warunek  jeden  do  jednego  musi  być  zawsze  spełniony.  Opcjonalnie  przy 
powiązaniu jeden może występować również opcja żadne, oznaczana graficznie

Związek jeden-do-wiele (jedno

Najbardziej  typowym  rodzajem  powiązania  jest  powiązanie  jeden
instancja jednej encji może być połączona
na  swoją  uniwersalność  i
Opcjonalnie  przy  powiązaniu  jeden  lub  wiele  może  występować  również  opcja  żadne,  oznaczana 
graficznie w postaci okręgu.

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

 

Strona 4/18 

  stosowanym  w bazach  relacyjnych  jest  klucz  obcy.

nazywamy atrybut encji, który wskazuje na klucz główny innej encji. Klucz obcy oznacza się często 
na wykresach symbolem FK (ang. Foreign Key) umieszczanym obok nazwy atrybutu.

 

Rys. 1. Przykład klucza obcego (FK1) 

Bardzo  ważnym  elementem  w modelu  danych  są  związki  (ang.  relationship

związki  –  elementy  łączące  encje  między  sobą.  Zdecydowana  większość 

związków to powiązania stopnia drugiego – związki binarne, charakteryzujące się tym, że
bierze  udział  dwóch  uczestników  (dwie  encje).  Mogą  występować  także 

samą sobą), jak również związki ternarne (z trzema uczestnikami).

W  zależności  od  tego,  jakiego  typu  jest  uczestnictwo  encji  w danym  związku,  możemy  podzielić 
encje  na  słabe  lub  regularne.  Encje  słabe  charakteryzują  się  całkowitym  uczestnictwem

powiązaniu, to oznacza, że encja nie może istnieć bez tego powiązania (np. encja 

nie  może  istnieć  bez  powiązania  z encją  Klienci),  natomiast  uczestnictwo 

związku  jest  tylko  częściowe,  czyli  encja  może  istnieć  samodzielnie  bez  powiązania  (np.  encja 

może istnieć bez powiązania z encją Zamówienia). 

Bardzo  istotnym  czynnikiem  określanym  przy  związkach  jest  moc  powiązania
jako maksymalną liczbę instancji jednej encji (wystąpień w danej encji), które mogą być powiązane

instancją innej encji. Ze względu na wartość mocy możemy wyróżnić trzy typy powiązań:

jeden (jedno-jednoznaczny) 

Jest to najprostszy typ powiązania, występuje wtedy, gdy tylko jedna instancja pierwszej encji jest 

tylko  jedną  instancją  drugiej  encji.  Jest  to  powiązanie  wprowadzające  dosyć  znaczne 

ograniczenia,  gdyż  warunek  jeden  do  jednego  musi  być  zawsze  spełniony.  Opcjonalnie  przy 
powiązaniu jeden może występować również opcja żadne, oznaczana graficznie

wiele (jedno-wieloznaczny)

 

jbardziej  typowym  rodzajem  powiązania  jest  powiązanie  jeden-do-wiele,

instancja jednej encji może być połączona z jedną lub wieloma instancjami drugiej encji. Ze względu 

i małą  kłopotliwość,  ten  typ  powiązania  jest  najczęściej  stosowany. 

Opcjonalnie  przy  powiązaniu  jeden  lub  wiele  może  występować  również  opcja  żadne,  oznaczana 

postaci okręgu. 

Rys. 2. Związek jeden-do-wielu 

Moduł 1 

Budowa diagramów ERD 

bazach  relacyjnych  jest  klucz  obcy.  Kluczem  obcym 

nazywamy atrybut encji, który wskazuje na klucz główny innej encji. Klucz obcy oznacza się często 

) umieszczanym obok nazwy atrybutu. 

relationship)  pomiędzy  encjami 

elementy  łączące  encje  między  sobą.  Zdecydowana  większość 

charakteryzujące się tym, że w związku 

bierze  udział  dwóch  uczestników  (dwie  encje).  Mogą  występować  także  związki  unarne  (encja 

(z trzema uczestnikami). 

danym  związku,  możemy  podzielić 

charakteryzują  się  całkowitym  uczestnictwem 

powiązaniu, to oznacza, że encja nie może istnieć bez tego powiązania (np. encja Zamówienia 

atomiast  uczestnictwo  encji  regularnych 

związku  jest  tylko  częściowe,  czyli  encja  może  istnieć  samodzielnie  bez  powiązania  (np.  encja 

moc  powiązania,  która  definiuje  się 

danej encji), które mogą być powiązane 

instancją innej encji. Ze względu na wartość mocy możemy wyróżnić trzy typy powiązań: 

Jest to najprostszy typ powiązania, występuje wtedy, gdy tylko jedna instancja pierwszej encji jest 

wprowadzające  dosyć  znaczne 

ograniczenia,  gdyż  warunek  jeden  do  jednego  musi  być  zawsze  spełniony.  Opcjonalnie  przy 
powiązaniu jeden może występować również opcja żadne, oznaczana graficznie w postaci okręgu. 

wiele,  w którym  pojedyncza 

jedną lub wieloma instancjami drugiej encji. Ze względu 

jest  najczęściej  stosowany. 

Opcjonalnie  przy  powiązaniu  jeden  lub  wiele  może  występować  również  opcja  żadne,  oznaczana 

 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Moduł 1 

ITA-101 bazy danych 

 

Budowa diagramów ERD 

Strona 5/18 

Związek wiele-do-wiele (wielo-wieloznaczny) 

Powiązania tego typu występują równie często jak powiązania jeden do wielu, jednak nie dają się 
bezpośrednio implementować w relacyjnych bazach danych. Są one realizowane przy pomocy encji 
pośrednich  (w  modelu  relacyjnym  są  to  tabele  sprzęgające)  powiązanych  z encjami  pierwotnymi 
przy pomocy powiązań jeden do wielu. 

W  powiązaniu  wiele-do-wiele  encjami  głównymi  są  encje  pierwotne,  natomiast  encją  obcą  jest 
relacja  sprzęgająca,  która  zwiera  klucze  główne  relacji  oryginalnej.  Dlatego  w powiązaniu 
jeden-do-wiele  pomiędzy  relacjami  pierwotnymi  a relacją  obcą,  po  stronie  relacji  oryginalnej 
znajduje się strona „jeden” powiązania jeden-do-wiele, a po stronie relacji obcej znajduje się strona 
„wiele”  z tego  powiązania.  Związki  wiele-do-wiele  nie  są  bezpośrednio  implementowane 
w relacyjnych bazach danych i wymagają dodatkowych przekształceń. 

 

Rys. 3. Związek wiele-do-wielu 

Związki unarne 

Powiązania  tego  typu  mają  tylko  jednego  uczestnika,  czyli  relację,  która  jest  powiązana  sama  ze 
sobą.  Powiązanie  realizowane  jest  w podobny  sposób  jak  w przypadku  powiązań  binarnych,  ale 
odnosi się do jednej encji. Klucz główny tej encji jest dodawany do tej encji. 

 

Rys. 4. Związek unarny  

Powiązania unarne tak jak powiązania binarne mogą być różnej mocy. To znaczy mogą występować 
powiązania jeden do wielu, które mogą być opcjonalne po stronie „jeden”. Ten typ powiązania jest 
stosowany przy odwzorowywaniu struktur hierarchicznych. 

Powiązania  unarne  mogą  być  również  realizowane  jako  powiązania  wiele  do  wielu.  Wtedy, 
podobnie jak przy powiązaniach binarnych, muszą być modelowane przy użyciu tabeli sprzęgającej.  

Związki ternarne

 

Są to powiązania, w skład których wchodzą trzy związane ze sobą encje. Powiązania te, podobnie 
jak  powiązania  wiele-do-wiele,  nie  mogą  być  realizowane  bezpośrednio  w relacyjnych  bazach 
danych. 

 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Moduł 1 

ITA-101 bazy danych 

 

Budowa diagramów ERD 

Strona 6/18 

 

Rys. 5. Związek ternarny  

Związki  ternarne  nie  są  bezpośrednio  implementowane  w relacyjnych  bazach  danych  i wymagają 
dodatkowych przekształceń.  

Notacje związków

 

W  praktyce  spotkasz  się  z różnymi  sposobami  reprezentacji  graficznej  związków  (dla  przykładu: 
w programach służących m.in. do projektowania diagramów ERD takich jak Visio lub IBM Rational 
Rose  możliwe  jest  użycie  kilku  różnych  notacji).  Bodaj  najpopularniejsza  jest  notacja  czysto 
graficzna.  

Metody przekształcania związków 

Związki binarne wiele-do-wiele oraz związki ternarne nie są implementowane w relacyjnych bazach 
danych.  Przed  zamodelowaniem  ich  w bazie  relacyjnej    wymagają  one  pewnych  przekształceń. 
Przykłady takich przekształceń zaprezentowane są poniżej 

Przekształcanie związków wielo-wieloznacznych 

Jeśli mamy związek binarny wielo-wieloznaczny, to należy wprowadzić dodatkową encję oraz dwa 
nowe  związki  jednoznaczne.  Nowa  encja  powinna  wśród  atrybutów  zawierać  klucze  obce 
odnoszące się do kluczy głównych dwóch pozostałych encji. 

 

Rys. 6. Przekształcanie związków binarnych wielo-wieloznacznych  

Przekształcanie związków ternarnych 

Przy przekształcaniu związków ternarnych postępujemy podobnie jak w wypadku związków wielo-
wieloznacznych  binarnych.  Wprowadzamy  wówczas  dodatkową  encję  oraz  3  nowe  związki 
jednoznaczne. 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Moduł 1 

ITA-101 bazy danych 

 

Budowa diagramów ERD 

Strona 7/18 

 

Rys. 7. Przekształcanie związków ternarnych  

Podobnie postępujemy, jeśli mamy do czynienia ze związkami o większej liczbie argumentów. 

Podsumowanie  

W  tym  rozdziale  przedstawione  zostało  podejście  do  modelowania  konceptualnego  bazy  danych 
z wykorzystaniem techniki zwanej diagramami związków encji. 

Dowiedziałeś się, czym jest encja, jakie posiada cechy oraz czym jest związek encji. Pamiętaj, że nie 
wszystkie typy związków encji są bezpośrednio implementowane w relacyjnej bazie danych. Związki 
typu  wiele  do  wielu  oraz  związki  więcej  niż  dwu  encji  wymagają  przekształcenia  modelu 
konceptualnego  do  postaci  dającej  się  implementować  w modelu  relacyjnym.  Przekształcenie  to 
polega zazwyczaj na wprowadzeniu dodatkowej encji i dodaniu nowych związków.  

Projektując  bazę  danych  warto  zawsze  rozpocząć  modelowanie  danych  od  diagramów  ERD. 
Diagramy  takie  powinny  przede  wszystkim,  w pierwszym  etapie  projektowania,  odzwierciedlać 
w możliwie przejrzysty sposób dane i zależności występujące w świecie rzeczywistym – na przykład 
obiekty biznesowe i zależności między nimi. W pierwszym etapie diagram ERD pokazuje więc często 
związki  wiele  do  wielu  oraz  związki  wieloencyjne  (rzadziej).  Kolejne  kroki  prowadzą  do 
przekształcania takiego diagramu aż do postaci modelu zgodnego z modelem relacyjnym.  

Przykładowe rozwiązanie 

Przypomnijmy  problem  z początku  tego  rozdziału  dotyczący  przygotowania  bazy  danych 
ułatwiającej zarządzanie przydziałem sal i zajęć na wydziale uczelni.  

Naszym celem jest przygotowanie modelu danych, który będzie spełniał dwa podstawowe cele: 

 

pozwalał zweryfikować wymagania stawiane przez panią Jolę oraz 

 

stanowił podstawę do zbudowania relacyjnej bazy danych. 

Jak  widać  musimy  posłużyć  się  językiem  wyrazu  zrozumiałym  zarówno  dla  osoby  niemającej 
wykształcenia czy tez doświadczenia informatycznego jak i przydatnym dla informatyka budującego 
bazę  danych.  Jaki  środek  wyrazu,  język  wybrać?  Dosyć  powszechny  jest  tutaj  pogląd,  że  takim 
uniwersalnym  środkiem    wyrazu  spełniającym  stawiane  przed  nami  wymagania  jest  język 
obrazkowy – diagramy związków encji.  

Sformułujmy więc teraz cel naszych działań w następujący sposób:  

Naszym  zadaniem  jest  opracowanie  diagramu  związków  encji,  który  będzie  jednoznacznie 
i przejrzyście  przedstawiał  wymagania  pani  Joli  w zakresie  przetwarzanych  przez  nią  danych  oraz 
umożliwiał zbudowanie na jego podstawie relacyjnej bazy danych. 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Moduł 1 

ITA-101 bazy danych 

 

Budowa diagramów ERD 

Strona 8/18 

Przypominamy,  że  diagram  związków  encji  powstaje  w sposób  iteracyjny.  Wynikiem  naszych  prac 
powinien być nie jeden diagram, ale zestaw diagramów przedstawiający nasz problem na różnych 
poziomach abstrakcji (np. z różną liczbą szczegółów). 

Spróbujemy teraz przedstawić w punktach nasze działania. Co więc i w jakiej kolejności powinniśmy 
wykonać? 

Krok 1  

Powinniśmy  uważnie  wysłuchać,  co  ma  do  powiedzenia  ekspert  dziedzinowy,  czyli  pani  Jola.  Na 
podstawie  zebranych  informacji  możemy  zidentyfikować  i wypisać  encje  występujące  w naszym 
problemie. Dobrym zwyczajem jest też wypisanie kilku przykładowych instancji encji dla każdej ze 
zidentyfikowanych encji. 

Krok 2 

Powinniśmy  zidentyfikować  związki  występujące  między  encjami.  Dobrze  jest  nazwać  te  związki 
i określić  role,  jakie  w nich  odgrywają    poszczególne  encje.  Koniecznie  powinniśmy  też 
zidentyfikować liczności związków. 

Krok 3 

Powinniśmy wykonać pierwszy rysunek diagramu związków encji, na którym zamieszczamy: 

 

nazwa encji, 

 

związki między encjami, 

 

liczności związków. 

Warto  też  umieścić  na  nim  nazwy  związków  i nazwy  ról.  Często  jednak  dla  zachowania 
przejrzystości rysunku rezygnujemy z umieszczania na diagramie ERD tych informacji. 

UWAGA:  Diagram  związków  encji  będący  wynikiem  kroku  3  jest  często  w postaci 
nieznormalizowanej i nierealizowalnej w bazie relacyjnej (np. przedstawia związki wiele do wielu). 
Na tym etapie najczęściej nie należy dokonywać przekształceń tego diagramu. 

Krok 4 

Diagram  z kroku  3  powinniśmy  skonsultować  z ekspertem  dziedzinowym.  Na  tym  etapie  diagram 
ERD  nie  zawiera  zbyt  wiele  szczegółów,  jest  więc  prosty  i przejrzysty.  Pozwoli  nam  to  na 
upewnienie  się,  że  dobrze  zrozumieliśmy  stawiane  przez  eksperta  wymagania  dotyczące 
przetwarzanych  danych  oraz  umożliwi  dokonanie  niezbędnych  poprawek  i uzupełnień  już  na  tym 
wstępnym etapie. 

Krok 5 

Rozpoczynamy  identyfikowanie  atrybutów  dla  każdej  z przedstawionych  na  diagramie  encji. 
Powinniśmy  zidentyfikować  wszystkie  atrybuty,  które  są  wykorzystywane  w procesach 
opisywanych przez eksperta dziedzinowego – czyli tak zwane atrybuty biznesowe. Nie wszystkie ze 
zidentyfikowanych  na  tym  etapie  atrybutów  muszą  znaleźć  swoje  odzwierciedlenie  w końcowym 
projekcie bazy danych.  

Na przykład: na pewnym wydziale po drugim roku studiów dokonywany jest przez studenta wybór 
specjalizacji  dalszych  studiów.  O klasyfikacji  na  specjalizację  decyduje,  w wypadku  braku  miejsc, 
średnia  ocen  uzyskanych  przez  studenta  z pierwszych  czterech  semestrów  studiów.  Dla  osoby 
opisującej proces klasyfikacji studentów na specjalizację istotnym atrybutem każdego studenta jest 
jego  średnia  z pierwszych  czterech  semestrów  nauki.  Powinniśmy  dla  encji  Student 
zidentyfikować  atrybut  biznesowy  srednia_z_czterech_semestrow.  W trakcie  kolejnych 
iteracji  budowy  diagramu  ERD  możemy  zdecydować,  że  nie  będziemy  przechowywać  w bazie  tej 
średniej, ale wyliczać ją, gdy będzie potrzebna, na podstawie ocen cząstkowych. 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Moduł 1 

ITA-101 bazy danych 

 

Budowa diagramów ERD 

Strona 9/18 

Krok 6 

Diagram z kroku 5 powinniśmy skonsultować z ekspertem dziedzinowym. 

Krok 7 

Dla  każdego  atrybutu  powinniśmy  zidentyfikować  i zapisać  jego  dziedzinę.  Pamiętaj,  że  dziedzina 
atrybutu  to  nie  to  samo,  co  jego  typ.  Dziedzina  związana  jest  z wyższym  poziomem  abstrakcji 
modelu  i dotyczy  wartości,  które  może  przyjmować  atrybut  wynikających  z modelu  biznesowego 
procesu.  Typ  natomiast  związany  jest  z niższym  poziomem  abstrakcji  modelu  i dotyczy 
reprezentacji  danych  w silniku  bazy  danych.  Na  przykład  dziedziną  dla  atrybutu  Ocena  może  być 
zbiór { 2; 3; 3,5; 4; 4,5; 5 }, a typem tego atrybutu Integer. 

Krok 8 

Diagram lub tabelę z kroku 7 powinniśmy skonsultować z ekspertem dziedzinowym. 

Krok 9 

Po zaakceptowaniu diagramu związków encji przez eksperta dziedzinowego możemy przystąpić do 
normalizacji,  określenia  kluczy  głównych  i kluczy  obcych,  dokonać  zmian  atrybutów  (na  przykład 
dodać  atrybuty  sztuczne)  oraz  przekształcenia  związków  nierealizowalnych  w modelu  relacyjnym 
(np. zamiana związków wiele do wielu na związki jedne do wielu).  

Krok 10 

Proponujemy aby w tym kroku określić typy wszystkich atrybutów uwzględniając typy silnika bazy 
danych,  na  której  będzie  realizowana  baza  danych,  zdefiniować  niezdefiniowane  jeszcze  klucze 
główne i klucze obce oraz wskazać pola indeksowane. 

 Na  zakończenie  powinniśmy  dokonać  przeglądu  diagramu  ERD  pod  kątem  jego  spójności 
i kompletności.  W naszym  wypadku  zadanie  jest  dosyć  proste,  gdyż  problem,  z którym  mamy  do 
czynienia nie jest skomplikowany. Przystępujemy więc do kolejnych kroków budowy diagramu ERD. 

Krok 1 

Po spotkaniu z panią Jolą identyfikujemy trzy encje: Sala, Zajecia i Grupa. 

Przygotowujemy też zestawienie przykładowych instancji encji. 

Tabela 1. Zestawienie instancji encji 
Encja 

Sala 

Zajęcia 

Grupa 

Przykład 

instancji 

encji 

110 

C155 

A001 

Bazy danych – wykład 

Bazy 

danych 

– 

laboratorium 

Podstawy informatyki 

Programowanie 
obiektowe 

101 

112 

203 

315c 

Krok 2 

Identyfikujemy związki: 

Tabela 2. Liczności związków 
Nazwa związku 

Encje 

Liczności 

Zajecia_w_Sali 

Sala, Zajęcia  

Wiele do jeden (*..1) 

Grupa_na_zajeciach 

Grupa, Zajęcia 

Wiele do wiele (*..*) 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Moduł 1 

ITA-101 bazy danych 

 

Budowa diagramów ERD 

Strona 10/18 

Krok 3 

Przedstawiamy diagram ERD z uwzględnieniem związków i ich liczności.  

 

Rys. 8. Diagram ERD z uwzględnieniem związków i ich liczności  

Krok 4 

Pani Jola po obejrzeniu naszego diagramu zauważa, że mogą być zajęcia, które w danym semestrze 
nie  odbywają  się,  ale  znajdują  się  w katalogu  zajęć  (np.  przedmiot  obieralny,  który  nie  został 
w danym semestrze wybrany przez wystarczającą liczbę chętnych). Nie są one przypisane do żadnej 
sali ani do grupy studentów.  

Dostrzegamy  też  błąd  polegający  na  początkowym  przypisaniu  do  konkretnej  sali  tylko  jednych 
zajęć.  Oczywiście  na  taki  luksus  żaden  wydział  nie  może  sobie  pozwolić.  Zamieniamy  liczność 
związku Zajęcia_w_Sali na wiele do wielu. 

Uwagę  tę  powinniśmy  uwzględnić  na  naszym  diagramie  ERD. Wprowadzamy  stosowną  poprawkę 
na diagramie. 

 

Rys. 9. Diagram ERD po uwzględnień poprawy liczności związku  

Krok 5 

Przystępujemy  do  identyfikacji  atrybutów. Wygodnie  jest  informacje  o atrybutach  zebrać  w tabeli 
podając jednocześnie przykład wartości atrybutu. 

Tabela 3. Przykładowe wartości atrybutów 
Encja 

Atrybut 

Przykład 

Sala 

Numer Sali 

C101 

Liczba miejsc 

120 

Zajecia 

Nazwa zajęć 

Bazy danych – wykład 

Grupa 

Nazwa grupy 

112 

Liczność 

35 

Na diagramie ERD: 

 

Rys. 10. Diagram ERD z zaznaczonymi atrybutami  

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Moduł 1 

ITA-101 bazy danych 

 

Budowa diagramów ERD 

Strona 11/18 

Krok 6 

Pokazujemy nasz diagram ERD pani Joli. Jeśli zostanie on zaakceptowany, przechodzimy do kroku 
siódmego. 

Krok 7 

Powinniśmy  teraz  określić  dla  każdego  atrybutu  jego  dziedzinę.  Najwygodniej  będzie  nam  to 
wykonać znowu w postaci tabelki takiej jak tabela xxx uzupełnionej o kolumnę Dziedzina atrybutu

Tabela 4. Dziedziny atrybutów 

Encja 

Atrybut 

Przykład 

Dziedzina atrybutu 

Sala 

Numer 
sali 

C101 

Ciąg 

składający 

się 

z litery 

reprezentującej  budynek  oraz  co 
najwyżej czterech cyfr 

Liczba 
miejsc 

120 

Przedział od 15 do 250 

Zajecia  Nazwa 

zajęć 

Bazy danych – wykład 

Lista zajęć 

Grupa 

Nazwa 
grupy 

112 

Ciąg  składający  się  z 3  lub  4  cyfr 
i/lub litery 

Liczność  35 

Przedział od 12 do 40 

Krok 8 

Powinniśmy  znowu  skonsultować  wyniki  naszej  pracy  z panią  Jolą.  Jeśli  uzyskamy  akceptację, 
możemy  przejść  do  kroku  dziewiątego.  W przeciwnym  razie  nanosimy  poprawki  i ponownie 
prosimy o akceptację. 

Krok 9 

Jeśli  dobrnęliśmy  aż  tutaj,  to  oznacza,  że  zakończyliśmy  konsultację  z panią  Jolą  i możemy 
przystąpić  do  prac  zmierzających  do  nadania  naszemu  modelowi  postaci  dającej  się 
zaimplementować w relacyjnej bazie danych.  

W  naszym  diagramie  ERD  występują  związki  wiele  do  wiele.  Są  to  związki  nieimplementowane 
bezpośrednio  w modelu  relacyjnym,  dlatego  musimy  dokonać  ich  przekształcenia.  Wprowadzamy 
nowe encje ObciazenieSali i ZajeciaGrupy tak jak na rysunku. 

 

Rys. 11. Diagram ERD 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Moduł 1 

ITA-101 bazy danych 

 

Budowa diagramów ERD 

Strona 12/18 

Informację  na  diagramie  możemy  uzupełnić  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  przeglądu  naszego  modelu  ERD.  Rzadko  kiedy  pierwsze  podejście 
będzie  całkowicie  wolne  od  błędów,  pomyłek  czy  niedopatrzeń,  dlatego  zawsze  należy 
przeprowadzić weryfikację poprawności diagramu. 

Porady praktyczne 

 

Pamiętaj,  że  diagram  związków  encji  ma  być  zrozumiały  nie  tylko  dla  informatyka.  Ma  on 
służyć  dialogowi  między  projektantem  a użytkownikiem,  który  formułuje  wymagania  dla 
przyszłej bazy danych. Modelując dane należy posługiwać się jasnym, prostym i przejrzystym 
językiem i formami wyrazu. 

 

Budując  diagram  związków  encji  nie  spiesz  się.  Nie  dokonuj  zbyt  pochopnie  przekształceń 
i nie  wprowadzaj  od  razu  zbyt  wielu  szczegółów,  nawet  jeśli  przekształcenia  wydają  Ci  się 
oczywiste, a definiowanie typów danych czy określanie kluczy natychmiastowe. Pamiętaj, że 
kluczowym elementem budowanych diagramów jest ich czytelność i zrozumiałość dla osoby 
definiującej  wymagania,  czyli  tak  zwanego  eksperta  dziedzinowego  (w  każdym  razie 
w początkowych etapach tworzenia diagramów ERD). 

 

Przy identyfikowaniu encji bardzo zachęcamy do tego, aby zawsze wypisać kilka przykładów 
instancji encji. Podejście to pozwala na lepsze zrozumienie świata rzeczywistego i weryfikację 
poprawności  identyfikacji  encji.  Nazwa  encji  często  nie  oddaje  jej  istoty  i może  być  różnie 
rozumiana przez różne osoby biorące udział w budowaniu modelu danych. Szybko docenisz 
tę technikę podczas dialogu z przyszłym użytkownikiem bazy, który z pewnością będzie lepiej 
rozumiał prezentowane przez Ciebie modele. 

 

Rysowanie diagramów związków encji najlepiej zacząć od rysowania na dużej kartce papieru 
lub  tablicy.  Dopiero  pod  koniec  (krok  9)  warto  jest  przenieść  diagramy  związków  encji  do 
narzędzia  wspomagającego  pracę  z diagramami  ERD.  Narzędzi  takich  jest  wiele.  My 
proponujemy  wykorzystać  do  tego  celu  program  MS  Visio  –  znany  i wygodny  program  do 
rysowania wyposażony w specjalny moduł wspomagający projektowanie baz danych. 

 

Zwracamy  uwagę,  że  w teorii  relacyjnych  baz  danych  pod  pojęciem  relacji  rozumie  się 
dwuwymiarową tabelę danych. Tabele te odpowiadają na etapie projektowym pojęciu encji, 
natomiast  powiązania  między  tabelami  (encjami)  noszą  nazwę  związków.  W niektórych 
aplikacjach  i  w żargonie  informatycznym  słowo  relacja  ma  jednak  czasem  inne  znaczenie 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Moduł 1 

ITA-101 bazy danych 

 

Budowa diagramów ERD 

Strona 13/18 

i oznacza  powiązanie  między  tabelami  (encjami),  czyli  związek.  Takie  nazewnictwo 
stosowane jest na przykład w polskich wersjach aplikacji firmy Microsoft. 

 

Ostateczny  projekt  bazy  danych  zależy  w istotnym  stopniu  od  zwyczajów  i upodobań 
projektanta.  Modele  ERD  bazy  danych  zbudowane  dla  tego  samego  problemu  mogą  się 
różnić.  Nie  zawsze  potrafimy  jednoznacznie  wskazać,  który  z modeli  jest  lepszy.  Często  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 języka UML. Modelowanie w języku UML bazuje na podejściu obiektowym 
do  analizy  i projektowania  systemów.  Choć  założenia,  na  których  opiera  się  modelowania 
diagramami ERD i językiem UML są inne, to jednak ogólna droga postępowania jest bardzo 
podobna. Jeśli znasz język UML i zasady modelowania obiektowego, to do projektowania baz 
danych możesz zamiast diagramów ERD wykorzystać diagramy klas języka UML. 

Uwagi dla studenta 

Jesteś przygotowany do realizacji laboratorium, jeśli: 

 

rozumiesz, czym jest encja i związek między encjami, 

 

rozumiesz, na czym polega proces dochodzenia do końcowego diagramu związków encji, 

 

umiesz  dokonać  przekształcenia  związków  nieimplementowanych  w relacyjnych  bazach 
danych do związków binarnych jednoznacznych, 

 

potrafisz przedstawić diagram ERD na różnym poziomie abstrakcji, 

 

wiesz,  jakie  jest  znaczenie  słowa  relacja  w teorii  relacyjnych  baz  danych  i  w żargonie 
informatycznym. 

Pamiętaj  o zapoznaniu  się  z uwagami  i poradami  zawartymi  w tym  module.  Upewnij  się,  że 
rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego 
w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. 

Dodatkowe źródła informacji 

1.

 

Rebeca R. Riordan, Projektowanie relacyjnych baz danych, Microsoft Press, 2000 

Książka  poświęcona  jest  praktycznym  aspektom  projektowania  relacyjnych  baz 
danych  w środowisku  aplikacji  firmy  Microsoft.  Znajdziesz  w niej  między  innymi 
przegląd  modeli  normalizacyjnych,  których  nie  omawialiśmy  w tym  module 
bezpośrednio. Rebeca Riordan znana jest z łatwego i zrozumiałego języka i łatwości 
tłumaczenia  zagadnień  trudnych.  Ten  swój  talent  wykorzystuje  również  w tej 
pozycji.  Jeśli  nie  interesuje  Cię  zgłębianie  teoretycznych  podstaw  działania  baz 
danych, a bardziej nastawiony jesteś na praktyczne wykorzystanie wiedzy, to jest to 
książka dla Ciebie. 

2.

 

C.J.Date, Wprowadzenie do systemów baz danych, WNT, 2000 

Jest  to  pełny  podręcznik  do  wykładu  z baz  danych  znanego  i cenionego  na  całym 
świecie  autora.  Znajdziesz  w nim  szersze  spojrzenie  na  problematykę  budowy 
i modelowania  baz  danych.  Polecamy  ją  wszystkim,  którzy  chcieliby  poszerzyć 
swoje wiadomości z tego zakresu. 

3.

 

System pomocy programu Visio 

Jeśli po raz pierwszy spotykasz się z programem Visio, to zajrzyj koniecznie do jego 
systemu  pomocy.  Znajdziesz  tam  wszystkie  niezbędne  informacje,  aby  efektywnie 
korzystać z tego oprogramowania.  

 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski

ITA-101 bazy danych 

Laboratorium podstawowe

Problem (czas realizacji 

Jesteś  projektantem  bazy  danych.
użytkownikiem  bazy)  opracowałeś  model  diagramu  związków  encji  opisany
Przykładowe rozwiązanie. Model
na papierze. Teraz warto jest przenieść tę dokumentację „do
archiwizację  modelu,  wprowadzanie  zmian
Dodatkowo  może  też  skrócić  czas  projektowania  bazy  danych  dzięki  wykorzystaniu  narzędzi  RAD 
(ang. Rapid Application Design
bazy  danych  wybrana  została  aplikacji  MS  Viso  2007.  Twoim  zadaniem  będzie  utworzenie  przy 
pomocy tego programu modelu danych

 

Zadanie 

Tok postępowania

1.

 

Uruchom 

projekt bazy 
danych 
w programie MS 
Visio 2007 

 

Uruchom aplikację MS Visio 2007

 

Z  panelu 
grupę 
 

2.

 

Wprowadź 

tabele 

 

W  obszarze  roboczym  wyłącz  linie  siatki  wybierając 
Widok

 

Z  zasobnika 
roboczy  (kartka).  Na  obszarze  roboczym  zostanie  utworzona  encja
o

 

Zaznacz  encję 
element 
tekst 

 

Powtórz powyższe czynności dla pozostałych encji

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

 

Strona 14/18 

Laboratorium podstawowe 

Problem (czas realizacji 40 min) 

Jesteś  projektantem  bazy  danych.  W wyniku  spotkań  z ekspertem  dzied
użytkownikiem  bazy)  opracowałeś  model  diagramu  związków  encji  opisany

. Model i wszystkie dodatkowe dane (np. tabele) zostały zapisane jedynie 

na papierze. Teraz warto jest przenieść tę dokumentację „do komputera”. Umożliwi to łatwiejszą 
archiwizację  modelu,  wprowadzanie  zmian  i wymianę  informacji  między  członkami  zespołu. 
Dodatkowo  może  też  skrócić  czas  projektowania  bazy  danych  dzięki  wykorzystaniu  narzędzi  RAD 

Rapid Application Design). Jako aplikację wspomagającą prace na tym etapie budowy modelu 

bazy  danych  wybrana  została  aplikacji  MS  Viso  2007.  Twoim  zadaniem  będzie  utworzenie  przy 
pomocy tego programu modelu danych i diagramu ERD zgodne z wymaganiami „papierowymi”.

Tok postępowania 

Uruchom aplikację MS Visio 2007. 
Z  panelu  Wprowadzenie  do  programu  Microsoft  Office  Visio
grupę Diagram modelu bazy danych
 

W  obszarze  roboczym  wyłącz  linie  siatki  wybierając 
Widok -> Siatka
Z  zasobnika  Model  encja-relacja  przeciągnij  element 
roboczy  (kartka).  Na  obszarze  roboczym  zostanie  utworzona  encja
o nazwie Tabela1
Zaznacz  encję  Tabela1.  W oknie  Właściwości  bazy  danych
element  Definicja,  a następnie  w polu  Nazwa  koncepcyjna
tekst Sala

Nazwa encji na obszarze roboczym powinna zmienić się na 

Powtórz powyższe czynności dla pozostałych encji

Rys. 13. Fragment okna programu Visio 

Moduł 1 

Budowa diagramów ERD 

ekspertem  dziedzinowym  (przyszłym 

użytkownikiem  bazy)  opracowałeś  model  diagramu  związków  encji  opisany  w rozdziale 

wszystkie dodatkowe dane (np. tabele) zostały zapisane jedynie 

komputera”. Umożliwi to łatwiejszą 

wymianę  informacji  między  członkami  zespołu. 

Dodatkowo  może  też  skrócić  czas  projektowania  bazy  danych  dzięki  wykorzystaniu  narzędzi  RAD 

ikację wspomagającą prace na tym etapie budowy modelu 

bazy  danych  wybrana  została  aplikacji  MS  Viso  2007.  Twoim  zadaniem  będzie  utworzenie  przy 

wymaganiami „papierowymi”. 

Wprowadzenie  do  programu  Microsoft  Office  Visio  wybierz 

W  obszarze  roboczym  wyłącz  linie  siatki  wybierając  polecenie 

przeciągnij  element  Encja  na  obszar 

roboczy  (kartka).  Na  obszarze  roboczym  zostanie  utworzona  encja 

Właściwości  bazy  danych  wskaż 

Nazwa  koncepcyjna  wprowadź 

Nazwa encji na obszarze roboczym powinna zmienić się na Sala

Powtórz powyższe czynności dla pozostałych encji w modelu. 

 

. Fragment okna programu Visio  

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski

ITA-101 bazy danych 

3.

 

Wprowadź 

atrybuty 

 

Zaznacz encję 

 

W oknie 

 

W kolumnie 

 

Na dole okna 
wybór 
jest inny sterownik wybierz
a  w
Microsoft SQL Server

 

jako  typ  danych 
pole  jako 
symbol budynku

 

Wprowadź  pozostałe kolumny  tabeli 
jest kluczem głównym
Wprowadź  atrybuty  pozostałych  tabel.  Pamiętaj
kolumny stanowią kluc

4.

 

Zmień widok 

dokumentu 

 

Przejdź  do  menu 
dokumentu  bazy  danych
modelu ERD.

5.

 

Dodaj związki 

między encjami 

 

Z  zasobnika 
roboczy  (kartka).  Na  obszarze  roboczym  zostanie  utworzona  relacja. 
Przeciągnij końce relacji odpowiednio na encje 
aby  uzyskać  zakotwiczenie  relacji
program wyróżnia encję czerwonym obramowaniem)

 

Wskaż  utworzoną  relację.
kategorię 
fizyczna

 

Przejdź do kate
różnych  opcji  kardynalności  (liczności). 
zdaniem kardynalności dla tej relacji.

 

Zdefiniuj pozostałe związki między encjami.

6.

 

Zmiana notacji 

diagramu 

 

Wybierz
zmień  zaznaczenie  opcji 
diagramie ERD.

7.

 

Zapisz model  

 

Zapisz model

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

 

Strona 15/18 

Zaznacz encję Sala
W oknie Właściwości bazy danych zaznacz element 
W kolumnie Nazwa fizyczna wprowadź Numer_Sali
Na dole okna Właściwości bazy danych upewnij się, że zaznaczony jest 
wybór  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ź  pozostałe kolumny  tabeli  Sala.  Wskaż,  że    kolumna 
jest kluczem głównym w tej tabeli. 
Wprowadź  atrybuty  pozostałych  tabel.  Pamiętaj
kolumny stanowią klucz główny oraz które wartości są wymagane.

Program  MS  Visio  pozwala  na  przestawienie  modelu  ERD
zestawem  informacji  (np.  można  ukryć  lub  pokazać  typy  danych, 
oznaczenia kluczy głównych itd.). 

Przejdź  do  menu  Baza  danych -> Opcje -> Dokument
dokumentu  bazy  danych
  wypróbuj  różne  ustawienia  wyświetlania 
modelu ERD. 

Jakie  opcje  należy  wybrać,  aby  na  diagramie  były  widoczne  typy 
danych  zdefiniowane  w oknie  Właściwości  bazy  danych
poszczególnych atrybutów? 

Z  zasobnika  Model  encja-relacja  przeciągnij  element 
roboczy  (kartka).  Na  obszarze  roboczym  zostanie  utworzona  relacja. 
Przeciągnij końce relacji odpowiednio na encje Sala
aby  uzyskać  zakotwiczenie  relacji  (jeśli  następuje  zakotwiczeni
program wyróżnia encję czerwonym obramowaniem)
Wskaż  utworzoną  relację.  W oknie  Właściwości  bazy  danych
kategorię  Nazwa.  W pola  Fraza  orzeczenia,  Fraza  odwrotna
fizyczna i Uwagi
 wpisz odpowiednie Twoim zdaniem wartości.
Przejdź do kategorii  Różne. Sprawdź, jaki wpływ na diagram ma wybór 
różnych  opcji  kardynalności  (liczności).  Ustaw  prawidłowe  Twoim 
zdaniem kardynalności dla tej relacji. 
Zdefiniuj pozostałe związki między encjami. 

Co  należy  zrobić,  aby  w widoku  roboczym  nie  były  wyświe
związki? 

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 diagramów ERD 

zaznacz element Kolumny

Numer_Sali.  

upewnij się, że zaznaczony jest 

Fizyczny  typ  danych  (Microsoft  SQL  Server).  Jeśli  wyświetlany 

-> 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ż:  Przenośny  typ 

.  Wskaż,  że    kolumna  ID_Sala 

Wprowadź  atrybuty  pozostałych  tabel.  Pamiętaj  o wskazaniu,  które 

główny oraz które wartości są wymagane. 

Program  MS  Visio  pozwala  na  przestawienie  modelu  ERD  z różnym 
zestawem  informacji  (np.  można  ukryć  lub  pokazać  typy  danych, 

Dokument  i  w karcie  Opcje 

wypróbuj  różne  ustawienia  wyświetlania 

Jakie  opcje  należy  wybrać,  aby  na  diagramie  były  widoczne  typy 

Właściwości  bazy  danych  dla 

przeciągnij  element  Relacja  na obszar 

roboczy  (kartka).  Na  obszarze  roboczym  zostanie  utworzona  relacja. 

Sala i ObciazenieSali, tak 

(jeśli  następuje  zakotwiczenie,  to 

program wyróżnia encję czerwonym obramowaniem).  

Właściwości  bazy  danych  wskaż 

Fraza  odwrotna,  Nazwa 

wpisz odpowiednie Twoim zdaniem wartości. 

. Sprawdź, jaki wpływ na diagram ma wybór 

Ustaw  prawidłowe  Twoim 

widoku  roboczym  nie  były  wyświetlane 

Dokument  i na  karcie  Relacja 

.  Zaobserwuj  zmiany  notacji  na 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Moduł 1 

ITA-101 bazy danych 

 

Budowa diagramów ERD 

Strona 16/18 

Laboratorium rozszerzone 

Zadanie 1 (czas realizacji 45 min) 

W  pewnej  uczelni  (jeśli  nie  w każdej)  student  kończący  pewien  etap  edukacji  musi  wykonać 
i obronić  pracę  końcową  zwaną  pracą  dyplomową.  Praca  dyplomowa  realizowana  jest  na  koniec 
każdego  etapu  studiów.  Tak  więc  prace  dyplomową  piszą  studenci  studiów  licencjackich, 
inżynierskich i magisterskich. W przyszłości uczelnia planuje poszerzyć swoją ofertę studiów o nowe 
rodzaje  studiów,  które  też  będą  kończyć  się  pracą  dyplomową.  Każdy  student  oprócz  imienia 
i nazwiska ma przypisany na uczelni jednoznaczny identyfikator w postaci numeru indeksu. Numer 
indeksu  jest  ciągiem  złożonym  z 10  znaków  i  w sposób  jednoznaczny  identyfikuje  studenta 
studiującego na uczelni. 

Student  chcąc  ukończyć  dany  rodzaj  studiów  musi  wybrać  temat  pracy  dyplomowej.  Z tematem 
pracy  związany  jest  oczywiście  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.  

Władze  uczelni  zachęcają  swoich  studentów  do  pisania  prac  indywidualnych.  Ale  dopuszczają 
również możliwość realizacji prac przez dwóch lub trzech studentów. Więcej osób nie może pisać 
jednej pracy dyplomowej.  

Po  napisaniu  praca  podlega  recenzji.  Recenzja  wykonywana  jest  przez  jednego  lub  kilku 
pracowników  uczelni  i oceniana.  Każdy  recenzent  może  ocenić  pracę  w skali  od  2  do  5.  Praca 
oceniana jest również przez promotora. 

Do pracy przyporządkowywane są pewne słowa ze z góry zdefiniowanego zbioru. Są to tak zwane 
słowa  kluczowe,  które  pozwalają  przypisać  tematykę  pracy  do  określonego  obszaru,  a następnie 
odnajdywać  prace  związane  z podobną  tematyką.  Słowami  kluczowymi  mogą  być:  informatyka, 
systemy operacyjne, konstrukcje żelbetowe itp. Każda praca powinna mieć przypisane co najmniej 
jedno słowo kluczowe. 

Po  napisaniu  pracy  student  przystępuje  do  obrony  pracy.  Obrona  ta  odbywa  się  w wyznaczonym 
dniu i kończy się wystawieniem pracy dyplomowej końcowej, ostatecznej oceny. 

Uczelnia  chciałaby  usprawnić  obsługę  prac  dyplomowych  i związanych  z tym  procesów.  Dlatego 
planuje  opracować system  informatyczny  wspierający  obsługę  tych  procesów. Pierwszym  etapem 
prac ma być zbudowanie bazy danych, która będzie spełniać następujące wymagania: 

1.

 

 Umożliwi  przechowywanie  informacji  o obronionych  pracach  dyplomowych  wszystkich 
studentów uczelni. 

2.

 

 Umożliwi szybkie i łatwe wyszukiwanie prac związanych z daną tematyką lub prowadzonych 
przez określonego promotora.  

3.

 

 Umożliwi raportowanie o pracach dyplomowych: 

 

recenzowanych przez pracowników uczelni, 

 

obronionych w danym dniu, miesiącu, roku, 

 

obronionych na danym rodzaju studiów. 

Zaproponuj  diagram  ERD  dla  projektowanej  bazy  danych.  Pamiętaj  również  o udokumentowaniu 
przykładowych  instancji  encji  oraz  wartości  atrybutów,  tak  jak  robiliśmy  to  w przykładowym 
rozwiązaniu w krokach piątym i siódmym. Model zapisz w pliku programu MS Visio. 

Zadanie 2 (czas realizacji 45 min) 

Wymagania  z zadania  1  okazały  się  niewystarczające.  Nasz  ekspert  dokonał  przeglądu  wymagań 
i dodał uzupełnienia. W poniższym tekście zostały one uwydatnione.  

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Moduł 1 

ITA-101 bazy danych 

 

Budowa diagramów ERD 

Strona 17/18 

Zaproponuj  diagram  ERD  dla  projektowanej  bazy  danych  po  uwzględnieniu  rozszerzeń.  Pamiętaj 
również  o udokumentowaniu  przykładowych  instancji  encji  oraz  wartości  atrybutów,  tak  jak 
robiliśmy  to  w przykładowym  rozwiązaniu  w krokach  piątym  i siódmym.  Model  zapisz  w pliku 
programu MS Visio. 

W  pewnej  uczelni  (jeśli  nie  w każdej)  student  kończący  pewien  etap  edukacji  musi  wykonać 
i obronić pracę końcową zwaną pracą dyplomową. Uczelnia składa się kilku wydziałów. Na każdym 
wydziale  studenci  mogą  być  kształceni  na  różnych  specjalizacjach,  a informacja  o wydziale 
i specjalizacji jest istotna przy wykonywaniu sprawozdań uczelni z obronionych prac dyplomowych.
 
Praca dyplomowa realizowana jest na koniec każdego  etapu studiów. Tak więc prace dyplomową 
piszą  studenci  studiów  licencjackich,  inżynierskich  i magisterskich.  W przyszłości  uczelnia  planuje 
poszerzyć  swoją  ofertę  studiów  o nowe  rodzaje  studiów,  które  też  będą  kończyć  się  pracą 
dyplomową.  Każdy  student  oprócz  imienia  i nazwiska  ma  przypisany  na  uczelni  jednoznaczny 
identyfikator  w postaci  numeru  indeksu.  Numer  indeksu  jest  ciągiem  złożonym  z 10  znaków  i 
w sposób jednoznaczny identyfikuje studenta studiującego na uczelni. 

Student  chcąc  ukończyć  dany  rodzaj  studiów  musi  wybrać  temat  pracy  dyplomowej.  Z tematem 
pracy  związany  jest  oczywiście  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.  

Władze  uczelni  zachęcają  swoich  studentów  do  pisania  prac  indywidualnych.  Ale  dopuszczają 
również możliwość realizacji prac przez dwóch lub trzech studentów. Więcej osób nie może pisać 
jednej pracy dyplomowej.  

Po  napisaniu  praca  podlega  recenzji.  Recenzja  wykonywana  jest  przez  jednego  lub  kilku 
pracowników  uczelni  i oceniana.  Każdy  recenzent  może  ocenić  pracę  w skali  od  2  do  5.  Praca 
oceniana jest również przez promotora. Ocena recenzenta i promotora nie może być zbiorczą oceną 
pracy, ale musi osobno dotyczyć każdego z autorów pracy. 

Do pracy przyporządkowywane są pewne słowa ze z góry zdefiniowanego zbioru. Są to tak zwane 
słowa  kluczowe,  które  pozwalają  przypisać  tematykę  pracy  do  określonego  obszaru,  a następnie 
odnajdywać  prace  związane  z podobną  tematyką.  Słowami  kluczowymi  mogą  być  na  przykład: 
informatyka, systemy operacyjne, konstrukcje żelbetowe. Każda praca powinna mieć przypisane co 
najmniej jedno słowo kluczowe. 

Po  napisaniu  pracy  student  przystępuje  do  obrony  pracy.  Obrona  ta  odbywa  się  w wyznaczonym 
dniu  przed  komisją  składającą  się  z 3  członków  oraz przewodniczącego  i kończy  się  wystawieniem  
ostatecznej  oceny  każdemu  studentowi  osobno.  W czasie  egzaminu  każdemu  studentowi  są 
zadawane i protokołowane trzy pytania. Każde z pytań podlega osobnej ocenie. 

Uczelnia  chciałaby  usprawnić  obsługę  prac  dyplomowych  i związanych  z tym  procesów.  Dlatego 
planuje  opracować system  informatyczny  wspierający  obsługę  tych  procesów. Pierwszym  etapem 
prac ma być zbudowanie bazy danych, która będzie spełniać następujące wymagania: 

 

1.  Umożliwi  przechowywanie  informacji  o obronionych  pracach  dyplomowych  wszystkich 

studentów uczelni. 

 

2.  Umożliwi  szybkie  i łatwe  wyszukiwanie  prac  związanych  z daną  tematyką,  wydziałem, 

specjalizacją lub prowadzonych przez określonego promotora.  

 

3. Umożliwi raportowanie o pracach dyplomowych: 

 

recenzowanych przez pracowników uczelni 

 

obronionych w danym dniu, miesiącu, roku 

 

obronionych na danym rodzaju studiów 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Moduł 1 

ITA-101 bazy danych 

 

Budowa diagramów ERD 

Strona 18/18 

4.  Umożliwić  szybkie  sprawdzenie  przebiegu  obrony  pracy  dyplomowej  danego  studenta,  w tym 
zadanych pytań i składu komisji. 

 

background image

ITA-101 Bazy Danych 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 2 

Wersja 2.0 

Instalacja i konfiguracja Microsoft SQL 

Server 2008 

Spis treści 

Instalacja i konfiguracja MS SQL Server 2008 ...................................................................................... 1 

Informacje o module ............................................................................................................................ 2 

Przygotowanie teoretyczne ................................................................................................................. 3 

Przykładowy problem .................................................................................................................. 3 

Podstawy teoretyczne.................................................................................................................. 3 

Przykładowe rozwiązanie ............................................................................................................. 6 

Porady praktyczne ..................................................................................................................... 10 

Uwagi dla studenta .................................................................................................................... 11 

Dodatkowe źródła informacji..................................................................................................... 11 

Laboratorium podstawowe ................................................................................................................ 12 

Laboratorium rozszerzone ................................................................................................................. 16 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 2 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 2/16 

Informacje o module 

Opis modułu 

W  tym  module  znajdziesz  informację  o  podstawowych    zadaniach 
administratora  systemu  bazodanowego.  Do  zadań  tych  należy  instalacja 
serwera  baz  danych,  konserwacja  oraz  aktualizacji  serwisów  serwera. 
Prawidłowe  przygotowanie  środowiska  pracy  zapewni  stabilność  oraz 
pozwoli na poznanie systemu bazodanowego od podstaw. 

Cel modułu 

Celem  modułu  jest  przedstawienie  czytelnikowi  typowych  zagadnień 
związanych z instalacją i konfiguracją serwera bazodanowego. 

Uzyskane kompetencje 

Po zrealizowaniu modułu będziesz: 

 

potrafił zaplanować instalację systemu bazodanowego 

 

potrafił  przeprowadzić  instalację  SQL  Server  2008  za  pomocą 
centrum instalacji 

 

wstępne opcje dotyczące bezpieczeństwa serwera 

 

rozumiał czym są serwisy serwera SQL i jakie mają funkcje 

 

wiedział, jak skonfigurować poszczególne serwisy serwera SQL 

Wymagania wstępne 

Przed przystąpieniem do pracy z tym modułem powinieneś: 

 

wiedzieć, jak używać oprogramowania Microsoft Virtual PC 

 

znać podstawy obsługi systemu Windows 2000 lub nowszego 

 

rozumieć,  jak  przebiega  instalacja  oprogramowania  w  systemie 
Windows 

Mapa zależności modułu 

Zgodnie z mapą zależności przedstawioną na rys. 1, nie istnieje konieczność 
wykonania wcześniej żadnego innego modułu. 

 

Rys. 1 Mapa zależności modułu 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 2 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 3/16 

Przygotowanie teoretyczne 

Przykładowy problem 

Wdrożenie nowego systemu bazodanowego nie jest procesem trywialnym. W pierwszej kolejności 
wykonywana  jest  analiza  potrzeb  organizacji  w  zakresie  gromadzenia  i  przetwarzania  informacji. 
Następnie można wybrać konkretny system z użytecznymi komponentami. Instalacja systemu, testy 
wydajnościowe i integracja z istniejącymi składnikami IT organizacji to niezbędne kroki wdrożenia, 
przeważnie oddelegowane do doświadczonego informatyka. 

Typowym  scenariuszem  jest  pojawienie  się  potrzeby  przetwarzania  coraz  większych  ilości 
informacji w małej firmie, która w związku z dogodnymi warunkami na rynku przeżywa dynamiczny 
rozwój. Obsługa rosnącej liczby klientów przysparza coraz więcej kłopotów, głównie działowi analiz. 
Na  kolejnym  zebraniu  pada  propozycja  wdrożenia  nowego  systemu  bazodanowego  opartego  na 
technologii Microsoft SQL Server 2008, który pomoże usprawnić procesy związane z obróbką coraz 
większej ilości danych o klientach, co potencjalnie przełoży się na jakość obsługi  i przyszłe zyski. 

Sygnał  i  wsparcie  finansowe  od  strony  biznesowej  jest  motorem  procesu  wdrożenia  systemu 
bazodanowego przedstawionego w tym module. 

Podstawy teoretyczne 

Właściwie każde oprogramowanie określane mianem serwera (serwer WWW, serwer baz danych) 
działa na podobnej zasadzie – opiera się na uruchomionych w systemie operacyjnym usługach. Od 
konfiguracji tych usług zależy, czy i jak będzie funkcjonował serwer. 

Instalacja 

Aby móc cokolwiek konfigurować, w pierwszej kolejności należy dokonać instalacji tego składnika. 
Podstawowym składnikiem, czyli usługą systemu bazodanowego, jest silnik (ang. Database Engine), 
odpowiadający  za  niskopoziomowe  przewarzanie  danych.  Element  ten  znajdziemy  w  każdym 
systemie bazodanowym, choć różnie może się nazywać. Wszystkie inne elementy bezpośrednio lub 
pośrednio korzystają z silnika i w przypadku jego braku lub uszkodzenia po prostu nie działają. 

Sam  silnik  jest  jednak  bardzo  niewygodny  w  obsłudze  z  punktu  widzenia  użytkownika  serwera 
bazodanowego.  W  tej  sytuacji  powstało  wiele  innych  komponentów,  które  uzupełniają  i 
usprawniają pracę z takim systemem. Narzędzia graficzne do obsługi i administracji serwera (ang. 
Client  Tools)  są  szczególnie  pomocne  dla  administratorów.  Serwis  analityczny  (ang.  Analysis 
Services
)  jest  nieoceniony  przy  przetwarzaniu  dużej  ilości  danych.  Serwis  raportujący  (ang. 
Reporting Services) usprawnia i uatrakcyjnia prezentację analizowanych danych. 

W celu integracji czynności instalacyjnych tych i innych komponentów serwera SQL administrator 
do dyspozycji ma narzędzie o nazwie Centrum Instalacji przedstawione na rys. 2. 

background image

Włodzimierz Dąbrowski, Przemysław 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 można dokonać instalacji nowej instancji serwera SQL (w jednym systemie może być 
wiele  wystąpień  serwera  bazodanowego),  zmodyfikować  komponenty  serwera,  zainstalować 
przykładowe bazy danych lub poczytać dokumentację. 

Instalacja nowej instancji serwera SQL wiąże się zawsze z kilkoma etapami: 

1.

 

Określenie komponentów serwera, które będziemy instalować. 

2.

 

Określenie miejsca w systemie operacyjnym, gdzie komponenty będą składowane. 

3.

 

Podanie kont systemowych potrzebnych do uruchomienia poszczególnych usług serwera. 

Po zakończeniu procesu instalacji powinniśmy przejrzeć i skonfigurować nowe usługi bazodanowe, 
które pojawiły się w naszym systemie operacyjnym. 

Usługa serwera 

Silnik 

Silnik  serwera  bazodanowego,  odpowiedzialny  za  przechowywanie  danych,  utrzymywanie 
spójności  danych  i  obsługę  poleceń  języka  zapytań  najczęściej  jest  tożsamy  z  główną  usługą 
serwera.  Aby  użytkownicy  mogli  stale  korzystać  z  tej  usługi,  powinna  być  ona  uruchomiona 
praktycznie  zawsze  (nie  licząc  czasu  na  ewentualne  prace  administracyjne,  wymagające  przejścia 
serwera w tryb offline). 

Dodatkowo,  ponieważ  niektóre  czynności  wymagają  restartu  samej  maszyny,  usługa  ta  powinna 
być  skonfigurowana  jako  uruchamiana  wraz  ze  startem  systemu  operacyjnego.  Niektóre  systemy 
operacyjne  pozwalają  również  na  określenie  zachowań  usługi  w  momencie,  gdy  zostanie  ona 
nieoczekiwanie zatrzymana (nie przez użytkownika, a na przykład na skutek awarii). 

Dla przykładu, w systemie Microsoft Windows Server można skonfigurować każdą usługę tak, by po 
nieoczekiwanym  zatrzymaniu  była  podejmowana  próba  automatycznego  restartu  usługi  (czyli 
ponownego jej uruchomienia). 

Usługa automatyzacji zadań 

Dobry  administrator  potrafi  wykorzystać  zdobycze  techniki  i  zautomatyzować  pracę  systemu 
bazodanowego tak, by mieć przy nim jak najmniej pracy. Do automatyzacji najczęściej służy usługa, 
która  albo  jest  oferowana  przez  system  operacyjny,  albo  jest  dostarczana  wraz  z  systemem 
bazodanowym. Pozwala ona między innymi na przygotowywanie harmonogramów tworzenia kopii 
zapasowych baz danych. Taką usługą w systemie Microsoft SQL Server 2008 jest SQL Server Agent. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 2 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 5/16 

Należy zadbać o to, by była ona zawsze uruchomiona, a często domyślnie usługi te są wyłączone lub 
zatrzymane. 

Bezpieczeństwo usług 

W trakcie konfiguracji usług należy kierować się pewnymi zasadami, by uniknąć nieprawidłowości w 
ustawieniach  i  w  działaniu  serwera.  Zasady  te  dotyczą  głównie  kwestii  związanych  z 
bezpieczeństwem środowiska. 

Pierwszą  ważną  zasadą  jest  zasada  minimalizacji  ilości  usług.  Mówi  ona,  że  należy  zawsze 
instalować  i  uruchamiać  tylko  te  usługi,  z  których  w  danym  momencie  korzysta  nasz  system 
bazodanowy.  Pozostałe  usługi,  o  ile  mogą  być  zainstalowane  (w  przyszłości  może  się  okazać,  że 
jakaś dodatkowa usługa będzie potrzebna), o tyle ich uruchamianie powoduje, że administrator ma 
więcej pracy, zaś w systemie znajduje się więcej potencjalnych słabych punktów. 

Zasada  ta  obowiązuje  głównie  osoby  administrujące  systemami  i  sieciami  komputerowymi. 
Stosowanie się do niej może znacznie zwiększyć bezpieczeństwo systemu. 

Druga  zasada  dotyczy  konfiguracji  kontekstu  usług.  Usługi  w  systemie  operacyjnym  działają  jak 
użytkownicy  –  wykonują  operacje  i  mają  określone  uprawnienia.  W  niektórych  systemach 
(np. Windows)  każdej  usłudze  przyporządkowane  jest  konto  użytkownika.  Mówimy,  że  usługa 
pracuje w kontekście użytkownika
. Oznacza to, że usługa działa w systemie operacyjnym i w sieci 
na takich samych uprawnieniach, jakie zostały określone dla użytkownika. 

W  związku  z  tym  pojawia  się  problem  wyboru  właściwego  konta  dla  usług.  Problem  ten  dotyczy 
głównej  usługi  serwera  SQL  –  silnika  oraz  usługi  odpowiedzialnej  za  automatyzację  zadań  w  tym 
systemie. 

Większość  systemów  operacyjnych  oferuje  wbudowane  konta  o  kreślonych  uprawnieniach. 
Niestety,  uprawnienia  te  na  ogół  są  zbyt  duże,  by  konta  systemowe  można  było  wykorzystać  do 
pracy z usługami systemu bazodanowego. Przykładem takiego konta jest konto Local System w 
systemach Microsoft Windows. 

Konto  to  działa  jako  element  systemu  operacyjnego,  co  w  praktyce  oznacza,  że  ma  uprawnienia 
nawet większe od tych, jakie posiada administrator systemu. Stąd pierwszy wniosek – na ogół nie 
wybieramy  wbudowanych kont systemowych  dla  usług  serwera  SQL.  Powstaje pytanie –  jakich w 
takim razie kont używać? 

Jeśli  serwer  ma  pracować  w  środowisku  rozproszonym,  ma  mieć  możliwość  dostępu  do  innych 
serwerów i dodatkowo maszyna znajduje się w domenie, to wybieramy dla usług konto domenowe, 
specjalnie  utworzone  i  skonfigurowane.  Konto  to  powinno  mieć  ustawienia,  które  pozwolą  w 
sposób nieprzerwany pracować usłudze. 

Zatem – należy ustawić dla tego konta silne hasło, które nie powinno mieć daty wygasania (hasło 
nigdy nie wygasa) i nie powinno być zmieniane przez użytkowników (użytkownik nie może zmieniać 
hasła, bez opcji użytkownik musi zmienić hasło przy pierwszym logowaniu). Co do uprawnień konta, 
należy  rozważyć  przydzielenie  konta  do  roli  lokalnego  administratora  (dla  potrzeb  na  przykład 
automatycznego restartu usługi w przypadku nieoczekiwanego jej zatrzymania). 

Czasami taka konfiguracja jest wymagana (na przykład przy instalacji systemu Microsoft SQL Server 
w klastrze Microsoft Windows). Dla głównych usług możesz skonfigurować jedno konto (ułatwia to 
zdecydowanie  administrację  kontami).  Nazwa  konta dla  zwiększenia  bezpieczeństwa  nie  powinna 
kojarzyć się z systemem bazodanowym. 

Narzędzia konfiguracji usług 

Większość  systemów  operacyjnych  oferuje  narzędzie  do  zcentralizowanego  zarządzania  usługami 
zainstalowanymi  w  systemie.  Jednak  ponieważ  ogólna  ilość  usług  w  systemach  operacyjnych  jest 
ogromna,  a  dodatkowo  bardzo  często  usługi  systemu  bazodanowego  wymagają  dodatkowych 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 2 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 6/16 

ustawień,  producenci  zazwyczaj  dodają  narzędzie  (lub  zestaw  narzędzi)  do  zarządzania  usługami 
tylko samego serwera SQL. 

Dla przykładu, W systemie Microsoft SQL Server 2008 są dwa narzędzia do zarządzania usługami: 
Configuration  Manager  oraz  Reporting  Services  Configuration.  Pierwszy  program  umożliwia 
zarządzanie usługami i protokołami sieciowymi, zaś drugi pozwala dostosować usługę raportowania  
serwera SQL. Narzędzie Configuration Manager ilustruje rys. 3. 

 

Rys. 3 Konfiguracja serwisów 

Przykładowe rozwiązanie 

Wdrożenie  systemu  bazodanowego  opartego  na  Microsoft  SQL  Server  2008  przebiega  w  kilku 
etapach.  

Pierwszym z nich jest wybór maszyny i systemu operacyjnego, który będzie 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, która w pełni odpowiada wymaganiom serwera SQL. 

Następnym  etapem  jest  uzupełnienie  środowiska  o  wymagane  i  opcjonalne  komponenty. 
Komponenty  wymagane,  takie  jak  .NET  Framework  2.0  czy  MS  XML  6,  znajduję  się  na  płycie  z 
plikami  instalacyjnymi  Microsoft  SQL  Server  2008.  Elementy  użyteczne,  lecz  opcjonalne,  takie  jak 
Microsoft 

PowerShell, 

można 

doinstalować 

własnego 

źródła, 

np. 

witryny 

www.microsoft.com/poland

Właściwa instalacja systemu bazodanowego zaczyna się po uruchomieni instalatora Microsoft SQL 
Server 2008. 

Środkowa  grupa  opcji  (Install)  pozwala  na  uruchomienie  właściwego  komponentu  programu 
instalacyjnego  (rys.  ).  W  tym  kroku  instalator  jest  gotowy  do  organizacji  swojego  środowiska  w 
naszym  systemie.  Dopiero  teraz  widać  główne  okno  centrum  instalacji  środowiska  serwera  SQL 
Server 2008. Można tu dokonać aktualizacji serwera z wersji SQL Server 2000 lub SQL Server 2005, 
przeczytać dokumentację, zainstalować komponenty dodatkowe lub przykładowe bazy. 

background image

Włodzimierz Dąbrowski, Przemysław 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 

Wybierając instalacje nowej instancji serwera SQL przechodzimy do kroku, w którym należy określić 
składniki  systemu  bazodanowego.  Okno komponentów  systemu  (rys.  )  umożliwia  wybór  instalacji 
interesujących  nas  części  środowiska  serwera  SQL.  Z  pewnością  potrzeby  będzie  sam  silnik  bazy 
danych  (Database  Engine  Services),  jak  i  graficzny  interfejs  dla  niego  (Client  Tools).  W  dalszej 
kolejności  przydatne  okażą  się  narzędzia  analityczne  (Analysis  Services),  narzędzia  pomocy  (SQL 
Server Books online
), itp. 

 

Rys. 5 Wybór składników instalacji 

W  tym  kroku  mamy  możliwość  wyboru  miejsca  składowania  plików  serwera  SQL  w  systemie.  W 
profesjonalnych  zastosowaniach  ze  względów  wydajnościowych  często  spotykaną  praktyką  jest 
rozdzielanie plików systemu operacyjnego i serwera bazodanowego pomiędzy różne dyski. 

Następnym  ważnym  krokiem  jest  nazwanie  instancji  instalowanego  serwera  SQL  oraz  podgląd 
instancji  już  istniejących.  Dla  mniej  doświadczonych  użytkowników  zaleca  się  pozostawienie 
ustawień standardowych instalatora. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 2 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 8/16 

Kolejny  etap  to  określenie  komponentów  serwera  oraz  sposobów  ich  uruchamiania.  Serwer  SQL 
składa  się  z  kilku  usług,  które  muszą  być  uruchamiane  za  pomocą  odpowiedniego  konta 
użytkownika.  Dla  naszej  maszyny  takim  kontem  jest  Administrator.  W  tym  momencie 
poszczególne usługi będą uruchamiane z uprawnieniami administratora. 

W  obecnej  wersji  serwer  SQL  oferuje  możliwość  zapisywania  danych  w  formacie  Unicode  czyli 
międzynarodowym  standardzie  kodowania  znaków.  Poprzednie  wersje  oferowały  zapis  w 
standardach zorientowanych na konkretne języki. Zakładka Collation pozwala na wybór standardu 
kodowania  danych  (np.  w  celu  zachowania  kompatybilności  ze  starszymi  bazami)  oddzielnie  dla 
silnika bazy i serwisu analitycznego, co prezentuje rys. . 

 

Rys. 6 Konfiguracja obsługi stron kodowych 

Kolejną  rzeczą  jest  ustalenie,  jakich  użytkowników  serwer  SQL  będzie  honorował.  Do  wyboru  są 
użytkownicy  związani  z  systemem  operacyjnym  lub  użytkownicy  systemowi  oraz  użytkownicy 
wewnętrzni  serwera.  Na  początek  wystarczą  nam  do  pracy  sami  użytkownicy  systemowi. 
Należy  jednak  jednoznacznie  sprecyzować  konto,  które  będzie  miało  uprawnienia  do 
administrowania serwerem SQL. Ilustruje to rys. . 

background image

Włodzimierz Dąbrowski, Przemysław 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  dotyczącym  powiadamiania  firmy  Microsoft  o  występujących  błędach  i  użyciu  zasobów 
serwera  SQL  możemy  zgodzić  się  lub  nie  na  wysyłanie  tych  informacji.  Przed  zaznaczeniem 
czegokolwiek warto poczytać dokładnie, jakie informacje będą wysyłane. 

Pora  na  podsumowanie  opcji  instalacji.  W  oknie  Ready  to  Install  możesz  przejrzeć  wszystkie 
zaznaczone  uprzednio  opcje,  jeżeli  coś  się  nie  zgadza,  zawsze  możesz  cofnąć  się  i  wprowadzić 
zmianę. 

Zatwierdzając  wybrane  opcje  rozpoczynamy  kopiowanie  plików  i  wykonywanie  skryptów 
instalacyjnych  zgodnie  z  założeniami  ustalonymi  przez  nas  wcześniej.  Możemy  podejrzeć  postęp 
instalacji poszczególnych składników serwera SQL. 

Po  zakończeniu  procesu  instalacji  komponentów  serwera  SQL  możemy  przejść  do  konfiguracji 
poszczególnych  usług.  W  tym  celu  należy  posłużyć  się  programem  SQL  Server  Configuration 
Manager dostepnym w grupie aplikacji SQL Server 2008. 

W  głównym  oknie  narzędzia  konfiguracyjnego  widzimy  usługi  związane  z  serwerem  SQL.  Usługa 
automatyzacji zadań (SQL Server Agent) jest wyłączona, co nie jest dla nas stanem zadowalającym, 
zatem należy ją aktywować. 

Aby usługa uruchamiała się wraz ze startem systemu operacyjnego należy zaznaczyć odpowiednią 
opcję w zakładce Service, co ilustruje rys. Błąd! Nie można odnaleźć źródła odwołania.

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 2 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 10/16 

 

Rys. 8 Konfiguracja serwisów 

Serwer SQL przeważnie działa w środowisku sieciowym opartym o protokoły TCP/IP. Ze względów 
bezpieczeństwa  obsługa  tych  protokołów  domyślnie  jest  wyłączona.  Jeżeli  jesteśmy  pewni 
zabezpieczeń swojej sieci informatycznej, możemy włączyć obsługę TCP/IP dla serwera SQL. 

Ostatnim etapem instalacji serwera SQL jest uruchomienie aplikacji zarządzającej SQL Management 
Studio  i  próba  połączenia  się  z  istniejącą  bazą  danych  AdventureWorks.  Jeżeli  to  zadanie  się 
powiedzie, możemy uznać, że posiadamy gotowy do pracy system bazodanowy. 

Porady praktyczne 

W miarę możliwości dokonuj instalacji serwera SQL na systemie nieobciążonym przez inne serwery. 
W  praktycznej  działalności  serwery  bazodanowe  mocno  wykorzystują  zasoby  sprzętowe  takie  jak 
czas procesora, pamięć operacyjna czy dostęp do dysku twardego. Współdzielenie tych zasobów z 
innymi usługami zdecydowanie obniża wydajność obsługi baz danych. 
Pamiętaj  o  możliwości  instalacji  wielu  instancji  serwera  SQL  na  jednej  maszynie  fizycznej. 
Umożliwia  to  logiczne  i  organizacyjne  rozdzielenie  poszczególnych  grup  baz  danych  a  co  za  tym 
idzie lepsza kontrolę nad nimi. 
Dodatkowe serwisy możesz doinstalować w miarę potrzeb. Pamiętaj, że każdy z nich to potencjalne 
obciążenie  dla  systemu  i  luka  w  zabezpieczeniach.  Planując  rozszerzanie  funkcjonalności  serwera 
bazodanowego  o  dodatkowe  serwisy  warto  zastanowić  się  nad  jego  rozbudową  od  strony 
sprzętowej. 
Już  na  etapie  instalacji  serwera  bazodanowego  warto  przemyśleć  sprawę  bezpieczeństwa 
poszczególnych usług. Usługi serwera powinny posiadać dedykowane konta, za pomocą których są 
uruchamiane.  Wydzielenie  kont  i  przyznanie  im  wąskiego  zakresu  praw  minimalizuje  możliwość 
użycia  ich  przez  nieautoryzowane  osoby.  Więcej  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  komponentów  do  systemu.  Niezależnie  od  tego 
warto posiadać kopię plików instalacyjnych na nośniku przenośnym (płyta DVD, pendrive, mobilny 
dysk  twardy  itp.),  jeżeli  zaistniałaby  potrzeba  instalacji  środowiska  na  maszynie  odciętej  od  sieci 
informatycznej.  Dotyczy  to  także  systemów  towarzyszących  serwerowi  baz  danych  takich  jak  np.: 
serwis publikacji stron WWW. 
W przypadku stwierdzenia braku dostępu do instancji serwera SQL, w pierwszej kolejności sprawdź, 
czy  odpowiednie  serwisy  systemowe  są  uruchomione.  Jeżeli  w  wyniku  jakiegoś  konfliktu  usługi 
serwera  SQL  zostały  wyłączone  lub  zatrzymane,  dokonaj  ich  ponownej  aktywacji.  W  skrajnym 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 2 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 11/16 

przypadku  należy  zrestartować  system  operacyjny,  który  może  blokować  usługi  systemu 
bazodanowego przez własne usługi zależne. 
Nigdy nie zaniedbuj regularnego skanowania systemu operacyjnego, na którym znajduje się system 
bazodanowy pod względem obecności wirusów i złośliwego oprogramowania. System bazodanowy 
jest centralną składnicą danych organizacji, a ich utrata zawsze jest bardzo kosztowna. 
Zawsze sprawdzaj dostępność najnowszych aktualizacji dla systemu bazodanowego, jak i systemu 
operacyjnego,  na  którym  serwer  SQL  jest  zainstalowany.  Pamiętaj,  że  nie  ma  oprogramowania 
doskonałego  a  producenci  starają  się  ulepszać  swoje  produkty  m.in.  poprzez  udostępnianie 
aktualizacji.  Widać  to  wyraźnie  w  systemach  operacyjnych  gdzie  np.:  bez  nowych  aktualizacji  w 
ogóle nie można zainstalować niektórych aplikacji. 

Uwagi dla studenta 

Jesteś przygotowany do realizacji laboratorium jeśli: 

 

rozumiesz, co oznacza serwis systemowy, serwis bazy danych, instalacja serwisu 

 

rozumiesz zasadę działania uruchomienia serwisów w kontekście użytkownika 

 

umiesz wymienić i opisać podstawowe komponenty systemu bazodanowego 

 

umiesz podać przykład zastosowania systemu bazodanowego w praktyce 

Pamiętaj  o  zapoznaniu  się  z  uwagami  i  poradami  zawartymi  w  tym  module.  Upewnij  się,  że 
rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego 
w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. 

Dodatkowe źródła informacji 

1.

 

Kalen  Delaney,  Microsoft  SQL  Server  2005:  Rozwiązania  praktyczne  krok  po  kroku,  Microsoft 
Press, 2006 

Podręcznika  adresowany  do  projektantów  systemów  bazodanowych,  którzy 
opanowali  już  podstawy  idei  relacyjnych  baz  danych.  Przedstawia  praktyczne 
problemy i ich szczegółowe rozwiązania. 

2.

 

Edward Whalen, Microsoft SQL Server 2005 Administrator’s Companion, Microsoft Press, 2006 

Jest  to  przejrzysty  przewodnik,  zawierający  wszystkie  informacje  potrzebne  do 
wdrożenia,  administrowania  i  obsługi  SQL  Server  2005.  Znajdziesz  w  nim  wiele 
procedur i wskazówek opartych na doświadczeniach profesjonalistów pracujących z 
Microsoft SQL Server 2005.  

3.

 

Dusan Petkovic,  Microsoft SQL Server 2008: A Beginner's Guide, McGraw-Hill, 2008  

Pozycja  adresowana  do  osób  zaczynających  przygodę  z  bazami  danych.  Znajdziemy  tu 
wprowadzenie  do  relacyjnych  baz  danych,  sposoby  ich  projektowania,  optymalizacji  i  w końcu 
wdrożenia  w  najnowszej  odsłonie  serwera  SQL  w  wersji  2008.  Omówienie  języka  T-SQL  w 
osobnej, dużej części książki 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 nowości 
z nim związane.  

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 

Laboratorium podstawowe

Problem 1 (czas realizacji 45 min)

Firma  National  Insurance  w  związku  z  dogodnymi  warunkami  na  rynku 
rozwój. Obsługa rosnącej liczby klientów przysparza coraz więcej kłopotów, głównie działowi analiz. 
Na  ostatnim  zebraniu  padła  propozycja  wdrożenia  nowego  systemu  bazodanowego  opartego  na 
technologii Microsoft SQL Server 2008, który pom
większej  ilości  danych  o  klientach  firmy  co  potencjalnie  przełoży  się  na  jakość  obsługi    i  przyszłe 
zyski. 

Wdrożenie  nowego  systemu  złożono  na  barki  głównego  informatyka  firmy,  który  do  tej  pory 
zajmował  się  głownie  zagadnieniami  związanymi  z  administracją  systemami  operacyjnymi 
i bezpieczeństwem  sieci.  Jako  praktykant  dostałeś  za  zadanie  wdrożyć  serwera  SQL  2008  na 
testowej  platformie.  Twoje  doświadczenia  z  procesu  instalacji  i  konfiguracji  serwera  będą 
wykorzystane przy uruchamianiu systemu roboczego.

Zadanie 

Tok postępowania

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 odnośnik 

Dąbrowski, Przemysław 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  związku  z  dogodnymi  warunkami  na  rynku 
rozwój. Obsługa rosnącej liczby klientów przysparza coraz więcej kłopotów, głównie działowi analiz. 
Na  ostatnim  zebraniu  padła  propozycja  wdrożenia  nowego  systemu  bazodanowego  opartego  na 
technologii Microsoft SQL Server 2008, który pomoże usprawnić procesy związane z obróbką coraz 
większej  ilości  danych  o  klientach  firmy  co  potencjalnie  przełoży  się  na  jakość  obsługi    i  przyszłe 

Wdrożenie  nowego  systemu  złożono  na  barki  głównego  informatyka  firmy,  który  do  tej  pory 

łownie  zagadnieniami  związanymi  z  administracją  systemami  operacyjnymi 

Jako  praktykant  dostałeś  za  zadanie  wdrożyć  serwera  SQL  2008  na 

testowej  platformie.  Twoje  doświadczenia  z  procesu  instalacji  i  konfiguracji  serwera  będą 

ystane przy uruchamianiu systemu roboczego. 

Tok postępowania 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd.  

Maszyna  wirtualna  używa  obrazów  ISO  płyt  CD/DVD  na  równi  z 
płytami  fizycznymi.  Ważne  jest,  aby  w  wirtualnym  napędzie  DVD 
umieszczony był obraz płyty o nazwie SQLDEV_ENU.ISO

Kliknij dwukrotnie ikonę Mój komputer, a później 
Na ekranie powinno pokazać się okno instalatora Mi
2008, tak jak na rys. : 

 

Rys. 9 Strona główna programu instalacyjnego

Z grupy Install kliknij odnośnik 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 odnośnik New Installation. 

Moduł 2 

Instalacja i konfiguracja MS SQL Server 2008 

Firma  National  Insurance  w  związku  z  dogodnymi  warunkami  na  rynku  przeżywa  dynamiczny 
rozwój. Obsługa rosnącej liczby klientów przysparza coraz więcej kłopotów, głównie działowi analiz. 
Na  ostatnim  zebraniu  padła  propozycja  wdrożenia  nowego  systemu  bazodanowego  opartego  na 

oże usprawnić procesy związane z obróbką coraz 

większej  ilości  danych  o  klientach  firmy  co  potencjalnie  przełoży  się  na  jakość  obsługi    i  przyszłe 

Wdrożenie  nowego  systemu  złożono  na  barki  głównego  informatyka  firmy,  który  do  tej  pory 

łownie  zagadnieniami  związanymi  z  administracją  systemami  operacyjnymi 

Jako  praktykant  dostałeś  za  zadanie  wdrożyć  serwera  SQL  2008  na 

testowej  platformie.  Twoje  doświadczenia  z  procesu  instalacji  i  konfiguracji  serwera  będą 

 

ISO  płyt  CD/DVD  na  równi  z 

aby  w  wirtualnym  napędzie  DVD 

SQLDEV_ENU.ISO

a później CD ROM (D:)

Na ekranie powinno pokazać się okno instalatora Microsoft SQL Server 

 

Strona główna programu instalacyjnego 

Server components, tools, Books Online, 

Przeczytaj  i  zaakceptuj  postanowienia  umowy  licencyjnej  poprzez 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 2 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 13/16 

instalacji 
właściwej 

 

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 Wybór składników 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 Określenie praw dostępu do składników 

 

Kliknij zakładkę Collation

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 

 

Dla pola 

 

Kliknij pole 

 

Z listy 

 

Kliknij przycisk 

 

Dla pola 

 

Z listy 

 

Kliknij przycisk 

 

Przejdź do następnego okna klikając przycisk 

 

Aby dodać konto bieżącego użytkownika (
Add Current User

 

K

 

Aby dodać konto bieżącego użytkownika (
Add Current User

 

K

 

Kliknij 

 

Przeczytaj informacje w otwartej stronie WWW

 

Zamknij okno przeglądarki

 

K

 

Kliknij 

 

Aby  zakończyć  ten  etap  i  przejść  do  podsumowania  instalacji
przycisk 

 

Wyświetl 

dziennik 

instalacji 

klikając 

odnośnik 

files

 

Przeczytaj informacje zawarte w dzienniku i zamknij okno notatnika

 

Kliknij przycisk 

4.

 

Konfiguracja 

 

 Kliknij  przycisk 
Configuration Tools

Dąbrowski, Przemysław 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 następnego okna klikając przycisk Next
Aby dodać konto bieżącego użytkownika (Administrator
Add Current User

Kliknij przycisk Next

Rys. 12 Konfiguracja typu autoryzacji

Dla  serwisu  analitycznego  również  należy  określić  konto  z 
uprawnieniami administracyjnymi. 

Aby dodać konto bieżącego użytkownika (Administrator
Add Current User

Kliknij przycisk Next
Kliknij odnośnik View the Microsoft SQL Server
Przeczytaj informacje w otwartej stronie WWW. 
Zamknij okno przeglądarki. 
Kliknij przycisk Next. 
Kliknij przycisk Install. 
Aby  zakończyć  ten  etap  i  przejść  do  podsumowania  instalacji
przycisk Next
Wyświetl 

dziennik 

instalacji 

klikając 

odnośnik 

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  również  należy  określić  konto  z 

Administrator), kliknij przycisk 

 

 

Aby  zakończyć  ten  etap  i  przejść  do  podsumowania  instalacji,  kliknij 

Wyświetl 

dziennik 

instalacji 

klikając 

odnośnik 

C:\Program 

Przeczytaj informacje zawarte w dzienniku i zamknij okno notatnika. 

Microsoft  SQL  Server  2008  ->  

SQL Server Configuration Manager

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 2 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 15/16 

usług serwera 

 

W  nowym  oknie  rozwiń  drzewo  SQL  Server  Network  Configuration 
klikając przycisk +

 

Zaznacz pole SQL Server Services

 

Kliknij dwukrotnie pole SQL Server Agent

 

Kliknij przycisk Start

 

Kliknij na zakładce 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 

poprawności 
instalacji 

 

Kliknij  przycisk  Start  ->  Programy  ->  Microsoft  SQL  Server  2008  ->  
Management Studio

 

W nowym oknie kliknij przycisk Connect

 

Jeżeli  instalacja  system  jest  poprawna,  będziesz  mógł  w  polu  Object 
Explorer
 rozwinąć drzewo Databases -> AdventureWorks

 

 

 

background image

Włodzimierz Dąbrowski, Przemysław 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ś  głównym  informatykiem  firmy  National  Insurance.  Niedawne  wdrożenie  nowego  serwera 
bazodanowego  opartego  na  Microsoft  SQL  Server  2008  zakończyło  się  sukcesem.  Firma  planuje 
rozbudowę  infrastruktury  informatycznej  o  farmę  serwerów  Microsoft  SQL  Server  2008  i  ich 
integrację z istniejącymi bazami danych. 

W dotychczasowej działalności od strony baz danych wykorzystywane były serwery Microsoft SQL 
Server  2000  i  Microsoft  SQL  Server  2005,  na  których  hostowane  bazy  zawierały  dane  w  języku 
polskim  i  angielskim.  Niezbyt  dobrze  wyglądała  sprawa  prezentacji  danych,  każdy  z  menedżerów 
korzystał  ze  swoich  narzędzi,  niekompatybilnych  ze  sobą.  Jako  dobry  administrator  poleciłeś 
przetestować  nowy  serwer  pod  względem  kompatybilności  z  istniejącymi  bazami oraz  możliwości 
nowego serwisu raportującego. 

Zadanie polega na instalacji nowej instancji serwera SQL Server 2008 (na nowej, testowej maszynie) 
spełniającej kryteria: 

 

Pliki bazy danych i pliki systemu operacyjnego są rozdzielone. 

 

Zachowana jest kompatybilność wstecz względem używanych wcześniej baz. 

 

Instalacja zawiera serwis silnika, serwis analityczny i serwis raportujący. 

 

Dostarczone są narzędzia ułatwiające administrację. 

 

Dostarczone są przykładowe bazy. 

Zespół testowy przygotuje również dokumentację w formie raportu z instalacji. 

background image

ITA-101 Bazy Danych 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 3 

Wersja 2.0 

Definiowanie i zarządzanie bazą 

danych 

Spis treści 

Definiowanie i zarządzanie bazą danych .............................................................................................. 1 

Informacje o module ............................................................................................................................ 2 

Przygotowanie teoretyczne ................................................................................................................. 3 

Przykładowy problem .................................................................................................................. 3 

Podstawy teoretyczne.................................................................................................................. 3 

Przykładowe rozwiązanie ........................................................................................................... 10 

Porady praktyczne ..................................................................................................................... 14 

Uwagi dla studenta .................................................................................................................... 15 

Dodatkowe źródła informacji..................................................................................................... 15 

Laboratorium podstawowe ................................................................................................................ 16 

Problem 1 (czas realizacji 45 min) .............................................................................................. 16 

Laboratorium rozszerzone ................................................................................................................. 26 

Zadanie 1 (czas realizacji 90 min) ............................................................................................... 26 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 3 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 2/26 

Informacje o module 

Opis modułu 

Dobry  administrator  systemu  zarządzania  bazami  danych  wie  wszystko  o 
bazach danych. W dzisiejszych czasach rola administratora nie ogranicza się 
do  zarządzania  istniejącymi  bazami  danych,  ale  również  wymaga 
umiejętności  zakładania,  konserwacji  oraz  aktualizacji  baz  danych 
znajdujących  się  pod  jego  opieką.  W  tym  module  poznasz  sposoby 
tworzenia, rozbudowy i zarządzania bazą danych. 

Cel modułu 

Celem  modułu  jest  przedstawienie  czytelnikowi  typowych  zagadnień 
związanych z zakładaniem i konserwacją bazy danych na serwerze Microsoft 
SQL Server 2008. 

Uzyskane kompetencje 

Po zrealizowaniu modułu będziesz: 

 

potrafił zaplanować instalację bazy danych 

 

rozumiał czym są pliki bazy, tabele, diagramy, klucze 

 

wiedział, jak wykonać kopię bezpieczeństwa bazy oraz jak przywrócić 
bazę w razie awarii 

Wymagania wstępne 

Przed przystąpieniem do pracy z tym modułem powinieneś: 

 

wiedzieć, jak używać oprogramowania Microsoft Virtual PC 

 

znać podstawy obsługi systemu Windows 2000 lub nowszego 

 

rozumieć, jakie są elementy diagramu ERD i powiązania między nimi  

 

znać podstawy obsługi narzędzia SQL Server Management Studio 

Mapa zależności modułu 

Zgodnie  z  mapą  zależności  przedstawioną  na  rys.  1,  istnieje  konieczność 
wykonania wcześniej modułów 1 i 2. 

 

Rys. 1 Mapa zależności modułu 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 3 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 3/26 

Przygotowanie teoretyczne 

Przykładowy 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 możliwe do użycia typy danych. 
Diagram bazy danych przedstawiony jest na rys. 2. 

 

Rys. 2 Diagram przykładowej bazy danych 

Twoim  zadaniem  jest  założenie  bazy  danych  wraz  z  odpowiednimi  tabelami,  ustanowienie  kluczy 
głównych,  powiązań  między  nimi  i  określenie  dogodnych  typów  danych.  W  końcowej  fazie 
powinieneś wypełnić bazę przykładowymi danymi i zapewnić jej kopię bezpieczeństwa. 

Podstawy teoretyczne 

Dysponując  gotowym  projektem  relacyjnej  bazy  danych,  jesteś  na  początku  długiej  drogi,  zanim 
baza powstanie na serwerze i rozpocznie swoje życie. Zanim zaimplementujesz bazę danych, musisz 
zaplanować wiele ustawień dotyczących różnych aspektów działania bazy. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 3 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 4/26 

Rozmieszczenie plików bazy danych 

Baza  danych  składa  się  z  plików.  Plik  bazy  można  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 składowane. W plikach dziennika transakcji system zapisuje strony 
(w  przypadku  systemów  SQL  Server  strona  to  blok  8  KB,  ale  można  go  zwiększyć)    zawierające 
modyfikacje danych. 

Rozmieszczenie  plików odgrywa  znaczącą  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  należy  umieszczać  na  innym  dysku  fizycznym  niż  pliki  danych  –  w 
przypadku awarii jednego z dysków tracimy tylko część bazy. 

 

Tabele  często  występujące  razem  w  złączeniach  (ang.  joins)  należy  umieszczać  w  osobnych 
plikach  (grupach  plików)  na  osobnych  dyskach  fizycznych  –  dzięki  temu  możliwe  jest 
równoległe pobieranie danych z tych tabel. 

 

Indeksy  nieklastrowane  należy  umieszczać  na  innych  dyskach  fizycznych  niż  ich  bazowe 
tabele – zyskujesz większą wydajność zapisu danych. 

 

Tabele  często  modyfikowane  należy  oddzielić  fizycznie  (umieścić  na  innym  dysku)  od  tabel 
rzadko  modyfikowanych  –  w  przypadku  większych  baz  danych  upraszcza  to  proces 
wykonywania kopii zapasowych. 

 

W  przypadku  naprawdę  dużych  instancji  bazy  stosowane  są  dedykowane  rozwiązania 
programowo-sprzętowe typu klastry z wydajnymi macierzami dyskowymi. 

Jednoczesne spełnienie wszystkich wymienionych punktów jest raczej niemożliwe, ale w idealnym 
przypadku  oddzielenie  dziennika  transakcji  od  danych  i  maksymalne  rozczłonkowanie  danych 
pomiędzy tak wiele dysków, jak się da, byłoby rozwiązaniem dającym maksymalne bezpieczeństwo 
i wydajność bazy. 

Bezpieczeństwo fizyczne danych 

Dane,  jak  i  dziennik  transakcji  można  dodatkowo  zabezpieczyć  przed  ewentualnymi  awariami 
dysków  fizycznych.  Do  tego  celu  należy  użyć  macierzy  dyskowych  z  zaimplementowanymi 
konfiguracjami RAID (ang. Redundant Array of Independent Disks). 

Istnieje  wiele  konfiguracji  RAID,  ale  do  najbardziej  znanych  i  zarazem  najczęściej  stosowanych 
należą:  RAID-0,  RAID-1,  RAID-5  oraz  RAID-10.  Implementacja  RAID  może  być  rozwiązana  drogą 
sprzętową lub programową w systemie operacyjnym. Rozwiązania różnią się wydajnością i… ceną. 

Więcej o systemach RAID i bezpieczeństwie systemów bazodanowych znajdziesz w module 10. 

Przy  tworzeniu  bazy  danych  administrator  musi  zdecydować  o  jej  konfiguracji.  Konfiguracja  ta 
dotyczy nie tylko plików bazy danych, ale także pewnych ustawień samej bazy danych. Ustawienia 
te decydują o tym, jak będzie się zachowywała baza w trakcie swojego cyklu życia. 

Ustawienia dotyczące plików 

Po  wybraniu  odpowiedniej  struktury  bazy  i  określeniu  jej  nazwy  przychodzi  pora  na  ustawienie 
pewnych właściwości plików bazy danych. Ustawienia te to: 

 

ilość i lokalizacja plików 

 

wielkość początkowa plików 

 

sposób powiększania plików (powinien zostać wybrany automatyczny przyrost rozmiaru) 

 

maksymalny  rozmiar  dla  każdego  z  plików  (alternatywnie  można  maksymalny  rozmiar 
pozostawić  nieokreślony,  ale  wówczas  administrator  jest  zmuszony  do  monitorowania 
wolnego miejsca na dysku twardym) 

 

nazwy logiczne plików 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 3 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 5/26 

 

Rys. 3 Właściwości przykładowej bazy danych w SQL Server 2008 

W praktyce należy pamiętać o takim ustawieniu rozmiaru początkowego plików, by znalazło się w 
nich miejsce na nowe dane. Proces powiększania rozmiaru pliku może niepotrzebnie obciążyć bazę 
danych. Co za tym idzie, należy też zadbać o to, by przyrost rozmiaru pliku nie był zbyt mały. 

Najlepszym  nawykiem  jest  manualne  powiększanie  rozmiarów  plików  poza  godzinami,  w  których 
baza  jest  używana  przez  największą  liczbę  użytkowników.  Opcja  automatycznego  powiększania 
plików  może  być  ustawiona  na  wszelki  wypadek  (gdyby  administrator  zapomniał  o  swoich 
obowiązkach  lub  wystąpiła  nieoczekiwana  sytuacja  wymagająca  powiększenia  pliku).  Niemniej 
jednak taka automatyzacja jest dyskusyjna ponieważ wpływa na wydajność bazy.  

Dziennik transakcji należy ustawić na początek na 20-30% rozmiaru plików danych. W trakcie pracy 
bazy danych rozmiar ten można zmienić wedle potrzeb. 

Ustawienia dotyczące bazy danych 

Równie  ważne  jak  ustawienia  plików  są  ustawienia  samej  bazy  danych.  Ustawienia  te  to  na 
przykład: 

 

ustawienia dotyczące języka, metod sortowania tekstu, znaków dialektycznych 

 

ustawienia  dotyczące  zapisu  zmian  w  dzienniku  transakcji  (tzw.  model  przywracania  bazy
ang. recovery model

 

ustawienia dotyczące statystyk (statystyki to zapis rozkładu danych w kolumnach najczęściej 
wykorzystywanych w tabelach, mogą być tworzone i utrzymywane automatycznie) 

 

ustawienia  dotyczące  dostępu  do  bazy  danych  (w  niektórych  sytuacjach  niezbędne  jest 
ograniczenie dostępu do bazy danych dla użytkowników, np. przy przywracaniu bazy danych 
z kopii zapasowej) 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 3 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 6/26 

 

Rys. 4 Opcje przykładowej bazy danych w SQL Server 2008 

Ustawienia  opcji  bazy  danych  zmieniają się  w trakcie  działania  bazy.  Zmiany  dokonywane  są  przy 
pomocy  narzędzi  graficznych  (np.  SQL  Server  Management  Studio)  lub  poleceń  SQL  (np. 

ALTER 

DATABASE).    Do  ciekawszych  opcji  należą  polecenia  Auto  Shrink,  która  optymalizuje  rozmiar 
plików (z taką samą wadą jak automatyczne zwiększanie rozmiaru) i 

Auto Create Statistics, 

która  generuje  automatycznie  statystyki  na  podstawie  dystrybucji  wartości  w  kolumnie  danych. 
Informacja  ta  jest  używana  przez  SQL  Server  Query  Optimizer  do  generowania  planu  zapytań 
bazującego na kosztach używania różnych kolumn. 

Tabela bazy danych 

Tabela  jest  dwuwymiarowym  zbiorem  wzajemnie  powiązanych  danych  dotyczących  wspólnego 
obszaru  lub  encji.  Składa  się  ona  z  kolumn,  w  których  przechowywane  są  dane,  np.  w  tabeli 
Pracownicy przeważnie znajdziemy kolumny takie jak Nazwisko czy PESEL. W relacyjnej bazie 
danych relację zachodzą właśnie pomiędzy danymi w poszczególnych kolumnach nazywanych także 
atrybutami tabeli.  

Pojedynczy  rząd  obejmujący  kolumny  reprezentuje  instancję  danych,  czyli  rekord  (ang.  record). 
Większość  operacji  na  bazie  danych  wykonuje  się  na  rekordach  lub,  częściej,  zbiorach  rekordów 
(ang. recordset). 

Do  jednoznacznej  identyfikacji  tabeli  służy  klucz  główny  (ang.  primary  key),  który  przeważnie  jest 
dodatkową kolumną z unikatowymi wartościami. Dzięki znajomości tych wartości możemy szybko 
wskazać interesujący nas rekord w danej tabeli, a następnie odczytać go lub zmodyfikować.  

Tabele możemy utworzyć za pomocą narzędzi graficznych, np. w Management Studio rozwijając w 
obszarze Object Explorer odpowiednie menu. 

Możemy  też  posłużyć  się  odpowiednim  poleceniem  języka  SQL  (i  tak  najczęściej  postępuje  się  w 
praktyce): 

CREATE TABLE nazwa_tabeli (kolumny_tabeli

Więcej na ten temat znajdziesz w module 5. 

Podczas  tworzenia  tabeli  należy  zdefiniować  chociaż  jedną  kolumnę  zawierającą  dane. 
Przechowywane  dane  mogą  być  tylko  ściśle  określonego  typu.  Typ  ten  jest  wspólny  dla  całej 
kolumny. 

background image

Włodzimierz Dąbrowski, Przemysław 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ą  wielkością  jaką  definiuje  użytkownik  dla  kolumny  tabeli.  Typ  danych 
kolumny kontroluje typ informacji jaka może być przechowywana w kolumnie. Należy zdefiniować 
typ danych przez wpisanie za nazwą kolumny słowa kluczowego, może ono wymagać parametrów. 
Po zdefiniowaniu typ danych kolumny tabeli jest stałą właściwością i nie powinno być zmieniany. 

Można również wykorzystać typy danych do definicji innych struktur przechowujących dane, takich 
jak parametry i lokalne zmienne.  

Przegląd wybranych typów danych dostępnych na platformie Microsoft SQL Server prezentuje tab. 

Tab. 1 Podstawowe typy danych dostępne w Microsoft SQL Server 

Kategoria  

Opis  

Typ danych  

Szczegóły  

Typy binarne   Dane zawierają łańcuchy binariów 

zapisanych w postaci liczb w 
systemie szesnastkowym 
(heksadecymalnym). 

binary  

Dane o stałej przypisanej długości (do 8 
KB). 

varbinary  

Dane o różnej długości aż do 
zdefiniowanej maksymalnej (do 8 KB). 

image  

Dane mogą być różnej długości i 
przekroczyć rozmiarem 8 KB.  

Typy tekstowe   Dane są kombinacją liter, cyfr i 

symboli. 

char  

Dane o stałej przypisanej długości (do 8 
KB). 

varchar  

Dane o różnej długości aż do 
zdefiniowanej maksymalnej (do 8 KB). 

text  

Dane tekstowe o rozmiarze 
przekraczającym 8 znaków 

Data i czas  

Dane są kombinacją dobrze 
sformatowanej daty i czasu. Nie 
istnieją typy danych opisujące 
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 obsługę stref czasowych 

datetime2 

Wspiera szerszy zakres dat oraz większą 
precyzję części ułamkowych sekundy i 
także umożliwia określanie precyzji 

Typy liczb 
dziesiętnych  

Dane liczbowe o dokładności do 
ostatniej znaczącej cyfry. 

decimal  

Maksymalnie 38 cyfr, z czego wszystkie 
mogą znajdować się po prawej stronie 
przecinka. Typ przechowuje dane 
dokładne (nie przybliżone). 

numeric  

W SQL Server jest to odpowiednik typu 
decimal. 

Typy liczb o 
zmiennej 
precyzji  

Dane są przybliżonymi liczbami 
zmiennoprzecinkowymi o 
dokładności takiej, jaka może w 
danej chwili być obsłużona 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 
całkowitych  

Dane są liczbami całkowitymi. 

bigint  

Liczba całkowita z zakresu od –2^63 
(-9223372036854775808) do 2^63-1 
(9223372036854775807). Rozmiar jednej 
liczby 8 B.  

int  

Liczba całkowita z zakresu od 
-2 147 483 648 do 2,147,483,647. Rozmiar 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 3 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 8/26 

Kategoria  

Opis  

Typ danych  

Szczegóły  

jednej liczby to 4 B. 

smallint  

Liczba całkowita z zakresu od -32,768 do 
32,767. Rozmiar jednej liczby to 2 B. 

tinyint  

Liczba całkowita z zakresu od zera do 255. 
Rozmiar jednej liczby to 1 B. 

Typy 
monetarne  

Dane reprezentują ujemne lub 
dodatnie sumy pieniędzy. 

money  

Wartość monetarna z zakresu od 
-922,337,203,685,477.5808 do 
922,337,203,685,477.5807. Rozmiar 
jednej wartości to 8 B. 

smallmoney  

Wartość monetarna z zakresu od 
-214,748.3648 do 214,748.3647. Rozmiar 
jednej wartości to 4 B. 

Typy 
specjalne  

Dane specjalne to dane, które nie 
pasują do innych kategorii. 

bit  

Dane zawierają wartość 1 albo 0. Używaj 
ich, gdy chcesz przedstawić zagadnienia 
typu PRAWDA lub FAŁSZ albo TAK lub NIE. 

cursor  

Typ danych używany przez zmienne lub 
parametry wyjściowe procedur 
składowanych, które zawierają referencje 
do kursora. 

timestamp  

Typ danych używany do wskazania ciągu 
aktywności  

uniqueidentifier   Dane są 16-bajtowymi szesnastkowymi 

liczbami wskazującymi na globalnie 
unikalne identyfikatory (GUID). GUID są 
użyteczne, gdy wiersz musi być unikalny 
pośród wielu wierszy. 

SQL_variant  

Ten typ danych przechowuje wartości 
różnych typów z wyjątkiem typów 

text, 

ntext, timestamp, image oraz 
sql_variant. 

table  

Typ danych przechowujący zestaw 
wyników do dalszego przetwarzania. 
Może być używany tylko do definiowania 
zmiennych lokalnych lub wartości 
zwracanych przez funkcje użytkownika. 

Typy Unicode   Dane tekstowe zapisane w postaci 

Unicode. Zajmują one dwukrotnie 
więcej miejsca niż zwykłe dane 
tekstowe. 

nchar  

Dane o stałej przypisanej długości (do 
4000 znaków Unicode). 

nvarchar  

Dane o różnej długości aż do 
zdefiniowanej maksymalnej (do 4000). 

ntext  

Dane mogą długością przekraczać 4000 
znaków Unicode. 

Przestrzenne 
typy danych 

Dane przestrzenne to dane, które 
identyfikują geograficzne 
lokalizacje i kształty, w 
szczególności na kuli ziemskiej 

Point 

Lokalizacja 

MultiPoint 

Seria punktów 

LineString 

Seria obejmująca zero lub więcej punktów 
połączonych liniami 

MultiLineString 

Zestaw obiektów LineString 

Polygon 

Spójny region opisany przez zbiór 
zamkniętych obiektów LineString 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 3 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 9/26 

Kategoria  

Opis  

Typ danych  

Szczegóły  

MultiPolygon 

Zestaw wielokątów 

GeometryCollection 
 

 

Kolekcja typów geometrycznych 

 
Oczywiście nie będziesz używać wszystkich typów danych, ale kilku będziesz używać 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  „zewnętrzny”, 
przystosowany do potrzeb i przyzwyczajeń konkretnego użytkownika.  

Perspektywy  stosujemy,  aby  uprościć  (sobie  lub  użytkownikowi)  życie.  Powodów  stosowania 
perspektyw jest wiele: 

 

Uproszczenie  z  punktu  widzenia  użytkownika  modeli  pojęciowych  –  dzięki  temu  możemy 
znacznie uprościć schemat bazy, a tym samym ułatwić użytkownikowi dostęp do danych. 

 

Dostosowanie  się  do  punktu  widzenia  i  terminologii  dziedziny  zastosowań  BD  –  zmiana 
schematu  wprowadzana  przez  perspektywę  może  być  wykorzystana  na  przykład  do 
dostosowania nazw tabel i kolumn do języka, którym posługuje się użytkownik. 

 

Ograniczenie  dostępu  do  obiektów  –  perspektywy  powodują  ukrycie  przez  użytkownikiem 
końcowym prawdziwego schematu bazy danych. Może to mieć również pozytywny wpływ na 
poprawę  bezpieczeństwa  danych,  gdyż  użytkownik  nie  ma  bezpośredniego  dostępu  do 
schematu rzeczywistego. 

 

Współdziałanie  systemów  heterogenicznych  (wspólny  schemat)  –  w  wypadku  systemów 
rozproszonych, zbudowanych z różnych systemów baz danych, perspektywa może pomóc w 
ukryciu różnic. 

 

Przystosowanie starszych systemów do nowszych technologii i wymagań

Z  punktu  widzenia  użytkownika  (i  innych  procesów)  perspektywa  powinna  być  dla  niego 
przezroczysta, to znaczy, że można na niej wykonywać takie same operacje, jak na „prawdziwych” 
tabelach.  Warunek  przezroczystości  perspektyw  jest  bardzo  trudny  do  spełnienia,  gdyż  dla 
pewnych  odwzorowań  danych  przyjęte  środki  definicji  perspektyw  (np.  SQL)  mogą  okazać  się 
niewystarczające. 

 

Rys. 5 Schemat działania perspektyw 

background image

Włodzimierz Dąbrowski, Przemysław 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  wyłącznie  w  postaci  definicji.  Wyliczenie  (czyli  wyznaczenie  zbioru 
krotek  danej  perspektywy,  zwane  też  materializacją  perspektywy)  następuje  w  momencie 
odwołania się do perspektywy. Wynik ten nie jest później nigdzie przechowywany. Oznacza to, że 
każde  wywołanie  perspektywy  wirtualnej  powoduje  jej  ponowne  wyliczenie  (materializację),  co 
obciąża zasoby systemu. 

Wadą  perspektyw  wirtualnych  jest  obciążanie  systemu  za  każdym  odwołaniem  do  procedury 
wirtualnej,  a  tym  samym  dłuższy  czas  oczekiwania  na  materializację  perspektywy.  Perspektywy 
wirtualne mają też szereg zalet. 

W  sytuacji  stosowania  perspektyw  wirtualnych  nie  ma  dublowania  danych  oraz  problemów  z 
aktualizacją danych i problemów z przetwarzaniem transakcji.  

Perspektywy zmaterializowane 

Perspektywa  zmaterializowana  jest  wyliczana  (materializowana)  w  czasie  pierwszego  użycia. 
Następnie  wynik  tego  wyliczenia  (dane)  są  przechowywane,  aby  móc  ich  użyć  przy  ponownym 
wywołaniu perspektywy. Dzięki temu kolejne wywołanie perspektywy nie obciąża systemu, a czas 
dostępu do danych znacznie się zmniejsza. 

Przykładowe rozwiązanie 

Posiadając gotowe, przetestowane środowisko bazodanowe przystępujemy do założenia pierwszej 
bazy danych. Do zarządzanie bazami danych, w tym ich tworzenia jaki i usuwania służy narzędzie 
Management Studio dostępne wraz z podstawową instalacją SQL Server.  

Po  uruchomieniu  narzędzia  i  połączeniu  się  z  danym  serwerem  widzimy  obszar  Object  Explorer 
wraz  z  drzewem  obiektów  Databases.  Wybierając  opcję  tworzenia  nowej  bazy  musimy 
sprecyzować jej kilka podstawowych parametrów. Oprócz nazwy dla nowej bazy podajemy lokację i 
początkową  wielkość  pliku  dla  danych  i  pliku  dla  dziennika  transakcji.  Plików  tych  może  być 
sprecyzowanych więcej, jednakże minimum to określenie jednego pliku każdego typu, co pokazuje 
rys. 6. 

background image

Włodzimierz Dąbrowski, Przemysław 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ę  dostępnym  opcjom  i  od  razu  dokonać  wstępnej 
konfiguracji.  Przed  wypełnieniem  bazy  danymi  należy  określić  parametry  takie  jak  poziom 
kompatybilności  bazy  z  poprzednimi  wersjami  serwera  SQL,  dostępność  i  widoczność  przez 
poszczególne  grupy  użytkowników  czy  zachowanie  plików  bazy  w  przypadku  zbliżenia  się  do 
poziomu zapełnienia danymi. 

Jedną  z  ważniejszych  opcji,  która  należy  zainteresować  się  od  samego  początku  jest  Recovery 
model
. Opcja ta decyduje o tym, jak dużo informacji o modyfikacjach danych będzie zapisywana do 
dziennika transakcji bazy danych. 

Listę opcji bazy danych znajdziesz w systemie pomocy Books Online pod hasłem „database options” 
(najszybciej znajdziesz ten fragment pomocy używając indeksu dostępnego w Books Online). W tym 
kroku dodamy wymagane tabele bazy danych i określimy ich atrybuty. 

Po ustaleniu podstawowych parametrów bazy można przejśc do kroku określania jej wyglądu, czyli 
tabel i związków pomiędzy nimi. Rozwijając w obszarze Object Explorer drzewo naszej bazy danych 
widzimy wszystkie obiekty wchodzące w jej sklad, w tym tabele. Po wybraniu opcji tworzenia nowej 
tabeli  należy  sprecyzować  przynajmniej  jeden  atrybut,  czyli  kolumnę.  Dla  danej  kolumny 
wybieramy  nazwę  i  typ  danych,  które  będzie  ona  przechowywała.  Tutaj  należy  zdecydować,  czy 
kolumna ma zawsze zawierać jakieś dane, czy może przechowywać wartości puste (ang.  null). Do 
kontroli nad warościami pustymi służy pole Allow Nulls, co ilustruje rys. .  

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 3 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 12/26 

 

Rys. 7 Określanie nazwy i typu danych dla kolumny 

Pozostało  nam  jeszcze  ustalić  identyfikator  naszej  tabeli  –  klucz  główny.  Kolumna  zawierająca  
unikalne dane jest dobrym kandydatem dla klucza głównego.  

Typowa  tabela  zawiera  wiele  kolumn  o  różnych  typach  danych  oraz  klucz  główny.  Dane 
przechowywane  w  poszczególnych  kolumnach  są  ze  sobą  skojarzone  np.  dla  tabeli  zawierającej 
dano  o  pracy  dyplomowej  studenta  będą  tam  kolumny  reprezentujące  temat  pracy,  datę  obrony 
czy ocenę z obrony. 

 

Rys. 8 Główna tabela bazy PraceDyplomowe 

Najczęstrzym  typem  związku  pomiędzy  dwiema  tabelami  jest  wiele-do-wielu.  Niestety  tego  typu 
związku nie można w bezpośredni sposób zamodelować w relacyjnej bazie danych. Aby obejść ten 
problem,  tworzymy  niejako  sztuczną,  pośrednią  tablę.  Tabela  ta  posiada  tylko  dwie  kolumny, 
wskazujące na łączone tabele.  

Ponieważ dla tej tabeli unikalna będzie zarówno jedna jak i druga kolumna, klucz główny możemy 
założyć na obydwu jednocześnie. Ilustruje to rys. . 

background image

Włodzimierz Dąbrowski, Przemysław 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 głównym na dwóch kolumnach 

Posiadając  zdefiniowane  wszystkie  tabele  w  bazie  danych,  następnym  krokiem  jest  utworzenie 
związków  pomiędzy  nimi.  Najwygodniej  utworzyć  je  na  graficznym  diagramie  bazodanowym 
dostępnym z poziomu Management Studio. 

Dla przykładowych tabel po stworzeniu związku zostanie utworzony klucz obcy w tabeli 

Autorzy 

jako identyfikator powiązanej tabeli 

Osoba. 

Jako  rezultat  powinniśmy  posiadać  diagram  tabel  i  związków  pomiędzy  nimi  bardzo  zbliżony  do 
początkowego diagramu ERD. 

 

Rys. 7 Tworzenie pozostałych kluczy obcych 

Posiadając gotową bazę danych warto zrobić jej kopię zapasową przed dalszymi eksperymentami. 
Narzędzie Management Studio umożliwia łatwe wykonywanie kopii zapasowej i przywracanie z niej 
bazy danych. Rozpoczęcie procedury tworzenia kopii bezpieczeństwa ilustruje rys. 8. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 3 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 14/26 

 

Rys. 8 Uruchamianie procedury kopii bezpieczeństwa 

Jeżeli  jest  to  tylko  możliwe,  należy  zmienić  nazwę  pliku  kopii  bezpieczeństwa  i  jego  domyślną 
lokację. Przeważnie w sieci istnieje dedykowany serwer plików, na którym przechowywane są pliki 
kopii bezpieczeństwa. 

W celu weryfikacji pliku kopii wygodnie jest odzyskać tak utworzoną bazę do innej, roboczej bazy 
danych. Taką roboczą bazę można przeglądać pod względem zgodności i testować nawet na innym 
serwerze bazodanowym. Procedurę odzyskiwania dazy z kopii bezpieczeństwa ilustruje rys. 9. 

 

Rys. 9 Odzyskiwanie bazy danych z pliku backup 

Porady praktyczne 

Zanim  przystąpisz  do  implementacji  bazy  danych  na  serwerze,  uważnie  przyjrzyj  się  diagramowi 
ERD  lub  diagramowi  bazodanowemu.  Zrozumienie  relacji  zawartych  na  tych  diagramach  pozwoli 
uniknąć  błędów  w  logice  bazy.  Błędy  popełnione  na  tak  wczesnym  etapie  będą  negatywnie 
wpływać niemal na każde późniejsze działanie systemu bazodanowego. I z drugiej strony, im więcej 
uwagi poświęcimy prawidłowemu projektowi bazy tym bardziej zaprocentuje to w przyszłości. 

Upewnij  się,  że  każda  tabela  ma  założony  klucz  główny,  bez  niego  nie  zdziałasz  za  wiele.  Klucz 
główny oprócz funkcji identyfikacji danej tabeli pełni również rolę indeksu, który może przyśpieszyć 
obsługę danych. Jest on elementem niezbędnym w tabelach systemu bazodanowego niezależnie od 
platformy. 

Uważnie przemyśl sprawę doboru typów danych. Nie mogą być one za małe dla przechowywanej 
wartości, z drugiej strony szastanie zbyt obszernymi typami sumarycznie zmniejsza wydajność bazy. 
W szczególności przyjrzyj się nowym możliwościom jakie oferuje w zakresie typów danych MS SQL 
2008.  Współczesne  wymagania  co  do  obsługi  danych  typu  pliki  czy  hierarchia  obiektów  znalazły 
swoje odzwierciedlenie w nowych serwerach baz danych. 

background image

Włodzimierz Dąbrowski, Przemysław 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 może skutkować przykrymi konsekwencji utraty informacji 
i  co  za  tym  idzie  czasu  użytkownika  serwera  baz  danych.  Wiele  operacji  w  ogóle  nie  zostanie 
wykonana jeżeli np.: zaktualizowana struktura tabeli nie zostanie zapisana do pliku bazy. 

Uwagi dla studenta 

Jesteś przygotowany do realizacji laboratorium jeśli: 

 

rozumiesz, co oznacza relacja i czym różni się od powiązania w relacyjnych bazach danych  

 

rozumiesz zasady przypisywania odpowiednich typów danych do atrybutów tabeli 

 

wiesz jak założyć bazę danych i ustalić jej podstawowe parametry 

 

umiesz podać przykład diagramu ERD dla typowego zbioru danych 

Pamiętaj  o  zapoznaniu  się  z  uwagami  i  poradami  zawartymi  w  tym  module.  Upewnij  się,  że 
rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego 
w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. 

Dodatkowe źródła informacji 

1.

 

William  R.  Stanek,  Vademecum  Administratora  Microsoft  SQL  Server  2005,  Microsoft  Press,  
2006 

Kompleksowe  opracowanie  na  temat  zaplanowania  i  wdrożenia  system  bazodanowego 
opartego  o  MS  SQL  Server  2005  w  małym  i  średnim  przedsiębiorstwie.  Autorzy  postawili  na 
formułę przedstawiania wielu problemów z praktyki administratora baz danych oraz możliwych 
dróg do ich rozwiązania. Książka jest adresowana do praktykujących użytkowników. 

2.

 

Wiesław Dudek, Bazy danych SQL. Teoria i praktyka, Helion, 2006 

Książka  przedstawia  większość  zagadnień  związanych  z  przechowywaniem  i  przetwarzaniem 
danych w współczesnych systemach bazodanowych. Znajdują się w niej informacje o relacyjnym 
i  obiektowym  modelu  danych  oraz  najczęściej  stosowanych  systemach  zarządzania  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 nowości 
z nim związane.  

 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 

Laboratorium podstawowe

Problem 1 (czas realizacji 45 min)

W  firmie  National  Insurance  trwa  właśnie  sezon  urlopowy.  Jako  jedyny obecny  administrator  baz 
danych  postanowiłeś  przetestować  implementacje 
częścią  twojego  semestralnego  projektu  zaliczeniowego.  W
zaprojektowany przez kolegę z zespołu 
SQL Server 2008 wraz z graficznym interfejsem 
zadania. 

Zadanie 

Tok postępowania

1.

 

Utwórz bazę 

danych 

 

Uruchom maszynę wirtualną 


 

Kliknij 
SQL Server Management 

 

W oknie logowania kliknij 

 

W  oknie 
Databases

 

W pole 

 

Ustaw początkowe wielkości plików na 
pliku dziennika transakcji

 

Kliknij przycisk 

2.

 

Ustaw opcje 

 

Kliknij  prawym  przyciskiem  myszy 

ski, Przemysław Kowalczuk, Konrad Markowski 

 

Instalacja i konfiguracja MS SQL Server 2008

Strona 16/26 

Laboratorium podstawowe 

ealizacji 45 min) 

W  firmie  National  Insurance  trwa  właśnie  sezon  urlopowy.  Jako  jedyny obecny  administrator  baz 

postanowiłeś  przetestować  implementacje  bazy  danych 

Prace  Dyplomowe

częścią  twojego  semestralnego  projektu  zaliczeniowego.  Wytyczne  do  bazy 
zaprojektowany przez kolegę z zespołu diagram. Postanowiłeś użyć dostępnego systemu 
SQL Server 2008 wraz z graficznym interfejsem SQL Server Management Studio do wykonania tego 

Tok postępowania 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 
D:\VirtualPC\Dydaktyka\BD2008.vhd

Kliknij  Start.  Z  grupy  programów  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 początkowe wielkości plików 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  właśnie  sezon  urlopowy.  Jako  jedyny obecny  administrator  baz 

Prace  Dyplomowe,  która  jest 

do  bazy  jasno  określa 

diagram. Postanowiłeś użyć dostępnego systemu Microsoft 

Management Studio do wykonania tego 

 

li  nie  masz  zdefiniowanej  maszyny  wirtualnej  w  Microsoft  Virtual 

dodaj nową maszynę używając 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 

background image

Włodzimierz Dąbrowski, Przemysław 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 wartości 

ski, Przemysław 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 właściwości bazy danych

Kliknij przycisk OK

Listę  opcji  bazy  danych  znajdziesz  w  systemie  pomocy 
pod  hasłem  database  options  (najszybciej  znajdziesz  ten  fragment 
pomocy używając indeksu dostępnego w Books Online)

W  tym  kroku  dodamy  wymagane  tabele  bazy  danych  i  określimy  ich 
atrybuty. Zaczniemy od prostych tabel. 

Kliknij  prawym  przyciskiem  myszy  pole  Tables  w  rozwiniętym  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 wartości null

Moduł 3 

Instalacja i konfiguracja MS SQL Server 2008 

PraceDyplomowe  kliknij  po  lewej 

Simple

 

tawianie właściwości bazy danych 

systemie  pomocy  Books  Online 

pod  hasłem  database  options  (najszybciej  znajdziesz  ten  fragment 
pomocy używając indeksu dostępnego w Books Online). 

W  tym  kroku  dodamy  wymagane  tabele  bazy  danych  i  określimy  ich 

w  rozwiniętym  drzewie 

ID_TypStudiow

smallint

w  celu  zapobiegania  wpisywania  do  tej 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 3 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 18/26 

 

Rys. 12 Określanie nazwy i typu danych dla kolumny 

 

Ustal  nazwę  dla  nowej  tabeli  klikając  ikonę  dyskietki  z  górnego  paska 
zadań. 

 

Wprowadź nazwę TypStudiow i kliknij przycisk OK

 

Rys. 16 Tworzenie nowej tabeli 

4.

 

Ustal klucz 

główny dla tabeli 

 

 Kliknij prawym klawiszem nazwę kolumny. 

 

 Kliknij opcję Set Primary Key

 

 Zapisz tabelę klikając ikonę dyskietki. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 

5.

 

Uwórz 

pozostałe proste 
tabele 

 

Bazując na poprzednim schemacie postępowania utwórz tabele 

ID_SlowoKlucz

 

Jako rezultat powinieneś zobaczyć listę trzech tabel w polu 
PraceDyplomowe

6.

 

Utwórz 

główne tabele 
bazy 

 

Kliknij  prawym  przyciskiem  myszy  pol
NewTable






ski, Przemysław Kowalczuk, Konrad Markowski 

 

Instalacja i konfiguracja MS SQL Server 2008

Strona 19/26 

Rys. 17 Tworzenie klucza głównego tabeli

Bazując na poprzednim schemacie postępowania utwórz tabele 
i  SlowoKlucz  zawierające  odpowiednio  kolumny 
ID_SlowoKlucz, obydwie z typem danych varchar(25)
Jako rezultat powinieneś zobaczyć listę trzech tabel w polu 
PraceDyplomowe

Rys. 18 Pozostałe proste tabele bazy PraceDyplomowe

Pora  na  utworzenie  głównej  tabeli  naszej  bazy  danych.  Tabela 
PracaDyplomowa  jest  punktem  centralnym  bazy  i  zawiera  kolumny 
ID_PracyTematDataOcena

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 następnej 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 głównego tabeli 

Bazując na poprzednim schemacie postępowania utwórz tabele Stopien 

zawierające  odpowiednio  kolumny  ID_Stopien  i 

archar(25)

Jako rezultat powinieneś zobaczyć listę trzech tabel w polu Tables bazy 

 

Pozostałe proste tabele bazy PraceDyplomowe 

Pora  na  utworzenie  głównej  tabeli  naszej  bazy  danych.  Tabela 

jest  punktem  centralnym  bazy  i  zawiera  kolumny 

Tables  i  wybierz  opcję 

ID_Pracy

Wprowadź nazwę dla następnej kolumny jako Temat

Data

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 


 

Dla każdej kolumny odznacz opcję 

 

Ustal  klucz  główny  klikając  prawym  przyciski
ID_Pracy

 

Zapisz tabelę pod nazwą 

 

Kliknij  prawym  przyciskiem  myszy  pol
Table








 

Dla każdej kolumny odznacz opcję 

 

Ustal  klucz  główny  klikając  prawym  przyciskiem  myszy  na  kolumnie 
ID_Osoby

 

Zapisz tabelę pod nazwą 

ski, Przemysław 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 każdej kolumny odznacz opcję Allow null
Ustal  klucz  główny  klikając  prawym  przyciski
ID_Pracy i wybierając opcję Set Primary Key
Zapisz tabelę pod nazwą PracaDyplomowa klikając ikonę dyskietki

Rys. 19 Główna tabela bazy PraceDyplomowe

Następną  dużą  tabelą  jest  tabela  Osoba  przechowująca  informacje  o 
osobach  wykonujących  prace  dyplomowe  oraz  wykładowcach  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 następnej 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 każdej kolumny odznacz opcję Allow null
Ustal  klucz  główny  klikając  prawym  przyciskiem  myszy  na  kolumnie 
ID_Osoby i wybierając opcję Set Primary Key
Zapisz tabelę pod nazwą Osoba klikając ikonę dyskietki

Rys. 13 Tabela Osoba 

Moduł 3 

Instalacja i konfiguracja MS SQL Server 2008 

Ocena

Ustal  klucz  główny  klikając  prawym  przyciskiem  myszy  kolumnę 

klikając ikonę dyskietki. 

 

Główna tabela bazy PraceDyplomowe 

przechowująca  informacje  o 

osobach  wykonujących  prace  dyplomowe  oraz  wykładowcach  i 

  i  wybierz  opcję  New 

ID_Osoby

Wprowadź nazwę dla następnej kolumny jako Imie

Nazwisko

Nr_Indeksu

Ustal  klucz  główny  klikając  prawym  przyciskiem  myszy  na  kolumnie 

klikając ikonę dyskietki. 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 

7.

 

Utwórz tabele 

pomocnicze 

 

Kliknij  prawym  przyciskiem  myszy  pol
Table




 

Dla każdej kolumny odznacz opcję 

 

Zaznacz z wciśniętym klawiszem 

 

Ustal klucz główny klikając prawym przyciskiem myszy na zaznaczeniu i 
wybierz opcję 

 

Zapisz tabelę pod nazwą 

8.

 

Utwórz 

pozostałe tabele 
pomocnicze 

 

Bazując na poprzednim schemacie postępowania utwórz tabele 

ID_Pracy

 

Jako  rezultat  powinieneś  zobaczyć  listę  wszystkich  tabel  w  polu 
bazy 

9.

 

Utwórz 

związki pomiędzy 

 

Kliknij  prawym  klawiszem  myszy  pol
PraceDyplomowe

ski, Przemysław 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 następnej kolumny jako 

 

Ustal typ danych jako smallint

Dla każdej kolumny odznacz opcję Allow null

Ponieważ  dla  tej  tabeli  unikalna  będzie  zarówno  jedna  jak  i  druga 
kolumna, klucz główny możemy założyć na obydwu jednocześnie

Zaznacz z wciśniętym klawiszem Shift obydwie kolumny
Ustal klucz główny klikając prawym przyciskiem myszy na zaznaczeniu i 
wybierz opcję Set Primary Key
Zapisz tabelę pod nazwą Autorzy klikając ikonę dyskietki

Rys. 14 Tabela Autorzy z kluczem głównym na dwóch kolumnach

Bazując na poprzednim schemacie postępowania utwórz tabele 
i  Recenzent,  zawierające  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 następnej kolumny jako ID_Pracy

Ponieważ  dla  tej  tabeli  unikalna  będzie  zarówno  jedna  jak  i  druga 

klucz główny możemy założyć na obydwu jednocześnie. 

obydwie kolumny. 

Ustal klucz główny klikając prawym przyciskiem myszy na zaznaczeniu i 

klikając ikonę dyskietki. 

 

Tabela Autorzy z kluczem głównym na dwóch kolumnach 

Bazując na poprzednim schemacie postępowania utwórz tabele Slownik 

zawierające  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 

background image

Włodzimierz Dąbrowski, Przemysław 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 klikając przycisk Add

 

Kliknij przycisk Close

 

Kliknij i przeciągnij kursor myszki pomiędzy pole ID_Osoby tabeli Osoba 
a polem ID_Osoby tabeli Autorzy

 

Rys. 16 Tworzenie związku pomiędzy tabelami 

 

W nowym oknie dotyczącym właściwości związku kliknij przycisk OK

 

 Zostanie  utworzony  klucz  obcy  w  tabeli  Autorzy  jako  identyfikator 
powiązanej tabeli Osoba. Zatwierdź klikając przycisk OK

 

Rys. 17 Tworzenie klucza obcego 

 

Powtórz tą operację dla każdego związku pomiędzy tabelami zgodnie z 
diagramem bazodanowym. Jako rezultat powinieneś otrzymać diagram 
jak na rys. 18. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 3 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 23/26 

 

Rys. 18 Tworzenie pozostałych 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 bezpieczeństwa 

 

W  nowym  oknie  możesz  zmienić  nazwę  pliku  kopii  bezpieczeństwa  i 
jego domyślną lokację. Kliknij przycisk OK

 

Po chwili  powinien  pojawić  się  komunikat o  prawidłowym  zakończeniu 
tworzenia kopii bezpieczeństwa. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 3 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 24/26 

 

Rys. 27 Tworzenie kopii bezpieczeństwa zakończone sukcesem 

 

Kliknij przycisk OK

11.

 

Odzyskaj bazę 

danych z kopii 
bezpieczeństwa 

 

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 bezpieczeństwa 

 

W nowym oknie kliknij pole From device

 

Kliknij ikonę listy wyboru […]

 

Kliknij przycisk Add

 

Wskaż lokację pliku z kopią zapasową bazy danych. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 

 

Kliknij przycisk 

 

Kliknij pole 

 

Zaznacz pole 

 

Kliknij przycisk 

 

 

ski, Przemysław 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  zakończyło  się  sukcesem. 
Możesz  sprawdzić,  czy  nic  po  drodze  nie  zginęło
strukturę bazy w obszarze Object Explorer

 

Moduł 3 

Instalacja i konfiguracja MS SQL Server 2008 

 

Wskazywanie pliku z kopią zapasową 

zakończyło  się  sukcesem. 

czy  nic  po  drodze  nie  zginęło,  przeglądając 

background image

Włodzimierz Dąbrowski, Przemysław 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) 

Zachęcony  sukcesem  w  utworzeniu  bazy  danych 

PraceDyplomowe  postanowiłeś  ją  rozbudować. 

Przyglądając  się  uważnie  diagramowi  dostarczonemu  wraz  z  dokumentacją  bazy  zauważyłeś,  że 
przy  tworzeniu  bazy  umknęła  Ci  tabela  reprezentująca  nośnik.  W  bazie  nie  ma  też  jak  dotąd 
żadnych danych. Postanowiłeś podjąć następujące kroki: 

 

dodać tabelę z typem nośnika pracy dyplomowej 

 

rozbudować bazę o możliwość przechowywania informacji o wydziale i kierunku studenta 

 

dodać  możliwość  zaznaczenia  liczby  dostarczonych  kopii  pracy  z  podziałem  na  wersję 
papierową i elektroniczną 

 

dodać możliwość umieszczenia przez recenzenta recenzji pracy i własnej oceny 

 

zastanawiasz  się  też,  czy  byłaby  możliwość  automatycznego  obliczania  średniej  z  oceny  z 
recenzji, obrony i promotora pracy 

 

zasilić bazę w odpowiednią ilość danych 

Tak przygotowaną bazę należy skopiować do bezpiecznej lokacji. Bazując na opcjach dostępnych w 
narzędziu  Management  Studio  zastanów  się,  jak  najprościej  możesz  zarządzać  kopiami 
bezpieczeństwa. 

background image

ITA-101 Bazy Danych 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 4 

Wersja 1.0 

Wewnętrzna struktura bazy danych 

Spis treści 

Wewnętrzna struktura ......................................................................................................................... 1 

Informacje o module ............................................................................................................................ 2 

Przygotowanie teoretyczne ................................................................................................................. 3 

Przykładowy problem .................................................................................................................. 3 

Podstawy teoretyczne.................................................................................................................. 3 

Przykładowe rozwiązanie ............................................................................................................. 8 

Porady praktyczne ..................................................................................................................... 11 

Uwagi dla studenta .................................................................................................................... 12 

Dodatkowe źródła 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 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 4 

ITA-101 Bazy danych 

 

Wewnętrzna struktura 

Strona 2/19 

Informacje o module 

Opis modułu 

W  tym  module  znajdziesz  informacje,  w  jaki  sposób  w  SQL  Server  2008 
przechowywane  są  dane,  jak  zbudowana  jest  strona  danych,  oraz  w  jaki 
sposób  przechowywane  są  podstawowe  obiekty  w  bazie  danych.  Dowiesz 
się również w jaki sposób należy wyznaczać wielkość pliku danych. 

Cel modułu 

Celem  modułu  jest  zapoznanie  czytelnika  z  wewnętrzną  strukturą 
przechowywania danych w SQL Server 2008. 

Uzyskane kompetencje 

Po zrealizowaniu modułu będziesz: 

 

Wiedział,  w  jaki  sposób  zbudowane  są  strony  danych  (nagłówek 
strony, wiersze danych, tablica przesunięć wierszy) 

 

potrafił  badać  zawartość  stron  danych  używamy  instrukcji 

DBCC 

PAGE,  która  umożliwia  oglądanie  nagłówka  strony,  wierszy  danych  i 
tablicy przesunięć wierszy 

 

wiedział jak wygląda struktura wierszy danych 

 

potrafił  wyświetlić  i  przeanalizować  wiersze  danych  zapisane  w 
tabelach 

Wymagania wstępne 

Przed przystąpieniem do pracy z tym modułem powinieneś: 

 

potrafić budować diagram ERD (patrz: moduł 1) 

 

wiedzieć, w jaki sposób tworzy się nową bazę danych 

 

wiedzieć, w jaki sposób tworzy się podstawowe obiekty bazy danych 

Mapa zależności modułu 

Zgodnie  z  mapą  zależności  przedstawioną  na  rys.  1,  przed  przystąpieniem 
do  realizacji  tego  modułu  należy  zapoznać  się  z  materiałem  zawartym 
w modułach 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 zależności modułu 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

Przygotowanie teoretyczne

Przykładowy problem 

Jak  zapewne  wiesz,  z  SQL  Server  2008  można  korzystać  w  bardzo  efektywny  sposób  nie  mając
wiedzy na temat sposobu wewnętrznej organizacji danych, jednak w wielu przypadkach dobrze jest 
wiedzieć,  jak  takie  przechowywane  dane  są  zorganizowane.  Ułatwia  to  zrozumienie  wielu 
mechanizmów funkcjonujących w SQL Server 2008

Typowy problem pojawiający 
danych,  zbudowany  diagram  ERD,  zdefiniowane  relacje  oraz  przypisane  atrybutom  typy  danych. 
Nie  zawsze  jednak  etap  projektowania  jest  przeprowadzony  we właściwy  sposób. 
sposób  zorganizowane  są  dane  możemy  lepiej  dobierać  typy  danych  na  atrybutach  mając 
świadomość  tego,  gdzie  fizycznie  są  one  umieszczone.  Możemy  uniknąć  pewnych  błędów,  na 
przykład  co  do  doboru  wielkości  typu  danych.  Szczególnie  duże  znaczenie  ma  to  w  przypadku 
obiektów typu OLE. 

Kolejnym  problemem  pojawiającym  się  w  tym  zagadnieniu  jest  próba  odpowiedzenia  sobie  na 
pytanie,  jaka  powinna  być  początkowa  wielkość  pliku  danych  i  dziennika  transakcji  w  momencie, 
kiedy  wiemy,  ile  danych  ma  zostać  wpisanych  do  naszej  bazy.  Na  podstawie  t
kolejności możemy ustawić, o ile pliki danych i dziennika transakcji mają wzrosnąć. 

Z  punktu  widzenia  administracji  bazą  danych  są  to  bardzo  ważne  problemy,  które  możemy 
rozwiązać dzięki znajomości budowy wewnętrznej struktury w SQL Server

Podstawy teoretyczne 

Chociaż  z  SQL  Server  można  korzystać  efektownie  bez  znajomości  wewnętrznej  budowy, 
zrozumienie szczegółów przechowywania danych pomaga w pisaniu wydajnych aplikacji.

Gdy  tworzy  się  tabelkę,  do  wielu  katalogów  systemowych  wstawia
niezbędnymi  do  jej  obsługi.  Wiersze  są  dodawane  do  katalogów  systemowych 
sysindexes i syscolumns

Dla  każdej  nowo  utworzonej  tabeli  do  widoku 
nazwę,  identyfikator  obiektu 
każdej kolumny z nowej tabeli informacje zawierające nazwę kolumny, typ danych i długość. Każda 
z  kolumn  otrzymuje  unikatowy  identyfikator,  który  wyznacza  kolejność,  w  jakiej  zostały  kolumny 
zdefiniowane w tabeli. 

Na  rys.  2  pokazano  wiersze,  które  dodawane  są  do  widoku 
tworzenia tabeli 

Ksiazka. 

Rys. 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Strona 3/19 

Przygotowanie teoretyczne 

Jak  zapewne  wiesz,  z  SQL  Server  2008  można  korzystać  w  bardzo  efektywny  sposób  nie  mając
wiedzy na temat sposobu wewnętrznej organizacji danych, jednak w wielu przypadkach dobrze jest 
wiedzieć,  jak  takie  przechowywane  dane  są  zorganizowane.  Ułatwia  to  zrozumienie  wielu 
mechanizmów funkcjonujących w SQL Server 2008. 

Typowy problem pojawiający się w tym zagadnieniu jest następujący. Mamy zaprojektowaną bazę 
danych,  zbudowany  diagram  ERD,  zdefiniowane  relacje  oraz  przypisane  atrybutom  typy  danych. 
Nie  zawsze  jednak  etap  projektowania  jest  przeprowadzony  we właściwy  sposób. 

organizowane  są  dane  możemy  lepiej  dobierać  typy  danych  na  atrybutach  mając 

świadomość  tego,  gdzie  fizycznie  są  one  umieszczone.  Możemy  uniknąć  pewnych  błędów,  na 
przykład  co  do  doboru  wielkości  typu  danych.  Szczególnie  duże  znaczenie  ma  to  w  przypadku 

Kolejnym  problemem  pojawiającym  się  w  tym  zagadnieniu  jest  próba  odpowiedzenia  sobie  na 
pytanie,  jaka  powinna  być  początkowa  wielkość  pliku  danych  i  dziennika  transakcji  w  momencie, 
kiedy  wiemy,  ile  danych  ma  zostać  wpisanych  do  naszej  bazy.  Na  podstawie  t
kolejności możemy ustawić, o ile pliki danych i dziennika transakcji mają wzrosnąć. 

Z  punktu  widzenia  administracji  bazą  danych  są  to  bardzo  ważne  problemy,  które  możemy 
rozwiązać dzięki znajomości budowy wewnętrznej struktury w SQL Server 2008.

QL  Server  można  korzystać  efektownie  bez  znajomości  wewnętrznej  budowy, 

zrozumienie szczegółów przechowywania danych pomaga w pisaniu wydajnych aplikacji.

Gdy  tworzy  się  tabelkę,  do  wielu  katalogów  systemowych  wstawiane  są  rekordy  z  informacjami 
niezbędnymi  do  jej  obsługi.  Wiersze  są  dodawane  do  katalogów  systemowych 

syscolumns. 

Dla  każdej  nowo  utworzonej  tabeli  do  widoku 

sysobjects  dodawany  jest  wiersz  zawierający 

nazwę,  identyfikator  obiektu  oraz  właściciela  nowej  tabeli.  Widok 

syscolumns

każdej kolumny z nowej tabeli informacje zawierające nazwę kolumny, typ danych i długość. Każda 
z  kolumn  otrzymuje  unikatowy  identyfikator,  który  wyznacza  kolejność,  w  jakiej  zostały  kolumny 

pokazano  wiersze,  które  dodawane  są  do  widoku 

sysobjects

 

Rys. 2 Informacje katalogowe zapisane po utworzeniu tabeli 

Moduł 4 

Wewnętrzna struktura 

Jak  zapewne  wiesz,  z  SQL  Server  2008  można  korzystać  w  bardzo  efektywny  sposób  nie  mając 
wiedzy na temat sposobu wewnętrznej organizacji danych, jednak w wielu przypadkach dobrze jest 
wiedzieć,  jak  takie  przechowywane  dane  są  zorganizowane.  Ułatwia  to  zrozumienie  wielu 

się w tym zagadnieniu jest następujący. Mamy zaprojektowaną bazę 

danych,  zbudowany  diagram  ERD,  zdefiniowane  relacje  oraz  przypisane  atrybutom  typy  danych. 
Nie  zawsze  jednak  etap  projektowania  jest  przeprowadzony  we właściwy  sposób.  Wiedząc  w  jaki 

organizowane  są  dane  możemy  lepiej  dobierać  typy  danych  na  atrybutach  mając 

świadomość  tego,  gdzie  fizycznie  są  one  umieszczone.  Możemy  uniknąć  pewnych  błędów,  na 
przykład  co  do  doboru  wielkości  typu  danych.  Szczególnie  duże  znaczenie  ma  to  w  przypadku 

Kolejnym  problemem  pojawiającym  się  w  tym  zagadnieniu  jest  próba  odpowiedzenia  sobie  na 
pytanie,  jaka  powinna  być  początkowa  wielkość  pliku  danych  i  dziennika  transakcji  w  momencie, 
kiedy  wiemy,  ile  danych  ma  zostać  wpisanych  do  naszej  bazy.  Na  podstawie  tej  informacji  w 
kolejności możemy ustawić, o ile pliki danych i dziennika transakcji mają wzrosnąć.  

Z  punktu  widzenia  administracji  bazą  danych  są  to  bardzo  ważne  problemy,  które  możemy 

2008. 

QL  Server  można  korzystać  efektownie  bez  znajomości  wewnętrznej  budowy, 

zrozumienie szczegółów przechowywania danych pomaga w pisaniu wydajnych aplikacji. 

ne  są  rekordy  z  informacjami 

niezbędnymi  do  jej  obsługi.  Wiersze  są  dodawane  do  katalogów  systemowych 

sysobjects, 

dodawany  jest  wiersz  zawierający 

syscolumns  otrzymuje  dla 

każdej kolumny z nowej tabeli informacje zawierające nazwę kolumny, typ danych i długość. Każda 
z  kolumn  otrzymuje  unikatowy  identyfikator,  który  wyznacza  kolejność,  w  jakiej  zostały  kolumny 

sysobjects  i  columns  podczas 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 4 

ITA-101 Bazy danych 

 

Wewnętrzna struktura 

Strona 4/19 

Strony danych 

Strony  danych  są  strukturami  zawierającymi  wszystkie  dane  (z  wyjątkiem 

text i  image), których 

stały  rozmiar  wynosi  8 KB  (8192 bajtów).  Składają  się  one  z  trzech  elementów  (rys.  3):  nagłówka 
strony, wierszy danych i tablicy przesunięć wierszy. 

 

Rys. 3 Struktura strony danych 

Nagłówek strony 

Nagłówek  strony  danych  zawiera  pierwszych  96 bajtów  strony  danych.  Informacje  zawarte  w 
nagłówku pokazano w tab. 1. 

Tab. 1 Informacje zawarte w nagłówku strony 

Pole 

Zawartość 

m_poleID 

Numer pliku i numer strony bazy danych. 

m_nextPage 

Numer  pliku  i  nazwa  następnej  strony.  Parametr  wyświetlany  jeżeli 
bieżąca strona należy do łańcucha stron. 

m_prev_Page 

Numer  pliku  i  nazwa  poprzedniej  strony.  Parametr  wyświetlany  jeżeli 
bieżąca strona należy do łańcucha stron. 

m_objID 

Identyfikator obiektu, do którego należy bieżąca strona. 

m_lsn 

Numer LSN używany do modyfikowania tej strony. 

m_slotCnt 

Łączna liczba wierszy tej strony. 

m_level 

Poziom strony w indeksie. Dla stron liści wartość zawsze równa 1. 

IndexId 

Identyfikator indeksu strony. Dla stron danych zawsze wartość równa 1. 

m_freeData 

Przesunięcie bajtowe pierwszego wolnego obszaru na tej stronie. 

pminlen 

Liczba bajtów części wiersza zawierającej pola o stałej długości. 

m_freeCnt 

Liczba niewykorzystanych bajtów na stronie. 

m_reservedCnt 

Liczba bajtów zarezerwowanych przez wszystkie transakcje. 

m_xactReserved 

Liczba bajtów zarezerwowanych przez ostatnio uruchomiona transakcje. 

m_flagBits 

2-bajtowy ciąg bitów zawierający dodatkowe informacje o stronie. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 4 

ITA-101 Bazy danych 

 

Wewnętrzna struktura 

Strona 5/19 

Wiersze danych 

Za nagłówkiem znajduje się obszar, w którym przechowywane są dane tabeli. Maksymalny rozmiar 
pojedynczego wiersza danych wynosi 8060 bajtów. Wiersz danych nie może obejmować kilku stron. 
Wyjątek  stanowią  kolumny,  którym  przypisano  typ 

image  lub  text.  Należy  zauważyć,  iż  liczba 

wierszy  może  się  różnić  w  zależności  od  struktury  tabeli  oraz  przechowywanych  danych.  Tabele, 
które posiadają kolumny o stałej długości będą zawierały na każdej stronie taką samą liczbę wierszy 
danych,  natomiast  tabele  zawierające  kolumny  o  różnych  długościach  będą  zawierały  na  każdej 
stronie różną liczbę wierszy danych. 

Tablica przesunięć wierszy 

Tablica przesunięć wierszy jest blokiem 2-bajtowych wpisów, z których każdy stanowi przesunięcie 
na stronie, od którego zaczynają się właściwe dane wiersza. Należy pamiętać o tym, że bajty te nie 
są zapisywane w wierszu razem z danymi. Wpływają one jednak na liczbę wierszy mieszczących się 
na stronie. 

Badanie stron danych 

Do  badania  zawartości  stron  danych  używamy  instrukcji 

DBCC  PAGE,  która  umożliwia  oglądanie 

nagłówka  strony,  wierszy  danych  i  tablicy  przesunięć  wierszy  dla  każdej  strony  bazy  danych. 
Polecenia  tego  może  używać  tylko  administrator  systemu.  Składnię  polecenia 

DBCC  PAGE 

pokazano poniżej: 

DBCC PAGE ({id_bazy | nazwa_bazy}, numer_pliku, numer_strony[, opcje]) 

W tab. 2 zostały 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 zawierającego stronę 

numer_strony 

Numer strony w obrębie pliku. 

opcje 

Parametr  ustawiany  opcjonalnie  przyjmuje  następujące 
wartości: 

 

0  –  domyślnie.  Zwraca  informacje  o  nagłówku  bufora  i 
nagłówku strony. 

 

1  –  zwraca  informacje  o  nagłówku  bufora,  nagłówku 
strony,  każdym  wierszu  (osobno)  oraz  tablicę  przesunięć 
wierszy. 

 

2  –  zwraca  informacje  o  nagłówku  bufora,  nagłówku 
strony,  zawartość  całej  strony  oraz  tablicę  przesunięć 
wierszy. 

 

3  –  zwraca  informacje  o  nagłówku  bufora,  nagłówku 
strony,  każdym  wierszu  (osobno)  oraz  tablicę  przesunięć 
wierszy,  a  po  każdym  wierszu  listę  poszczególnych 
wartości kolumn. 

 
Przykładowy wynik działania instrukcji 

DBCC PAGE

 pokazano na rys. 4. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 4 

ITA-101 Bazy danych 

 

Wewnętrzna struktura 

Strona 6/19 

 

 

Rys. 4 Przykładowy wydruk instrukcji DBCC PAGE 

Wydruk instrukcji 

DBCC PAGE składa się z czterech sekcji:  

1.

 

BUFFER – przedstawia informacje o buforze danej strony. 

2.

 

PAGE HEADER – pokazuje dane dla pól nagłówka strony. 

3.

 

DATA – zawiera informacje o każdym wierszu tabeli. Dane strony dzielone są na trzy części. 
Część  pierwsza  (lewa  kolumna)  określa  położenie  bajtowe  w  obrębie  wiersza,  część  druga 
(środkowe  cztery  kolumny)  zawiera  właściwe  dane  zapisane  na  stronie,  zaś  część  trzecia 
(prawa kolumna) zawiera znakową reprezentacje danych. 

4.

 

OFFSET TABLE – pokazuje zawartość tablicy przesunięć wierszy, która znajduje się na końcu 
strony.  Pierwszy  wiersz  fizycznie  znajdujący  się  na  stronie  jest  wierszem  numer  6,  z 
przesunięciem w tablicy przesunięć równym 96. 

Struktura wiersza danych 

Na  rys.  5  pokazano  ogólną  strukturę  wierszy  danych.  Na  pierwszym  miejscu  znajdują  się  dane 
kolumn o stałej długości. Za nimi znajdują się dane wszystkich kolumn o zmiennej długości. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 4 

ITA-101 Bazy danych 

 

Wewnętrzna struktura 

Strona 7/19 

 

Rys. 5 Struktura wierszy danych 

W  każdym  bloku  o  stałej  długości  lub  danych  o  zmiennej  długości  dane  są  przechowywane  w 
kolejności w jakiej kolumny zostały zdefiniowane przy tworzeniu tabeli. Przyjrzyjmy się poniższemu 
przykładowi: 

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  powyższym  przykładzie  w  części  związanej  z  danymi  o  stałej  długości  wiersze  będą  zawierały 
najpierw  dane  kolumny 

Kolumna_1  następnie  Kolumna_2  i  wreszcie  Kolumna_4.  W  następnej 

kolejności  będą  występowały  dane  o  zmiennej  długości  związane  odpowiednio  z 

Kolumną_3  i 

Kolumna_5. 

Tablice przesunięć kolumn 

Wiersz  danych,  który  ma  kolumny  o  stałej  długości,  nie  zawiera  licznika  zmiennych  kolumn  ani 
tablicy  przesunięć  kolumn.  Wiersz  danych,  w  którym  znajdują  się  kolumny  o  zmiennej  długości, 
zawiera tablicę przesunięć kolumn. 

Połączenia stron 

W SQL Server 2008 strony łączone są ze sobą na każdym poziomie indeksu. Jedynym sposobem, w 
jaki  SQL  Server  określa,  które  strony  należą  so  tabeli,  jest  zaglądanie  do  stron  IAM  tabeli. 
Poleceniem 

DBCC EXTENTINFO można uzyskać listę wszystkich obszarów należących do obiektu. 

W  poniższym  przykładzie  pokazano  listę  wszystkich  obszarów  należących  do  obiektu 

Orders  w 

bazie danych 

Northwind. 

Osiem  pierwszych  wierszy  wskazuje  rozmiar  obszaru  (

ext_size)  równy  1.  Wynika  to  z  tego,  że 

pierwszych  osiem  stron  w  tabeli  alokowanych  jest  z  obszarów  mieszanych.  Gdy  tabela  osiągnie 
osiem stron, wówczas SQL Server przydziela jej obszary jednolite po osiem stron każdy. 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 4 

ITA-101 Bazy danych 

 

Wewnętrzna struktura 

Strona 8/19 

 

Rys. 6 Wydruk wszystkich obszarów należących do obiektu 

Rozmiar danych 

Znając strukturę tabel oraz typy danych kolumn w bazie danych, możemy oszacować rozmiar pliku 
danych.  

Procedura szacowania rozmiaru pliku danych przebiega według następującego schematu: 

1.

 

Na podstawie tabeli określamy rozmiar pojedynczego wiersza. Dla typów danych o stałym 
rozmiarze  dodajemy  liczbę  bajtów  poszczególnych  kolumn,  zaś  dla  typów  o  zmiennym 
rozmiarze przyjmujemy wartość średnią. 

2.

 

Następnie maksymalną liczbę bajtów na pojedynczej stronie danych (8060) dzielimy przez 
szacunkową  wielkość  wiersza.  W  wyniku  otrzymujemy  liczbę  wierszy  mieszczących  się  na 
stronie. 

3.

 

Następnie szacunkową liczbę wierszy dzielimy przez otrzymaną liczbę wierszy na stronie. W 
ten sposób otrzymujemy liczbę stron niezbędnych do zapisania danych znajdujących się w 
tabeli. 

4.

 

W  kolejnym  kroku  otrzymaną  liczbę  stron  mnożymy  przez  8196 B  (rozmiar  pojedynczej 
strony), co daje nam w wyniku wielkość pliku danych. 

Przykładowe rozwiązanie 

Wyświetlanie wierszy danych 

Zanim  będziesz  mógł  wyświetlić  wiersze  danych  w  twojej  tabeli  w  bazie  danych  będziesz  musiał 
odpowiednio zgromadzić informacje na temat numeru pliku i numeru strony na której interesujące 
Cię dane są zawarte. Wyobraźmy sobie, że stworzyliśmy 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 powstałej tabeli 

Ksiazka wpisujemy trzy dowolne rekordy. 

Podczas tworzenia tabeli 

Ksiazka do widoku systemowego: 

 

 

sysindexes  wstawiany  jest  nowy  wiersz,  przechowujący  informację  o  nowym  obiekcie 

(tabela 

Ksiazka), który przed chwilą został stworzony, co możemy zaobserwować na rys. 7. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

 

syscolumns

  wstawiane  są 

atrybutów, z których złożona jest tabela 

W  celu  poprawnego  uruchomienia 
widoku 

sysindexes (0x9D0000000100

na  rys.  7).  W  pierwszym  kroku  należy  zamienić  bajty,  aby  uzyskać  ciąg 
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 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Strona 9/19 

 

Rys. 7 Wstawiony wiersz do tabeli sysindexes 

wstawiane  są  wiersze,  przechowujące  informację  na  temat  poszczególnych 

atrybutów, z których złożona jest tabela 

Ksiazka, co możemy zaobserwować 

Rys. 8 Wstawione wiersze do tabeli syscolumns 

W  celu  poprawnego  uruchomienia  polecenia 

DBCC  PAGE  należy  pobrać  odpowiednią  wartość  z 

0x9D0000000100) i przekształcić ją na adres pliku 

).  W  pierwszym  kroku  należy  zamienić  bajty,  aby  uzyskać  ciąg 

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 

Wewnętrzna struktura 

przechowujące  informację  na  temat  poszczególnych 

co możemy zaobserwować na rys. 8. 

 

należy  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.  

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 4 

ITA-101 Bazy danych 

 

Wewnętrzna struktura 

Strona 10/19 

Polecenie 

DBCC PAGE wyświetla wiersze danych w czterech grupach po 4 bajty naraz. W obrębie 

każdej z grup bajty wyświetlane są w odwrotnej kolejności.  

Szacowanie wielkości pliku danych 

W  przykładzie  tym  posłużymy  się  wcześniej  stworzona  tabelą 

Ksiazki  oraz  stworzymy  nową 

tabelę 

Czytelnicy  oraz  tabelę  techniczna  Ksiazki_Czytelnicy.  Dla  tej  tabeli  określimy 

wielkość pliku danych. 

1.

 

Określamy  rozmiar  pojedynczego  wiersza  w  tabeli 

Ksiazki,  Czytelnicy  oraz 

Ksiazki_Czytelnicy. 
 
Tabela

 Ksiazki 

Kolumna 

Typ 

Rozmiar 

ID_Ksiazka 

int 

4 bajty 

Tytul 

varchar(200) 

200 bajtów 

Autor 

varchar(50) 

50 bajtów 

Rok 

char(4) 

4 bajty 

ID_Czytelnik 

int 

4 bajty 

Suma 

262 bajtów 

Tabela 

Czytelnicy 

Kolumna 

Typ 

Rozmiar 

ID_Czytelnik 

int 

4 bajty 

Nazwisko 

varchar(50) 

50 bajtów 

Imie 

varchar(30) 

30 bajtów 

Data_urodzenia 

smalldatatime 

4 bajty 

ID_Ksiazka 

int 

4 bajty 

Suma 

92 bajtów 

Tabela 

Ksiazki_Czytelnicy 

Kolumna 

Typ 

Rozmiar 

ID_Ksiazka 

int 

4 bajty 

ID_Czytelnik 

int 

4 bajty 

Suma 

8 bajtów 

 

2.

 

Wyznaczamy liczbę wierszy mieszczących 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 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 4 

ITA-101 Bazy danych 

 

Wewnętrzna struktura 

Strona 11/19 

3.

 

Przy  założeniu,  że  w  tabeli 

Ksiazki  będzie  znajdowało  się  5000  rekordów,  w  tabeli 

Czytelnicy  2000  rekordów  a  w  tabeli  Ksiazki_Czytelnicy  22000  rekordów, 
wyznaczamy liczbę stron niezbędnych do zapisania danych znajdujących się w tabeli. 

Ksiazka = 5000 rekordów / 31 wiersze = 162 strony 

Czytelnicy = 2000 rekordów / 88 wierszy = 23 strony 

Ksiazki_Czytelnicy = 22000 rekordów / 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  ważne  kolumny,  które  reprezentują  numery 

stron w obrębie bazy danych: 

id i first. Kolumna id przechowuje numer identyfikacyjny 

bazy  danych.  Kolumna 

first  przechowuje  wartość,  powyżej  której  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ą dużo przestrzeni dyskowej a zatem ich fragmenty mogą być 
przechowywane w różnych plikach oraz na różnych stronach danych.  

 

Z  racji  tego,  iż  obiekty  typu  OLE  zajmują  dużo  przestrzeni  dyskowej  pamiętaj,  że  należy 
podczas  wyboru  tego  typu  danych  kilkakrotnie  zastanowić  się  czy  jest  to  niezbędny  typ 
danych i czy nie można zastąpić go innym lżejszym typem. 

 

W  celu  poprawnego  uruchomienia  polecenia 

DBCC  PAGE,  należy  prawidłowo  pobrać 

odpowiednia wartość z widoku systemowego 

sysindexes i przekształcić ją na adres pliku i 

strony. 

 

Pamiętaj,  że  z  widoku 

sysindexes  pobieramy  zawartość  kolumny  first  w  postaci 

heksadecymalnej.  W  pierwszym  kroku  należy  zawsze  zamienić  bajty.  Uzyskana  wartość 
składa się z dwóch części: numeru pliku (pierwsze dwie grupy) oraz numeru strony (ostatnie 
cztery grupy). 

 

Widoki systemowe 

sysindexes i syscolumns przechowują wiele różnorodnych informacji 

na  temat  obiektów  w  ramach  bazy  danych  (data  utworzenia,  data  modyfikacji,  itp.) 
przydatnych w skutecznych i sprawnych pracach administracyjnych.  

 

Pamiętaj,  w  wielu  sytuacjach  szacowanie  wielkości  pliku  danych  i  pliku  dziennika  transakcji 
jest  rzeczą  bardzo  ważną  z  punktu  widzenia  administracji  serwerem  bazodanowym.  Ma  to 
szczególne znaczenie w przypadku przenoszenia bazy  danych z innego systemu zarządzania 
bazą danych, gdzie znana jest liczba rekordów w poszczególnych obiektach bazy danych. 

 

W  przypadku,  obliczenia  wielkości  pliku  danych  wychodzi  wartość  niecałkowita  (patrz 
przykładowe  obliczenie  wielkości  pliku  danych),  np.  5.48MB,  wówczas  w  celu  zapewnienia 
odpowiedniej  przestrzeni  na  importowane  dane  należy  ustawić  wielkość  początkową  pliku 
danych na 6.0MB. Microsoft SQL Server 2008 nie daje możliwości stworzenia bazy danych z 
plikiem danych wielkości niecałkowitej. 

 

Pamiętaj,  w  systemowej  bazie  danych 

tempdb  dostarczonej  z  serwerem  Microsoft  SQL 

Server  2008,  ustawione  są  parametry  wyjściowe  Twojej  bazy  danych.  Jeżeli  zmienisz 
cokolwiek w tej bazie danych wszystkie bazy tworzone w ramach serwera będą pobierały jej 
wartości początkowe. 

 

Pamiętaj  nigdy  nie  kasuj  baz  danych  dostarczonych  wraz  z  Microsoft  SQL  Server  2008. 
Operacja  ta  może  doprowadzić  do  niestabilnej  pracy  serwera  a  w  niektórych  sytuacjach 
wręcz do jego poważnego uszkodzenia. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 4 

ITA-101 Bazy danych 

 

Wewnętrzna struktura 

Strona 12/19 

 

Pamiętaj w opcji SQL Server 2008 przy tworzeniu bazy danych mamy możliwość ustawienia 
wielkości  pliku  danych  oraz  wielkości  wzrostu  pliku  danych.  Wielkości  te  są  liczbami 
całkowitymi  z  dokładnością  do  1  MB.  Dobrą  praktyką  jest  ustawienie  parametru  wzrostu 
pliku  danych  jako  30%  wartości  pliku  danych  (jednak  nie  mniej  niż  1MB).  Przykładowo  dla 
pliku danych wielkości 10MB powinniśmy ustawić wielkość wzrostu pliku danych na poziomie 
3MB. 

Uwagi dla studenta 

Jesteś przygotowany do realizacji laboratorium jeśli: 

 

rozumiesz,  co  oznacza  strona  danych,  nagłówek  strony,  wiersze  danych,  tablica  przesunięć 
wierszy 

 

rozumiesz składnię instrukcji 

DBCC 

 

umiesz przeliczać system heksadecymalny na system dziesiętny 

 

znasz podstawowe typy danych w SQL Server 2008 

 

umiesz obliczać wielkość pliku danych 

Pamiętaj  o  zapoznaniu  się  z  uwagami  i  poradami  zawartymi  w  tym  module.  Upewnij  się,  że 
rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego 
w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. 

Dodatkowe źródła informacji 

1.

 

Jeffrey D. Ullman, Jennifer Widom, Podstawowy wykład z systemów baz danych, WNT, 2000 

W  książce  autor w  przystępny  i  zrozumiały  sposób  przedstawia między  innymi jak 
zorganizowane  jest  przechowywanie  danych  oraz  pokazuje,  w  jaki  sposób  można 
odczytać strony danych. 

2.

 

Christopher J. Date, Wprowadzenie do systemów baz danych, WNT, 2000 

W  książce  tej  znajdziemy  dużo  szczegółowych  informacji  na  temat  teorii 
przechowywania danych w bazach danych. Znajdzie cie w niej również szczegółową 
informację na temat polecenia DBCC, wraz z wieloma wariantami jego użycia w celu 
przeglądania  danych  na  bardzo  niskim  poziomie. Pozycja  szczególnie  polecana dla 
osób pragnących poszerzenie swojej wiedzy z tej tematyki. 

3.

 

Ramez Elmasri, Shamkant B. Navathe, Wprowadzenie do systemów baz danych, Wydawnictwo 
Helion, 2005 

Podobnie  jak  w  poprzedniej  pozycji, w  książce  tej  znajdziemy  bardzo  szczegółowe 
informacje  na  temat  teorii  przechowywania  danych  w  bazach  danych.  Pozycja 
szczególnie polecana dla osób pragnących poszerzyć swoją wiedzę z tej tematyki. 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

Laboratorium podstawowe

Problem 1 (czas realizacji 25 min)

Jesteś  administratorem  w  firmie  National
dostępową  do  twojej  bazy  danych  poprosili  Cię  jako  eksperta  o  zaprezentowanie  sposobu 
przechowywania  danych  w  SQL  Server  2008.  Ma  to  im  pomóc  w  zrozumienia  sposobu 
przechowywania danych i ulepszeniu niskopozi

 

Zadanie 

Tok postępowania

1.

 

Utwórz 

testową bazę i 
tabelę 

 

Uruchom maszynę wirtualną 


 

Kliknij 
SQL Server Management Studio

 

W oknie logowania kliknij 

 

2.

 

Utwórz bazę 

 

Wykonaj poniższy kod tworzący 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

 

Stwórz dwie tabele

--

CREATE TABLE Osoba(
 
 
 
 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Strona 13/19 

Laboratorium podstawowe 

Problem 1 (czas realizacji 25 min) 

Jesteś  administratorem  w  firmie  National  Insurance.  Programiści  modernizujący  aplikacje 
dostępową  do  twojej  bazy  danych  poprosili  Cię  jako  eksperta  o  zaprezentowanie  sposobu 
przechowywania  danych  w  SQL  Server  2008.  Ma  to  im  pomóc  w  zrozumienia  sposobu 
przechowywania danych i ulepszeniu niskopoziomowego działania aplikacji.

Tok postępowania 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 
D:\VirtualPC\Dydaktyka\BD2008.vhd

Kliknij  Start.  Z  grupy  programów  Microsoft  SQL  Server  2008
SQL Server Management Studio

W oknie logowania kliknij Connect

Wykonaj poniższy kod tworzący 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 

Stwórz dwie tabele: Osoba i Praca. W tym celu wykonaj poniższy 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 

Wewnętrzna struktura 

Insurance.  Programiści  modernizujący  aplikacje 

dostępową  do  twojej  bazy  danych  poprosili  Cię  jako  eksperta  o  zaprezentowanie  sposobu 
przechowywania  danych  w  SQL  Server  2008.  Ma  to  im  pomóc  w  zrozumienia  sposobu 

omowego działania aplikacji. 

 

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w  Microsoft  Virtual 
PC, dodaj nową maszynę używając 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 poniższy kod: 

(3) Tworzenie przykladowych dwoch tabel: Osoba i Praca 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

 
 
 
 

CREATE TABLE Praca(
 
 
 
 
 
 
 
 

 

Uzupełnij tabele 

3.

 

Sprawdź 

zawartość 
widoków 
systemowych 

 

Z menu głównego 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 

Włodzimierz Dąbrowski, Przemysław 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 
  ) 

 

Uzupełnij tabele Osoba i Praca przykładowymi danymi.

Z menu głównego wybierz File -> Open -> File
Odszukaj plik C:\widoki_systemowe.sql i kliknij Open
Na utworzonej bazie danych Dyplomowe wykonaj poniższe 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  między  innymi  informację  o  numerze  identyfikacyjnym 
obiektu tabeli object_id. Numer ten będzie 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 

Wewnętrzna struktura 

CONSTRAINT [PK_Osoba] PRIMARY KEY CLUSTERED  

CONSTRAINT [PK_Praca] PRIMARY KEY CLUSTERED  

przykładowymi danymi. 

Open

wykonaj poniższe 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  między  innymi  informację  o  numerze  identyfikacyjnym 

. Numer ten będzie 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 

background image

Włodzimierz Dąbrowski, Przemysław 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ć ciąg 

 

Pierwsze  dwie  grupy  (
ostatnie cztery grupy (
1

 

Z menu głównego wybierz 

 

Odszukaj plik 

 

Wywołaj instrukcję 

DBCC TRACEON(3604)
GO
DBCC PAGE (Dyplomowe,1,155,1)

 

W wyniku powinieneś otrzymać

Włodzimierz Dąbrowski, Przemysław 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 której przechowywane 
są dane z tabeli. 

Dla  tabeli  Osoba  odczytaj  wartość  kolumny  first

0x9B0000000100) i przekształć ją na adres pliku strony

Zamień bajty, aby uzyskać ciąg 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 głównego wybierz File -> Open -> File
Odszukaj plik C:\strona_danych.sql i kliknij Open.
Wywołaj instrukcję BDCC PAGE z ustalonymi wcześniej parametrami

DBCC TRACEON(3604) 
GO 
DBCC PAGE (Dyplomowe,1,155,1) 

Instrukcja DBCC TRACEON(3604) nakazuje żeby SQL Server wyświetlił 
strony  danych  na  ekranie  monitora  w  sposób  przyjazny  dla 
użytkownika. 

W wyniku powinieneś otrzymać informacje jak na 

Moduł 4 

Wewnętrzna 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 której przechowywane 

first  z  widoku  sysindexes 

ją na adres pliku strony. 

.  

bajtowy  numer  pliku,  a 

) numer strony. Zatem plik ma numer 

z ustalonymi wcześniej parametrami: 

nakazuje żeby SQL Server wyświetlił 

danych  na  ekranie  monitora  w  sposób  przyjazny  dla 

informacje jak na rys. 13. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 4 

ITA-101 Bazy danych 

 

Wewnętrzna struktura 

Strona 16/19 

 

Rys. 13 Wyświetlona strona danych 

 

 

 

background image

Włodzimierz Dąbrowski, Przemysław 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ść początkową pliku danych i pliku dziennika transakcji.

 

Zadanie 

Tok postępowania

1.

 

Utwórz 

testową bazę 

 

Uruchom maszynę wirtualną 


 

Kliknij 
SQL Server Managemen

 

W oknie logowania kliknij 

 

Rozwiń węzeł 

 

W  obrębie  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

Włodzimierz Dąbrowski, Przemysław 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ść początkową pliku danych i pliku dziennika transakcji. 

Tok postępowania 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd

Jeśli nie masz zdefiniowanej maszyny wirtualnej w 
dodaj  nową  maszynę  używając  wirtualnego  dysku  twardego  z  pliku 
D:\VirtualPC\Dydaktyka\BD2008.vhd

Kliknij  Start.  Z  grupy  programów  Microsoft  SQL  Server  2008
SQL Server Management Studio

W oknie logowania kliknij Connect
Rozwiń węzeł Database i wybierz PraceDyplomowe
W  obrębie  bazy  danych  PraceDyplomowe  rozwiń  węzeł 
Diagram
Powinieneś zobaczyć diagram taki jak na Rys. 14. 

Rys. 14 Diagram bazy danych PraceDyplomowe

W  celu  wykonania  tego  zadania  należy  wykonać  moduł 
związany  z  projektowaniem  i  implementacją  bazy  danych.  Dla 
zaprojektowanej  bazy  danych  będziemy  szacowali  wielkość  pliku 
danych.  

Na podstawie tabeli określ 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 

Wewnętrzna struktura 

iesz, że do twojej bazy danych maja zostać 

zaimportowane  nowe  dane.  W  tym  celu  musisz  przeprojektować  swoja  bazę  danych  i  obliczyć 

 

Jeśli nie masz zdefiniowanej maszyny wirtualnej w Mirosoft Virtual PC, 
dodaj  nową  maszynę  używając  wirtualnego  dysku  twardego  z  pliku 

Microsoft  SQL  Server  2008  uruchom 

PraceDyplomowe 

rozwiń  węzeł  Database 

 

 

anych PraceDyplomowe 

W  celu  wykonania  tego  zadania  należy  wykonać  moduł  2  i  moduł  3 
związany  z  projektowaniem  i  implementacją  bazy  danych.  Dla 

anych  będziemy  szacowali  wielkość  pliku 

podstawie tabeli określ 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 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 4 

ITA-101 Bazy danych 

 

Wewnętrzna 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 niezbędnych do zapisania danych znajdujących się 
w tabelach: 

Recenzja = 8540 rekordów / 1343 wierszy = 7 stron 
Osoba = 5000 rekordów / 103 wierszy = 49 stron 
StopienNaukowy = 4 rekordy / 298 wierszy = 1 strona 
Autorzy = 4270 rekordów / 2015 wierszy = 3 strony 
Slownik = 12810 rekordów / 2015 wierszy = 7 stron 
SlowoKlucz = 500 rekordów / 298 wierszy = 2 strony 
TypStudiow = 3 rekordy / 474 wierszy = 1 strona 
Ocena = 4 rekordy / 1343 wierszy = 1 strona 
PracaDyplomowa = 5000 rekordów / 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 

 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 4 

ITA-101 Bazy danych 

 

Wewnętrzna struktura 

Strona 19/19 

Laboratorium rozszerzone 

Zadanie 1 (czas realizacji 90 min) 

Jesteś  głównym  administratorem  sytemu  bazodanowego  w  firmie  BARKA,  która  zajmuje  się 
inwestycjami  na  giełdzie  papierów  wartościowych.  Kierownictwo  firmy  w  wyniku  przejęcia 
mniejszej firmy TFI START zarządzającej funduszami inwestycyjnymi podjęło decyzje o modernizacji 
aplikacji  dostępowej  do  bazy  danych  oraz  rozbudowie  istniejącej  bazy  danych.  W  związku  z  tym 
pomiędzy  Tobą  a  programistami  aplikacji  dostępowej  powinna  istnieć  ścisła  współpraca.  W  celu 
ulepszeniu niskopoziomowego działania 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ść  początkową  pliku  danych  i  pliku 
dziennika transakcji. 

Zadania, jakie przed tobą zostały postawione, są następujące: 

1.

 

Pokaż  programistom,  w  jaki  sposób  zorganizowane  jest  przechowywanie  danych  w 
SQL Server 2008. 

2.

 

Przeprojektuj istniejącą bazę danych. 

3.

 

Oblicz, jaka powinna być wielkość pliku danych dla przeprojektowanej bazy danych. 

 

background image

ITA-101 Bazy Danych 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 5 

Wersja 1.0 

Język SQL – DCL, DDL 

Spis treści 

Język SQL – DCL, DDL ............................................................................................................................ 1 

Informacje o module ............................................................................................................................ 2 

Przygotowanie teoretyczne ................................................................................................................. 3 

Przykładowy problem .................................................................................................................. 3 

Podstawy teoretyczne.................................................................................................................. 3 

Przykładowe rozwiązanie ............................................................................................................. 7 

Porady praktyczne ..................................................................................................................... 11 

Uwagi dla studenta .................................................................................................................... 12 

Dodatkowe źródła 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 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 5 

ITA-101 Bazy Danych 

 

Język SQL DCL, DDL 

Strona 2/20 

Informacje o module 

Opis modułu 

Język  SQL  został  opracowany  w  1987  roku  z  myślą  o  relacyjnych  bazach 
danych.  Składa  się  on  z  trzech  składowych:  języka  definiowania  danych 
(DDL),  języka  sterowania  danymi  (DCL)  oraz  języka  operowania  na  danych 
(DML).  W  module  tym  znajdziesz  podstawowe  instrukcje  języka 
definiowania  danych  –  języka  SQL  DDL  (z  ang.  Data  Definition  Language
oraz  języka  sterowania  danymi  –  języka  SQL  DCL  (z  ang.  Data  Control 
Language
). 

Cel modułu 

Celem  modułu  jest  zaprezentowanie  podstaw  języka  SQL  DCL  i  DDL.  W 
module  tym  pokazano  składnię  częściową  instrukcji  oraz  przykładowe  ich 
użycie. 

Uzyskane kompetencje 

Po zrealizowaniu modułu będziesz: 

 

potrafił użyć podstawowych instrukcji języka T-SQL DDC 

 

potrafił użyć podstawowych instrukcji języka T-SQL DDL 

 

rozumiał  mechanizm  zarządzania  uprawnieniami  dostępu  do 
obiektów bazy danych 

 

rozumiał mechanizm manipulowania bazą danych i jej obiektami 

Wymagania wstępne 

Przed przystąpieniem do pracy z tym modułem powinieneś: 

 

wiedzieć  w  jaki  sposób  stworzyć  bazę  danych  wraz  z  jej 
podstawowymi obiektami 

 

wiedzieć,  w  jaki  sposób  poruszać  się  po  Microsoft  SQL  Server 
Menagement Studio 

 

wiedzieć, w jaki sposób należy zakładać użytkowników i przypisywać 
ich do bazy danych 

Mapa zależności modułu 

Zgodnie  z  mapą  zależności  przedstawioną  na  rys.  1,  przed  przystąpieniem 
do  realizacji  tego  modułu  należy  zapoznać  się  z  materiałem  zawartym 
w module 3. 

 

Rys. 1 Mapa zależności modułu 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 5 

ITA-101 Bazy Danych 

 

Język SQL DCL, DDL 

Strona 3/20 

Przygotowanie teoretyczne 

Przykładowy problem 

Jak zapewne wiesz, z bazy danych może korzystać wielu użytkowników, którzy mogą dysponować 
różnymi  prawami  dostępu  do  różnych  obiektów  w  bazie  danych.  Najgorszym  rozwiązaniem  jakie 
może istnieć to pełne zaufanie do osób korzystających z bazy i przydzielenie im pełnych praw. Ze 
względu  na  bezpieczeństwo  danych  zawartych  w  bazie,  warto  stosować  zasadę  ograniczonego 
zaufania do użytkownika. Z tego powodu należy zastanowić się, jakie uprawnienia należy przydzielić 
poszczególnym  użytkownikom  lub  grupom  użytkowników.  Dobrze  jest  wiedzieć,  w  jaki  sposób 
można  nadawać,  odmawiać  i  cofać  prawa  dostępu.  W  kolejnym  kroku  należy  rozważyć,  czy 
użytkownik powinien mieć dostęp do całego obiektu typu tabela lub widok, czy może wystarczy mu 
dostęp  do  poszczególnych  kolumn.  Ze  względu  na  bezpieczeństwo,  administrator  powinien 
zastanowić  się,  czy  lepszym  rozwiązaniem  nie  byłoby  umożliwienie  użytkownikowi  lub  grupie 
użytkowników  dostępu  do  obiektów  programowalnych  typu  procedury  składowane,  które 
wprowadzają kolejny stopień bezpieczeństwa i maskują fizyczną strukturę bazy danych. 

Podstawy teoretyczne 

W  części  tej  poznasz  podstawy  języka  T-SQL DCL  (ang.  Data  Control  Language)  i  T-SQL  DDL  (ang. 
Data  Definition  Language).  Dowiesz  się,  w  jaki  sposób  nadawać,  odmawiać  i  usuwać  prawa  do 
wykonywania operacji na poszczególnych obiektach baz danych, takich jak tabele i widoki, oraz w 
jaki  sposób  zarządzać  dostępem  do  programowalnych  obiektów.  Nauczysz  się  tworzyć, 
modyfikować i usuwać podstawowe obiekty. 

Polecenia DCL 

Instrukcje  języka  DCL  służą  do  zarządzania  uprawnieniami  dostępu  do  obiektów  bazy. 
Najważniejszymi poleceniami języka DCL są instrukcje: 

 

GRANT – pozwala użytkownikowi lub roli na wykonywanie operacji określonej przez nadane 
uprawnienie. 

 

DENY – odmawia użytkownikowi lub roli określonego uprawnienia i zapobiega odziedziczeniu 
go po innych rolach. 

 

REVOKE – usuwa uprzednio nadane lub odmówione uprawnienie. 

Modyfikowanie dostępu do tabel 

Dostęp do tabeli należy do efektywnych uprawnień, jakimi dysponuje użytkownik. Dostępem tym 
można  sterować  poprzez  zarządzanie  uprawnieniami  na  poziomie  tabel.  Uprawnienia,  którymi 
można zarządzać, zostały przedstawione w tab. 1. 

Tab. 1 Uprawnienia, którymi można zarządzać na poziomie tabel 

Usprawnienie  

Opis 

ALTER 

Umożliwia modyfikowanie właściwości tabeli 

CONTROL 

Zapewnia uprawnienia właściciela 

DELETE 

Umożliwia usuwanie wierszy tabeli 

INSERT 

Umożliwia wstawienia wierszy do tabeli 

REFERENCES 

Umożliwia  odwoływanie  się  do  tabel  z  obcego 
klucza 

SELECT 

Umożliwia wybieranie wierszy tabeli 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 5 

ITA-101 Bazy Danych 

 

Język SQL DCL, DDL 

Strona 4/20 

TAKE OWNERSHIP 

Umożliwia przejęcie prawa własności do tabeli 

UPDATE 

Umożliwia aktualizowanie wierszy tabeli 

VIEW DEFINITION 

Umożliwia dostęp do meta danych tabeli 

Przyznawanie praw dostępu do tabeli 

Za  pomocą  instrukcji 

GRANT  można  przyznawać  prawa  dostępu  dla  użytkownika  oraz  roli  bazy 

danych. W poniższym przykładzie użytkownik otrzyma uprawnienia 

SELECT, INSERT oraz UPDATE 

do pewnej tabeli: 

GRANT SELECT, INSERT, UPDATE 
ON nazwa_tabeli 
TO nazwa_uzytkownika 

Ograniczanie praw dostępu do tabel 

W celu zabronienia użytkownikowi praw dostępu można zetknąć się z dwojaką sytuacją.  

1.

 

Jeśli użytkownik zostały przyznane uprawnienia do tabeli, aby je zdjąć, należy użyć instrukcji 
REVOKE: 

REVOKE SELECT 
ON nazwa_tabeli 
TO nazwa_uzytkownika 

2.

 

Może  zdarzyć  się  sytuacja,  że  mimo  zdjęcia  uprawnień,  użytkownik  nadal  dysponuje  tymi 
uprawnieniami,  jeżeli  należy  do  roli,  której  to  uprawnienie  przyznano.  W  takim  przypadku 
należy użyć instrukcji 

DENY: 

DENY DELETE 
ON nazwa_tabeli 
TO nazwa_uzytkownika 

Zapewnienie dostępu do pojedynczych kolumn 

Istnieje  również  możliwość  przyznawania  lub  odmawiania  praw  dostępu  nie  tylko  do  tabel,  ale 
również  do  poszczególnych  kolumn.  W  tab.  2  pokazano  uprawnienia  dotyczące  zarządzaniem 
kolumnami tabeli. 

Tab. 2 Uprawnienia dotyczące zarządzaniem kolumn tabeli 

Uprawnienia 

Opis 

SELECT 

Umożliwia wykonywanie selekcji na kolumnie 

UPDATE 

Umożliwia aktualizowanie kolumny 

REFERENCE 

Umożliwia odwoływanie się do kolumny z obcego klucza 

Nadawanie praw dostępu do kolumn 

Prawa  dostępu  do  pojedynczej  kolumny  nadajemy  poleceniem 

GRANT

.

  W  poniższym  przykładzie 

użytkownikowi zostanie nadane uprawnienie 

SELECT oraz UPDATE dotyczące kolumn kolumna1, 

kolumna2 itd. w tabeli: 

GRANT SELECT, UPDATE(kolumna1[, kolumna2[,...n]]) 
ON nazwa_tabeli 
TO nazwa_uzytkownika 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 5 

ITA-101 Bazy Danych 

 

Język SQL DCL, DDL 

Strona 5/20 

Odmawianie praw dostępu do kolumn 

Podobnie  jak  w  przypadku  tabel,  tak  również  w  przypadku  poszczególnych  kolumn  przy 
odmawianiu praw dostępu użytkownikowi można zetknąć się z dwojaką sytuacją: 

1.

 

Jeśli  użytkownik  zostały  przyznane  uprawnienia  do  poszczególnych  kolumn  tabeli,  aby  je 
zdjąć, należy użyć instrukcji 

REVOKE: 

REVOKE UPDATE 
ON nazwa_tabeli 
TO nazwa_uzytkownika 

2.

 

Może  zdarzyć  się  sytuacja,  że  mimo  zdjęcia  uprawnień,  użytkownik  nadal  dysponuje  tymi 
uprawnieniami,  jeżeli  należy  do  roli,  której  to  uprawnienie  przyznano.  W  takim  przypadku 
należy użyć instrukcji 

DENY: 

DENY DELETE 
ON nazwa_tabeli 
TO nazwa_uzytkownika 

Zarządzanie dostępem do obiektów programowalnych 

Obiekty programowalne, takie jak procedury składowane, mają swój własny kontekst zabezpieczeń. 
Zatem  po  to,  żeby  użytkownik  mógł  wykonać  procedurę  składowaną,  potrzebuje  odpowiednich 
uprawnień.  Kiedy  aparat  bazy  danych  sprawdzi  uprawnienia  do  wykonywania  procedury 
składowanej  i  są  one  właściwe,  wówczas  sprawdza,  czy  użytkownik  posiada  odpowiednie 
uprawnienia do wykonywania operacji wewnątrz obiektów. 

Tak  jak  i  inne  obiekty,  procedury  składowane  muszą  być  w  odpowiedni  sposób  zabezpieczone. 
Aspekt  zabezpieczania  procedur  składowanych  można  potraktować  dwojako.  Z  jednej  strony 
potrzebne  są  uprawnienia  na  przykład  do  tworzenia  procedur  składowanych,  a  z  drugiej  strony 
użytkownicy  muszą  mieć  odpowiednie  uprawnienia  do  wywołania  tej  procedury.  Tab.  3 
przedstawia uprawnienia dotyczące procedur składowanych. 

Tab. 3 Uprawnienia dotyczące procedur składowanych 

Uprawnienia 

Opis 

ALTER 

Umożliwia modyfikację właściwości procedury składowanej 

CONTROL 

Zapewnia uprawnienia właściciela 

EXECUTE 

Umożliwia wykonywanie procedury składowanej 

TAKE OWNERSHIP 

Umożliwia przejęcie prawa własności do procedury składowanej 

VIEW DEFINITION 

Umożliwia przeglądanie meta danych procedury składowanej 

 
W momencie kiedy aplikacja żąda wywołania procedury składowanej, SQL Server musi sprawdzić, 
czy użytkownik posiada uprawnienia 

EXECUTE dotyczące tej procedury. 

GRANT EXECUTE On nazwa_procedury_skladowanej 
TO nazwa_uzytkownika 

W taki sam sposób możemy odwołać lub odmówić użytkownikowi uprawnienia 

EXECUTE. 

Polecenia DDL 

Instrukcje języka DDL służą do manipulowania bazą danych i jej obiektami. Pozwalają one na: 

 

tworzenie nowych obiektów 

 

modyfikowanie obiektów już istniejących  

 

usuwanie obiektów 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 5 

ITA-101 Bazy Danych 

 

Język SQL DCL, DDL 

Strona 6/20 

Do podstawowych instrukcji języka DDL należą: 

 

CREATE – służy do tworzenie nowych obiektów. 

 

ALTER – służy do modyfikacji obiektów już istniejących. 

 

DROP – służy do usunięcia obiektu już istniejącego. 

Tworzenie nowych obiektów 

Tworzenie  nowych  obiektów  omówimy  w  kontekście  tabel  i  widoków.  W  celu  stworzenia  nowej 
tabeli  wywołujemy  instrukcję 

CREATE  TABLE.  Składnia  częściowa  tej  instrukcji  została 

przedstawiona poniżej: 

CREATE TABLE nazwa_tabeli ( 
 

  nazwa_kolumny1 typ_danych [NULL | NOT NULL][, 
 

  nazwa_kolumny2 typ_danych [NULL | NOT NULL][,...n]] 

Przy  definiowaniu  tabeli  należy  podać  jej  nazwę,  nazwy  jej  atrybutów  oraz  typ  danych,  które  te 
atrybuty  mogą  przyjmować.  Dodatkowo  określamy,  czy  dany  atrybut  może  przyjmować  wartość 
NULL czy nie. Przykład tworzenia tabeli pokazano poniżej: 

CREATE TABLE Osoba  

 

    ID_Osoba    int        NOT NULL, 
 

    Nazwisko    char(50)    NOT NULL, 
 

    Imie        char(20)    NOT NULL, 
 

    Telefon     int        NULL 

W  podobny  sposób  tworzymy  widoki.  W  celu  stworzenia  nowego  widoku  wywołujemy  instrukcję 

CREATE VIEW.

 Składnia częściowa tej instrukcji została przedstawiona poniżej: 

CREATE VIEW nazwa_widoku[(kolumna1, [kolumna2[,...n])] 
AS  
SELECT wyrazenie_select 

Przy definiowaniu widoku należy podać jego nazwę, nazwę kolumn, które będą używane w widoku,  
oraz  wyrażenie 

SELECT,  które  definiuje  widok.  Polecenie  to  może  używać  nie  tylko  jedna,  ale 

również wiele tabel, jak również innych widoków. Przykład tworzenia widoku pokazano poniżej: 

CREATE VIEW Praca_dyplomowa(ID_Praca, Nazwisko, Imię, Tytuł) 
AS 
SELECT ID_Praca, Imię, Nazwisko, Tytuł FROM Praca 

Modyfikowanie obiektów 

Po  stworzeniu  obiektu  powinniśmy  móc  go  w  razie  jakiejkolwiek  potrzeby  zmodyfikować.  Do 
modyfikacji  obiektów  (zarówno  tabel  jak  i  widoków)  służy  polecenie 

ALTER.  W  celu  modyfikacji 

istniejącej  tabeli  należy  zastosować  polecenie 

ALTER  TABLE,  którego  uproszczona  składnię 

częściową pokazano poniżej: 

ALTER TABLE nazwa_tabeli 
{ { ALTER COLUMN nazwa_kolumny | ADD <definicja_kolumny> } 
  [{ NULL | NOT NULL }] } | 
  DROP COLUMN nazwa_kolumny } 
 
<definicja_kolumny> ::= nazwa_kolumny typ_danych 

Najczęściej polecenie 

ALTER TABLE stosuje się do zmiany schematu relacji. Przykład zastosowania 

tego polecenia do dodania lub usunięcia kolumny z tabeli pokazano poniżej: 

ALTER TABLE nazwa_tabeli ADD nazwa_kolumny typ_danych  
ALTER TABLE nazwa_tabeli DROP COLUMN nazwa_kolumny 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 5 

ITA-101 Bazy Danych 

 

Język SQL DCL, DDL 

Strona 7/20 

Podobnie jak tabelę możemy zmodyfikować widok. W celu modyfikacji istniejącego widoku należy 
zastosować polecenie 

ALTER VIEW, którego uproszczona składnię częściową pokazano poniżej: 

ALTER VIEW nazwa_widoku [(kolumna1[, kolumna2[,...n]])] 
AS 
SELECT wyrazenie_select 

Przy  modyfikacji  widoku  należy  podać  nazwę  modyfikowanego  widoku,  nazwę  jednej  lub  wielu 
kolumn, z których składać się ma nowy widok oraz wyrażenie 

SELECT, które ma definiować nowy 

widok. Przykład zastosowania instrukcji modyfikacji widoku pokazano poniżej: 

ALTER VIEW Praca_dyplomowa(Nazwisko, Imię, Tytuł) 
AS 
SELECT Imię, Nazwisko, Tytuł FROM Praca 

Usuwanie obiektów 

Po  stworzeniu  obiektu  powinniśmy  móc  go  w  razie  jakiejkolwiek  potrzeby  usunąć.  Do  usuwania 
obiektów (zarówno tabel jak i widoków) służy polecenie 

DROP. W celu usunięcia istniejącej tabeli, 

należy zastosować polecenie 

DROP TABLE. Usuwa ono również schemat tabeli. Jego uproszczoną 

składnię częściową pokazano poniżej: 

DROP TABLE nazwa_tabeli 

gdzie w nazwie tabeli podajemy nazwę obiektu, który chcemy usunąć. Przykładowo: 

DROP TABLE Osoba 

W celu usunięcia istniejącego widoku należy zastosować polecenie DROP VIEW. Jego uproszczoną 
składnię częściową pokazano poniżej: 

DROP VIEW nazwa_widoku 

gdzie w nazwie widoku podajemy nazwę obiektu, który chcemy usunąć. Przykładowo: 

DROP VIEW Osoba, PracaDyplomowa 

Przykładowe rozwiązanie 

Dodawanie użytkowników  

Dodawać  użytkowników  można  na  dwa  sposoby.  Pierwszy  polega  na  tworzeniu  użytkowników  z 
poziomu  języka  T-SQL  używając  procedur  składowanych.  Drugi  na  tworzeniu  użytkowników  z 
poziomu SQL Server Management Studio. Poniżej zaprezentujemy obydwie metody. 

Tworzenie użytkowników z poziomu języka T-SQL 

Pierwszym  krokiem  związanym  z  zarządzaniem  użytkownikami  jest  stworzenie  użytkowników 
serwera i bazy danych. W tym celu stosujemy systemową procedurę składowaną 

sp_addlogin. W 

naszym przykładzie stworzymy dwóch użytkowników: 

Konsultant1 i Konsultant2. 

 

EXEC sp_addlogin Konsultant1 
 

EXEC sp_addlogin Konsultant2 

Następnie  powinniśmy  zezwolić  nowo  stworzonym  użytkownikom  na  dostęp  do  bazy  danych.  W 
tym  celu  używamy  systemowej  procedury  składowanej 

sp_grantdbaccess.  W  naszym 

przykładzie mamy: 

 

EXEC sp_grantdbaccess Konsultant1 
 

EXEC sp_grantdbaccess Konsultant2 

Po  stworzeniu  użytkowników  i  daniu  im  możliwości  dostępu  do  bazy  danych,  w  kolejnym  kroku 
powinniśmy  dodać  ich  do  roli.  W  tym  celu  używamy  systemowej  procedury  składowanej 
sp_addrolemember. W naszym przykładzie mamy: 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 5 

ITA-101 Bazy Danych 

 

Język SQL DCL, DDL 

Strona 8/20 

 

EXEC sp_addrolemember Obsluga, Konsultant1 
 

EXEC sp_addrolemember Obsluga, Konsultant2 

W  wyniku  stworzyliśmy  dwóch  użytkowników: 

Konsultant1 i  Konsultant2, którym nadaliśmy 

prawo dostępu do bazy danych, a następnie przydzieliliśmy ich do roli 

Obsluga. 

Tworzenie użytkowników z poziomu SQL Server Management Studio 

W  celu  stworzenia  użytkowników  poziomu  SQL  Server  Menagemant  Studio,  w  pierwszym  kroku 
należy  dodać  użytkowników  do  serwera  bazodanowego.  W  tym  celu  w  obrębie  Object  Explorer 
wybieramy  katalog  Security,  a  następnie  Login.  W  obrębie  zakładki  Login  wybieramy  prawym 
przyciskiem  myszy  New  Login,  a  następnie  dodajemy  nazwę  użytkownika,  sposób  autoryzacji, 
ustawiamy hasło, które użytkownik zmieni przy pierwszym logowaniu, domyślną bazę danych oraz 
język domyślny, co pokazano na rys. 2. 

 

Rys. 2 Zakładanie konta na  SQL Server 2008 użytkownikowi 

W  analogiczny  sposób  tworzymy  drugiego  użytkownika.  W  następnym  etapie  dodajemy  obydwu 
użytkowników  do  bazy  danych.  W  tym  celu  w  obrębie  Object  Explorer  wybieramy  Datatabase,  a 
następnie bazę danych, do której chcemy przypisać użytkowników. W naszym przypadku będzie to 
baza 

Obsluga

.  Następnie  wybieramy  zakładkę  Security  i  Users.  W  obrębie  zakładki

 

Users 

wybieramy prawym przyciskiem myszy New User, a następnie dodajemy użytkownika, który został 
wcześniej  stworzony  na  poziomie  serwera,  co  pokazano  na  rys.  1.  W  analogiczny  sposób 
postępujemy z drugim użytkownikiem. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 5 

ITA-101 Bazy Danych 

 

Język SQL DCL, DDL 

Strona 9/20 

 

Rys. 3 Dodawanie użytkownika do bazy danych 

Na  końcu  należy  jeszcze  zmienić  ustawienia  serwera  tak,  żeby  nowi  użytkownicy  mogli  się 
zalogować.  W  tym  celu  klikamy  prawym  przyciskiem  myszy  instancję  serwera  i  wybieramy 
Properties,  a  następnie  Security  i  zaznaczamy  opcję  SQL  Server  and  Windows  Authentication 
mode
, co pokazano na rys. 4. 

 

Rys. 4 Ustawienie autoryzacji 

Zarządzanie uprawnieniami dostępu do tabeli 

Podobnie  jak  w  przypadku  dodawania  użytkowników,  tak  i  teraz  podczas  nadawania  uprawnień 
dostępu  do  tabel możemy  uczynić  to  na  dwa  sposoby.  Pierwszy  polega  na  nadawaniu  uprawnień 
użytkownikom  z  poziomu  języka T-SQL.  Drugi  na  nadawaniu  uprawnień  użytkownikom  z  poziomu 
SQL Server Management Studio. 

Nadawanie uprawnień z poziomu języka T-SQL 

W  celu  przyznania  użytkownikowi  prawa  dostępu  stosujemy  instrukcję 

GRANT.  Przykładowo  by 

nadać  prawo  przeglądania  i  wstawiania  danych  do  tabeli 

Klienci  stworzonemu  wcześniej 

użytkownikowi 

Konsultant1 możemy zastosować następujące polecenie: 

GRANT SELECT, INSERT  
ON Klienci 
TO Konsultant1 

W podobny sposób możemy nadać wspomniane wcześniej uprawnienia roli 

Obsluga: 

GRANT SELECT, INSERT  
ON Klienci 
TO Obsluga 

Analogicznie odmawiamy (

DENY) lub usuwamy (REVOKE) użytkownikowi lub roli uprawnienia. 

W  wielu  sytuacjach  znacznie  bezpieczniejszym  rozwiązaniem  jest  przydzielenie  użytkownikowi 
prawa  wykonania  procedury  składowanej.  Załóżmy,  że  posiadamy  procedurę  składowaną 
proc_klienci,  która  zwraca  w  wyniku  zbiór  wierszy  reprezentujących  klientów.  W  naszym 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 5 

ITA-101 Bazy Danych 

 

Język SQL DCL, DDL 

Strona 10/20 

przykładzie przydzielimy prawo wykonania procedury  składowanej użytkownikowi 

Konsultant2. 

Zatem będziemy mieli: 

GRANT EXECUTE 
ON proc_klienci 
TO Konsultant2 

W  analogiczny  sposób  możemy  przydzielić  prawo  wykonywania  procedury  składowanej  roli 
Obsluga. Zatem będziemy miel: 

GRANT EXECUTE 
ON proc_klienci 
TO Obsluga 

Nadawanie uprawnień z poziomu SQL Server Management Studio 

W  celu  nadania  użytkownikowi  uprawnień  dostępu  do  obiektu  typu  tabela,  należy  w  obrębie 
zakładki Tables wybrać tabelę 

Uzytkownik

, a następnie kliknąć prawym przyciskiem myszy i wybrać 

Properties.  W  obrębie  okna  Table  Proberties  wybieramy  zakładkę  Permissions.  Mając 
zdefiniowanego  użytkownika  na  poziomie  bazy  danych 

Obsluga

,  nadajemy  mu  odpowiednie 

uprawnienia. W naszym przypadku dajemy mu możliwość przeglądania tabeli, co pokazano na rys. 
5. 

 

Rys. 5 Nadanie uprawnień na tabeli Uzytkownik 

Operacje na obiektach 

Załóżmy, że chcemy stworzyć nowy obiekt w postaci tabeli, która będzie przechowywała informacje 
o klientach. W tym celu stosujemy polecenie 

CREATE TABLE, co pokazano poniżej: 

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 
 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 5 

ITA-101 Bazy Danych 

 

Język SQL DCL, DDL 

Strona 11/20 

Jeżeli  użytkownikowi 

Konsultant2  chcemy  nadać  prawo  przeglądania  danych  o  klientach, 

możemy dla tabeli 

Klienci stworzyć widok z udostępnionymi danym, a użytkownikowi dać prawo 

dostępu  do  widoku.  Zatem  tworzymy  widok  jak  poniżej  i  nadajemy  prawo  dostępu  do  widoku  w 
analogiczny sposób, jak pokazano wyżej dla obiektu typu tabela. 

CREATE VIEW Klienci_Obsluga(Firma, Nazwisko, Imię, Telefon) 
AS 
SELECT Imię, Nazwisko, Firma, Telefon FROM Klienci 

Załóżmy,  że  chcemy  dodać  kolumnę  przechowująca  informacje  o  stronie  internetowej  do  tabeli 
Klienci. Wówczas: 

ALTER TABLE Klienci ADD www char(50) NULL 

W  analogiczny  sposób  możemy  zmodyfikować  widok 

Klienci_Obsluga  tak,  żeby  użytkownik 

Konsultant2 mógł przeglądać adresy stron internetowych klientów. Zatem: 

ALTER VIEW Klienci_Obsluga (Firma, Nazwisko, Imię, Telefon, www) 
AS 
SELECT Imię, Nazwisko, Firma, Telefon, www FROM Klienci 

Załóżmy, że chcemy usunąć kolumnę przechowująca informacje o numerze faksu z tabeli 

Klienci. 

Wówczas: 

ALTER TABLE Klienci DROP COLUMN fax 

Porady praktyczne 

Język T-SQL DCL 

 

Przyznawanie  lub  odmawianie  praw  dostępu  do  poszczególnych  kolumn  zwiększa 
elastyczność w zarządzaniu dostępem na przykład do poufnych danych z niektórych kolumn. 

 

W  zarządzaniu  dostępem  do  obiektów  programowalnych  występuje  zagadnienie  łańcucha 
praw własności. Łańcuch praw własności jest sekwencją obiektów bazy danych uzyskujących 
dostęp  do  siebie  nawzajem.  W  sytuacji,  kiedy  w  tabeli  są  wiersze  uzyskane  z  procedury 
składowanej,  procedura  ta  jest  obiektem  wywołującym,  a  tabela  obiektem  wywoływanym. 
Gdy SQL Server napotka na taki łańcuch, aparat bazy danych sprawdza uprawnienia inaczej 
niż w przypadku indywidualnego dostępu do obiektów. 

 

Tworzenie użytkowników oraz nadawanie im uprawnień może odbywać się na dwa sposoby. 
Pierwszy  wymaga  znajomości  języka  T-SQL.  Drugi  sposób  polega  na  wykorzystaniu 
graficznych narzędzi dostępnych w SQL Server Menagement Studio.  

 

W  przypadku  tworzenia  użytkowników  z  poziomu  języka  T-SQL  musimy  znać  odpowiednie 
procedury  składowane,  których  należy  w  tym  celu  użyć.  W  procedurach  składowanych 
zapisane są ustawienia, które zostaną wprowadzone podczas ich użycia.  

 

Możemy  nadawać  uprawnienia  do  różnych  obiektów  w  bazie  danych.  W  rozdziale 
„Przykładowe  rozwiązanie”  pokazano  w  jaki  sposób  nadawać  uprawnienia  do  obiektu  typu 
tabela. W analogiczny sposób możemy nadawać uprawnienia do obiekty typu: widok, funkcja 
czy procedura składowana. 

 

Użytkowników  możemy  grupować  według  nadanych  im  uprawnień.  Wówczas  możemy 
założyć role i pogrupować użytkowników według ról, jakie pełnią w bazie danych. W wyniku 
tego  możemy  przypisać  dostęp  do  obiektów  bazy  danych  nie  tylko  pojedynczemu 
użytkownikowi, ale również grupom użytkowników zapisanych w roli. 

Język T-SQL DDL 

 

Poleceniem 

CREATE  możemy  utworzyć  nie  tylko  tabelę  czy  widok,  lecz  również  obiekt 

programowalny  w  postaci  procedury  składowanej.  W  tym  celu  wywołujemy  instrukcję 
CREATE  PROCEDURE.  Przykładowa  składnia  częściowa  instrukcji  tworzenia  procedury  bez 
parametru została pokazana poniżej: 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 5 

ITA-101 Bazy Danych 

 

Język SQL DCL, DDL 

Strona 12/20 

CREATE PROCEDURE nazwa_procedury  
AS 
SELECT wyrazenie 

 

Polecenie 

ALTER,  podobnie  CREATE,  może  być  stosowane  w  odniesieniu  do  obiektu 

programowalnego  w  postaci  procedury  składowanej.  W  tym  celu  wywołujemy  instrukcję 
ALTER  PROCEDURE.  Przykładowa  składnia  częściowa  instrukcji  modyfikowania  procedury 
została pokazana poniżej: 

ALTER PROCEDURE nazwa_procedury 
[WITH { RECOMPILE | ENCRYPTION }] 
AS 
SELECT wyrazenie 

 

W  celu  usunięcia  istniejącej  procedury  składowanej  należy  zastosować  polecenie 

DROP 

PROCEDURE. Jego uproszczoną składnię częściową pokazano poniżej: 

DROP PROCEDURE nazwa_widoku 

 

Tworzenie,  modyfikacja  i  usuwanie  może  odbywać  się  na  obiektach  typu:  baza  danych, 
funkcja, indeks, tabela, procedura składowana, widok, wyzwalacz. 

 

Polecenie 

CREATE  służy  do  tworzenia  wszystkich  obiektów  baz  danych:  tabel  (CREATE 

TABLE),  widoków  (CREATE  VIEW),  procedur  składowanych  (CREATE  PROCEDURE), 
indeksów  (

CREATE  INDEX),  wyzwalaczy  (CREATE  TRIGGER).  Tylko  tymczasowe  twory, 

takie jak zmienne czy kursory, deklaruje się (nie tworzy) za pomocą polecenia 

DECLARE. 

 

Do istniejącej tabeli możemy zawsze dodać ograniczenia na istniejąca kolumnę, przykładowo:  

ALTER TABLE Osoba_1 
  ADD CONSTRAINT CK_Nr_Indeksu CHECK (Nr_Indeksu > 10000) 

 Ograniczenie to wymusza wstawianie w kolumnie 

Nr_indeksu liczb całkowitych większych 

od 10000. 

Uwagi dla studenta 

Jesteś przygotowany do realizacji laboratorium jeśli: 

 

rozumiesz zasadę zarządzania uprawnieniami do obiektów bazy danych 

 

rozumiesz mechanizm manipulowania bazą danych i jej obiektami 

 

umiesz podać przykłady obiektów baz danych, do których można zastosować składnię języka 
T-SQL DDL oraz T-SQL DCL 

Pamiętaj  o  zapoznaniu  się  z  uwagami  i  poradami  zawartymi  w  tym  module.  Upewnij  się,  że 
rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego 
w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. 

Dodatkowe źródła informacji 

1.

 

Kalen  Delaney,  Microsoft  SQL  Server  2005:  Rozwiązania  praktyczne  krok  po  kroku,  Microsoft 
Press, 2006  

W  książce  autor w  przystępny  i  zrozumiały  sposób  przedstawia,  między  innymi, w 
jaki  sposób  nadawać  prawa  dostępu  do  bazy  danych  oraz  jak  zarządzać  rolami. 
Następnie  pokazuje,  jak  prosto  można  nadawać  uprawnienia  do  obiektów  bazy 
danych typu tabela i widok. 

2.

 

Edward Whalen, Microsoft SQL Server 2005 Administrator’s Companion, Microsoft Press, 2006  

W książce autor pokazał, w jaki sposób można zorganizować nadawanie uprawnień 
do bazy danych oraz do obiektów bazy danych od strony administracyjnej. Przybliża 
również,  jak  należy  planować  politykę  bezpieczeństwa  serwera  i  bazy  danych 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 5 

ITA-101 Bazy Danych 

 

Język SQL DCL, DDL 

Strona 13/20 

poprzez  nadawanie  odpowiednich  uprawnień.  Pozycja  szczególnie  polecana 
osobom chcącym 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 obsługa, APN Promise, 2006 

W książce przedstawiono obie składowe języka T-SQL: DCL i DDL. Pokazano, w jaki 
sposób  tworzyć  użytkowników,  nadawać  im  uprawnienia  oraz  jak  tworzyć, 
modyfikować i usuwać podstawowe obiekty bazy danych. Książka szczególnie warta 
polecenia ze względu na dużą zawartość ćwiczeń laboratoryjnych. 

4.

 

Dusan Petkovic,  Microsoft SQL Server 2008: A Beginner's Guide, McGraw-Hill, 2008  

Pozycja  napisana  w  sposób  przystępny.  Wprowadza w  SQL  Server  2008  w  sposób 
szybki  i  łatwy. Osoba  początkująca w  SQL  Server  2008  znajdzie  w  niej  podstawy  z 
każdego  tematu  dotyczącego  serwera  bazodanowego.  W  prosty  sposób  dowiesz 
się,  jak  należy  definiować  użytkowników  i  nadawać  im  uprawnienia  oraz  jak 
tworzyć,  modyfikować  i  usuwać  podstawowe  obiekty  bazy.  Pozycja  szczególnie 
polecana dla osób początkujących.  

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych 

Laboratorium podstawowe

Problem 1 (czas realizacji 

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od 
firma  planuje  rozszerzenie  systemu 
skalę uczelniana. Pierwsze z
oraz modyfikacja użytkowników istniejących

 

Zadanie 

Tok postępowania

1.

 

Nawiąż 

połączenie z SQL 
Server 2008 

 

Uruchom maszynę wirtualną 


 

Kliknij 
SQL Server Management Studio

 

W oknie logowania kliknij 

2.

 

Utwórz tabelę 

 

Z menu głównego wybierz 

 

Odszukaj plik 

 

Zaznacz i uruchom (

--
USE PraceDyplomowe
GO
 
--
CREATE TABLE Osoba_1(
 
 
 
 
 

3.

 

Zmodyfikuj 

tabelę 

 

Mając 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

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Strona 14/20 

Laboratorium podstawowe 

Problem 1 (czas realizacji 15 min) 

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od 
firma  planuje  rozszerzenie  systemu  prac  dyplomowych  na  Twoim  wydziale

Pierwsze zadanie, jakie przed Tobą stoi, to zdefiniowanie nowych użytkowników 

oraz modyfikacja użytkowników istniejących. 

Tok postępowania 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 
D:\VirtualPC\Dydaktyka\BD2008.vhd

Kliknij  Start.  Z  grupy  programów  Microsoft  SQL  Server  2008
SQL Server Management Studio

W oknie logowania kliknij Connect

Z menu głównego wybierz File -> Open -> File
Odszukaj plik C:\Labs\Lab06\ddl.sql
Zaznacz i uruchom (F5) poniższy 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 

 

Mając otwarty skrypt ddl.sql w oknie Query zaznacz i uruchom poniższy 
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ę przechowującą informacje o numerze 
telefonu. W tym celu zaznacz i uruchom (F5) poniższy fragment ko

-- (4) Dodanie kolumny Telefon 
ALTER TABLE Osoba_1 
  ADD Telefon int 
GO 

Dodaj  ograniczenia  na  kolumnę  indeks.  W  tym  celu  z

F5) poniższy fragment kodu.  

-- (5) Dodajmy ograniczenie na kolumne Nr_Indeksu
ALTER TABLE Osoba_1 

Moduł 5 

Język SQL DCL, DDL 

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od swojego szefa, że 

woim  wydziale,  którym  zarządza,  na 

to zdefiniowanie nowych użytkowników 

 

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w  Microsoft  Virtual 
PC, dodaj nową maszynę używając 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 poniższy 

fragment kodu odpowiedzialny za zmianę definicji kolumny Nazwisko

 

kolumnę przechowującą informacje o numerze 

) poniższy fragment kodu: 

W  tym  celu  zaznacz  i  uruchom 

(5) Dodajmy ograniczenie na kolumne Nr_Indeksu 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych 

 
GO

 

Usuń ograniczenia nałożone 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  zarządzania  pracami  dyplomowymi  na  skalę  uczelni
zadanie, jakie przed tobą stoi
praw dostępu do obiektów w Twojej bazie danych. 

 

Zadanie 

Tok postępowania

1.

 

Nawiąż 

połączenie z SQL 
Server 2008 

 

Uruchom maszynę wirtualną 


 

Kliknij 
SQL Server 

 

W oknie logowania kliknij 

2.

 

Dodaj 

użytkowników do 
bazy danych 

 

Z menu głównego wybierz 

 

Odszukaj pliku 

 

Zaznacz i uruchom (
6

--
USE PraceDyplomowe
GO
 
--
 
 
 
 
 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Strona 15/20 

  ADD CONSTRAINT CK_Nr_Indeksu CHECK (Nr_Indeksu > 10000)
GO 

Usuń ograniczenia nałożone w poprzednim kroku. 
uruchom (F5) poniższy 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 mając otwarty skrypt 
uruchom (F5) poniższy fragment kodu. 

-- (8) Usuwamy tabele Osoba_1 
  DROP TABLE Osoba_1 
GO 

Problem 2 (czas realizacji 30 min) 

W  wyniku  rozszerzenia  systemu  zarządzania  pracami  dyplomowymi  na  skalę  uczelni

jakie przed tobą stoi, to przydzielenie nowo zdefiniowanym użytkownikom odpowiednich 

praw dostępu do obiektów w Twojej bazie danych.  

Tok postępowania 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 
D:\VirtualPC\Dydaktyka\BD2008.vhd

Kliknij  Start.  Z  grupy  programów  Microsoft  SQL  Server  2008
SQL Server Management Studio

W oknie logowania kliknij Connect

Z menu głównego wybierz File -> Open -> File
Odszukaj pliku C:\Labs\Lab06\dcl_1.sql
Zaznacz i uruchom (F5) poniższy 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 

Język SQL DCL, DDL 

T CK_Nr_Indeksu CHECK (Nr_Indeksu > 10000) 

Usuń ograniczenia nałożone w poprzednim kroku. W tym celu zaznacz i 

(6) Usuwamy ograniczenie na kolumnie Nr_Indeksu 

aznacz  i  uruchom  (F5)  poniższy 

ając otwarty skrypt ddl.sql zaznacz i 

W  wyniku  rozszerzenia  systemu  zarządzania  pracami  dyplomowymi  na  skalę  uczelni,  kolejne 

definiowanym użytkownikom odpowiednich 

 

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w  Microsoft  Virtual 
PC, dodaj nową maszynę używając 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 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 5 

ITA-101 Bazy Danych 

 

Język SQL DCL, DDL 

Strona 16/20 

  EXEC sp_addrole Dziekanat 
  EXEC sp_addrolemember Dziekanat, Sekretariat1 
  EXEC sp_addrolemember Dziekanat, Sekretariat2 
GO 

 

Rys. 6 Dodanie użytkowników do bazy danych 

 

W oknie Object Explorer kliknij przycisk Connect -> Database Engine

 

W zakładce Authentication wybierz SQL Server Authentication

 

W polu Login wpisz użytkownika Sekretariat1. Hasło pozostaw puste. 

 

W  wyniku  powinieneś  uzyskać  połączenie  do  drugiej  instancji  serwera, 
co pokazano na rys. 7. 

 

Rys. 7 Podłączenie do drugiej instancji serwera 

 

Odszukaj pliku C:\Labs\Lab06\dcl_2.sql

 

Zaznacz i uruchom (F5) poniższy 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 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych 

 

Spróbuj 

nadać 

uprawnienia 

innemu 

użytkownikowi

zalogowan
poniższy 

--
GRANT SELECT ON Osoba TO S
GO

3.

 

Nadaj 

uprawnienia 

 

Przełącz się do okna ze skryptem 

 

Zaznacz i uruchom (

--
--
GRANT SELECT ON Osoba TO Sekretariat1
GO

 

Przełącz się do okna ze skryptem 
użytkownika 

 

Zaznacz  i  uruchom  (
pokazano na 

--
USE PraceDyplomowe
GO
 
--
--
SELECT * FROM Osoba
GO

 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Strona 17/20 

Pamiętaj,  że  powyższy  fragment  kodu  zawarty  w  skrypcie 
wykonujemy z zalogowanym użytkownikiem Sekretatiat1

Rys. 8 Sprawdzenie uprawnienia wykonania polecenia SELECY na tabeli Osoba

Wykonanie  poprzedniego  polecenia  nie  powiodło
domyślne  uprawnienia  nowego  użytkownika  nie  pozwalają  na 
wykonanie  żadnego  polecenia  w  bazie  danych.  Skoro  nie  mamy 
uprawnień  do  wykonywania  poleceń,  tym  bardziej  nie  możemy  ich 
nadawać. 

Spróbuj 

nadać 

uprawnienia 

innemu 

użytkownikowi

zalogowanym  jako  Sekretariat1.  W  tym  celu  zaznacz  i  uruchom  (
poniższy fragment kodu: 

-- (3) Spróbujmy nadać uprawnienia innemu użytkown
GRANT SELECT ON Osoba TO Sekretariat2 
GO 

Podjąłeś 

nieudaną 

próbę 

nadania 

innemu 

użytkownikowi 

(Sekretariat2) uprawnień do wykonywania polecenia 
Osoba

Przełącz się do okna ze skryptem dcl_1.sql
Zaznacz i uruchom (F5) poniższy fragment kodu: 

-- (3) Nadaj uprawnienia do wykonywania polecenia SELECT
-- w tabeli Osoba użytkownikowi Sekretariat1 
GRANT SELECT ON Osoba TO Sekretariat1 
GO 

Przełącz się do okna ze skryptem dcl_2.sql uruchomionego w kontekście 
użytkownika Sekretariat1
Zaznacz  i  uruchom  (F5)  poniższy  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 

Język SQL DCL, DDL 

taj,  że  powyższy  fragment  kodu  zawarty  w  skrypcie  dcl_2.sql 

Sekretatiat1 

 

Sprawdzenie uprawnienia wykonania polecenia SELECY na tabeli Osoba 

Wykonanie  poprzedniego  polecenia  nie  powiodło  się,  ponieważ 

omyślne  uprawnienia  nowego  użytkownika  nie  pozwalają  na 

wykonanie  żadnego  polecenia  w  bazie  danych.  Skoro  nie  mamy 
uprawnień  do  wykonywania  poleceń,  tym  bardziej  nie  możemy  ich 

Spróbuj 

nadać 

uprawnienia 

innemu 

użytkownikowi, 

będąc 

aznacz  i  uruchom  (F5

uprawnienia innemu użytkownikowi 

nadania 

innemu 

użytkownikowi 

) uprawnień do wykonywania polecenia SELECT w tabeli 

 

(3) Nadaj uprawnienia do wykonywania polecenia SELECT 

 

uruchomionego w kontekście 

fragment  kodu.  Wynik  uruchomienia 

(1) Ustawmy PraceDyplomowe jako baze robocza 

(2) sprawdzamy, czy mamy uprawnienia do wykonania 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych 

 

Zaznacz i uruchom (

--
--
GRANT SELECT ON Osoba TO Sekretariat
GO

4.

 

Cofnij 

uprawnienia 

 

Przełącz się do okna, w którym masz uruchomiony skrypt 

 

Zaznacz i uruchom (

--
--
REVOKE SELECT ON Osob
GO

 

Przełącz się do okna, w którym masz uruchomiony skrypt 

 

Zaznacz i uruchom (

--
--
SELECT * FROM Osoba
GO

5.

 

Odbierz 

uprawnienia 

 

Przełącz się do okna, w którym masz uruchomiony skrypt 

 

Zaznacz i uruchom (

--
--
GRANT SELECT ON Osoba TO Sekretariat1
GO

 

Przełącz się do okna, w którym masz uruchomiony skrypt 

 

Zaznacz i uruchom (

--
--

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Strona 18/20 

Rys. 9 Sprawdzenie uprawnien do wykonania polecenia SELECT

Zaznacz i uruchom (F5) ponownie poniższy fragment kodu

-- (3) Nadaj uprawnienia do wykonywania polecenia SELECT
-- w tabeli Osoba użytkownikowi Sekretariat2 
GRANT SELECT ON Osoba TO Sekretariat2 
GO 

I  tym  razem  nie  udaje  się  nadać  praw  innemu  użytkownikowi
nadanie uprawnień do wykonywania polecenia nie jest równoznaczne 
z umożliwieniem nadawania uprawnień innym użytkownikom.

Przełącz się do okna, w którym masz uruchomiony skrypt 
Zaznacz i uruchom (F5) poniższy fragment kodu: 

-- (4) Cofnij uprawnienia do wykonywania polecenia SELECT
-- w tabeli Osoba użytkownikowi Sekretariat1 
REVOKE SELECT ON Osoba FROM Sekretariat1 
GO 

Przełącz się do okna, w którym masz uruchomiony skrypt 
Zaznacz i uruchom (F5) ponownie poniższy fragment kodu

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

Po cofnięciu uprawnień do wykonania polecenia 
tego fragmentu skryptu powinno zwrócić informację o błędzie.

Przełącz się do okna, w którym masz uruchomiony skrypt 
Zaznacz i uruchom (F5) ponownie poniższy fragment kodu

-- (3) Nadaj uprawnienia do wykonywania polecenia SELECT
-- w tabeli Osoba użytkownikowi Sekretariat1 
GRANT SELECT ON Osoba TO Sekretariat1 
GO 

Przełącz się do okna, w którym masz uruchomiony skrypt 
Zaznacz i uruchom (F5) ponownie poniższy fragment kodu

-- (2) sprawdzmy, czy mamy uprawnienia do wykonania
-- polecenia SELECT na tabeli Osoba 

Moduł 5 

Język 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  użytkownikowi,  czyli 
nadanie uprawnień do wykonywania polecenia nie jest równoznaczne 
z umożliwieniem nadawania uprawnień innym użytkownikom. 

Przełącz się do okna, w którym masz uruchomiony skrypt dcl_1.sql

 

(4) Cofnij uprawnienia do wykonywania polecenia SELECT 

 

Przełącz się do okna, w którym masz uruchomiony skrypt dcl_2.sql

fragment kodu: 

, czy mamy uprawnienia do wykonania 

Po cofnięciu uprawnień do wykonania polecenia SELECT uruchomienie 

informację o błędzie. 

Przełącz się do okna, w którym masz uruchomiony skrypt dcl_1.sql

fragment kodu: 

(3) Nadaj uprawnienia do wykonywania polecenia SELECT 

 

Przełącz się do okna, w którym masz uruchomiony skrypt dcl_2.sql

fragment kodu: 

(2) sprawdzmy, czy mamy uprawnienia do wykonania 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych 

SELECT * FROM Osoba
GO

 

Przełącz się do okna, w którym masz uruchomiony skrypt 

 

Zaznacz i uruchom (

--
--
DENY SELECT ON Osoba TO Dziekanat
GO

 

Przełącz się do okna, w którym masz uruchomiony skrypt 

 

Zaznacz i uruchom (

--
--
SELECT * FROM Osoba
GO

6.

 

Przekaż 

uprawnienia 

 

Przełącz się do okna w którym masz uruchomiony skrypt 

 

Zaznacz i uruchom (

--
--
--
--
GRANT SELECT ON Osoba TO Sekretariat1 WITH GRANT OPTION
GO

 

Przełącz się do okna, w którym masz uruchomiony skrypt 

 

Zaznacz i uruchom (

--

GRANT SELECT ON Osoba TO Sekretariat2
GO

 

 

 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Strona 19/20 

SELECT * FROM Osoba 
GO 

Przełącz się do okna, w którym masz uruchomiony skrypt 
Zaznacz i uruchom (F5) ponownie poniższy fragment kodu

-- (5) Zabroń wykonywania polecenia SELECT 
-- w tabeli Osoba grupie Dziekanat 
DENY SELECT ON Osoba TO Dziekanat 
GO 

Powyższy  kod  spowoduje  zabronienie  wszystkim  użytkownikom  w 
grupie Dziekanat (czyli u nas konkretnie użytkownikom 
Sekretariat2) wykonywania polecenia SELECT w tabeli 

Przełącz się do okna, w którym masz uruchomiony skrypt 
Zaznacz i uruchom (F5) ponownie poniższy fragment kodu

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

Tym  razem  okaże  się,  że  nie  możemy  wykonać  polecenia 
Dzieje  się  tak  dlatego,  że  przed  momentem  zabroniliśmy  grupie 
Dziekanat,  do  której  należy  użytkownik,  w  którego  kontekście 
pracujemy, wykonywania polecenia SELECT

Przełącz się do okna w którym masz uruchomiony skrypt 
Zaznacz i uruchom (F5) ponownie poniższy 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 

Przełącz się do okna, w którym masz uruchomiony skrypt 
Zaznacz i uruchom (F5) ponownie poniższy fragment kodu

-- (3) sprobujmy nadac uprawnienia innemu uzytkownikowi

GRANT SELECT ON Osoba TO Sekretariat2 
GO 

 

Moduł 5 

Język SQL DCL, DDL 

Przełącz się do okna, w którym masz uruchomiony skrypt dcl_1.sql

ent kodu: 

Powyższy  kod  spowoduje  zabronienie  wszystkim  użytkownikom  w 

(czyli u nas konkretnie użytkownikom Sekretariat1 i 

w tabeli Osoba

Przełącz się do okna, w którym masz uruchomiony skrypt dcl_2.sql

fragment kodu: 

(2) sprawdzmy, czy mamy uprawnienia do wykonania 

Tym  razem  okaże  się,  że  nie  możemy  wykonać  polecenia  SELECT
Dzieje  się  tak  dlatego,  że  przed  momentem  zabroniliśmy  grupie 

,  do  której  należy  użytkownik,  w  którego  kontekście 

Przełącz się do okna w którym masz uruchomiony skrypt dcl_1.sql

) ponownie poniższy 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 

Przełącz się do okna, w którym masz uruchomiony skrypt dcl_2.sql

niższy fragment kodu: 

(3) sprobujmy nadac uprawnienia innemu uzytkownikowi 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 5 

ITA-101 Bazy Danych 

 

Język SQL DCL, DDL 

Strona 20/20 

Laboratorium rozszerzone 

Zadanie 1 (czas realizacji 90 min) 

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od swojego szefa, że 
firma  zarządzająca  bazą 

AdventureWorks  planuje  rozszerzenie  i  modernizację  systemu  w  celu 

spełnienia  pewnych  standardów.  W  związku  z  modernizacją  systemu  bazodanowego, 
najprawdopodobniej  ulegną  zmianie  pewne  obiekty  w  bazie  danych  (część  najprawdopodobniej 
zostanie  zmodyfikowanych,  część  stworzonych,  a  część  usuniętych)  oraz  uprawnienia 
poszczególnych  użytkowników  oraz  grup  użytkowników  do  poszczególnych  obiektów  w  bazie 
danych (tabel, widoków, procedur składowanych, funkcji itp.).  

Zadania, jakie przed Tobą stoją, to: 

1.

 

Podjęcie  decyzji,  które  obiekty  w  bazie  danych  pozostaną  bez  zmian,  a  które  zostaną 
zmodyfikowane lub usunięte. 

2.

 

Zdefiniowanie  nowych  użytkowników  oraz  zmodyfikowanie  użytkowników  istniejących  w 
celu przydzielenia im praw do obiektów w zmodernizowanej bazie danych. 

3.

 

Przeorganizowanie grupy użytkowników i nadanie im uprawnień do obiektów bazy danych. 

background image

ITA-101 Bazy Danych 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

Wersja 1.0 

Język SQL – DML 

Spis treści 

Język SQL – DML ................................................................................................................................... 1 

Informacje o module ............................................................................................................................ 2 

Przygotowanie teoretyczne ................................................................................................................. 3 

Przykładowy problem .................................................................................................................. 3 

Podstawy teoretyczne.................................................................................................................. 3 

Przykładowe rozwiązanie ............................................................................................................. 7 

Porady praktyczne ....................................................................................................................... 9 

Uwagi dla studenta .................................................................................................................... 10 

Dodatkowe źródła informacji..................................................................................................... 10 

Laboratorium podstawowe ................................................................................................................ 12 

Problem 1 (czas realizacji 45 min) .............................................................................................. 12 

Laboratorium rozszerzone ................................................................................................................. 19 

Zadanie 1 (czas realizacji 90 min) ............................................................................................... 19 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język SQL DML 

Strona 2/19 

Informacje o module 

Opis modułu 

Język SQL składa się z trzech składowych: języka definiowania danych (DDL), 
języka sterowania danymi (DCL) oraz języka operowania na danych (DML). 
W module tym dowiesz się w jaki sposób można pobierać i przeglądać dane, 
formatować zestawy wyników oraz konstruować proste zapytania używając 
jeżyka T-SQL DML. 

Cel modułu 

Celem  modułu  jest  zapoznanie  słuchacza  z  podstawowymi  instrukcjami 
języka  T-SQL  DML,  służącego  do  manipulowania  danymi,  oraz  pokazanie 
sposobu używania zaprezentowanych instrukcji. 

Uzyskane kompetencje 

Po zrealizowaniu modułu będziesz: 

 

potrafił używać podstawowych instrukcji języka SQL DML 

 

potrafił pobierać i modyfikować dane w zawarte w bazie 

 

potrafił formatować zestaw wyników i przedstawiać je w przejrzystej 
formie 

 

potrafił konstruować proste zapytania do bazy danych Microsoft SQL 
Server 2008 

Wymagania wstępne 

Przed przystąpieniem do pracy z tym modułem powinieneś: 

 

wiedzieć,  w  jaki  sposób  stworzyć  bazę  danych  wraz  z  jej 
podstawowymi obiektami (patrz: moduł 3) 

 

wiedzieć,  w  jaki  sposób  poruszać  się  po  Microsoft  SQL  Server 
Management Studio 

 

potrafić definiować użytkowników i przydzielać im uprawnienia 

Mapa zależności modułu 

Zgodnie  z  mapą  zależności  przedstawioną  na  rys.  1,  przed  przystąpieniem 
do  realizacji  tego  modułu  należy  zapoznać  się  z  materiałem  zawartym 
w modułach 3 i 5. 

 

Rys. 1 Mapa zależności modułu 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język SQL DML 

Strona 3/19 

Przygotowanie teoretyczne 

Przykładowy problem 

Z  bazy  danych  może  korzystać  wielu  użytkowników,  dysponujących  różnorakimi  uprawnieniami  i 
mających dostęp do różnych obiektów w bazie danych. Głównym ich zadaniem jest  przeszukiwanie 
danych  w  niej  zawartych  według  pewnych  reguł,  które  wcześniej  zostały  zdefiniowane  przez 
administratora, projektanta i programistę bazy danych. W związku z tym podstawowym zadaniem, 
jakie  stoi  przed  osobami  odpowiedzialnymi  za  prawidłowe  funkcjonowanie  bazy  danych,  jest 
określenie, jakie polecenia będą używane do pobierania z niej danych  

Kolejnym  problemem,  z  jakim  często  możemy  się  spotkać,  jest  wprowadzanie,  modyfikacja  oraz 
import  i  eksport  danych  pomiędzy  różnymi  bazami.  Eksport  nie  powinien  sprawiać  większych 
kłopotów,  natomiast  problem  może  stanowić  import  danych  z  innych  systemów  zarządzania 
bazami danych. Może on wynikać z odmiennej wewnętrznej struktury przechowywania danych w 
różnych  systemach,  jak  również  z  niespójności  typów  danych  w  nich  zawartych.  Dobrze  jest 
wiedzieć,  w  jaki  sposób  można  poradzić  sobie  z  potencjalnymi  problemami  przy  importowaniu 
danych. 

Podstawy teoretyczne 

W  części  tej  pokazany  zostanie  sposób  budowy  poleceń  odczytujących  dane  zawarte  w  bazie. 
Rozpoczniemy  od  prezentacji  prostych  poleceń 

SELECT.  Następnie  prześledzimy  informacje  na 

temat złączeń używanych do pobierania danych z wielu tabel. Na końcu prześledzimy, w jaki sposób 
można ł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  służy  do  odczytywania  danych  przechowywanych  w  bazie  danych.  Sposób 
wywołania instrukcji znajduje się poniżej: 

SELECT [{ ALL | DISTINCT }] lista_wyboru 
FROM nazwa_tabeli[,…n] 
WHERE warunek_wyszukiwania 

Jeżeli  chcemy  pobrać  wszystkie  kolumny  z  tabeli,  możemy  w  liście  wyboru  podać  gwiazdkę, 
przykładowo: 

SELECT * FROM nazwa_tabeli 

Powyższe  polecenie  zwraca  wszystkie  dane  zawarte  w  wybranej  tabeli.  Zazwyczaj  odczytywanie 
wszystkich kolumn z tabeli nie jest konieczne, a wykonywanie takiego zapytania może spowodować 
wiele problemów.  

Załóżmy, że potrzebne są nam dane tylko z niektórych kolumn z danej tabeli. Wówczas po słowie 
SELECT  należy  wymienić  nazwy  tych  kolumn  w  takiej  kolejności,  w  jakiej  chcemy,  aby  zostały 
wyświetlone. Przykładowo: 

SELECT employeeid, lastname, firstname, title 
FROM employees 

Gdy  tabela  zawiera  małą  liczbę  wierszy,  czas  potrzebny  na  ich  zwrócenie  jest  akceptowalny.  W 
sytuacji,  gdy  tabela  składa  się  z  milionów  wierszy,  zwracanie  ich  wszystkich  nie  jest  dobrym 
rozwiązaniem,  dlatego  powinno  się wydobywać  tylko  potrzebne  wiersze.  Należy  w  związku  z  tym 
odpowiedzieć  sobie  na  pytania:  które  kolumny  są  potrzebne?  Które  wiersze  są  potrzebne? 
Udzielenie  odpowiedzi  na  te  pytania  powinno  pomóc  przy  tworzeniu  przyjaznych  dla  serwera 
zapytań.  

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język SQL DML 

Strona 4/19 

W  celu  ograniczenia  liczby  wierszy  dokonujemy  filtrowania  rekordów.  Służy  do  tego  klauzula 
WHERE, którą możemy zawrzeć w instrukcji SELECT. Przykładowo: 

SELECT SELECT employeeid, lastname, firstname, title 
FROM employees 
WHERE employeeid = 5 

Należy  pamiętać,  iż  warunki  wyszukiwania,  które  możemy  stosować  po  słowie 

WHERE,  są 

różnorodne i dają dużą swobodę filtrowania rekordów. Warunki te mogą: 

 

korzystać z operatorów porównania 

 

korzystać z porównywania ciągów 

 

korzystać z operatorów logicznych 

 

pobierać zakresu wartości 

 

korzystać z listy wartości jako kryterium wyszukiwania 

 

pobrać wartości nieznane 

Operator porównania 

Operator  porównania  (=)  użyty  w  klauzulu 

WHERE  powoduje,  że  zwracane  są  tylko  te  rekordy, 

których wartość w zadanej kolumnie jest równa podanej. Przykładowo: 

SELECT lastname, city 
FROM employees 
WHERE country = 'USA' 

Operator LIKE 

Operator 

LIKE  służy  do  porównywania  ciągów  znaków,  które  powinny  być  do  siebie  podobne. 

Wraz  z  operatorem 

LIKE  można  stosować  znaki  maskujące  „%”,  reprezentujące  dowolny  ciąg 

znaków. Przykładowo: 

SELECT companyname 
FROM customers 
WHERE companyname LIKE '%Restaurant%' 

W wyniku otrzymamy nazwy firm zawierające w sobie słowo „Restaurant”. 

Operatorem  o  odwrotnym  działaniu  jest  operator 

NOT  LIKE.  Jego  zastosowanie  powoduje 

zwrócenie rekordów, które nie spełniają podanego warunku podobieństwa. Przykładowo: 

SELECT companyname 
FROM customers 
WHERE companyname NOT LIKE 'D%' 

W wyniku otrzymamy nazwy firm które nie rozpoczynają się na literę „D”. 

Operatory logiczne AND i OR 

Czasem zachodzi potrzeba połączenia kilku warunków w celu wyodrębnienia potrzebnych danych. 
Do łączenia warunków można użyć operatorów logicznych 

AND i OR. 

Operator 

AND zapewnia prawdziwość wielu warunków. Przykładowo: 

SELECT company, Date 
FROM customers 
WHERE (company LIKE '%Restaurant%') AND (Date='2001-07-08') 

W  wyniku  otrzymamy  zestaw  danych  składający  się  z  nazw  firm  zawierających  w  sobie  słowo 
„Restaurant”, które to firmy zostały założone dnia 8 lipca 2001 roku. 

Operator 

OR  używany  jest  wówczas,  gdy  przynajmniej  jeden  z  warunków  musi  być  spełniony. 

Przykładowo: 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język SQL DML 

Strona 5/19 

SELECT company, Date 
FROM customers 
WHERE (company LIKE '%Restaurant%') OR (Date='2001-07-08') 

W  wyniku  otrzymamy  zestaw  danych  składający  się  z  nazw  firm  zawierających  w  sobie  słowo 
„Restaurant” lub firmy, które to firmy zostały założone dnia 8 lipca 2001 roku. 

Często zachodzi potrzeba połączenia operatorów 

AND i OR w celu otrzymania wymaganych danych. 

Przykładowo: 

SELECT company, productid, Date 
FROM customers 
WHERE (company LIKE '%Restaurant%' OR productid=20) AND (Date='2001-07-08') 

W  wyniku  otrzymamy  zestaw  danych  składających  się  z  nazw  firm  zawierających  w  sobie  słowo 
„Restaurant” lub numer identyfikacyjny o wartości 20, które to firmy zostały założone dnia 8 lipiec 
2001 roku. 

Wyszukiwanie z listy wartości 

Do wyszukiwania wartości z podanej listy służy słowo 

IN. Przykładowo: 

SELECT companyname, country 
FROM suppliers 
WHERE country IN ('Japan', 'Italy') 

W  wyniku  zapytania  otrzymamy  wszystkie  nazwy  firm,  które  mieszczą  się  w  Japonii  lub  we 
Włoszech. 

Wyszukiwanie wartości nieznanych 

Bazy  danych  pozwalają  na  przechowywanie  wartości 

NULL  w  niektórych  polach.  Wyszukiwanie 

rekordów  o  nieokreślonych  lub  pustych  wartościach  ma  wiele  praktycznych  zastosowań. 
Przykładowo: 

SELECT companyname, fax 
FROM suppliers 
WHERE fax IS NULL 

W wyniku wykonania zapytania otrzymamy wszystkie nazwy firm, dla których wartość pola 

fax jest 

pusta. 

Wprowadzanie danych 

Podstawą dodawania informacji jest instrukcja 

INSERT. Korzysta ona z następującej składni: 

INSERT INTO [nazwa_serwera.][nazwa_bazy_danych.] 
 

  [nazwa_schematu.]nazwa_tabeli 
 

    (nazwa_pola1[,nazwa_pola2[,…n]]) 
VALUES 
 

    (wartosc1[,wartosc2[,…n]]) 

Przykładowo: 

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 
następujący sposób: 

INSERT INTO [nazwa_serwera.][nazwa_bazy_danych.] 
 

  [nazwa_schematu.]nazwa_tabeli DEFAULT VALUES 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język SQL DML 

Strona 6/19 

Zdarza  się,  że  występuje  potrzeba  przeniesienia  informacji  z  jednego  systemu  bazodanowego  do 
drugiego  bez  utraty  danych.  Zadanie  to  można  zrealizować  przy  pomocy  wielu  metod.  Omówimy 
tutaj  dwa  sposoby  przenoszenia  danych:  z  wykorzystaniem  narzędzia 

BCP

  oraz  instrukcji 

BULK 

INSERT

Narzędzie 

BCP

  uruchamiane  jest  z  wiersza  poleceń.  Pozwala  ono  na  import  i  eksport  danych 

wielkich  rozmiarów. 

BCP

  wymaga  podania  nazwy  bazy  danych  źródła,  nazwy  tabeli  lub  widoku, 

identyfikatora działania (

in lub out) oraz nazwy zewnętrznego pliku danych. Podstawowa składnia 

jest następująca: 

BCP baza_danych.schemat.{ nazwa_tabeli | nazwa_widoku } 
{ in | out } 
nazwa_pliku_zewnętrznego 
modyfikator_zabezpieczeń 
modyfikator_formatu
 

Poniższy przykład eksportuje rekordy z tabeli 

Product do pliku CSV: 

bcp AdventureWorks.Production.Product out "Products.txt" –T -c 

Następnie można zaimportować dane za pomocą składni: 

bcp AdventureWorks.Production.Product2 in "Products.txt" –T -c 

Może  zdarzyć  się  sytuacja,  że  zajdzie  potrzeba  zaimportowania  informacji  do  bazy  danych,  ale  ze 
względów  bezpieczeństwa  nie  będzie  można  użyć  narzędzia 

BCP.  Istnieje  polecenie  T-SQL,  które 

pozwala  na  rozwiązanie  tego  problemu.  Do  wstawiania  danych  do  bazy  z  poziomu  języka  T-SQL 
służy instrukcja 

BULK INSERT, której przykładowe wywołanie 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.  Przykładem 
może  być  skasowanie  błędnie  wprowadzonych  rekordów  lub  gdy  chcemy  pozbyć  się  starych 
informacji  z  tabel  historycznych.  We  wszystkich  tych  sytuacjach  korzysta  się  z  polecenia 

DELETE. 

Poniżej przedstawiono podstawową składnię polecenia 

DELETE. 

DELETE FROM [nazwa_serwera.][nazwa_bazy_danych.] 
 

  [nazwa_schematu.]nazwa_tabeli 
WHERE warunki 

Wiersze można usunąć korzystając z dowolnych kolumn tabeli w klauzuli 

WHERE

.

 Przykładowo: 

DELETE FROM AdventureWorks.Person.Address 
WHERE AddressID = 1 

Warunek w klauzuli 

WHERE może zostać użyty z dowolnymi argumentami do usuwania informacji, 

także  tymi,  które  określają  zakresy  danych  i  korzystają  z  logicznych  kombinacji 

AND,  OR  i  NOT. 

Przykładowo: 

DELETE FROM Production.Product 
WHERE (MakeFlag = 1) 
 

  AND 
 

    (ReorderPoint BETWEEN 200 AND 600) 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język SQL DML 

Strona 7/19 

 

  AND 
 

    (SellStarDate<CONVERT(DATETIME, '2000-01-01 00:00:00', 102)) 

Czasami istnieje potrzeba usunięcia wierszy z tabeli na postawie warunków dotyczących innej tabeli 
lub tabel. Najlepszym sposobem jest wówczas użycie operatora 

IN. Przykładowo: 

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  składowane.  W  takiej 
sytuacji  implementacja  procedury  składowanej  jest  podobna  do  implementacji  innych  działań 
definiowanych wewnątrz procedury składowanej. Przykładowo: 

CREATE PROCEDURE [Sales].[CurrencyRate_Delete] @id int 
AS 
DELETE FROM [AdventureWorks].[Sales].[CurrencyRate] 
WHERE CurrencyRateID = @id 
GO 

Uaktualnianie danych 

Do  modyfikacji  danych  w  tabelach  używa  się  polecenia 

UPDATE.  Jego  podstawowa  składnia  jest 

następująca: 

UPDATE [nazwa_serwera.][nazwa_bazy_danych.] 
 

  [nazwa_schematu.]nazwa_tabeli 
SET nazwa_kolumny = nowa_wartosc 
[WHERE warunek

Polecenie 

UPDATE oczywiście można stosować bez warunku WHERE.  

Przykładowe rozwiązanie 

Wprowadzanie danych 

Żebyśmy  mogli  wybierać  jakiekolwiek  dane,  w  pierwszym  kroku  powinniśmy  zasilić  naszą  bazę 
danych  przykładowymi  wartościami.  Załóżmy,  że  mamy  tabelę 

Ksiazki  w  bazie  danych 

Biblioteka. Strukturę tabeli Ksiazki

 

pokazano na rys. 2. 

 

Rys. 2 Tabela Ksiazki w bazie danych Biblioteka 

Pokażemy  dwa  sposoby  wstawiania  przykładowych  danych  do  tabeli 

Ksiazki.  Sposób  pierwszy 

polega na wstawieniu pojedynczego wiersza za pomocą instrukcji 

INSERT. Przykładowo: 

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  powyższej  instrukcji  tabela 

Ksiazki  będzie  zawierała  jeden  rekord,  co 

pokazano na rys. 3.  

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język SQL DML 

Strona 8/19 

 

Rys. 3 Tabela Ksiazki po wstawieniu rekordu 

Ja  widać  sposób  ten  nie  jest  zbyt  efektywny  przy  wstawianiu  większej  liczby  danych.  W  sytuacji 
kiedy  mamy  do  zaimportowania  tysiące  rekordów,  lepszym  rozwiązaniem  jest  użycie  na  przykład 
instrukcji 

BULK  INSERT.  Załóżmy  że  dane,  które  chcemy  zaimportować,  znajdują  się  w  pliku 

ksiazki.txt, w postaci jak pokazano na rys. 4. 

 

Rys. 4 Dane zawarte w pliku książki.txt 

Wówczas wywołanie instrukcji importu będzie wyglądało w następujący sposób: 

BULK INSERT Ksiazki 
FROM 'C:\ksiazki.txt' 
WITH 
 

  ( 
 

    FIELDTERMINATOR = ',', 
 

    ROWTERMINATOR = '\n', 
 

    CODEPAGE = 'ACP' 
 

  ) 

Poważny  problem  pojawiłby  się  w  sytuacji,  kiedy  w  kolumnie 

CD  przechowywalibyśmy  wartości 

typu  logicznego.  Wówczas  przy  eksporcie  danych  do  pliku  wartość  logiczna 

TRUE  lub  FALSE 

zostałaby  zamieniona  na  wartość  tekstową  0  lub  1.  Jeżeli  w  kolejnym  kroku  chcielibyśmy 
zaimportować te same dane do bazy, wówczas pojawiłby się błąd związany z niezgodnością typów 
danych (kolumna ma typ logiczny, a z pliku importujemy dane tekstowe). 

Wybieranie danych 

Jeżeli nasza baza danych jest już uzupełniona danymi, to w kolejnym kroku możemy zastanowić się, 
jakie dane mogą być najczęściej wybierane przez użytkowników. Przykładowo dla tabeli 

Ksiazki 

użytkownik najczęściej może wyszukiwać książki po: 

 

imionach autorów 

 

wydawnictwie 

 

roku wydania 

 

informacji o płycie CD 

 

kombinacji: autor, wydawnictwo, rok wydania i informacje o płycie CD 

Przykładowo  jeżeli  chcielibyśmy  znaleźć  autora  o  nazwisku  Kowalski,  wówczas  instrukcja 

SELECT 

mogłaby mieć następującą postać: 

SELECT Nazwisko, Imie, Tytul FROM Ksiazki 
WHERE Nazwisko='Kowalski' 

Natomiast  jeżeli  chcielibyśmy  znaleźć  autorów  o  nazwisku  Kowalski  lub  Andziński,  wówczas 
instrukcja 

SELECT mogłaby wyglądać w ten sposób: 

SELECT Nazwisko, Imie, Tytul FROM Ksiazki 
WHERE (Nazwisko='Kowalski') OR (Nazwisko='Andziński') 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język SQL DML 

Strona 9/19 

W  sytuacji  kiedy  chcielibyśmy  znaleźć  autorów,  których  nazwisko  kończy  się  na  -ski,  wówczas 
moglibyśmy sformułować instrukcję SELECT następująco: 

SELECT Nazwisko, Imie, Tytul FROM Ksiazki 
WHERE Nazwisko LIKE '%ski' 

Oczywiście moglibyśmy do tego dołączyć jeszcze wyszukiwanie po dacie, wówczas otrzymalibyśmy: 

SELECT Nazwisko, Imie, Tytul, Rok FROM Ksiazki 
WHERE (Nazwisko LIKE '%ski') AND (Rok='2003') 

W sytuacji kiedy chcemy znaleźć autora o nazwisku zakończonym na -ski, który wydał w 2003 roku 
książkę z dołączoną płytą CD, możemy użyć następującego zapytania: 

SELECT Nazwisko, Imie, Tytul, Rok, CD FROM Ksiazki 
WHERE (Nazwisko LIKE '%ski' OR Rok='2003') AND (CD='1') 

Najbardziej  skomplikowanego  zapytania  potrzebujemy  wówczas,  gdy  chcemy  znaleźć  autora  o 
nazwisku zakończonym na -ski, którego książka wraz z dołączoną płytą CD została wydana w 2003 
roku nakładem wydawnictwa Selion. Wówczas zapytanie może 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 ogólne 

 

Najlepszą  kontrolę  nad  operacjami  wykonywanymi  na  bazie  danych  zapewniają  procedury 
składowane.  Dzięki  nim  możesz  zapewnić  jednolity  model  dostępu  do  bazy  z  poziomu 
aplikacji,  a  także  poprawić  bezpieczeństwo  i  wydajność.  Z  tych  powodów  powinieneś 
rozważyć użycie procedur składowanych we własnych aplikacjach. 

 

Tworzenie  dynamicznych  poleceń  wstawiania  danych  może  zagrażać  bezpieczeństwu  bazy, 
dlatego  wielce  prawdopodobnie  jest,  że  administrator  będzie  preferował  zabezpieczenia 
tabel przez odmowę uprawnień zapisu do tabeli. Z tego powodu dobrym rozwiązaniem jest 
zarządzanie operacjami wstawiania danych za pomocą procedur składowanych. 

Wybieranie danych 

 

Użycie  polecenia 

SELECT  *  FROM  Department  odczytuje  wszystkie  kolumny  z  tabeli. 

Zazwyczaj  nie  potrzebujemy  informacji  o  wszystkich  kolumnach,  natomiast  wykonanie 
takiego zapytania bez potrzeby może spowodować sporo problemów. Przykładowo: 

a)

 

Aplikacje  mogą  działać  nieprawidłowo  po  dodaniu  nowych  kolumn  do  tabeli.  Jeśli  ich 
twórcy  nie  przewidzieli  takiego  możliwości,  nieoczekiwane  kolumny  zostaną 
niepoprawnie obsłużone. 

b)

 

Jeśli  zostaną  wybrane  wszystkie  kolumny,  optymalizator  zapytań  nie  będzie  używał 
niektórych indeksów.  

 

Jeśli zajdzie potrzeba wykorzystania w klauzuli 

WHERE operatorów logicznych AND i OR, warto 

rozważyć stosowanie nawiasów. Pozwalają one precyzyjnie określić kolejność wykonywania 
operacji logicznych.  

 

W  wielu  przypadkach  możemy  na  wiele  sposobów  otrzymać  tan  sam  efekt  wywołania 
zapytania. Przykładowo następujące dwa zapytania zwracają te same rekordy: 

SELECT company, Date 
FROM customers 
WHERE year(ShipDate)=2001 and month(ShipDate)=7 
 
SELECT company, Date 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język SQL DML 

Strona 10/19 

FROM customers 
WHERE ShipDate between '2001-07-01' and '2001-07-31' 

Pierwsze  z  zapytań  odczytuje  datę  i  miesiąc.  Po  odczytaniu  wszystkich  wierszy  wykonuje 
obliczenia  i  je  porównuje.  Drugie  zapytanie  wykonuje  tylko  porównanie,  bez  obliczeń, 
ponadto  jeżeli  na  kolumnie 

ShipDate  znajduje  się  indeks,  to  zostanie  on  użyty  –  a  zatem 

zapytanie drugie jest szybsze.  

 

Można używać jednej, kilku lub wszystkich kolumn do utworzenia warunku w klauzuli 

WHERE. 

Jego wydajność można poprawić poprzez: 

a)

 

zastosowanie klucza głównego w warunku 

b)

 

użycie kolumn, które są indeksowane 

Wprowadzanie, usuwanie i uaktualnianie danych 

 

Aby  skasować  wszystkie  wiersze  z  tabeli,  zamiast  instrukcji 

DELETE  można  użyć  instrukcji 

TRUNCATE  TABLE.  Różnica  w  stosunku  do  instrukcji  DELETE  polega  na  tym,  iż  zadanie 
kasowania odbywa się szybciej. Używając 

TRUNCATE TABLE trzeba mieć pewność, że tabela 

nie ma żadnych związków z innymi tabelami. 

 

Możne  usuwać  wiersze  z  tabeli  za  pośrednictwem widoków,  jednak  występują tutaj  pewne 
ograniczenia: 

a)

 

Można usunąć wiersze tylko z jednej tabeli. 

b)

 

Użytkownik musi posiadać uprawnienia do usuwania dla widoku. 

 

Można  wykonywać  zadania  uaktualniające  korzystając  z  widoków.  W  takiej  sytuacji  istnieją 
pewne ograniczenia: 

a)

 

Uaktualnienia są dozwolone tylko dla kolumn z pojedynczej tabeli. 

b)

 

Użytkownik musi mieć uprawnienia do zapisu dla widoku. 

 

Uwagi dla studenta 

Jesteś przygotowany do realizacji laboratorium jeśli: 

 

rozumiesz składnię języka T-SQL DML 

 

umiesz skonstruować podstawowe zapytania do bazy danych 

 

umiesz zaimportować dane do swojej bazy danych 

 

umiesz modyfikować dane w swojej bazie danych 

Pamiętaj  o  zapoznaniu  się  z  uwagami  i  poradami  zawartymi  w  tym  module.  Upewnij  się,  że 
rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego 
w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. 

Dodatkowe źródła informacji 

1.

 

Kalen  Delaney,  Microsoft  SQL  Server  2005:  Rozwiązania  praktyczne  krok  po  kroku,  Microsoft 
Press, 2006  

W książce autor przedstawia między innymi w jaki sposób pobierać dane z instancji 
SQL  Server  za  pomocą  języka  T-SQL.  Pozycja  polecana  dla  osób,  które  chciałyby 
dowiedzieć się nieco więcej na temat praktycznych metod pobierania danych. 

2.

 

 Kalen Delaney, Podstawy baz danych krok po kroku, APN Promise, 2006 

Bardzo  dobra  książka  dla  osób  początkujących.  W  łatwy  i  przejrzysty  sposób 
pokazano, jak należy odczytywać dane z SQL Server, jak je wybierać, modyfikować, 
usuwać i uaktualniać. Książka oprócz teorii zawiera dużo przykładów.  

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język 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 obsługa, APN Promise, Warszawa 2006 

W  książce  przedstawiono  pracę  z    językiem  T-SQL  DML.  Pokazano,  w  jaki  sposób 
tworzyć  zapytania,  formatować  wynikowy  zbiór  wierszy  oraz  modyfikować  dane. 
Książka  szczególnie  polecana  ze  względu  na  dużą  zawartość  ćwiczeń 
laboratoryjnych. 

4.

 

Dusan Petkovic,  Microsoft SQL Server 2008: A Beginner's Guide, McGraw-Hill, 2008  

Pozycja  napisana  w  sposób  przystępny.  Wprowadza w  SQL  Server  2008  w  sposób 
szybki  i  łatwy. Osoba  początkująca w  SQL  Server  2008  znajdzie  w  niej  podstawy  z 
każdego tematu dotyczącego serwera bazodanowego. W prosty sposób dowiesz się 
jak należy tworzyć zapytania, formatować wyniki zapytań oraz modyfikować dane. 
Pozycja szczególnie polecana dla osób początkujących.  

 

 

background image

Włodzimierz Dąbrowski, Przemysław 
ITA-101 Bazy danych 

Laboratorium podstawowe

Problem 1 (czas realizacji 45 min)

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od 
firma  planuje  rozszerzenie
dotąd na Twoim wydziale. Zadanie
najczęściej będą wykonywali użytkownicy na 

Zadanie 

Tok postępowania

1.

 

Nawiąż 

połączenie z SQL 
Server 2008 

 

Uruchom maszynę wirtualną 


 

Kliknij 
SQL Server Management Studio

 

W oknie logowania kliknij 

2.

 

Utwórz tabelę 

testową 

 

Z menu głównego 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  (
wyświetlenie  zawartości  całej  tabeli 
na 

--
SELECT * 
FROM Osoba_kopi
GO

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Strona 12/19 

Laboratorium podstawowe 

Problem 1 (czas realizacji 45 min) 

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od 
firma  planuje  rozszerzenie  na  skalę  uczelnianą  systemu  prac  dyplomowych

. Zadanie, jakie przed Tobą stoi, to zdefiniowanie nowych zapytań, które 

najczęściej będą wykonywali użytkownicy na Twojej bazie danych. 

Tok postępowania 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pl
D:\VirtualPC\Dydaktyka\BD2008.vhd

Kliknij  Start.  Z  grupy  programów  Microsoft  SQL  Server  2008
SQL Server Management Studio

W oknie logowania kliknij Connect

Z menu głównego wybierz File -> Open -> File
Odszukaj plik C:\Labs\Lab06\dml_1.sql
Zaznacz i uruchom (F5) poniższy 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)  poniższy  fragment  kodu  odpowiedzialny  za 
wyświetlenie  zawartości  całej  tabeli  Osoba.  Wynik  działania  pokazano 
na rys. 5: 

-- (2) Wyswietl cala zawartosc tabeli Osoba_k
SELECT *  
FROM Osoba_kopia 
GO 

Moduł 6 

Język SQL DML 

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od swojego szefa, że 

prac  dyplomowych,  którym  zarządzała 

to zdefiniowanie nowych zapytań, które 

 

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w  Microsoft  Virtual 
PC, dodaj nową maszynę używając 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, 

)  poniższy  fragment  kodu  odpowiedzialny  za 

.  Wynik  działania  pokazano 

(2) Wyswietl cala zawartosc tabeli Osoba_kopia 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język SQL DML 

Strona 13/19 

 

Rys. 5 Wynik wyświetlenia całej zawartości tabeli Osoba_kopia 

 

Zaznacz  i  uruchom  (F5)  poniższy  fragment  kodu  odpowiedzialny  za 
wyświetlenie  dwóch  kolumn:  Nazwisko  i  Imie.  Wynik  działania 
pokazano na rys. 6: 

-- (3) Wybierz kolumny, ktore chcemy wyswietlic 
SELECT Nazwisko, Imie  
FROM Osoba_kopia 
GO 

 

Rys. 6 Wynik wyświetlenia dwóch kolumn Nazwisko i Imię 

 

 Zaznacz  i  uruchom  (F5)  poniższy  fragment  kodu  odpowiedzialny  za 
dodanie literału i aliasu. Wynik działania pokazano na rys. 7: 

-- (4) Dodajemy literal i alias 
SELECT 'Imie i nazwisko: ' + Nazwisko + ' ' + Imie AS Osoba 
FROM Osoba_kopia 
GO 

background image

Włodzimierz Dąbrowski, Przemysław 
ITA-101 Bazy danych 

 

Zaznacz  i  uruchom  (
wyświetlanie duplikatu. Wynik działania pokazano na 

--
SELECT DISTINCT Imie
FROM Osoba_kopia
GO

 

Zaznacz  i  uruchom  (
sortowanie rosnące i malejące. Wynik działania pokazano na 

--

SELECT Imie, nazwisko 
FROM Osoba_kopia ORDER BY Nr_Indeksu 
GO

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Strona 14/19 

Rys. 7 Wynik dodania literału i aliasu

Alias nie jest nazwą własną. Jest to tylko tymczasowy (istniejący tylko 
dla  zapytania,  w  którym  został  zdefiniowany, 
na stałe) nagłówek kolumny. Może zawierać napis będący nazwą innej 
kolumny lub obiektu bazy danych. 

Zaznacz  i  uruchom  (F5)  poniższy  fragment  kodu  odpowiedzialny  za  nie 
wyświetlanie duplikatu. Wynik działania pokazano na 

-- (5) Nie wyswietlajmy duplikatow 
SELECT DISTINCT Imie 
FROM Osoba_kopia 
GO 

Rys. 8 Wynik zapytania bez wyświetlania duplikatów

Słowo  DISTINCT,  oprócz  usunięcia  duplikatów  z  wyników,  ignoruje 
także  wartości  puste  w  zbiorze  rekordów  (tzn.  gdy  w  wybranym 
zestawie  zdarzy  się  wiersz,  w  którym  wszystki
zostanie on wyświetlony). 

Zaznacz  i  uruchom  (F5)  poniższy  fragment  kodu  odpowied
sortowanie rosnące i malejące. Wynik działania 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 

Język SQL DML 

 

Wynik dodania literału i aliasu 

nie jest nazwą własną. Jest to tylko tymczasowy (istniejący tylko 

  nie  zapisywany  nigdzie 

na stałe) nagłówek kolumny. Może zawierać napis będący nazwą innej 

)  poniższy  fragment  kodu  odpowiedzialny  za  nie 

wyświetlanie duplikatu. Wynik działania pokazano na rys. 8: 

 

Wynik zapytania bez wyświetlania duplikatów 

oprócz  usunięcia  duplikatów  z  wyników,  ignoruje 

także  wartości  puste  w  zbiorze  rekordów  (tzn.  gdy  w  wybranym 

wszystkie  pola  są  puste,  nie 

)  poniższy  fragment  kodu  odpowiedzialny  za 

sortowanie rosnące i malejące. Wynik działania pokazano na rys. 9: 

(6) sortujmy rekordy rosnaco (ASC) i malejaco (DESC) 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język SQL DML 

Strona 15/19 

 

Rys. 9 Wynik sortowania 

 

Zaznacz  i  uruchom  (F5)  poniższy  fragment  kodu  odpowiedzialny  za 
ogranicenie liczby rekordów. Wynik działania pokazano na rys. 10. 

-- (7) ograniczmy liczbe rekordow 

SELECT Imie, Nazwisko  
FROM Osoba_kopia  
WHERE Nazwisko = 'Rawa' 
GO 

 

Rys. 10 Wynik ograniczenia liczby rekordów 

 

Zaznacz  i  uruchom  (F5)  poniższy  fragment  kodu  odpowiedzialny  za 
ogranicenie  liczby  rekordów  z  użyciem  operatora  wiekszości.  Wynik 
działania pokazano na rys. 11: 

-- (8) wyprobujmy operator wiekszosci 

SELECT Imie, Nazwisko, Nr_Indeksu 
FROM Osoba_kopia  
WHERE Nr_Indeksu >= 110 
GO 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język SQL DML 

Strona 16/19 

 

Rys. 11 Wynik ograniczenia liczby rekordów z uzyciem operatora większości 

 

Zaznacz  i  uruchom  (F5)  poniższy  fragment  kodu  odpowiedzialny  za 
ogranicenie  liczby  rekordów  z  użyciem  operatora  OR.  Wynik  działania 
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 rekordów z uzyciem operatora OR 

 

Zaznacz  i  uruchom  (F5)  poniższy  fragment  kodu  odpowiedzialny  za 
ogranicenie  liczny  rekordów  z  wyszukiwaniem  w  zbiorze  wartości. 
Wynik działania pokazano na rys. 13. 

-- (10) wyszukajmy w zbiorze wartosci 

SELECT Imie, Nazwisko 
FROM Osoba_kopia 
WHERE Nazwisko IN ('Rawa','Nowak') 
GO 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język SQL DML 

Strona 17/19 

 

Rys. 13 Wynik ograniczenia liczby rekordów z wyszukiwaniem w zbiorze wartości 

 

Zaznacz  i  uruchom  (F5)  poniższy  fragment  kodu  odpowiedzialny  za 
ogranicenie  liczny  rekordów  z  wyszukiwaniem  w  przedziale  wartości. 
Wynik działania 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 rekordów z wyszukiwaniem w przedziale wartości 

 

Zaznacz  i  uruchom  (F5)  poniższy  fragment  kodu  odpowiedzialny  za 
ogranicenie  liczny  rekordów  z  użyciem  operatora  LIKE.  Wynik  działania 
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 rekordów z użyciem operatora LIKE 

 

Zaznacz  i  uruchom  (F5)  poniższy  fragment  kodu  odpowiedzialny  za 
zliczanie liczny rekordów. Wynik działania pokazano na rys. 16. 

-- (13) zliczmy rekordy w tabeli 

SELECT Count(*) AS [Liczba osob] 
FROM Osoba_kopia 
GO 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język SQL DML 

Strona 18/19 

 

Rys. 16 Zliczanie liczby rekordów 

 

Zaznacz  i  uruchom  (F5)  poniższy  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)  poniższy  fragment  kodu  odpowiedzialny  za 
zmianę istniejącego rekordu: 

-- (15) zmienmy istniejacy rekord 

UPDATE Osoba_kopia 
SET Nazwisko = 'Kogucinski' 
WHERE LastName = 'Kogut' 
GO 

 

Zaznacz  i  uruchom  (F5)  poniższy  fragment  kodu  odpowiedzialny  za 
zmianę istniejącego rekordu: 

-- (16) usunmy rekord 

DELETE FROM Osoba_kopia 
WHERE Nazwisko = 'Kogucinski' 
GO 

 

Zaznacz  i  uruchom  (F5)  poniższy  fragment  kodu  odpowiedzialny  za 
usunięcie tabeli: 

-- (17) usunmy zawartosc tabeli 

TRUNCATE TABLE Osoba_kopia 
GO 

 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 6 

ITA-101 Bazy danych 

 

Język SQL DML 

Strona 19/19 

Laboratorium rozszerzone 

Zadanie 1 (czas realizacji 90 min) 

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od swojego szefa, że 
firma  zarządzająca  bazą 

AdventureWorks  planuje  rozszerzenie  i  modernizacje  systemu  w  celu 

spełnienia  pewnych  standardów.  Rozszerzenie  to  wiąże  się  z  modyfikacją  struktury  bazy  danych 
oraz  importem  do  bazy  danych  wielu  milionów  rekordów.  W  konsekwencji  w  związku  z 
modernizacją  systemu  bazodanowego  oraz  spełnienia  standardów  muszą  zostać  przebudowane 
zapytania  wysyłane  do  obiektów  bazy  danych.  W  związku  z  tym  część  zapytań  powinna  zostać 
usunięta, część zmodyfikowana, a część od nowa utworzona. 

Zadania jakie przed Tobą stoją to: 

1.

 

Podjęcie decyzji, w jaki sposób usprawnić proces importu wielu milionów danych do systemu 
bazodanowego. 

2.

 

Podjęcie  decyzji,  które  zapytania  w  bazie  danych  pozostaną  bez  zmian,  a  które  zostaną 
zmodyfikowane lub usunięte. 

3.

 

Podjęcie decyzji, jakie nowe zapytania powinny zostać utworzone. 

 

background image

 

 

ITA-101 Bazy Danych 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 7 

Wersja 1.0 

Indeksy i transakcje 

Spis treści 

Indeksy i transakcje .............................................................................................................................. 1 

Informacje o module ............................................................................................................................ 2 

Przygotowanie teoretyczne ................................................................................................................. 3 

Przykładowy problem .................................................................................................................. 3 

Podstawy teoretyczne.................................................................................................................. 3 

Przykładowe rozwiązanie ............................................................................................................. 9 

Porady praktyczne ..................................................................................................................... 12 

Uwagi dla studenta .................................................................................................................... 13 

Dodatkowe źródła 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 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 7 

ITA-101 Bazy danych 

 

Indeksy i transakcje 

Strona 2/20 

Informacje o module 

Opis modułu 

W  module  tym  znajdziesz  informacje  na  temat  dostępu  fizycznego  do 
danych  oraz  optymalizacji  dostępu.  Poznasz  indeksy  i  ich  rodzaje,  a 
następnie  dowiesz  się,  jakie  operacje  wykonywane  są  na  indeksach.  W 
drugiej części poznasz transakcje, które służą do zapewnienia spójności bazy 
danych  i  mają  wpływ  na  wydajność  bazy  danych.  Dowiesz  się,  że  obsługa 
transakcji  nie  jest  rzeczą  łatwą  i  wymaga  rozwiązywania  wielu  trudnych 
problemów. 

Cel modułu 

Celem  modułu  jest  zapoznanie  czytelnika  z  podstawowymi  mechanizmami 
indeksowania  oraz  struktury  pisania  transakcji.  Zostaną  przedstawione 
proste  przykłady,  które  mają  pokazać  mechanizmy  obowiązujące  w 
metodach indeksowania oraz w transakcjach. 

Uzyskane kompetencje 

Po zrealizowaniu modułu będziesz: 

 

wiedział, na czym polega zasada działania indeksów 

 

potrafił we właściwy sposób dobierać politykę indeksowania 

 

znał zasadę funkcjonowania transakcji 

 

potrafił we właściwy sposób pisać proste transakcje 

Wymagania wstępne 

Przed przystąpieniem do pracy z tym modułem powinieneś: 

 

umieć  stworzyć  bazę  danych  wraz  z  jej  podstawowymi  obiektami 
(patrz: moduł 3) 

 

znać  zaawansowane  mechanizmy  programowania  w  języku  T-SQL 
(patrz: moduł 9) 

 

znać podstawowe mechanizmy bezpieczeństwa (patrz: moduł 11) 

Mapa zależności modułu 

Zgodnie  z  mapą  zależności  przedstawioną  na  rys.  1,  przed  przystąpieniem 
do  realizacji  tego  modułu  należy  zapoznać  się  z  materiałem  zawartym 
w modułach 3, 8 i 11. 

 

Rys. 1 Mapa zależności modułu 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 7 

ITA-101 Bazy danych 

 

Indeksy i transakcje 

Strona 3/20 

Przygotowanie teoretyczne 

Przykładowy problem 

Tak  jak  już Wiesz  z  bazy  danych  może korzystać wielu  użytkowników,  dysponujących  różnorakimi 
uprawnieniami i mających dostęp do różnych obiektów w bazie danych. W związku z tym jednym z 
podstawowych  zadań, jakie  stoi  przed osobami  odpowiedzialnymi  za  prawidłowe  funkcjonowanie 
bazy  danych,  jest  dobór  odpowiedniej  polityki  indeksowania,  która  pozwoli  na  szybsze 
przeszukiwanie  bazy  danych.  Bezpośrednio  z  polityką  indeksowania  bazy  danych  związana  jest 
optymalizacja i strojenie bazy danych, między innymi poprzez przebudowę indeksów. 

Kolejnym mechanizmem, z jakim bardzo często możemy się spotkać, są transakcje. Według definicji 
są  to  operacje,  które  są  niepodzielne  i  muszą  być  wykonane  w  całości.  Innym  ważnym  zadaniem 
transakcji jest zapewnienie spójności bazy danych oraz umożliwienie równoległych operacji na niej. 
W  celu  dobrego  pisania  transakcji  potrzebna  jest  znajomość  zaawansowanego  programowania  w 
języku  T-SQL.  Transakcje  stanowią  bardzo  ważny  element  programowania  baz  danych  i  powinny 
być  pisane  profesjonalnie.  Przykładem  transakcji  może  być  wypłata  pieniędzy  z  bankomatu, 
płatność kartą debetową itp. 

Podstawy teoretyczne 

Dostęp fizyczny do danych 

Zrozumienie  mechanizmu  dostępu  do  danych  zapisanych  w  bazie  danych  jest  bardzo  istotne  dla 
zrozumienia zasad działania indeksów. 

Jak  wiadomo,  dane  w  bazach  danych  w  sposób  trwały  są  zapisywane  na  dyskach  optycznych, 
magnetycznych  lub  rodzinach  nośników o  dostępie bezpośrednim,  takich  jak macierze  RAID (ang. 
Redundant Array of Independent Disks). Zasady działania tego typu nośników oraz pojęcia głowicy, 
cylindrów,  strony  danych  itp.  powinny  być  Ci  znane  z  przedmiotu  „Podstawy  Informatyki”  lub 
podobnego. 

System zarządzania bazami danych najczęściej nie zajmuje się fizyczną obsługą dysków. W procesie 
dostępu do danych biorą udział:  

 

Menedżer  plików  –  posiada  wiedzę  o  strukturze  systemu  plików  i  jest  odpowiedzialny  za 
odszukanie odpowiedniego pliku.  

 

Menedżer dysku – posiada wiedzę na temat fizycznej organizacji dysku i jest odpowiedzialny 
za odnalezienie odpowiedniej strony danych. 

Schemat łańcucha dostępu do danych pokazany jest na rys. 2. 

 

Rys. 2 Schemat dostępu do danych 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 7 

ITA-101 Bazy danych 

 

Indeksy i transakcje 

Strona 4/20 

Optymalizacja dostępu 

Zasadniczy  czas  dostępu  do  danych  bazy  to  czas  odczytu  danych  z  dysków.  W  celu  optymalizacji 
tego dostępu stosuje się metodę zwaną klastrowaniem

Klastrowanie  polega  na  dążeniu  do  utrzymania  logicznie  powiązanych  rekordów  blisko  siebie  na 
dysku. Taka organizacja danych znacznie przyspiesza dostęp do nich. Aby odczytać dane powiązane, 
głowica nie musi wykonywać dużych ruchów, a tym samym maleją czasy wyszukiwania. 

Rozróżniamy dwa rodzaje klastrowania: 

 

Klastrowanie  wewnątrzplikowe  –  polega  na  grupowaniu  rekordów  obok  siebie  wewnątrz 
jednego pliku. 

 

Klastrowanie  międzyplikowe  –  polega  na  umieszczaniu  na  stronie  obok  siebie  rekordów 
pochodzących z więcej niż jednego pliku (tabeli). 

Optymalizacja  dostępu  do  danych  sprowadza  się  w  zasadzie  do  odpowiedniego  zarządzania 
stronami i decydowania, w jaki sposób dane mają być klastrowane. 

Więcej na temat fizycznej struktury danych możesz znaleźć w module 4 

Indeksy i ich zastosowanie 

Zastanowimy się teraz nad problemem wyszukiwania danych w tabeli. Na przykład załóżmy, że w 
tabeli 

Studenci chcemy znaleźć studenta o nazwisku Nowak. 

Tab. 1 Przykładowa tabela bazy studentów 

ID 

Nazwisko 

Imie 

Wydzial 

Olacki 

Jan 

Elektryczny 

Babicki 

Adam 

Mechaniczny 

Nowak 

Jerzy 

Elektryczny 

Adamski 

Adam 

Elektronika 

 
Wiersze zapisane są w bazie w kolejności ich wpisywania i nie są w szczególny sposób sortowane. 
Co  robi  wobec  tego  system,  kiedy  wydajemy  polecenie  odnalezienia  rekordu  zawierającego 
informacje o Nowaku, np.: 

SELECT imie, nazwisko FROM Studenci WHERE Nazwisko = 'Nowak' 

System  musi  przeszukać  całą  tabelę  (skanowanie  wszystkich  stron  danych  zawierających  dane  z 
tabeli) i przejrzeć wszystkie rekordy tej tabeli, aby mieć pewność, że odnalazł rekordy zawierające 
nazwisko Nowak. Operacja taka jest oczywiście czasochłonna. 

Podobnie jest, gdy w książce poszukujemy jakiegoś hasła (na przykład w podręczniku do baz danych 
szukamy  informacji  o  indeksach).  Aby  znaleźć  szukaną  informację,  powinniśmy  przeczytać  całą 
książkę. Na szczęście niektóre książki są wyposażone na końcu w specjalne zestawienie haseł – czyli 
w indeks. 

Nasze postępowanie przebiega wówczas następująco: 

1.

 

Odszukujemy  poszukiwane  hasło  w  indeksie,  który  jest  uporządkowany  alfabetycznie  (co 
znacznie ułatwia nam odnalezienie hasła). 

2.

 

Odczytujemy w indeksie numer strony, na której hasło to występuje w książce. 

3.

 

Otwieramy książkę na odpowiedniej stronie. 

4.

 

Przeglądamy stronę w poszukiwaniu naszego hasła. 

5.

 

Odczytujemy informacje związane z szukanym hasłem. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 7 

ITA-101 Bazy danych 

 

Indeksy i transakcje 

Strona 5/20 

Idea działania indeksów w bazie danych jest dokładnie taka sama. 

Indeks  określony  na  atrybucie  A  relacji  jest  mechanizmem,  który  pozwala  na  efektywne 
wyszukiwanie  krotek  o  ustalonej  wartości  składowej  atrybutu  A.  Jak  więc  wyglądałby  indeks  dla 
tabeli 

Studenci? 

Indeks  określany  jest  dla  konkretnego  pola.  Mówimy  wówczas,  że  pole  to  jest  polem 
indeksowanym
.  W  wypadku  tabeli 

Studenci  możemy  jako  pole  indeksowane  wybrać  pole 

Nazwisko,  wówczas  założenie  indeksu  na  tym  polu  będzie  oznaczało  założenie  przez  system 
dodatkowej  tabeli,  w  której  umieszczone  zostaną  nazwiska  studentów  z  tabeli 

Studenci  oraz 

przesłanki,  gdzie  należy  szukać  (na  której  stronie  danych)  pełnej  informacji  o  wybranych 
studentach. Dodatkowo rekordy w tabeli indeksu zostaną posortowane w kolejności alfabetycznej 
nazwisk. Poszukiwanie naszego studenta Nowaka będzie teraz przebiegać znacznie szybciej. 

Działanie  i  rola  indeksów  polega  głównie  na  przyspieszeniu  wyszukiwania  rekordów  w  bazie 
danych.  Niestety  obciążają  one  dodatkowo  system  w  czasie  aktualizacji  lub  wstawiania  danych, 
bowiem  oprócz  umieszczenia  rekordu  w  bazie  musi  on  również  dokonać  wpisu  w  tabeli  indeksu 
oraz ponownie posortować trzymane w niej rekordy. 

Zalety i wady stosowania indeksów zebrano w tab. 2. 

Tab. 2 Zalety i wady stosowania indeksów 

Zalety 

Wady 

Przyspieszają dostęp do danych 

Zajmują miejsce na dysku 

Wymuszają unikatowość wierszy 

Zwiększają obciążenie systemu 

 
Niektóre z pól warto indeksować, inne natomiast nie powinny być nigdy indeksowane. Do pierwszej 
grupy można zaliczyć: 

 

klucze podstawowe i obce (często są indeksowane automatycznie) 

 

pola, po których często następuje wyszukiwanie 

 

pola, do których dostęp następuje w ustalonej, uporządkowanej kolejności 

Nie należy indeksować: 

 

pól, do których rzadko odwołują się zapytania 

 

pól, które zawierają tylko kilka wartości unikatowych 

 

pól zawierających dane typu image, bit czy obiekt OLE 

Indeksy mogą być zakładane na jednym polu lub na kilku jednocześnie.  

Rodzaje indeksów 

Indeksy można klasyfikować w różny sposób. My podzielimy indeksy na dwie grupy: 

 

indeksy grupowane (klastrowe) 

 

indeksy niegrupowane (nieklastrowe) 

Indeksy grupowane 

Indeks  grupowany  działa  na  podobnej  zasadzie,  co  książka  telefoniczna.  Zawiera  strony  szybkiego 
dostępu do danych (w książce telefonicznej na początku znajduje się alfabetyczny spis mówiący o 
tym, na której stronie szukać nazwisk, firm czy instytucji zaczynających się na daną literę alfabetu). 

Strony  te  są  ułożone  w  odwrócone  drzewo  i  przechowują  tylko  ułożone  alfabetycznie  wartości 
indeksowanego pola oraz wskaźniki do stron znajdujących się w niższej warstwie drzewa.  

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

Na samym dole drzewa znajdują się strony zawierające posortowane wg indek
(w książce telefonicznej zawartość też jest posortowana 

Przeszukiwanie  indeksu  odbywa  się  z  góry  na  dół  na  następującej  zasadzie:  porównywana  jest 
szukana  wartość  pola  indeksowanego  z  wartościa
indeksu  –  jeśli  znajdzie  się  wartość  „większa”  od  wartości  szukanej,  wtedy  następuje  skok  jeden 
poziom niżej do strony wskazywanej przez ostatnią pozycję (na ostatnio sprawdzanej stronie), która 
nie była „większa” od szukanej wartości.

Każda  pozycja  na  stronach  zawiera  wskaźnik  do  strony  danych  jeden  poziom  niżej  w  hierarchii 
indeksu. Dzięki takiej strukturze przeszukiwane są tylko wybrane strony z danymi, nie zaś wszystkie 
strony zawierające dane z wybranej tabel

Indeksy niegrupowane 

Indeks  niegrupowany  działa  na  podobnej  zasadzie, 
telefonicznej).  Indeks  niegrupowany  budowany  jest  na  stronach  danych,  które  nie  są  sortowane. 
Składa się z co najmniej dwó

Na  stronach  poziomu  niepomocniczego,  podobnie  jak  w  przypadku  indeksu  grupowanego, 
przechowywane  są  wartości  indeksowanego  pola  ze  wskaźnikami  do  poziomu  niżej  w  drze
indeksu. 

Strony poziomu pomocniczego zwane też liśćmi i zawierają wskaźniki do konkretnych stron danych 
(które  nie  są  posortowane).  Wskaźnik  taki  zawiera  następujące  dane:  ID  pliku,  numer  strony, 
numer wiersza na stronie. 

Przeszukiwanie  indeksu  niegrup
grupowanym.  Po  dojściu  do  poziomu  pomocniczego  następują  skoki  do  stron  danych  (do 
konkretnych wierszy). 

emysław Kowalczuk, Konrad Markowski 

 

Strona 6/20 

Na samym dole drzewa znajdują się strony zawierające posortowane wg indek
(w książce telefonicznej zawartość też jest posortowana – wg nazwisk lub nazw firm czy instytucji).

Przeszukiwanie  indeksu  odbywa  się  z  góry  na  dół  na  następującej  zasadzie:  porównywana  jest 
szukana  wartość  pola  indeksowanego  z  wartościami  zapisanymi  (i  posortowanymi)  na  stronach 

jeśli  znajdzie  się  wartość  „większa”  od  wartości  szukanej,  wtedy  następuje  skok  jeden 

poziom niżej do strony wskazywanej przez ostatnią pozycję (na ostatnio sprawdzanej stronie), która 

” od szukanej wartości. 

Każda  pozycja  na  stronach  zawiera  wskaźnik  do  strony  danych  jeden  poziom  niżej  w  hierarchii 
indeksu. Dzięki takiej strukturze przeszukiwane są tylko wybrane strony z danymi, nie zaś wszystkie 
strony zawierające dane z wybranej tabeli. 

Rys. 3 Indeks grupowany 

Indeks  niegrupowany  działa  na  podobnej  zasadzie,  co  indeks  w  typowej  książce  (ale  nie  w 
telefonicznej).  Indeks  niegrupowany  budowany  jest  na  stronach  danych,  które  nie  są  sortowane. 

óch poziomów: poziomu niepomocniczego i poziomów pomocniczych

Na  stronach  poziomu  niepomocniczego,  podobnie  jak  w  przypadku  indeksu  grupowanego, 
przechowywane  są  wartości  indeksowanego  pola  ze  wskaźnikami  do  poziomu  niżej  w  drze

Strony poziomu pomocniczego zwane też liśćmi i zawierają wskaźniki do konkretnych stron danych 
(które  nie  są  posortowane).  Wskaźnik  taki  zawiera  następujące  dane:  ID  pliku,  numer  strony, 

 

Przeszukiwanie  indeksu  niegrupowanego  odbywa  się  na  podobnej  zasadzie,  jak  w  indeksie 
grupowanym.  Po  dojściu  do  poziomu  pomocniczego  następują  skoki  do  stron  danych  (do 

Rys. 4 Indeks niegrupowany 

Moduł 7 

Indeksy i transakcje 

Na samym dole drzewa znajdują się strony zawierające posortowane wg indeksowanego pola dane 

wg nazwisk lub nazw firm czy instytucji). 

Przeszukiwanie  indeksu  odbywa  się  z  góry  na  dół  na  następującej  zasadzie:  porównywana  jest 

mi  zapisanymi  (i  posortowanymi)  na  stronach 

jeśli  znajdzie  się  wartość  „większa”  od  wartości  szukanej,  wtedy  następuje  skok  jeden 

poziom niżej do strony wskazywanej przez ostatnią pozycję (na ostatnio sprawdzanej stronie), która 

Każda  pozycja  na  stronach  zawiera  wskaźnik  do  strony  danych  jeden  poziom  niżej  w  hierarchii 
indeksu. Dzięki takiej strukturze przeszukiwane są tylko wybrane strony z danymi, nie zaś wszystkie 

 

indeks  w  typowej  książce  (ale  nie  w 

telefonicznej).  Indeks  niegrupowany  budowany  jest  na  stronach  danych,  które  nie  są  sortowane. 

poziomów pomocniczych

Na  stronach  poziomu  niepomocniczego,  podobnie  jak  w  przypadku  indeksu  grupowanego, 
przechowywane  są  wartości  indeksowanego  pola  ze  wskaźnikami  do  poziomu  niżej  w  drzewie 

Strony poziomu pomocniczego zwane też liśćmi i zawierają wskaźniki do konkretnych stron danych 
(które  nie  są  posortowane).  Wskaźnik  taki  zawiera  następujące  dane:  ID  pliku,  numer  strony, 

owanego  odbywa  się  na  podobnej  zasadzie,  jak  w  indeksie 

grupowanym.  Po  dojściu  do  poziomu  pomocniczego  następują  skoki  do  stron  danych  (do 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 7 

ITA-101 Bazy danych 

 

Indeksy i transakcje 

Strona 7/20 

Operacje na indeksach 

Indeksy  są  najczęściej  tworzone  automatycznie  dla  kluczy  głównych  oraz  pól,  dla  których  ma  być 
wymuszona unikatowość. Można też tworzyć je dla innych pól, korzystając z polecenia języka 

SQL

 

CREATE INDEX. 

Poniżej  podano  przykład  utworzenia  indeksu  grupowanego  dla  dla  pola 

Nazwisko  w  tabeli 

Recenzent: 

USE PraceDyplomowe 
CREATE CLUSTERED INDEX cl_nazwisko 
ON Recenzent (Nazwisko) 

Indeks  może  też  być  zakładany  na  kilku  polach  jednocześnie.  Poniższy  przykład  pokazuje  sposób 
definiowania unikalnego indeksu na polach 

Nazwisko i Imie tabeli Osoba: 

CREATE UNIQUE INDEX Indeks_Osoba 
ON Osoba (Nazwisko, Imie) 

Założenie takiego  indeksu spowoduje,  że  będzie możliwe  wprowadzanie  jedynie  unikatowych  par 
imię-nazwisko. 

Transakcje 

Transakcja jest ciągiem operacji wykonywanych na bazie danych, które są niepodzielne i muszą być 
wykonane  w  całości.  Jest  więc  jednostką  logiczną  operowania  na  bazie.  Podlega  ona  kontroli  i 
sterowaniu. 

Każda transakcja może składać się z następujących operacji: 

 

czytanie danej x przez transakcję T 

 

zapisanie danej x przez transakcję T 

 

wycofanie transakcji T 

 

zatwierdzenie transakcji T 

Transakcje służą do zapewnienia spójności bazy danych oraz umożliwiają równoległe wykonywanie 
operacji na niej. Jeśli wiele procesów działa jednocześnie na bazie danych, to może łatwo dojść do 
utraty  spójności  danych,  a  co  za  tym  idzie  do  błędów  i  otrzymywania  niewłaściwych  rezultatów 
operacji. 

Transakcja  zabezpiecza  również  przed  częściowym  wykonaniem  zbioru  operacji,  które  mogą  być 
przerwane,  na  przykład  w  wyniku  awarii.  Klasycznym  przykładem  jest  operacja  polegająca  na 
wypłacaniu  pieniędzy  z  bankomatu.  W  uproszczeniu  operacje  realizowane  w  czasie  wypłaty 
pieniędzy z bankomatu są następujące: 

1.

 

Klient wczytuje kartę magnetyczną i jest rozpoznawany. 

2.

 

Klient określa sumę wypłaty. 

3.

 

Konto klienta jest sprawdzane. 

4.

 

Konto jest zmniejszane o sumę wypłaty. 

5.

 

Wysyłane jest zlecenie do kasy. 

6.

 

Bankomat odlicza sumę i koryguje stan gotówki w bankomacie. 

7.

 

Bankomat wypłaca klientowi pieniądze. 

Zaistnienie  awarii  w kroku  5  lub  6 może  prowadzić  do  niezbyt  przyjemnej  sytuacji  dla  posiadacza 
konta. Transakcje pozwalają na uniknięcie tego typu niespodzianek. 

Postulaty AICD 

Każda transakcja powinna spełniać cztery postulaty. Są to tak zwane postulaty AICD. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

1.

 

Atomowość  (ang.  atomicity
operacje, albo żadna.

2.

 

Spójność  (ang.  consistency
zakończeniu stan jest również spójny (w międzyczasie stan może być chwilowo niespójny).

3.

 

Izolacja (ang. isolation
ich działania. Czynności wykonane przez daną t
aż do jej zakończenia.

4.

 

Trwałość (ang. durability
dysku) i nie mogą być odwrócone przez zdarzenia losowe (np. wyłączenie prądu).

Transakcje w SQL 

W  języku  SQL  każda  transakcja  rozpoczyna  się  słowem 
COMMIT  oznaczającą  pomyślne  zakończenie  transakcji  lub  operacją 
wycofanie transakcji. 

Dowolne polecenie 

SELECT

Transakcja  trwa  aż  do  wydania  komendy 
cofającej).  Transakcja  może  objąć  dowolną  liczbę 
CREATE i innych. 

Stosowanie zamków oraz problem 

Zarządzanie transakcjami wymaga zastosowania specjalnego modułu (zwanego 
oraz protokołu zarządzania transakcjami. W celu uniknięcia problemów ze współbieżnym dostępem 
stosuje się mechanizmy blokady dostępu do danych

Wyróżniamy dwa typy zamków:

 

Zamek typu X – założenie zamka tego typu całkowicie blokuje dostęp do obiektu dla innych 
transakcji. 

 

Zamek typu S – założenie zamka tego typu powoduje, że inne transakcje mogą czytać dane, 
ale nie mogą ich modyfikować.

Najczęściej  stosowanym  w  bazach  relacyjnych  protokołem  zarządzania  transakcjami  jest  protokół 
blokowania  dwufazowego  2PL  (ang. 
następujące: 

1.

 

Jeśli  dana  operacja  pi(x)  może  być  wykonana,  to  planista  zakłada  bl
transakcji  Ti  i  operację  przekazuje  do  wykonania.  Jeśli  natomiast  operacja  ta  nie  może  być 
wykonana, to umieszcza ją w kolejce.

2.

 

Zdjęcie założonej blokady może nastąpić dopiero wtedy, gdy operacja zostanie wykonana.

3.

 

Jeśli nastąpiło zdjęcie jakiejkolwiek blokady założonej dla transakcji T, to dla tej transakcji nie 
można założyć żadnej innej blokady.

Postępując  zgodnie  z  tymi  zasadami  przebieg  wykonania  transakcji  wymusza  dwie  fazy  obsługi 
transakcji.  W  pierwszej  fazie  są  zakładane  blokady
druga jest znacznie szybsza od pierwszej.

emysław Kowalczuk, Konrad Markowski 

 

Strona 8/20 

atomicity)  –  w  ramach  jednej  transakcji  wykonują  się  albo  wszystkie 

operacje, albo żadna. 

consistency)  –  o  ile  transakcja  zastała  bazę  danych  w  spójnym  stanie,  po  jej 

zakończeniu stan jest również spójny (w międzyczasie stan może być chwilowo niespójny).

isolation) – transakcja nie wie nic o innych transakcjach i nie musi uwzględniać 

ich działania. Czynności wykonane przez daną transakcję są niewidoczne dla innych transakcji 
aż do jej zakończenia. 

durability) – po zakończeniu transakcji jej skutki są na trwale zapamiętane (na 

dysku) i nie mogą być odwrócone przez zdarzenia losowe (np. wyłączenie prądu).

W  języku  SQL  każda  transakcja  rozpoczyna  się  słowem 

BEGIN TRANSACTION

oznaczającą  pomyślne  zakończenie  transakcji  lub  operacją 

ROLLBACK

SELECT, INSERT, UPDATE, DELETE czy CREATE rozpoczyna transakcję.

Transakcja  trwa  aż  do  wydania  komendy 

COMMIT  (potwierdzającej)  lub 

cofającej).  Transakcja  może  objąć  dowolną  liczbę  poleceń 

SELECT,  INSERT

Stosowanie zamków oraz problem z zakleszczaniem 

Zarządzanie transakcjami wymaga zastosowania specjalnego modułu (zwanego 
oraz protokołu zarządzania transakcjami. W celu uniknięcia problemów ze współbieżnym dostępem 
stosuje się mechanizmy blokady dostępu do danych, tzw. zamki

Wyróżniamy dwa typy zamków: 

założenie zamka tego typu całkowicie blokuje dostęp do obiektu dla innych 

założenie zamka tego typu powoduje, że inne transakcje mogą czytać dane, 

ale nie mogą ich modyfikować. 

ajczęściej  stosowanym  w  bazach  relacyjnych  protokołem  zarządzania  transakcjami  jest  protokół 

blokowania  dwufazowego  2PL  (ang.  two-phase  locking).  Reguły  pracy  protokołu  2PL  są 

Jeśli  dana  operacja  pi(x)  może  być  wykonana,  to  planista  zakłada  bl
transakcji  Ti  i  operację  przekazuje  do  wykonania.  Jeśli  natomiast  operacja  ta  nie  może  być 
wykonana, to umieszcza ją w kolejce. 
Zdjęcie założonej blokady może nastąpić dopiero wtedy, gdy operacja zostanie wykonana.

ie jakiejkolwiek blokady założonej dla transakcji T, to dla tej transakcji nie 

można założyć żadnej innej blokady. 

Postępując  zgodnie  z  tymi  zasadami  przebieg  wykonania  transakcji  wymusza  dwie  fazy  obsługi 
transakcji.  W  pierwszej  fazie  są  zakładane  blokady,  a  w  drugiej  następuje  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  spójnym stanie,  po  jej 

zakończeniu stan jest również spójny (w międzyczasie stan może być chwilowo niespójny). 

transakcja nie wie nic o innych transakcjach i nie musi uwzględniać 

ransakcję są niewidoczne dla innych transakcji 

po zakończeniu transakcji jej skutki są na trwale zapamiętane (na 

dysku) i nie mogą być odwrócone przez zdarzenia losowe (np. wyłączenie prądu). 

BEGIN TRANSACTION, a  kończy  operacją 

ROLLBACK,  oznaczającą 

rozpoczyna transakcję. 

(potwierdzającej)  lub 

ROLLBACK  (zrywającej, 

INSERT,  UPDATE,  DELETE, 

Zarządzanie transakcjami wymaga zastosowania specjalnego modułu (zwanego modułem planisty
oraz protokołu zarządzania transakcjami. W celu uniknięcia problemów ze współbieżnym dostępem 

założenie zamka tego typu całkowicie blokuje dostęp do obiektu dla innych 

założenie zamka tego typu powoduje, że inne transakcje mogą czytać dane, 

ajczęściej  stosowanym  w  bazach  relacyjnych  protokołem  zarządzania  transakcjami  jest  protokół 

).  Reguły  pracy  protokołu  2PL  są 

Jeśli  dana  operacja  pi(x)  może  być  wykonana,  to  planista  zakłada  blokadę  na  daną  x  dla 
transakcji  Ti  i  operację  przekazuje  do  wykonania.  Jeśli  natomiast  operacja  ta  nie  może  być 

Zdjęcie założonej blokady może nastąpić dopiero wtedy, gdy operacja zostanie wykonana. 

ie jakiejkolwiek blokady założonej dla transakcji T, to dla tej transakcji nie 

Postępując  zgodnie  z  tymi  zasadami  przebieg  wykonania  transakcji  wymusza  dwie  fazy  obsługi 

,  a  w  drugiej  następuje  ich  zdejmowanie.  Faza 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

Stosowanie zamków może prowadzić do zjawiska zwanego 
tym,  że  transakcje  blokują  się,  oczekując  siebie  nawzajem.  Powodem  powstania  zakleszczeń  jest 
konieczność oczekiwania na

Weźmy pod uwagę dwie transakcje A i B. Transakcja A blokuje zasób X i żąda dostępu do zasobu
Transakcja B blokuje zasób Y i żąda dostępu do zasobu X. W wyniku tego dochodzi do zakleszczenia 
i żadna z transakcji nie może wykonywać swojej akcji.

Inne przykłady zakleszczeń są pokazane na 

Stemple czasowe oraz ziarnistość transakcji

Każda  transakcja  w  momencie  startu  do
precyzyjny,  aby  móc  po  nim 
danych, transakcja działa na swoich własnych kopiach aż do potwierdzenia.

Każdy  obiekt  bazy  danych  przechowuje  dwa  stemple  czasowe:  transakcji,  która  ostatnio  brała 
obiekt  do  czytania  i  transakcji,  która  ostatnio  brała  obiekt  do  modyfikacji.  W  momencie 
potwierdzenia  sprawdza  się  stemple  transakcji  oraz  wszystkich  pobranych  przez  nią  obiektów. 
Można dość łatwo wyprowadzić reguły zgodności, np. jeżeli obiekt był aktualizowany i st
obiekcie do aktualizacji jest taki sam, jak stempel transakcji, to 
w przeciwnym razie należy 
na obiekcie do aktualizacji jest starszy niż ste
w przeciwnym razie należy ją 

Z  problemem  zakładania  zamków  wiąże  się  również  problem  ziarnistości.  Ziarnistość  oznacza 
decyzję, co będzie niepodzielną jednostką, na którą zak
dotyczyć: bazy danych, relacji, rekordu, elementu rekordu, pojedynczego atrybutu, fizycznej strony 
pamięci. 

Grube  ziarna  mogą  zapewnić  znaczny  poziom  bezpieczeństwa,  jednak  dają  niewielki  stopień 
współbieżności procesów. Z kolei małe ziarna wiążą się z dużymi nakładami na zakładanie zamków 
oraz ich obsługę. 

Przykładowe rozwiązanie

Optymalizacja bazy danych

Bardzo  często  działająca  od  jakiegoś  czasu  baza  danych,  na  której  wykonuje  się  bardzo  dużo 
operacji,  zaczyna  działać  woniej  niż  podczas  pierwszego  uruchomienia.  Wówczas  do  głównego 
zadania  administratora  bazy  danych  należy  zoptymalizowanie 
tego celu może posłużyć nam narzędzie SQL Server Profiler. 

emysław Kowalczuk, Konrad Markowski 

 

Strona 9/20 

Stosowanie zamków może prowadzić do zjawiska zwanego zakleszczaniem

transakcje  blokują  się,  oczekując  siebie  nawzajem.  Powodem  powstania  zakleszczeń  jest 

konieczność oczekiwania na zwolnienie zasobu, do którego dostęp potrzebują. 

Weźmy pod uwagę dwie transakcje A i B. Transakcja A blokuje zasób X i żąda dostępu do zasobu
Transakcja B blokuje zasób Y i żąda dostępu do zasobu X. W wyniku tego dochodzi do zakleszczenia 
i żadna z transakcji nie może wykonywać swojej akcji. 

Inne przykłady zakleszczeń są pokazane na rys. 6. 

   

Rys. 6 Zakleszczenie transakcji 

Stemple czasowe oraz ziarnistość transakcji 

Każda  transakcja  w  momencie  startu  dostaje  unikalny  stempel  czasowy.  Stempel  ten  jest 

nim  rozróżniać  transakcje.  Żadna  zmiana  nie  jest  nanoszona  do  bazy 

danych, transakcja działa na swoich własnych kopiach aż do potwierdzenia. 

Każdy  obiekt  bazy  danych  przechowuje  dwa  stemple  czasowe:  transakcji,  która  ostatnio  brała 

zytania  i  transakcji,  która  ostatnio  brała  obiekt  do  modyfikacji.  W  momencie 

potwierdzenia  sprawdza  się  stemple  transakcji  oraz  wszystkich  pobranych  przez  nią  obiektów. 
Można dość łatwo wyprowadzić reguły zgodności, np. jeżeli obiekt był aktualizowany i st
obiekcie do aktualizacji jest taki sam, jak stempel transakcji, to transakcja 
w przeciwnym razie należy ją zerwać i uruchomić od nowa. Jeżeli obiekt był tylko czytany i stempel 
na obiekcie do aktualizacji jest starszy niż stempel transakcji, to  transakcja może zostać wykonana
w przeciwnym razie należy ją zerwać i uruchomić od nowa. 

Z  problemem  zakładania  zamków  wiąże  się  również  problem  ziarnistości.  Ziarnistość  oznacza 
decyzję, co będzie niepodzielną jednostką, na którą zakłada się blokady. Poziomy ziarnistości mogą 
dotyczyć: bazy danych, relacji, rekordu, elementu rekordu, pojedynczego atrybutu, fizycznej strony 

Grube  ziarna  mogą  zapewnić  znaczny  poziom  bezpieczeństwa,  jednak  dają  niewielki  stopień 

rocesów. Z kolei małe ziarna wiążą się z dużymi nakładami na zakładanie zamków 

Przykładowe rozwiązanie 

Optymalizacja bazy danych 

Bardzo  często  działająca  od  jakiegoś  czasu  baza  danych,  na  której  wykonuje  się  bardzo  dużo 

zaczyna  działać  woniej  niż  podczas  pierwszego  uruchomienia.  Wówczas  do  głównego 

zadania  administratora  bazy  danych  należy  zoptymalizowanie  jej  oraz  przebudowa  indeksów.  Do 
tego celu może posłużyć nam narzędzie SQL Server Profiler.  

Moduł 7 

Indeksy i transakcje 

. Zakleszczanie polega na 

transakcje  blokują  się,  oczekując  siebie  nawzajem.  Powodem  powstania  zakleszczeń  jest 

zasobu, do którego dostęp potrzebują.  

Weźmy pod uwagę dwie transakcje A i B. Transakcja A blokuje zasób X i żąda dostępu do zasobu Y. 
Transakcja B blokuje zasób Y i żąda dostępu do zasobu X. W wyniku tego dochodzi do zakleszczenia 

 

staje  unikalny  stempel  czasowy.  Stempel  ten  jest  na  tyle 

rozróżniać  transakcje.  Żadna  zmiana  nie  jest  nanoszona  do  bazy 

 

Każdy  obiekt  bazy  danych  przechowuje  dwa  stemple  czasowe:  transakcji,  która  ostatnio  brała 

zytania  i  transakcji,  która  ostatnio  brała  obiekt  do  modyfikacji.  W  momencie 

potwierdzenia  sprawdza  się  stemple  transakcji  oraz  wszystkich  pobranych  przez  nią  obiektów. 
Można dość łatwo wyprowadzić reguły zgodności, np. jeżeli obiekt był aktualizowany i stempel na 

transakcja może zostać wykonana, 

od nowa. Jeżeli obiekt był tylko czytany i stempel 

transakcja może zostać wykonana, 

Z  problemem  zakładania  zamków  wiąże  się  również  problem  ziarnistości.  Ziarnistość  oznacza 

łada się blokady. Poziomy ziarnistości mogą 

dotyczyć: bazy danych, relacji, rekordu, elementu rekordu, pojedynczego atrybutu, fizycznej strony 

Grube  ziarna  mogą  zapewnić  znaczny  poziom  bezpieczeństwa,  jednak  dają  niewielki  stopień 

rocesów. Z kolei małe ziarna wiążą się z dużymi nakładami na zakładanie zamków 

Bardzo  często  działająca  od  jakiegoś  czasu  baza  danych,  na  której  wykonuje  się  bardzo  dużo 

zaczyna  działać  woniej  niż  podczas  pierwszego  uruchomienia.  Wówczas  do  głównego 

oraz  przebudowa  indeksów.  Do 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 7 

ITA-101 Bazy danych 

 

Indeksy i transakcje 

Strona 10/20 

SQL  Server  Profiler  to  potężne  choć  rzadko  wykorzystywane  narzędzie  do  analizy  problemów  z 
wydajnością  bazy  danych.  Wykorzystując  profiler  do  przechwytywania  śladów  (ang.  traces
aktywności  bazy  danych  można  analizować  wzorce  zapytań,  aby  wykryć  problemy  z  wydajnością 
nawet przed ich uwidocznieniem w aplikacjach. 

W pierwszym kroku należy zdefiniować ślad. Wewnątrz silnika bazy danych SQL Server udostępnia 
podsystem zdarzeń nazwany SQL Trace, który opiera się na zewnętrznych interfejsie. Interfejs ten 
pozwala na wywoływanie SQL Trace z wykorzystaniem różnorodnych parametrów. 

SQL Server Profiler uruchamia się z menu SQL Server 2008 Performance Tools. Po jego otworzeniu 
należy wybrać 

File, a następnie New Trace, co pokazano na rys. 7.  

 

Rys. 7 Definicja śladu 

Każdy  definiowany  ślad  musi  zostać  nazwany  (w  naszym  przykładzie  użyliśmy  nazwy 

Test). 

Następnie  następuje  wybór  wzorca.  Istnieje  kilka  wzorców,  które  najczęściej  są  monitorowane. 
Oczywiście  możemy  ustawić  pusty  wzorzec  i  sami  zdefiniować  opcje.  Na  rys.  7  użyliśmy 
predefiniowanego wzorca Tuning. Następnie ustawiamy sposób zapisu. Mamy możliwość zapisu do 
pliku lub do tabeli. Zapis do tabeli nie jest polecany, gdyż SQL Trace może generować setki tysięcy 
wierszy danych śladu na minutę na obciążonym serwerze. 

Gdy  ślad  jest  w  pełni  zdefiniowany,  należy  go  tylko  uruchomić  i  zbierać  dane.  W  tym  celu  należy 
kliknąć Run. Wynik działania śladu pokazano na rys. 8. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 7 

ITA-101 Bazy danych 

 

Indeksy i transakcje 

Strona 11/20 

 

Rys. 8 Uruchomienie śladu 

Po  zakończeniu  zbierania  śladu  kolejnym  etapem  jest  użycie  narzędzia  Database  Engine  Tuning 
Advisor  (DTA).  Odgrywa  ono  ważną  rolę  w  rozwiązywaniu  problemów  związanych  z  wydajnością, 
pozwalając  wpływać  na  optymizator  zapytań  w  celu  otrzymania  zaleceń  dla  indeksów, 
indeksowanych widoków lub partycji, które mogą zwiększyć wydajność. 

W  celu  uruchomienia  DTA  należy  z  zakładki  Tools  wybrać  Database  Engine  Tuning  Advisor
Następnie  należy  połączyć  się  z  serwerem,  wybrać  plik  obciążający  do  analizy  –  ten,  do  którego 
zapisaliśmy zbierany ślad (rys. 9) – oraz określić opcje strojenia (rys. 10). 

 

Rys. 9 Definiowanie ogólnych opcji strojenia bazy danych 

 

background image

Włodzimierz Dąbrowski, Przemysław 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 można zacząć analizę klikając  Start Analysis, co pokazano 
na rys. 11. 

 

Rys. 11 Strojenie bazy danych 

Po wykonaniu  analizy  otrzymujemy  zalecenia  na  przykład  dotyczące  przebudowy  indeksów,  które 
możemy zastosować względem naszej bazy danych. 

Porady praktyczne 

Indeksowanie kolumn 

 

Indeksy powinny być planowane z myślą o najczęściej wykonywanych w Twojej bazie danych 
zapytaniach 

SELECT  z  klauzulą  WHERE.  Pierwszym  krokiem  powinno  być  zatem  wypisanie 

najczęściej wykonywanych zapytań (koniecznie z klauzulą 

WHERE) 

 

Microsoft SQL Server umożliwia utworzenie w tabeli jednego indeksu grupowanego oraz 249 
indeksów niegrupowanych. Pojedynczy indeks można założyć na maksymalnie 16 polach. To 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 7 

ITA-101 Bazy danych 

 

Indeksy i transakcje 

Strona 13/20 

jednak  tylko  maksymalne  możliwości  serwera.  W  praktyce  w  bazach  danych  OLTP  (ang. 
online  transaction  processing)  nie  tworzy  się  więcej  niż  8  do  10  indeksów  związanych  z 
pojedynczą tabelą. 

 

Należy  pamiętać,  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ż  niemożliwe  będzie 

porównanie wartości wzorca z wartościami na stronach indeksu. 

 

Indeksy  mają  kluczowe  znaczenie  dla  optymalizacji  wydajności  baz  danych.  Dobrze 
zaprojektowane  indeksy  mogą  znacząco  poprawić  szybkość  operacji  przeszukiwania  bazy 
danych  (najczęściej  wykonywana  operacja  i  dotyczy  największych  ilości  danych),  ale  źle 
zaplanowane  mogą  spowodować  efekt  odwrotny  do  pożądanego.  Z  tego  powodu  należy 
starannie zaplanować ich strukturę. 

 

Database  Engine  Tuning  Advisor  (DTA)  to  znacznie  udoskonalony  następca  narzędzia  Index 
Tuning Wizard dostarczanego wraz z SQL Server 2000. 

 

Żeby Database Engine Tuning Advisor (DTA) mógł przeprowadzić optymalizację bazy danych 
w oparciu o plik zawierający ślad, musi on mieć co najmniej 2 MB zebranych danych. 

Transakcje 

 

Zakleszczenia są poważnym problemem i mają istotny wpływ na wydajność systemu. Walka z 
zakleszczeniami może przebiegać według dwu metod: 

a)

 

Wykrywanie  zakleszczeń  i  rozrywanie  pętli  zakleszczenia  –  detekcja  zakleszczenia 
wymaga skonstruowania grafu czekania (ang. wait-for graph) i tranzytywnego domknięcia 
tego grafu (złożoność gorsza niż n * n). Rozrywanie pętli zakleszczenia polega na wybraniu 
transakcji  „ofiary”  uczestniczącej  w  zakleszczeniu,  a  następnie  jej  zerwaniu  i 
uruchomieniu  od  nowa.  Wybór  „ofiary”  podlega  różnym  kryteriom  –  może  nią  być 
transakcja najmłodsza, najmniej pracochłonna, o niskim priorytecie itp.  

b)

 

Niedopuszczanie do zakleszczeń – istnieje wiele tego rodzaju metod, np.: 

 

Wstępne  żądanie  zasobów  –  przed  uruchomieniem  każda  transakcja  określa  potrzebne 
jej  zasoby.  Nie  może  później  nic  więcej  żądać.  Wada:  zgrubne  oszacowanie  żądanych 
zasobów prowadzi do zmniejszenia stopnia współbieżności. 

 

Czekasz-umieraj (ang. wait-die) – jeżeli transakcja próbuje dostać się do zasobu, który jest 
zablokowany,  to  natychmiast  jest  zrywana  i  powtarzana  od  nowa.  Metoda  może  być 
nieskuteczna  dla  systemów  interakcyjnych  (użytkownik  może  się  denerwować 
koniecznością dwukrotnego wprowadzania tych samych danych) oraz prowadzi do spadku 
efektywności (sporo pracy idzie na marne). 

 

Postulat  możliwości  odtworzenia  stanu  systemu  sprzed  wywołani  transakcji  w  wypadku  jej 
awarii  (wycofania)  możliwy  jest  dzięki  m.in.  zastosowaniu  osobnego  dziennika  transakcji. 
Mogą być w nim zapisywane wszystkie dane, na których pracuje transakcja lub też tylko dane 
różnicowe.  Należy  jednak  pamiętać,  że  obsługa  transakcji  wiąże  się  z  dodatkowymi 
nakładami i obciążeniem dla systemu. 

Uwagi dla studenta 

Jesteś przygotowany do realizacji laboratorium jeśli: 

 

rozumiesz mechanizm działania i polityki indeksowania 

 

rozumiesz zasadę działania transakcji 

 

znasz składnię nakładania indeksów na poszczególne pola 

 

rozumiesz sposób działania transakcji 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 7 

ITA-101 Bazy danych 

 

Indeksy i transakcje 

Strona 14/20 

 

rozumiesz mechanizm zakleszczania transakcji 

Pamiętaj  o  zapoznaniu  się  z  uwagami  i  poradami  zawartymi  w  tym  module.  Upewnij  się,  że 
rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego 
w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. 

Dodatkowe źródła informacji 

1.

 

Kalen  Delaney,  Microsoft  SQL  Server  2005:  Rozwiązania  praktyczne  krok  po  kroku,  Microsoft 
Press, 2006  

W  książce  autor  przedstawia  między  innymi  w  jaki  sposób  należy  stosować 
transakcje  w  celu  zapewnienia  bezpiecznej  współbieżności  bazy  danych.  Pokazuje 
jak należy definiować transakcje w SQL Server oraz jak zarządzać odseparowanymi 
transakcjami. W pozycji tej znajdziesz dużo rozwiązań praktycznych. 

2.

 

Deren  Bieniek,  Randy  Dyess,  Mike  Hotek,  Javier  Loria,  Adam  Machanic,  Antonio  Soto,  Adolfo 
Wiernik, SQL Server 2005. Implementacja i obsługa, APN Promise, 2006 

W  książce  obszernie  przedstawiono  zagadnienia  związane  z  tworzeniem  indeksów 
oraz transakcjami. Znajdziesz tu potrzebne informacje na temat struktury indeksu, 
tworzenia  indeksów  klastrowych  i  nieklastrowych  oraz  na  temat  tworzenia 
transakcji. Znajdziesz tutaj również szczegółowe informacje na temat optymalizacji 
bazy danych oraz przebudowy indeksów. Książka szczególnie polecana ze względu 
na dużą zawartość ćwiczeń laboratoryjnych. 

3.

 

Ramez Elmasri, Shamkant B. Navathe, Wprowadzenie do systemów baz danych, Helion, 2005 

W  książce  tej  znajdziemy  dużo  szczegółowych  informacji  na  temat  indeksowania 
oraz  zagadnień  związanych  z  przetwarzaniem  transakcji.  Pozycja  szczególnie 
polecana dla osób pragnących poszerzyć swoją wiedzę z tej tematyki. 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

Laboratorium podstawowe

Problem 1 (czas realizacji 30

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od 
firma  planuje  rozszerzenie 
dotąd na Twoim wydziale. Zadanie

 

Zadanie 

Tok postępowania

1.

 

Stwórz listę 

najczęściej 
wykonywanych 
zapytań 

 

Wypisz 

najczęściej 

wykonywane 

zapytania 

na 

bazie 

danych 

PraceDyplomowe




2.

 

Wybierz pola 

do indeksowania 

 

Mając  przed  sobą  listę  najczęściej  wykonywanych  zapytań  oraz 
strukturę  tabel 
indeksowania są kolumny lub kombinacje kolumn, które:



3.

 

Nawiąż 

połączenie z SQL 
Server 2008 

 

Uruchom maszynę wirtualną 


 

Kliknij 
SQL Server Management Studio

 

W oknie logowania kliknij 

4.

 

Przygotuj 

tabelę 

 

Z menu głównego wybierz 

 

Odszukaj plik 

 

Kliknij  w menu  głównym  programu  SQL  Server M
Tools

 

W oknie 

 

W  pozycji  odpowiadającej  kombinacji  klawiszy 
sp_helpindex
12

emysław Kowalczuk, Konrad Markowski 

 

Strona 15/20 

Laboratorium podstawowe 

(czas realizacji 30 min) 

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od 
firma  planuje  rozszerzenie  na  skalę  uczelnianą  systemu  prac  dyplomowych

. Zadanie, jakie przed Tobą stoi, to zaplanowanie struktury indeksów.

Tok postępowania 

Wypisz 

najczęściej 

wykonywane 

zapytania 

na 

bazie 

danych 

PraceDyplomowe, służące do wyszukiwania prac:

 

według tytułów 

 

według autorów 

 

według promotorów 

 

według recenzentów 

Zastanów się, jakie inne zapytania z klauzulą 

WHERE

dla bazy danych PraceDyplomowe

Mając  przed  sobą  listę  najczęściej  wykonywanych  zapytań  oraz 
strukturę  tabel  zaplanuj  strukturę  indeksów
indeksowania są kolumny lub kombinacje kolumn, które:

 

narzucają porządek sortowania (indeks grupowy)

 

przechowują wartości częściej odczytywane niż modyfikowane

 

są  wykorzystywane  do  łączenia  (JOIN)  lub  wyszukiwania  (
danych 

 

przechowują różnorodne wartości 

Zastanów się, jakie inne kolumny są dobrymi kandydatami na to
założyć na nie indeks. 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 
D:\VirtualPC\Dydaktyka\BD2008.vhd

Kliknij  Start.  Z  grupy  programów  Microsoft  SQL  Server  2008
SQL Server Management Studio

W oknie logowania kliknij Connect

Z menu głównego wybierz File -> Open -> File
Odszukaj plik C:\Lab08\Indeksy.sql i kliknij Open.
Kliknij  w menu  głównym  programu  SQL  Server M
Tools -> Customize
W oknie Customize kliknij przycisk Keybord
W  pozycji  odpowiadającej  kombinacji  klawiszy 
sp_helpindex i wciśnij OK. Wynik powyższych operacji pokazano na 
12. 

Moduł 7 

Indeksy i transakcje 

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od swojego szefa, że 

prac  dyplomowych,  którym  zarządzała 

zaplanowanie struktury indeksów. 

Wypisz 

najczęściej 

wykonywane 

zapytania 

na 

bazie 

danych  

służące do wyszukiwania prac: 

WHERE można utworzyć 

Mając  przed  sobą  listę  najczęściej  wykonywanych  zapytań  oraz 

strukturę  indeksów.  Kandydatami  do 

indeksowania są kolumny lub kombinacje kolumn, które: 

narzucają porządek sortowania (indeks grupowy) 

ytywane niż modyfikowane 

)  lub  wyszukiwania  (WHERE

Zastanów się, jakie inne kolumny są dobrymi kandydatami na to, żeby 

 

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w  Microsoft  Virtual 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 

Microsoft  SQL  Server  2008  uruchom 

Kliknij  w menu  głównym  programu  SQL  Server Management  Studio  na 

W  pozycji  odpowiadającej  kombinacji  klawiszy  Ctrl+F1  wpisz 

. Wynik powyższych operacji pokazano na rys. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

 

Stwórz 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

 

Podkreśl  w  edytorze  słowo 
CTRL+F1
informację pokazaną na 

--

EXEC sp_helpindex Osoba_kopia
GO

emysław Kowalczuk, Konrad Markowski 

 

Strona 16/20 

Rys. 12 Definicja klawiszy skrótu 

Dzięki  zdefiniowaniu  klawiszy  skrótu  w  prosty  sp
wywoływać  z  klawiatury  procedurę  składowaną 
wyświetla informacje o indeksach w wybranej tabeli.

Stwórz 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 

Podkreśl  w  edytorze  słowo  Osoba  (nazwa  twojej  tabeli)  i  wciśnij 
CTRL+F1  lub  wykonaj  poniższy  fragment  skryptu. 
informację pokazaną na rys. 13. 

-- (4) zobaczmy indeksy w tabeli 

EXEC sp_helpindex Osoba_kopia 
GO 

Moduł 7 

Indeksy i transakcje 

 

Dzięki  zdefiniowaniu  klawiszy  skrótu  w  prosty  sposób  będziesz  mógł 
wywoływać  z  klawiatury  procedurę  składowaną  sp_helpindex,  która 
wyświetla informacje o indeksach w wybranej tabeli. 

 

(nazwa  twojej  tabeli)  i  wciśnij 

lub  wykonaj  poniższy  fragment  skryptu.  Powinieneś  zobaczyć 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

 

Włącz  pomiar  statystyk  wejścia/wyjścia  ilości  skanowanych  stron 
wykonując poniższe polecenie:

--

SET statistic io on
GO

 

Zaznacz i uruchom (

--
--

SELECT * FROM Osoba
WHERE Nr_Indeksu > 1000 AND Nazwisko = 'K%'
GO

5.

 

Utwórz indeks 

 

Zaznacz i uruchom (

--

CREATE INDEX index_Osoba ON Osoba(Nazwisko, Nr_Indeksu)
GO

 

Ponownie  podkreśl  w  edytorze  słowo 
wciśnij 

6.

 

Przetestuj 

indeks 

 

Zaznacz i uruchom (

--
--

SELECT * FROM Osoba
WHERE Nr_Indeksu > 1000 AND Nazwisko = 
GO

emysław Kowalczuk, Konrad Markowski 

 

Strona 17/20 

Rys. 13 Informacja o indeksach w tabeli Osoba

Zastanów  się,  dlaczego  w  wyniku  wywołania  procedury  składowanej 
odpowiedzialnej  za  wyświetlanie  informacji  o  indeksach  pojawia  się 
wpis z indeksem PK_Osoba, skoro żaden indeks nie został założony?

Włącz  pomiar  statystyk  wejścia/wyjścia  ilości  skanowanych  stron 
wykonując poniższe polecenie: 

-- (5) Wlacz statystyki wejscia/wyjscia ilosci skanowanych stron

SET statistic io on 
GO 

Zaznacz i uruchom (F5) poniższy 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) poniższy fragment kodu: 

-- (7) utworzmy indeks niegrupowany 

CREATE INDEX index_Osoba ON Osoba(Nazwisko, Nr_Indeksu)
GO 

Ponownie  podkreśl  w  edytorze  słowo  Osoba  (nazwa  twojej  tabeli)  i 
wciśnij CTRL+F1. Powinieneś zobaczyć informację pokazaną na

Rys. 14 Informacja o indeksach w tabeli Osoba

Zaznacz i uruchom (F5) poniższy 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 będzie oczywiście taki sam, ale pojawi się różnica w 
statystykach. 

Moduł 7 

Indeksy i transakcje 

 

macja o indeksach w tabeli Osoba 

Zastanów  się,  dlaczego  w  wyniku  wywołania  procedury  składowanej 

informacji  o  indeksach  pojawia  się 

, skoro żaden indeks nie został założony? 

Włącz  pomiar  statystyk  wejścia/wyjścia  ilości  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 będzie oczywiście taki sam, ale pojawi się różnica w 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

Problem 2 (czas realizacji 15 min)

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od 
firma  planuje  rozszerzenie 
dotąd  na  Twoim  wydziale.  Zadanie  jakie  przed  Tob
bazy danych. 

 

Zadanie 

Tok postępowania

1.

 

Nawiąż 

połączenie z SQL 
Server 2008 

 

Uruchom maszynę wirtualną 


 

Kliknij 
SQL Server Manageme

 

W oknie logowania kliknij 

2.

 

Przygotuj 

tabelę 

 

Z menu głównego wybierz 

 

Odszukaj plik 

 

Zaznacz kod, który wyświetla fragment tabeli, oznaczony w komentarzu 
(1)

--
USE PraceDyplomowe
GO
 
--
SELECT * 
FROM Osoba 
WHERE ID_Osoby IN (1,2)

 

Zaznacz kod, który próbuje wykonać transakcje

--
BEGIN 
BEGIN TRY
 
 
 
 
 
 
END TRY
BEGIN CATCH
 
 
 
 
 
 
 
IF @@TRANCOUNT > 0
 
END CATCH
IF @@TRANCOUNT > 0
 
GO

emysław Kowalczuk, Konrad Markowski 

 

Strona 18/20 

Problem 2 (czas realizacji 15 min) 

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od 
firma  planuje  rozszerzenie  na  skalę  uczelnianą  systemu  prac  dyplomowych

.  Zadanie  jakie  przed  Tobą  stoi  to  stworzenie  transakcji  dla  rozwijanej 

Tok postępowania 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 
D:\VirtualPC\Dydaktyka\BD2008.vhd

Kliknij  Start.  Z  grupy  programów  Microsoft  SQL  Server  2008
SQL Server Management Studio

W oknie logowania kliknij Connect

Z menu głównego wybierz File -> Open -> File
Odszukaj plik C:\Lab08\Transakcje.sql i kliknij Open
Zaznacz kod, który wyświetla 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, który próbuje 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. Właśnie dowiedziałeś się od swojego szefa, że 

prac  dyplomowych,  którym  zarządzała 

e  transakcji  dla  rozwijanej 

 

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w  Microsoft  Virtual 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 

Microsoft  SQL  Server  2008  uruchom 

Open

Zaznacz kod, który wyświetla fragment tabeli, oznaczony w komentarzu 

(1) Ustaw sie na bazie danych PraceDyplomowe  

(2) Wyswietlamy dwa pierwsze rekordy z tabeli Osoba 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

 

emysław Kowalczuk, Konrad Markowski 

 

Strona 19/20 

Powyższy  kod  podejmuje  próbę  wykonania  transakcji  złożonej  z 
dwóch operacji UPDATE. Próba wykonania pierwszej z nich spowoduje 
błąd, ponieważ wartości w kolumnie ID_Osoby
być  unikalne,  a  polecenie  próbuje  wstawić  duplikat  wartości  2,  która 
już  istnieje  w  rekordzie  drugim  tabeli.  Przechwytywanie  błędów 
odbywa się przy użyciu bloków TRY...CATCH, które poznałeś w module 
9. 
 
Zastanów  się,  jak  powinieneś  zmodyfikować
żeby zakończyła się powodzeniem? 

 

Moduł 7 

Indeksy i transakcje 

konania  transakcji  złożonej  z 

. Próba wykonania pierwszej z nich spowoduje 

ID_Osoby w tabeli Osoby muszą 

unikalne,  a  polecenie  próbuje  wstawić  duplikat  wartości  2,  która 

rugim  tabeli.  Przechwytywanie  błędów 

, które poznałeś w module 

zmodyfikować  powyższą  transakcję, 

background image

Włodzimierz Dąbrowski, Przemysław 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. Właśnie dowiedziałeś się od swojego szefa, że 
firma  zarządzająca  bazą 

AdventureWorks  planuje  rozszerzenie  i  modernizację  systemu  w  celu 

spełnienia  pewnych  standardów.  W  związku  z  modernizacją  systemu  bazodanowego,  a  zatem 
zmianą struktury fizycznej bazy danych, najprawdopodobniej będzie musiała nastąpić przebudowa 
struktury  indeksów.  Poza  przebudową  indeksów  będzie  musiała  zapewne  nastąpić  modernizacja 
istniejących  transakcji  tak,  żeby  odpowiadały  one  nowej  strukturze  fizycznej  przebudowanej  bazy 
danych. 

Zadania jakie przed Tobą stoją to: 

1.

 

Podjęcie  decyzji,  które  obiekty  w  bazie  danych  pozostaną  bez  zmian,  a  które  zostaną 
zmodyfikowane lub usunięte. 

2.

 

Podjęcie  decyzji,  na  które  pola  opłaca  się  nałożyć  indeks  i  jakiego  typu  te  indeksy  powinny 
być. 

3.

 

Podjęcie  decyzji,  które  transakcje  należy  zmodernizować  i  czy  nie  trzeba  będzie  dodać 
nowych transakcji. 

 

background image

 

 

ITA-101 Bazy Danych 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 8 

Wersja 1.0 

Programowanie zaawansowane  

w T-SQL 

Spis treści 

Programowanie zaawansowane w  T-SQL ........................................................................................... 1 

Informacje o module ............................................................................................................................ 2 

Przygotowanie teoretyczne ................................................................................................................. 3 

Przykładowy problem .................................................................................................................. 3 

Podstawy teoretyczne.................................................................................................................. 3 

Przykładowe rozwiązanie ............................................................................................................. 6 

Porady praktyczne ....................................................................................................................... 6 

Uwagi dla studenta ...................................................................................................................... 7 

Dodatkowe źródła 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 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 8 

ITA-101 Bazy danych 

 

Programowanie zaawansowane w T-SQL 

Strona 2/12 

Informacje o module 

Opis modułu 

Programowanie  w  języku  zapytań  to  ważna  umiejętność.  Powinni  ją 
opanować zarówno programiści, jak i administratorzy. Różne dialekty języka 
SQL  oferują  różne  składnie,  jednak  reguły,  jakimi  powinien  kierować  się 
tworzący  kod,  są  te  same  niezależnie  od  systemu  zarządzania  bazami 
danych.  W  module  tym  znajdziesz  informację  na  temat  zaawansowanego 
programowania  w  T-SQL.  Dowiesz  się  w  jaki  sposób  korzystać  z  instrukcji 
sterujących, kursorów oraz jak funkcjonuje obsługa błędów. 

Cel modułu 

Celem  modułu  jest  zapoznanie  czytelnika  z  zaawansowanymi  elementami 
języka T-SQL, takimi jak instrukcje sterujące, kursory, obsługa błędów itp. 

Uzyskane kompetencje  

Po zrealizowaniu modułu będziesz: 

 

potrafił użyć instrukcji sterujących w języku T-SQL 

 

rozumiał sposób działania i funkcjonowania kursorów 

 

wiedział, w jaki sposób działa obsługa błędów 

Wymagania wstępne 

Przed przystąpieniem do pracy z tym modułem powinieneś: 

 

potrafić  stworzyć  bazę  danych  wraz  z  jej  podstawowymi  obiektami 
(patrz: moduł 3) 

 

potrafić  napisać  podstawowe  instrukcje  w  języku  T-SQL  DCL  i  T-SQL 
DDL (patrz: moduł 5) 

 

potrafić pisać zapytania w języku T-SQL DML (patrz: moduł 6)  

 

rozumieć podstawową składnię języka T-SQL 

Mapa zależności modułu 

Zgodnie  z  mapą  zależności  przedstawioną  na  rys.  1,  przed  przystąpieniem 
do  realizacji  tego  modułu  należy  zapoznać  się  z  materiałem  zawartym 
w modułach 3, 5 i 6. 

 

Rys. 1 Mapa zależności modułu 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 8 

ITA-101 Bazy danych 

 

Programowanie zaawansowane w T-SQL 

Strona 3/12 

Przygotowanie teoretyczne 

Przykładowy problem 

Podczas  wytwarzania  bazy  danych  wiąże  ze  sobą  grupę  osób,  do  której  należą  projektant  bazy 
danych,  administrator  systemu  zarządzania  bazą  danych,  administrator  bazy  danych  oraz 
programista bazy danych. Bardzo ważne jest, żeby wszyscy biorący udział w wytwarzaniu systemu 
bazodanowego współdziałali ze sobą na różnych etapach. Najwięcej wspólnego z programowaniem 
w  T-SQL  ma  programista  bazy  danych.  Od  niego  w  dużej  mierze  zależy,  czy  wytworzone  funkcje, 
procedury składowane, wyzwalacze i inne elementy będą działały we właściwy sposób. To on jest 
odpowiedzialny  za  przygotowanie  odpowiednich  elementów  programowych,  które  następnie 
będzie wykorzystywał projektant aplikacji i programista aplikacji dostępowej. Również od niego w 
pewnym stopniu zależy bezpieczeństwo danych gromadzonych w bazie. W związku z tym powinien 
on  dysponować  odpowiednią  wiedzą  i  posiadać  pewne  umiejętności  z  zakresu  zaawansowanego 
programowania  w  języku  T-SQL.  Znajomość  tego  języka  oraz  dobre  nawyki  wynikające  z  praktyki 
programowania są bardzo ważne. Podstawowymi składowymi języka T-SQL są instrukcje sterujące, 
kursory i obsługa błędów. 

Podstawy teoretyczne 

Język  T-SQL  stale  ewoluuje.  Z  języka  zapytań  stał  się  właściwie  językiem  programowania  baz 
danych.  Programiści  tworzący  oprogramowanie  mogą  łatwo  nauczyć  się  T-SQL  dzięki  istniejącym 
analogiom do tradycyjnych języków programowania proceduralnego. Jednymi z częściej używanych 
konstrukcji są instrukcje sterujące. 

Instrukcje sterujące 

Instrukcja  sterująca 

IF…ELSE  daje  możliwość  warunkowego  wykonywania  bloków  kodu.  W 

implementacji T-SQL wygląda ona jak poniżej: 

IF warunek_logiczny 
 

  {  wyrazenie_sql | wyrazenie_blokowe } 
ELSE 
 

  {  wyrazenie_sql | wyrazenie_blokowe } 

Należy zwrócić uwagę, że jeśli blok po słowie 

IF lub ELSE składa się z wielu linii kodu, musisz użyć 

składni 

BEGIN…END. Wówczas: 

IF warunek_logiczny 
BEGIN 
 

  { wyrazenie_sql | wyrazenie_blokowe } 
 

END 
ELSE 
 

BEGIN 
 

  { wyrazenie_sql | wyrazenie_blokowe } 
 

END 

Poniższy kod przedstawia przykładowe użycie instrukcji sterującej 

IF…ELSE: 

IF @zmienna > 100 
 

  PRINT 'Zmienna jest większa niż 100' 
ELSE 
BEGIN 
 

  PRINT 'Zmienna jest mniejsza niż 100' 
 

  SET @zmienna = 0 -- zerowanie zmiennej 
END 

Kolejna instrukcja sterująca to pętla 

WHILE. W T-SQL wygląda ona następująco: 

WHILE wyrazenie_logiczne 
{  wyrazenie_sql | wyrazenie_blokowe } 

background image

Włodzimierz Dąbrowski, Przemysław 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 } 

Wyrażenie  logiczne  powinno  zwracać  wartość 

TRUE  lub  FALSE.  Podobnie  jak  w  przypadku 

instrukcji sterującej 

IF…ELSE, jeśli wyrażenie SQL składa się z wielu linii kodu, musisz użyć właśnie 

składni 

BEGIN…END. W instrukcji WHILE występują dwie istotne instrukcje: 

 

BREAK – powoduje wyjście z pętli WHILE  

 

CONTINUE – powoduje rozpoczęcie kolejnej interacji pętli WHILE 

Poniższy kod przedstawia przykładowe użycie instrukcji sterującej 

WHILE: 

DECLARE @zmienna int 
SET @zmienna = 0 
 
WHILE @zmienna < 10 
BEGIN 
 

  PRINT 'Iteracja nr ' + CAST(@zmienna AS varchar(2)) 
 

  SET @zmienna = @zmienna + 1 
END 

Należy  pamiętać,  że  pętla 

WHILE może być wykonywana w nieskończoność, jeśli programista nie 

zapewni wyjścia z pętli. 

Kursory 

Kursor  to  obiekt,  który  umożliwia  poruszanie  się  po  wynikach  zapytania  rekord  po  rekordzie. 
Umożliwia  on  przetwarzanie  rekordów  jeden  po  drugim,  co  daje  możliwość  zaawansowanego 
formatowania wyników  wyszukiwania  danych  (ale w  ściśle  określonej  kolejności,  determinowanej 
przez wynik zapytania użytego w definicji kursora).  

Deklaracja kursora w języku T-SQL wygląda następująco: 

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] ] ] 
[;] 

Poniższy kod przedstawia przykładowe użycie 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 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 8 

ITA-101 Bazy danych 

 

Programowanie zaawansowane w T-SQL 

Strona 5/12 

Składnia specjalna 

Nowoczesne  dialekty  języka  SQL  obfitują  w  specjalne  elementy  składniowe,  które  znacznie 
rozszerzają jego funkcjonalność. Przykładem takiej składni może być 

PIVOT. Składnia ta umożliwia 

stworzenie tabeli wynikowej z zapytania 

SELECT, w której w nagłówkach wierszy i kolumn znajdują 

się wartości z tabel źródłowych.  

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 powyżej może przykładowo wygenerować następujący 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 

Powyższy  wynik  obrazuje  możliwości  tej  składni,  umożliwiając  zbudowanie  tabeli  wyświetlającej 
ilość  zamówień  u  wybranych  producentów,  dokonanych  przez  pięciu  pracowników  (każdy 
pracownik o określonym 

EmployeeID). 

Obsługa błędów 

W  trakcie  wykonywania  kodu  SQL  mogą  wystąpić  nieprzewidziane  błędy,  wynikające  z  różnych 
przyczyn.  Mogą  to  być  błędy  powstałe  wskutek  narzuconych  w  bazie  danych  ograniczeń  lub  na 
przykład błędy spowodowane próbami wykonania niedozwolonych operacji. Wykrycie tych błędów 
i odpowiednia reakcja na nie to zadanie dla programisty baz danych. 

Błędy wykrywamy najczęściej w: 

 

transakcjach – po wykryciu błędu wycofujemy transakcję 

 

procedurach składowanych – wykrywamy błędy powstałe głównie w wyniku niepoprawnych 
wartości parametrów podanych przez użytkownika 

 

wyzwalaczach  –  podobnie  jak  w  transakcjach,  po  napotkaniu  błędu  wycofywana  jest 
transakcja wywołująca wyzwalacz 

 

blokach kodu SQL – wszelkie rozbudowane bloki kodu wymagają wykrywania błędów 

Metod  pozwalających  na  wykrycie  błędów  jest wiele.  Można  zastosować  instrukcje  sterujące,  np. 
IF…ELSE, do sprawdzania wartości zmiennych, by w ten sposób zapobiegać wystąpieniu błędów. 
Drugą  metodą  jest  wykorzystanie  istniejących  w  systemie  zarządzania  bazami  danych  funkcji 
pozwających wykrywać błędy. W systemie Microsoft SQL Server taką funkcją jest 

@@ERROR, która 

zwraca numer ostatnio napotkanego błędu w bieżącej sesji. 

Aktualnie istnieją także inne, przez wielu uznawane za lepsze metody wykrywania i obsługi błędów. 
Chodzi  o  strukturalną  obsługę  wyjątków.  Przez  wyjątek  rozumiemy  błąd,  który  wymaga  obsługi. 
Poniżej pokazano składnię 

TRY…CATCH

 (ang. try – próbuj, catch – przechwyć):   

background image

Włodzimierz Dąbrowski, Przemysław 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 

Jeśli  wyrażenie  SQL  składa  się  z  wielu  linii  kodu,  podobnie  jak  w  przypadku  instrukcji  sterujących 
IF…ELSE i WHILE musisz użyć składni BEGIN…END. 

Przykładowe rozwiązanie 

Przykładowe użycie instrukcji sterującej 

Rozważmy  przykład,  w  którym  średnia  cena  produktu  jest  mniejsza  od  100  zł.  Jeżeli  maksymalna 
cena  jest  większa  od  300  zł,  wówczas  w  pętli 

WHILE

  podwajamy  ją.  Pętla  ta  wykonuje  się  do 

momentu, gdy maksymalna cena jest większa od 300 zł. Po spełnieniu warunku wychodzimy z pętli 
i wyświetlamy komunikat dla użytkownika. 

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 'Wyświetlony komunikat po wyjściu z pętli'; 

Przykładowe użycie TRY…CATCH 

Poniższy fragment kodu obrazuje przykładową obsługę wyjątków przy pomocy składni 

TRY…CATCH. 

W celu zilustrowania obsługi błędów, wewnątrz bloku 

TRY dokonujemy dzielenia przez zero, które 

jest niewykonalne. Wówczas wywoływany jest wyjątek, który jest przechwytywany w bloku 

CATCH. 

Po  przechwyceniu  wyjątku  wyświetlany  jest  odpowiedni  komunikat  zdefiniowany  przez 
programistę. 

BEGIN TRY 
 

  -- generujemy błąd 
 

  SELECT 1/0; 
END TRY 
 
BEGIN CATCH 
 

  -- obsługujemy błąd 
 

  RAISERROR('Nie dzielimy przez zero',16,1) 
END CATCH 

Porady praktyczne 

 

Funkcja wykrywania błędów 

@@ERROR zwraca numer ostatniego błędu lub 0, jeśli wykonanie 

polecenia  T-SQL  zakończyło  się  powodzeniem.  Na  poniższym  przykładzie  pokazano  użycie 
funkcji 

@@ERROR do sprawdzenia naruszenia ograniczenia, do którego może dojść w sytuacji 

modyfikacji danych: 

UPDATE EmployeePayHistory 
SET PayFrequency = 4 
WHERE EmployeeID = 1 
 
IF @@ERROR = 547 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 8 

ITA-101 Bazy danych 

 

Programowanie zaawansowane w T-SQL 

Strona 7/12 

  PRINT 'naruszone ograniczenie.' 
GO 

 

Informacje na temat błędu mogą być uzyskiwane przy użyciu funkcji 

ERROR_NUMBER (numer 

błędu) i 

ERROR_MESSAGE (komunikat błędu). 

 

SQL  Server  udostępnia  trzy  rodzaje  programowalnych  obiektów:  funkcje,  procedury 
składowane i wyzwalacze. W celu poprawnego pisania elementów programowalnych należy 
znać  zaawansowane  elementy  języka  T-SQL.  Zamiast  wykonywania  pojedynczego  polecenia 
lub  komendy,  obiekty  te  umożliwiają  tworzenie  bogatej  logiki  programistycznej,  która 
zawiera pętle, kontrolę przepływu, 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  niezbędnym 
składnikiem jest zdolność do programowanego wykrywania i obsłużenia błędów. 

 

Wewnątrz bloku 

CATCH możemy ustalić co spowodowało błąd i przekazać informacje na jego 

temat używając systemu obsługi błędów języka T-SQL. Najczęściej używanymi funkcjami tego 
rodzaju są 

ERROR_NUMBER i ERROR_MESSAGE. Zwracają one numer i opis błędu.  

 

Używając  funkcji 

ERROR_NUMBER  i  ERROR_MESSAGE  w  bloku  instrukcji  CATCH  możemy 

zdecydować, czy potrzeba użyć 

ROLLBACK do cofnięcia transakcji. 

Uwagi dla studenta 

Jesteś przygotowany do realizacji laboratorium jeśli: 

 

rozumiesz, co oznacza instrukcja sterująca 

 

rozumiesz zasadę działania kursorów 

 

umiesz zdefiniować prostą pętlę 

 

umiesz podać przykład obsługi błędów 

Pamiętaj  o  zapoznaniu  się  z  uwagami  i  poradami  zawartymi  w  tym  module.  Upewnij  się,  że 
rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego 
w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. 

Dodatkowe źródła informacji 

1.

 

Kalen  Delaney,  Microsoft  SQL  Server  2005:  Rozwiązania  praktyczne  krok  po  kroku,  Microsoft 
Press, 2006  

W  książce  autor  w  przystępny  i  zrozumiały  sposób  przedstawia  podstawowe 
mechanizmy  zaawansowanego  programowania  w  języku  T-SQL.  Książka  polecana 
szczególnie dla osób początkujących. 

2.

 

Edward Whalen, Microsoft SQL Server 2005 Administrator’s Companion, Microsoft Press, 2006  

W  książce  autor  pokazał  zaawansowane  mechanizmy  programowania  w  języku 
T-SQL, które mogą zostać wykorzystane do programowania w bazach danych takich 
obiektów  jak  funkcje,  procedury  składowane,  wyzwalacze  i  transakcje.  Pozycja 
szczególnie  polecana  dla  osób  chcących  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 obsługa, APN Promise, 2006 

W  książce  tej,  podobnie  jak  w  powyższej  pozycji,  przedstawiono  elementy 
zaawansowanego  programowania  w  języku  T-SQL.  Pokazano  praktyczne 
zastosowanie  zaawansowanych  mechanizmów  T-SQL.  Książka  polecana  dla  osób 
początkujących, jak również chcących poszerzyć swoją wiedzę. 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

Laboratorium podstawowe

Problem 1 (czas realizacji 

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od 
firma  planuje  rozszerzenie  na  skalę  uczelnian
dotąd  na  Twoim  wydziale.  Zadanie  jakie  przed  Tob
mechanizmu  wybierania  danych  z
odpowiedniej formie. 

 

Zadanie 

Tok postępowania

1.

 

Nawiąż 

połączenie z SQL 
Server 2008 

 

Uruchom maszynę wirtualną 


 

Kliknij 
SQL Server Management Studio

 

W oknie logowania kliknij 

2.

 

Przetestuj 

instrukcję 
sterującą CASE 

 

Z menu głównego 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

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Programowanie zaawansowane w T

Strona 8/12 

Laboratorium podstawowe 

Problem 1 (czas realizacji 30 minut) 

firmie National Insurance. Właśnie dowiedziałeś 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 postępowania 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 
D:\VirtualPC\Dydaktyka\BD2008.vhd

Kliknij  Start.  Z  grupy  programów  Microsoft  SQL  Server  2008
SQL Server Management Studio

W oknie logowania kliknij Connect

Z menu głównego wybierz File -> Open -> File
Odszukaj plik C:\Labs\Lab06\Case.sql. 
Zaznacz  i  uruchom  kod  ze  skryptu  Case.sql.  Wynik  działania  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. Właśnie dowiedziałeś się od swojego szefa, że 

prac  dyplomowych,  którym  zarządzała 

stworzenie  zaawansowanego 

oraz  przedstawienie  tych  danych  w 

 

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w  Microsoft  Virtual 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 

Microsoft  SQL  Server  2008  uruchom 

.  Wynik  działania  pokazano 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 8 

ITA-101 Bazy danych 

 

Programowanie zaawansowane w T-SQL 

Strona 9/12 

 

Rys. 2 Wynik działania skryptu z użyciem instrukcji CASE 

3.

 

Zastosuj 

stronicowanie 
danych 

 

Z menu głównego wybierz File -> Open -> File

 

Odszukaj pliku C:\Labs\Lab06\Stronicowanie.sql 

 

Zaznacz  i  uruchom  kod  ze  skryptu  Stronicowanie.sql.  Wynik  działania 
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 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

Problem 2 (czas realizacji 

Kolejne  zadanie  związane  z  rozbudową  systemu  prac  dyplomowych  jakie  przed  Tobą  stoi  to 
oprogramowanie  obsługi  błędów  (przechwytywanie  i  obsługa)  z  użyc
mechanizmów, jakimi dysponuje SQL Server. 

 

Zadanie 

Tok postępowania

1.

 

Nawiąż 

połączenie z SQL 
Server 2008 

 

Uruchom maszynę wirtualną 


 

Kliknij 
SQL Server Manageme

 

W oknie logowania kliknij 

2.

 

Utwórz tabelę 

archiwizacji 
błędów 

 

Z menu głównego wybierz 

 

Odszukaj pliku 

 

Zaznacz  i  uruchom  kod  ze  skryptu 
której będą 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Programowanie zaawansowane w T

Strona 10/12 

Rys. 3 Wynik stronicowania danych 

Powyższe  zapytanie  stanowi  rozwiązanie  problemu  stronicowania 
danych. W tym wypadku wynikiem jest lista osób z tabeli 
czym  wyświetlone  zostają  nazwiska  osób,  które  z  pracy  otrzymały 
ocenę pomiędzy 3 a 5, biorąc pod uwagę sortowanie według kolum
ID_Stopnian. Zapytanie zadziała tak samo, nawet gdy numeracja w tej 
kolumnie nie będzie ciągła. Wykorzystuje ono podzapytanie, w którym 
dla  każdego  wiersza  generowana  jest  liczba  porządkowa  za  pomocą 
funkcji ROW_NUMBER (funkcja ta musi przed generowanie
określić kryterium sortowania, stąd klauzula ORDER BY

Problem 2 (czas realizacji 15 minut) 

Kolejne  zadanie  związane  z  rozbudową  systemu  prac  dyplomowych  jakie  przed  Tobą  stoi  to 
oprogramowanie  obsługi  błędów  (przechwytywanie  i  obsługa)  z  użyc

jakimi dysponuje SQL Server.  

Tok postępowania 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 
D:\VirtualPC\Dydaktyka\BD2008.vhd

Kliknij  Start.  Z  grupy  programów  Microsoft  SQL  Server  2008
SQL Server Management Studio

W oknie logowania kliknij Connect

Z menu głównego wybierz File -> Open -> File
Odszukaj pliku C:\Labs\Lab09\Errors.sql 
Zaznacz  i  uruchom  kod  ze  skryptu  Errors.sql,  który  tworzy  tabele,  w 
której będą zapisywane informacje o błędach 

Moduł 8 

Programowanie zaawansowane w T-SQL 

 

 

Powyższe  zapytanie  stanowi  rozwiązanie  problemu  stronicowania 
danych. W tym wypadku wynikiem jest lista osób z tabeli Osoby, przy 
czym  wyświetlone  zostają  nazwiska  osób,  które  z  pracy  otrzymały 
ocenę pomiędzy 3 a 5, biorąc pod uwagę sortowanie według kolumny 

Zapytanie zadziała tak samo, nawet gdy numeracja w tej 

kolumnie nie będzie ciągła. Wykorzystuje ono podzapytanie, w którym 
dla  każdego  wiersza  generowana  jest  liczba  porządkowa  za  pomocą 

(funkcja ta musi przed generowaniem wartości 

ORDER BY). 

Kolejne  zadanie  związane  z  rozbudową  systemu  prac  dyplomowych  jakie  przed  Tobą  stoi  to 
oprogramowanie  obsługi  błędów  (przechwytywanie  i  obsługa)  z  użyciem  zaawansowanych 

 

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w  Microsoft  Virtual 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 

Microsoft  SQL  Server  2008  uruchom 

,  który  tworzy  tabele,  w 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

--

USE PraceDyplomowe
GO

--
--

CREATE TABLE TabelaBledow

 
 
 
 

GO

3.

 

Przechwytywa

nie błędów 

 

Zaznacz i uruchom (

--

BEGIN TRY
 
END TRY
BEGIN CATCH
 
 
END CATCH
GO

4.

 

Przeglądanie 

informacji o 
wystąpieniu błędu 

 

Zaznacz i uruchom (

--

SELECT * FROM TabelaBledow
GO

Wynik działania pokazano na 

 

 

Włodzimierz Dąbrowski, Przemysław 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 

Powyższy  kod  tworzy  tabelę  TabelaBledow,  która  będzie  zawierała 
informacje  o  występujących  błędach.  W  kolumnie 
zapisany  zostanie  numer  błędu,  w  kolumnie 
komunikat  błędu,  zaś  w  kolumnie  ErrorDate
wystąpienia  błędu  (wartość  domyślna  –  bieżąca  data  i  czas 
generowana przy pomocy funkcji systemowej GETDATE

Zaznacz i uruchom (F5) poniższy 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) poniższy fragment kodu: 

-- (4) Wyswietlenie zawartosci tabeli bledow 

SELECT * FROM TabelaBledow 
GO 

Wynik działania pokazano na rys. 4. 

Rys. 4 Informacja o błędzie 

 

Moduł 8 

Programowanie zaawansowane w T-SQL 

(1) Ustawiamy się na baze danych PraceDyplomowe 

) Tworzymy tabele w ktorej bedzie przechowywana informacja o 

,  która  będzie  zawierała 

informacje  o  występujących  błędach.  W  kolumnie  ErrorNumber 

w  kolumnie  ErrorMessage  – 

ErrorDate  –  data  i  godzina 

bieżąca  data  i  czas  –  jest 

GETDATE). 

 

obslugi przechwytywania bledow 

INSERT TabelaBledow(ErrorNumber, ErrorMessage) 

 

(4) Wyswietlenie zawartosci tabeli bledow  

 

background image

Włodzimierz Dąbrowski, Przemysław 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. Właśnie dowiedziałeś się od swojego szefa, że 
firma  zarządzająca  bazą 

AdventureWorks  planuje  rozszerzenie  i  modernizacje  systemu  w  celu 

spełnienia  pewnych  standardów.  W  związku  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  języka  T-SQL.  Prawdopodobnie  również  w  związku  z  wejściem  na  wyższy  poziom 
programowania w T-SQL będziesz musiał wprowadzić strukturalną obsługę błędów. 

Zadanie jakie przed Toba stoi to: 

1.

 

Podjęcie  decyzji,  które  zapytania  w  bazie  danych  pozostaną  bez  zmian,  które  zostaną 
zmodyfikowane  i  zastąpione  czymś  bardziej  złożonym  wykorzystując  zaawansowane 
możliwości języka T-SQL, a które będą musiały zostać całkowicie usunięte. 

2.

 

Zaplanowanie struktury obsługi błędów dla zapytań istniejących w systemie bazodanowym. 

 

background image

 

 

ITA-101 Bazy Danych 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 9 

Wersja 1.0 

Procedury składowane i wyzwalacze 

Spis treści 

Procedury składowane i wyzwalacze ................................................................................................... 1 

Informacje o module ............................................................................................................................ 2 

Przygotowanie teoretyczne ................................................................................................................. 3 

Przykładowy problem .................................................................................................................. 3 

Podstawy teoretyczne.................................................................................................................. 3 

Przykładowe rozwiązanie ............................................................................................................. 8 

Porady praktyczne ..................................................................................................................... 13 

Uwagi dla studenta .................................................................................................................... 14 

Dodatkowe źródła 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 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 9 

ITA-101 Bazy danych 

 

Procedury składowane i wyzwalacze 

Strona 2/21 

Informacje o module 

Opis modułu 

W  tym  module  znajdziesz  informacje  na  temat  sposobu  działania  oraz 
podstaw  tworzenia  procedur  składowanych.  Dowiesz  się,  na  czym  polega 
różnica pomiędzy zwykłym zapytaniem T-SQL a procedurą składowaną oraz 
co  to  jest  kompilacja  i  rekompilacja  procedury.  Poznasz  również  specjalny 
rodzaj procedury składowanej – wyzwalacz. 

Cel modułu 

Celem modułu jest zapoznanie czytelnika z procedurami składowanymi oraz 
wyzwalaczami w środowisku bazodanowym Microsoft SQL Server 2008 oraz 
zaprezentowanie, jak wykorzystać je w przykładowym projekcie. 

Uzyskane kompetencje 

Po zrealizowaniu modułu będziesz: 

 

wiedział, jak napisać własną procedurę składowaną 

 

umiał rozbudowywać gotowe procedury składowane 

 

umiał tworzyć proste wyzwalacze 

 

umiał zarządzać wyzwalaczami 

 

umiał  wykorzystywać  wyzwalacze  do  optymalizacji  i  automatyzacji 
działania SQL Server 2008 

Wymagania wstępne 

Przed przystąpieniem do pracy z tym modułem powinieneś: 

 

potrafić  samodzielnie  stworzyć  bazę  danych  wraz  z  jej  obiektami 
(patrz: moduł 4) 

 

znać podstawową składnię języka T-SQL 

 

umieć napisać własne zapytania w języku T-SQL (patrz: moduły 5 i 6) 

 

znać zaawansowane mechanizmy języka T-SQL (patrz: moduł 8) 

 

wiedzieć,  na  czym  polega  bezpieczeństwo  w  bazach  danych  (patrz: 
moduł 10) 

Mapa zależności modułu 

Zgodnie  z  mapą  zależności  przedstawioną  na  rys.  1,  przed  przystąpieniem 
do  realizacji  tego  modułu  należy  zapoznać  się  z  materiałem  zawartym 
w modułach 3, 5, 6, 8 i 10. 

 

Rys. 1 Mapa zależności modułu 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 9 

ITA-101 Bazy danych 

 

Procedury składowane i wyzwalacze 

Strona 3/21 

Przygotowanie teoretyczne 

Przykładowy problem 

Podczas  wytwarzania  bazy  danych  wiąże  ze  sobą  grupę  osób,  do  której  należą  projektant  bazy 
danych,  administrator  systemu  zarządzania  bazą  danych,  administrator  bazy  danych  oraz 
programista bazy danych. Bardzo ważne jest, żeby wszyscy biorący udział w wytwarzaniu systemu 
bazodanowego współdziałali ze sobą na różnych etapach. Najwięcej wspólnego z programowaniem 
w  T-SQL  ma  programista  bazy  danych.  Od  niego  w  dużej  mierze  zależy,  czy  wytworzone  funkcje, 
procedury  składowane,  wyzwalacze  i  inne  element  będą  działały  we  właściwy  sposób.  To  on  jest 
odpowiedzialny  za  przygotowanie  odpowiednich  elementów  programowych,  które  następnie 
będzie wykorzystywał projektant aplikacji i programista aplikacji dostępowej.  

Kolejnym  zadaniem  jakie  stoi  przed  programistą  i  administratorem  bazy  danych  jest  stworzenie 
odpowiedniej  liczby  wyzwalaczy,  które  są  pewnym  rodzajem  procedur  składowanych,  z  tymże 
wywoływanych  niejawnie.  Należy  pamiętać,  iż  użycie  procedur  składowanych  prowadzi  do 
powstania kolejnej warstwy separującej użytkownika końcowego od fizycznych danych, tym samym 
powodując maskowanie fizycznej struktury bazy. Z tego powodu bardzo ważne jest przemyślane i 
odpowiednie przygotowanie zbioru procedur składowanych.  

Podstawy teoretyczne 

Procedury składowane 

Procedura składowana (ang. stored procedure) jest nazwanym zbiorem poleceń w języku SQL, który 
jest  przechowywany  na  serwerze  baz  danych  i  jest  kompilowany  przy  pierwszym  wykonaniu. 
Procedury  wnoszą  do  środowiska  bazodanowego  przetwarzanie  warunkowe  i  możliwości 
programistyczne. 

W  systemie  zarządzania  bazami  danych  wykonanie  dowolnego  fragmentu  kodu  języka  SQL  wiąże 
się  z  pewnym  ciągiem  czynności  –  począwszy  od  sprawdzenia  składni,  aż  po  kompilację  i 
wykonanie. 

Proces wykonywania zapytania przez SQL Server 

Proces wykonania pojedynczego zapytania w języku T-SQL w Microsoft SQL Server 2008 dzieli się 
na następujące etapy: 

1.

 

Sprawdzenie i rozdzielenie kodu na fragmenty - dokonywany jest podział kodu na fragmenty 
nazywane symbolami. Proces ten nazywamy często nazywany jest analizą leksykalną. 

2.

 

Sprawdzenie  kodu  pod  względem  poprawności  semantycznej  i  syntaktycznej  – 
dokonywana  jest  kontrola  poprawności  semantycznej,  czyli  sprawdzenie,  czy  kod  nie 
odwołuje się do nieistniejących obiektów lub nie używa nieistniejących poleceń oraz kontrola 
poprawności syntaktycznej, podczas której sprawdzana jest poprawność użytej składni. 

3.

 

Standaryzacja  wyodrębnionej  części  kodu  –  silnik  wykonywania  zapytań  zapisuje  kod  w 
jednoznacznej postaci (np. usuwa niepotrzebne symbole). 

4.

 

Optymalizacja – Microsoft SQL Server posiada wewnętrzny proces zwany Optymalizatorem 
Zapytań
,  który  wybiera  optymalny  sposób  dostępu  do  danych,  tzn.  taki  plan  wykonania 
zapytania  (ang.  execution  plan),  w  którym  serwer  będzie  skanował  (przeszukiwał) 
najmniejszą ilość stron danych (o fizycznej strukturze danych w Microsoft SQL Server możesz 
przeczytać  w  module  6).  Na  optymalizację  szczególny  wpływ  ma  struktura  indeksów  oraz 
sposób łączenia tabel. 

5.

 

Kompilacja  i  wykonanie  –  zapytanie  jest  kompilowane  według  optymalnego  planu 
wykonania i w takiej postaci wykonywane. 

6.

 

Zwrócenie wyników – wyniki zapytania zwracane są do klienta. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

Proces wykonywania procedury składowanej

Wykonywanie  procedur  składowanych  odbywa  się  inaczej  niż  wykonywanie  pojedyncz
zapytania  SQL.  Utworzenie
podzielić na następujące krok

1.

 

Utworzenie  definicji  procedury  składowanej
PROCEDURE. 

2.

 

Sprawdzanie  kodu  procedury  pod  względem  poprawności
poprawności syntaktycznej kodu procedury

3.

 

Zapamiętanie procedury w bazie danych
są  zapisywane  do  odpowiednich 
syscomments). 

4.

 

Wywołanie  procedury
parametrami poleceniem 

5.

 

Właściwe wykonanie procedury

6.

 

Buforowanie planu wykonania
w tzw. buforze procedur

Na  rys.  2  pokazano  schemat  tworzenia  i  wykonania  procedury  składowanej  w 
Server 2008. 

Rys. 2 Tworzenie i wykonanie procedury składowanej w SQL Server 2008

Rekompilacja procedur składowanych

Czasami  zachodzi  potrzeba  ponownej  kompilacji  procedury  składowanej.  Dzieje  się  tak,  gdy 
wydajność  skompilowanej  procedury  gwałtownie  spada  (może  tak  być  z  wielu  powodów,  np. 
zmiany  struktury  indeksów  lub  zapisania  dużej  ilości  rekordów),  gdy  istnieje  potr
procedury przy każdym jej wykonaniu (powody mogą być te same, co w pierwszej sytuacji) lub gdy 
zmianie ulega kod samej procedury (gdy użyjemy polecenia 

Rekompilacji, czyli ponownej kompilacji procedury, można dokonać na dw

 

dodając w definicji procedury klauzulę 

 

używając  specjalnej  systemowej  procedury  rekompilującej  (w 
procedura 

sp_recompile

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Procedury składowane i wyzwalacze

Strona 4/21 

Proces wykonywania procedury składowanej 

Wykonywanie  procedur  składowanych  odbywa  się  inaczej  niż  wykonywanie  pojedyncz

e  i  pierwsze  wykonanie  procedury  w  Microsoft

podzielić na następujące kroki: 

Utworzenie  definicji  procedury  składowanej  –  wykonywane  jest

Sprawdzanie  kodu  procedury  pod  względem  poprawności  –  dokonywana  jest  kontrola 
poprawności syntaktycznej kodu procedury. 
Zapamiętanie procedury w bazie danych – nazwa procedury i jej kod

do  odpowiednich  widoków  systemowych  bazy  danych  (

łanie  procedury  –  procedura  składowana  jest  wywoływana

parametrami poleceniem 

EXEC. 

Właściwe wykonanie procedury – optymalizacja planu wykonania i kompilacja.
Buforowanie planu wykonania – skompilowany optymalny plan wykonania jest zapisywan

buforze procedur, skąd jest wczytywany przy następnym wywołaniu procedury.

pokazano  schemat  tworzenia  i  wykonania  procedury  składowanej  w 

Tworzenie i wykonanie procedury składowanej w SQL Server 2008

Rekompilacja procedur składowanych 

Czasami  zachodzi  potrzeba  ponownej  kompilacji  procedury  składowanej.  Dzieje  się  tak,  gdy 
wydajność  skompilowanej  procedury  gwałtownie  spada  (może  tak  być  z  wielu  powodów,  np. 
zmiany  struktury  indeksów  lub  zapisania  dużej  ilości  rekordów),  gdy  istnieje  potr
procedury przy każdym jej wykonaniu (powody mogą być te same, co w pierwszej sytuacji) lub gdy 
zmianie ulega kod samej procedury (gdy użyjemy polecenia 

ALTER PROCEDURE

Rekompilacji, czyli ponownej kompilacji procedury, można dokonać na dwa sposoby: 

definicji procedury klauzulę 

WITH RECOMPILE. 

żywając  specjalnej  systemowej  procedury  rekompilującej  (w  Microsoft 

sp_recompile). 

Moduł 9 

Procedury składowane i wyzwalacze 

Wykonywanie  procedur  składowanych  odbywa  się  inaczej  niż  wykonywanie  pojedynczego 

icrosoft  SQL  Server  można 

ywane  jest  polecenie 

CREATE 

dokonywana  jest  kontrola 

procedury i jej kod (tzw. ciało procedury

systemowych  bazy  danych  (

sysobjects  oraz 

a  jest  wywoływana  z  odpowiednimi 

optymalizacja planu wykonania i kompilacja. 

kompilowany optymalny plan wykonania jest zapisywany 

przy następnym wywołaniu procedury. 

pokazano  schemat  tworzenia  i  wykonania  procedury  składowanej  w  środowisku  SQL 

 

Tworzenie i wykonanie procedury składowanej w SQL Server 2008 

Czasami  zachodzi  potrzeba  ponownej  kompilacji  procedury  składowanej.  Dzieje  się  tak,  gdy 
wydajność  skompilowanej  procedury  gwałtownie  spada  (może  tak  być  z  wielu  powodów,  np. 
zmiany  struktury  indeksów  lub  zapisania  dużej  ilości  rekordów),  gdy  istnieje  potrzeba  kompilacji 
procedury przy każdym jej wykonaniu (powody mogą być te same, co w pierwszej sytuacji) lub gdy 

ALTER PROCEDURE). 

a sposoby:  

Microsoft  SQL  Server  jest  to 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 9 

ITA-101 Bazy danych 

 

Procedury składowane i wyzwalacze 

Strona 5/21 

Tworzenie procedur składowanych 

Do tworzenia procedur składowanych używamy polecenia języka SQL 

CREATE PROCEDURE (lub w 

skrócie 

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 składowanej określamy:  

 

nazwę procedury 

 

nazwy 

 

typy danych 

 

kierunek działania parametrów procedury 

 

ciało procedury (kod wykonywany przez procedurę) 

Opcjonalnie  możemy  również  zadeklarować,  czy  procedura  ma  być  przy  każdym  wykonaniu 
rekompilowana. 

Poniżej  podano  przykład  utworzenia  prostej  procedury  składowanej  nie  zawierającej  żadnych 
parametrów: 

CREATE PROCEDURE p_pracownicy 
AS 
SELECT imie, nazwisko 
FROM Osoby 

Wywołanie procedury składowanej 

Do wywołania procedury składowanej służy polecenie 

EXECUTE (lub w skrócie EXEC): 

[ { EXEC | EXECUTE } ] 
 

    [ @return_status = ] 
 

    { module_name [ ;numer ] | @module_name_var } 
 

      [ [ @parametr = ] { wartość 
 

        | @zmienna [ OUTPUT ] 
 

        | [ DEFAULT ] 
 

        } 
 

      ] 
 

    [,…n] 
 

    [ WITH RECOMPILE ]  

Przykładowo dla utworzonej wcześniej procedury składowanej 

p_pracownicy wywołanie będzie 

wyglądało w następujący sposób: 

EXEC p_pracownicy 
GO 

Parametry procedur składowanych 

Procedury  składowane  mogą  przyjmować  parametry  wywołania.  Ilość  i  typ  danych,  które  należy 
podać przy wywołaniu procedury składowanej, określamy w trakcie tworzenia procedury (używając 
polecenia 

CREATE  PROCEDURE).  W  zależności  od  tego,  czy  parametry  będą  potrzebne  do 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 9 

ITA-101 Bazy danych 

 

Procedury składowane i wyzwalacze 

Strona 6/21 

wykonania  procedury,  czy też  mają  być  one  przez  procedurę  zwrócone, wyróżniamy  dwa  rodzaje 
parametrów: wejściowe (

INPUT) oraz wyjściowe (OUTPUT). 

Możliwe  jest  też  zdefiniowanie  w  procedurze  parametru  przejściowego  (będącego  jednocześnie 
wejściowym  i  wyjściowym),  czyli  parametru,  którego  wartość  podajemy  przy  wywołaniu,  a  która 
może zostać zmieniona podczas działania procedury. 

CREATE PROCEDURE p_pracownicy  
@nazwisko varchar(40)='Smith' 
AS 
SELECT imie, nazwisko 
FROM Osoby 
WHERE nazwisko=@nazwisko 
GO 

Zalety i wady procedur składowanych 

Procedury  składowane  dzięki  temu,  że  są  zapisane  na  serwerze  oraz  dzięki  skompilowanemu 
planowi wykonania przechowywanemu w buforze procedur posiadają dwie zasadnicze zalety: 

 

zwiększają wydajność bazy danych 

 

ograniczają ruch w sieci (przesyłane są tylko nazwy procedur i wartości parametrów) 

Ponadto  procedury  składowane  mają  kilka  zalet  z  punktu  widzenia  programistów  aplikacji 
bazodanowych: 

 

Zapewniają jedną logikę biznesową dla wszystkich aplikacji klienckich. 

 

Przesłaniają  szczegóły  tabel  w  bazie  danych  (przezroczystość  struktury  dla  zwykłego 
użytkownika aplikacji). 

 

Umożliwiają modyfikację danych bez bezpośredniego dostępu do tabel bazy danych. 

 

Dostarczają  mechanizmów  bezpieczeństwa  (można  nadawać  uprawnienia  do  wykonywania 
procedur poszczególnym użytkownikom bazy danych). 

 

Umożliwiają  programowania  modularne  (procedura  zostaje  zapisana  w  bazie  danych,  skąd 
można ją wielokrotnie wywoływać; procedurę może pisać osoba wyspecjalizowana w bazach 
danych – programista aplikacji jedynie ją wywoła). 

 

Zapewniają  szybsze  wykonanie  (jeśli  wymagane  jest  wykonanie  dużej  liczby  zapytań, 
procedury składowane są szybsze, ponieważ wykonują się na serwerze, są optymalizowane i 
umieszczane w pamięci przy pierwszym wykonaniu). 

 

Zmniejszają ruch sieciowy (jeśli zachodzi potrzeba wykonania wielu zapytań w T-SQL na raz, 
można je zastąpić wywołaniem jednej procedury składowanej). 

Jeśli w ogóle można mówić o wadach procedur składowanych, to w zasadzie można wspomnieć o 
kilku aspektach: 

 

Następstwem  rekompilacji  czasem  jest  zmniejszenie  wydajności  procedury  (czyli 
administrator baz danych musi wiedzieć, kiedy przeprowadzić rekompilację). 

 

W  przypadku  zagnieżdżania  procedur  składowanych  należy  pamiętać  o  tym,  że  zmienia  się 
kontekst  wykonania  (procedura  zagnieżdżana  wykonuje  się  z  uprawnieniami  innej 
procedury). 

 

Wreszcie,  aby  tworzyć  dobre  (tzn.  poprawnie  działające)  procedury  składowane  niezbędne 
jest  poznanie  zaawansowanych  mechanizmów  języka  programowania  baz  danych  (np.  T-
SQL), takich jak zmienne, funkcje i procedury systemowe czy obsługa błędów. 

Wyzwalacze 

Wyzwalacz (ang. trigger) jest specjalnym rodzajem procedury składowanej. W przeciwieństwie do 
zwykłej procedury składowanej wyzwalacz nie może zostać jawnie wywołany. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 9 

ITA-101 Bazy danych 

 

Procedury składowane i wyzwalacze 

Strona 7/21 

Wyzwalacz jest wywoływany w reakcji na określone akcje. Akcje te to wykonanie przez użytkownika 
określonego polecenia SQL (

INSERT, UPDATE, DELETE) na danej tabeli, dla której został określony 

wyzwalacz. 

Tworzenie wyzwalaczy 

Wyzwalacze tworzymy używając polecenia 

CREATE TRIGGER. W definicji wyzwalacza określamy:  

 

nazwę wyzwalacza 

 

dla jakiej tabeli tworzymy wyzwalacz 

 

na jakie akcje wyzwalacz będzie reagował 

 

jakiego typu wyzwalacz tworzymy 

 

ciało wyzwalacza (odpowiednik ciała procedury składowanej) – czyli kod wykonywany przez 
wyzwalacz 

W SQL Server 2008 istnieją trzy rodzaje wyzwalaczy: 

1.

 

Wyzwalacze  obsługujące  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  obsługujące  operacje  DDL  (ang.  Data  Definition  Language),  czyli 

CREATE, 

ALTER, DROP oraz pewne procedury składowane, które 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  obsługujące  zdarzenie  logowania  (

LOGON),  które  jest  wywoływane,  kiedy 

ustalana jest sesja logującego się użytkownika. 

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 ] 
 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 9 

ITA-101 Bazy danych 

 

Procedury składowane i wyzwalacze 

Strona 8/21 

Zastosowanie wyzwalaczy 

Wyzwalacze znajdują wiele zastosowań w bazach danych. Przede wszystkim stosujemy wyzwalacze 
wszędzie  tam,  gdzie  w  inny  sposób  nie  da  się  weryfikować  integralności  danych,  a  zwłaszcza  ich 
zgodności  z  regułami  logiki  biznesowej.  Na  przykład  chcemy,  by  w  pewnej  kolumnie  tabeli 
wstawiane były tylko wartości unikalne, ale jednocześnie zezwalamy na wstawienie wartości 

NULL. 

Jedynym rozwiązaniem jest użycie wyzwalacza, który sprawdzi, czy wstawiana właśnie wartość już 
w  danym  polu  wystąpiła,  a  jeżeli  użytkownik  wstawia  wartość 

NULL,  to  wyzwalacz  mu  na  to 

pozwoli  (tego  efektu  nie  można  osiągnąć  innymi  metodami,  np.  używając  indeksów,  ustawiając 
właściwość  unikalności  kolumny  lub  używając  kryteriów  sprawdzających  dane  wstawiane  w 
kolumnę). 

Drugie  zastosowanie  to  wszelkiego  typu  automatyzacja  zadań  administracyjnych  w  bazie  danych 
(wszelkiego  rodzaju  „przypominacze”,  obsługa  nietypowych  działań  czy  chociażby  wysyłanie 
wiadomości przez email lub pager). 

Wreszcie  z  uwagi  na  pewne  cechy  wyzwalacze  pozwalają  na  określony  typ  przetwarzania 
transakcyjnego. 

Przykładowe rozwiązanie 

Tworzenie i uruchomienie procedury składowanej 

W cel utworzenia nowej procedury składowanej należy z paska narzędziowego wybrać New Query i 
wpisać kod procedury. Przykładowo: 

CREATE PROCEDURE dbo.getAllCustomers 
AS 
BEGIN 
 

  SELECT [CustomerID], [CompanyName] 
 

  FROM [Northwind].[dbo].[Customers] 
END 

Następnie należy wykonać skrypt wciskając F5 lub wybierając z paska narzędziowego Execute. Jeśli 
procedura  składowana  została  utworzona  poprawnie,  powinieneś  otrzymać  komunikat 
„Command(s)  completed  successfully”  oraz  zauważyć,  że  została  dodana  nowa  procedura 
składowana w obszarze Object Explorer, w gałęzi Databases -> Northwind -> Programmability -> 
StoredProcedures, co pokazano na rys. 3. 

Jeśli procedury nie widać w wyżej wymienionej gałęzi, należy ją odświeżyć. Jeśli procedura jest już 
utworzona,  a  mimo  to  zażądano  kolejnego  jej  utworzenia,  to  otrzymamy  następujący  komunikat: 
„There is already an object named ‘getAllCustomers’ in the databases”. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 9 

ITA-101 Bazy danych 

 

Procedury składowane i wyzwalacze 

Strona 9/21 

 

Rys. 3 Tworzenie nowej procedury 

Aby  uruchomić  procedurę  składowaną,  wystarczy  użyć  polecenia 

EXECUTE  (lub  krócej  EXEC). 

Można także kliknąć prawym klawiszem myszki procedurę i wybrać Execute Stored Procedure, co 
wywoła  okienko,  w  którym  można  przekazać  do  procedury  jakieś  parametry.  Na  rys.  4  widać,  że 
rozwijane menu udostępnia także inne opcje, takie jak modyfikacja lub usunięcie. 

 

Rys. 4 Wywołanie procedury 

Inne metody tworzenia procedur składowanych 

Inną metoda tworzenia procedury składowanej jest skorzystanie z gotowego schematu procedury. 
W  tym  celu  kliknij  prawym  przyciskiem  myszy  na  gałęzi  Stored  Procedures  i  wybierz  New 
StoredProcedure
  –  uzyskasz  w  ten  sposób  gotowy  schemat  procedury  składowanej,  co  pokazano 
na rys. 5. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 9 

ITA-101 Bazy danych 

 

Procedury składowane i wyzwalacze 

Strona 10/21 

 

Rys. 5 Tworzenie nowej procedury według wzorca 

Procedury składowane a polisy 

W SQL Server 2008 wprowadzono politykę opartą o Management Framework dla silnika SQL, dzięki 
której  zarządzanie  serwerem  będzie  bardziej  zautomatyzowane  w  oparciu  o  pewne  reguły,  a  nie 
skrypty.  

Zadaniem  DMF  (z  ang.  Declarative  Management  Framework)  jest  umożliwienie  administratorowi 
zarządzania  serwerami  za  pomocą  definiowanych  przez  administratora  reguł.  W  SQL  Server  2008 
mamy  gotowe  szablony  reguł  oparte  o  najlepsze  praktyki  zaimplementowane  w  narzędziu  Best 
Practices Analyzer, używanym przez administratorów z poprzednimi wersjami systemu SQL Server.  

Korzystając z mechanizmu polis możemy stworzyć restrykcje dla procedur składowanych o postaci: 
brak możliwości definiowania przez programistę bazy danych procedur składowanych z prefiksem 
„sp_”. Restrykcję tę wprowadzimy na bazie danych 

Biblioteka. 

W ramach Object Explorer rozwijamy zakładkę Management a następnie Policy Menagement. W 
pierwszym kroku należy dodać warunki, jakie będą dołączone do polisy.  

Jako  pierwszy  stwórzmy  warunek,  który  będzie  pilnował,  żeby  nazwa  procedury  składowanej  nie 
posiadała prefiksu „sp_”. Konfigurację tego warunku pokazano na rys. 6. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 9 

ITA-101 Bazy danych 

 

Procedury składowane i wyzwalacze 

Strona 11/21 

 

Rys. 6 Stworzenie warunku na procedurę składowaną 

Następnie  należy  stworzyć  warunek  dotyczący  bazy  danych,  na  której  polisa,  którą  za  chwilę 
założymy, będzie działała. Zostało to zilustrowane na rys. 7. 

 

Rys. 7 Stworzenie warunku na bazę danych 

W  kolejnym  kroku  należy  wystawić  polisę  i  dodać  do  niej  wcześniej  stworzone  warunki. 
Konfiguracje wystawiania polisy pokazano na rys. 8. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 9 

ITA-101 Bazy danych 

 

Procedury składowane i wyzwalacze 

Strona 12/21 

 

Rys. 8 Założenie polisy 

Kiedy  mamy  już  wystawiona  polisę  i  chcemy  ją  przetestować,  powinniśmy  kliknąć  prawym 
przyciskiem myszy bazę danych 

Biblioteka i wybrać New Query. Następnie w edytorze możemy 

wpisać następujący kod, służący do utworzenia pustej procedury składowanej: 

CREATE PROCEDURE sp_testowa 
AS 
GO 

Zauważmy, ze wystąpił błąd. Procedura nie została utworzona, gdyż zadziałała restrykcja DMF, co 
pokazano na rys. 9. 

 

Rys. 9 Błąd procedury i zadziałanie polisy 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 9 

ITA-101 Bazy danych 

 

Procedury składowane i wyzwalacze 

Strona 13/21 

Tworzenie wyzwalacza 

Stwórzmy wyzwalacz, którego zadaniem będzie nie dopuścić do zalogowania wskazanego przez nas 
użytkownika.  W  tym  celu  na  początku  dodajemy  użytkownika 

zbd_user  i  kojarzymy  go  z  bazą 

danych 

AdventureWorks.  Następnie  tworzymy  odpowiedni  wyzwalacz,  który  nie  pozwoli 

użytkownikowi  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 następujący 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ć  działanie  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. Następnie klikamy 
Connect. W efekcie powinien pokazać się błąd logowania jak na rys. 10. 

 

Rys. 10 Bład logowania 

Porady praktyczne 

Procedury składowane 

 

W  Microsoft  SQL  Server  przy  kontroli  poprawności  kodu  procedury  w  trakcie  jej  tworzenia 
serwer  nie  sprawdza,  czy  istnieją  obiekty  (tabele,  widoki),  do  których  procedura  się 
odwołuje.  Sprawdzenie  to  następuje  dopiero  przy  wykonaniu  procedury  (w  przypadku 
odwołania do nieistniejącego obiektu procedura zgłosi błąd). 

 

Rekompilacja  procedury  składowanej  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  składowane  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 składowane użytkownika w 
SQL  Server  2008  nie  powinny  zaczynać  się  od  prefiksu  „sp_”.  Prefiksem  tym  obarczone  są 
systemowe  procedury  składowane.  W  sytuacji  kiedy  kompilator  zobaczy  procedurę 
składowaną o takiej nazwie, będzie jej szukał w procedurach systemowych jako tych, które 
już  są  skompilowane,  a  ich  plan  wykonania  jest  zapamiętany  w  buforze  procedur.  Dopiero 
kiedy jej tam nie znajdzie zacznie ją kompilować według poznanego schematu. Spowoduje to 
wydłużenie czasu wykonania procedury składowanej. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 9 

ITA-101 Bazy danych 

 

Procedury składowane i wyzwalacze 

Strona 14/21 

 

Stworzenie  polisy,  która  nie  pozwoli  programiście  utworzyć  procedury  składowanej 
zaczynającej  się  od  prefiksu  „sp_”  spowoduje,  że  pierwsza  próba  stworzenia  procedury  o 
takiej nazwie pociągnie za sobą konieczność uruchomienia sprawdzenia polisy, a zatem czas 
wykonania  polecenia  nieznacznie  się  wydłuży.  Kolejna  próba  stworzenia  procedury 
niezgodnej  z  polisą  spowoduje  natychmiastowe  wyświetlenie  komunikatu  o  naruszeniu 
restrykcji. 

 

Z  punktu  widzenia  bezpieczeństwa  fizycznej  struktury  bazy  danych  procedury  składowane 
stanowią dodatkowy poziom izolacji pomiędzy warstwą aplikacji dostępowej do bazy danych 
a warstwą fizyczna bazy danych. 

 

Poprzez 

zastosowanie 

procedur 

składowanych 

możemy 

uniknąć 

jednego 

najpopularniejszych  ataków  na  bazę  danych,  tzw. Wstrzykiwania  kodu  SQL  z  racji  tego  iż  w 
sieci pomiędzy bazą danych a aplikacją dostępową nie jest przesyłany kod SQL tylko nazwa 
procedury składowanej wraz z jej parametrami. 

Wyzwalacze 

 

Wyzwalacze  mogą  być  tworzone  bezpośrednio  w  Microsoft  SQL  Server  2008  Database 
Engine  za  pomocą  zwykłych  zapytań  napisanych  w  języku  T-SQL  lub  poprzez  specjalne 
metody  w  Microsoft  .NET  Framework  Common  Language  Runtime  (CLR),  które  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. 

 

Następujące  instrukcje  języka  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 powyższe instrukcje nie mogą 
być użyte wewnątrz ciała wyzwalacza DML. 

Uwagi dla studenta 

Jesteś przygotowany do realizacji laboratorium jeśli: 

 

rozumiesz, co to jest procedura składowana oraz wyzwalacz 

 

rozumiesz zasadę działania procedur składowanych i wyzwalaczy 

 

znasz składnię zaawansowanego języka Transact-SQL 

 

umiesz dodawać użytkowników do SQL Server 

 

rozumiesz różnicę pomiędzy różnymi rodzajami wyzwalaczy 

Pamiętaj  o  zapoznaniu  się  z  uwagami  i  poradami  zawartymi  w  tym  module.  Upewnij  się,  że 
rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego 
w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. 

Dodatkowe źródła informacji 

1.

 

Deren  Bieniek,  Randy  Dyess,  Mike  Hotek,  Javier  Loria,  Adam  Machanic,  Antonio  Soto,  Adolfo 
Wiernik, SQL Server 2005 Implementacja i obsługa, APN Promise, 2006 

W  książce  obszernie  przedstawiono  zagadnienia  związane  z  programowaniem  baz 
danych.  Szczegółowo  omówiono  zagadnienia  dotyczące  procedur  składowanych  i 
wyzwalaczy. Omówiono w niej implementacje procedur  składowanych oraz w jaki 
sposób  przyznawać  do  nich  uprawnienia.  Pokazano  implementacje  wyzwalaczy 
(DML  i  DDL).  Książka  szczególnie  polecana  ze  względu  na  dużą  zawartość  ćwiczeń 
laboratoryjnych. 

2.

 

Kalen Delaney, Podstawy baz danych krok po kroku, APN Promise, 2006 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 9 

ITA-101 Bazy danych 

 

Procedury składowane i wyzwalacze 

Strona 15/21 

Bardzo  dobra  książka  dla  osób  początkujących.  Pokazano  w  niej  praktyczne 
zastosowanie  wyzwalaczy  i  procedur  składowanych.  Książka  oprócz  teorii  zawiera 
wiele przykładów. 

3.

 

Dusan Petkovic,  Microsoft SQL Server 2008: A Beginner's Guide, McGraw-Hill, 2008  

Pozycja napisana w sposób prosty. Wprowadza w SQL Server 2008 w sposób szybki 
i łatwy. Osoba początkująca w SQL Server 2008 znajdzie w niej podstawy z każdego 
tematu  dotyczącego  serwera  bazodanowego.  W  prosty  sposób  dowiesz  się,  jak 
tworzyć  proste  procedury  składowane  bez  parametrów  i  z  parametrami  oraz  jak 
posługiwać się wyzwalaczami. Pozycja polecana zarówno dla osób początkujących, 
jak i zaawansowanych.  

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

Laboratorium podstawowe

Problem 1 (czas realizacji 10

Jesteś  programistą  bazodanowym  w
swojego  szefa,  że  firma  planuje  rozszerz
którym zarządzała jak dotąd na Twoim wydziale
już istniejących  procedur składowanych. 

Zadanie 

Tok postępowania

1.

 

Nawiąż 

połączenie z SQL 
Server 2008 

 

Uruchom maszynę wirtualną 


 

Kliknij 
SQL Server Management Studio

 

W oknie logowania kliknij 

2.

 

Uzyskaj 

informacje o bazie 
danych 

 

Z menu głównego 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, który wywołuje procedurę systemową 

--

EXEC sp_helpindex dbo.Prace

 

Wciśnij 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Procedury składowane i wyzwalacze

Strona 16/21 

Laboratorium podstawowe 

Problem 1 (czas realizacji 10 min) 

programistą  bazodanowym  w  firmie  National  Insurance.  Właśnie  dowiedziałeś  się  od 

że  firma  planuje  rozszerzenie  na  skalę  uczelnianą  systemu 

zarządzała jak dotąd na Twoim wydziale. Pierwsze zadanie, jakie przed Tob

procedur składowanych.  

Tok postępowania 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd

Jeśli nie masz zdefiniowanej maszyny wirtualnej w 
dodaj  nową  maszynę  używając  wirtualnego  dysku  twardego  z  pliku 
D:\VirtualPC\Dydaktyka\BD2008.vhd

Kliknij  Start.  Z  grupy  programów  Microsoft  SQL  Server  2008
SQL Server Management Studio

W oknie logowania kliknij Connect. 

Z menu głównego wybierz File -> Open -> File
Odszukaj plik C:\Labs\Lab09\ProcedurySystemowe
Zaznacz  i  uruchom  (F5)  poniższy  fragment  kodu,  który  wywołuje 
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ę plików i informacje o nich). 

Zaznacz  i  uruchom  (F5)  poniższy  fragment  kodu,  który  wywołuje 
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, który wywołuje procedurę systemową 

-- (4) Wywolanie procedury systemowej sp_helpindex

EXEC sp_helpindex dbo.Prace 

Wciśnij F5, aby uruchomić zaznaczony fragment kodu.

Procedura  sp_helpindex  zwraca  listę  i  opis  indeksów  założonych  na 
kolumnach w wybranej tabeli. 
Czy w tabeli dbo.Prace jest nałożony jakiś indeks?

Moduł 9 

Procedury składowane i wyzwalacze 

firmie  National  Insurance.  Właśnie  dowiedziałeś  się  od 

systemu  prac  dyplomowych, 

jakie przed Tobą stoi to analiza 

 

Jeśli nie masz zdefiniowanej maszyny wirtualnej w Mirosoft Virtual PC, 
dodaj  nową  maszynę  używając  wirtualnego  dysku  twardego  z  pliku 

Microsoft  SQL  Server  2008  uruchom 

ProcedurySystemowe.sql i kliknij Open

poniższy  fragment  kodu,  który  wywołuje 

(1) Ustawiamy sie na baze danych PraceDyplomowe 

(2) Wywolanie procedury systemowej sp_helpdb 

zwraca  informacje  o  wybranej  bazie  danych 

poniższy  fragment  kodu,  który  wywołuje 

(3) Wywolanie procedury systemowej sp_help 

zwraca  informacje  o  wybranym  obiekcie  bazy 

jest jakakolwiek kolumna typu bit?   

Zaznacz kod, który wywołuje procedurę systemową sp_helpindex

(4) Wywolanie procedury systemowej sp_helpindex 

, aby uruchomić zaznaczony fragment kodu. 

zwraca  listę  i  opis  indeksów  założonych  na 

jest nałożony jakiś indeks? 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

Problem 2 (czas realizacji 

Po  dokonaniu  analizy  procedur  już  istniejących
postawione, to zdefiniowanie 
już istniejących procedur składowanych.
składowanymi bez parametrów. 

Zadanie 

Tok postępowania

1.

 

Nawiąż 

połączenie z SQL 
Server 2008 

 

Uruchom maszynę wirtualną 


 

Kliknij 
SQL Server Management Studio

 

W oknie logowania kliknij 

2.

 

Utwórz 

procedurę 
składowaną 

 

 

Odszukaj  plik 
Open

 

Zaznacz kod, który wywołuje procedurę składowaną 

--

USE PraceDyplomowe 
GO

--

CREATE PROCEDURE Promotorzy
AS
BEGIN
SELECT [Nazwisko], [Imie]
FROM Promotor
END

 

Wciśnij 

3.

 

Uruchom 

procedurę 
składowaną 

 

Zaznacz kod, który wywołuje procedurę 

--
EXEC Promotorzy
GO

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Procedury składowane i wyzwalacze

Strona 17/21 

Problem 2 (czas realizacji 10 min) 

Po  dokonaniu  analizy  procedur  już  istniejących,  kolejne  zadanie,  jakie 

to zdefiniowanie procedur składowanych dla nowych użytkowników oraz modyfikacja 

już istniejących procedur składowanych. W pierwszej kolejności powinieneś zająć się procedurami 
składowanymi bez parametrów.  

Tok postępowania 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 
D:\VirtualPC\Dydaktyka\BD2008.vhd

Kliknij  Start.  Z  grupy  programów  Microsoft  SQL  Server  2008
SQL Server Management Studio

W oknie logowania kliknij Connect. 

 menu głównego wybierz File -> Open -> File

Odszukaj  plik  C:\Labs\Lab10\Procedura_bez_parametrow.sql
Open

Zaznacz kod, który wywołuje procedurę składowaną 

-- (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  składowanej  jest  kliknięcie 
prawym przyciskiem myszy gałęzi Stored Procedures
StoredProcedure
 – uzyskasz w ten sposób gotowy schemat procedury 
składowanej. 

Wciśnij F5, aby uruchomić zaznaczony fragment kodu.

Jeśli procedura składowana została utworzona poprawnie, powinieneś 
otrzymać  komunikat  „Command(s)  completed  successfully
zauważyć,  że  została  dodana  nowa  procedura  składowana  w 
Explorer, w gałęzi Databases -> PraceDyplomowe
-> StoredProcedures. Jeśli procedury nie widać w w/w gałęzi, odśwież 
ją. Jeśli procedura jest już utworzona, a mimo to zażądano kolejnego 
jej  utworzenia,  to  powinieneś  otrzymać  komunikat  „There  is  already 
object name ‘Promotorzy’ in the database”. 

Zaznacz kod, który wywołuje procedurę Promotorzy

-- (3) Wywolujemy procedure skladowana Promotorzy
EXEC Promotorzy 
GO 

Innym sposobem na wywołanie procedury składowanej jest kliknięcie

Moduł 9 

Procedury składowane i wyzwalacze 

jakie  zostało  przed  Tobą 

nowych użytkowników oraz modyfikacja 

W pierwszej kolejności powinieneś zająć się procedurami 

 

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w  Microsoft  Virtual 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 

Microsoft  SQL  Server  2008  uruchom 

_bez_parametrow.sql  i  kliknij 

Zaznacz kod, który wywołuje procedurę składowaną Promotorzy

raceDyplomowe 

(2) Tworzymy procedure skladowana uzytkownika 

Innym  sposobem  stworzenia  procedury  składowanej  jest  kliknięcie 

ed Procedures i wybranie New 

uzyskasz w ten sposób gotowy schemat procedury 

, aby uruchomić zaznaczony fragment kodu. 

Jeśli procedura składowana została utworzona poprawnie, powinieneś 

completed  successfully”  oraz 

zauważyć,  że  została  dodana  nowa  procedura  składowana  w  Object 

PraceDyplomowe -> Programmability 

Jeśli procedury nie widać w w/w gałęzi, odśwież 

utworzona, a mimo to zażądano kolejnego 

komunikat  „There  is  already 

Promotorzy

procedure skladowana Promotorzy 

Innym sposobem na wywołanie procedury składowanej jest kliknięcie 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

 

Wciśnij 

Problem 3 (czas realizacji 

Kolejne  zadanie, jakie  powinieneś  wykonać
użytkowników oraz modyfikacja 

Zadanie 

Tok postępowania

1.

 

Nawiąż 

połączenie z SQL 
Server 2008 

 

Uruchom maszynę wirtualną 


 

Kliknij 
SQL Server Management Studio

 

W oknie logowania kliknij 

2.

 

Utwórz 

procedurę 
składowaną 

 

 

Odszukaj  plik  C
Open

 

Zaznacz kod, który wywołuje procedurę składowaną 

--

USE 
GO

--

CREATE PROCEDURE dbo.
@Nazwisko
AS
BEGIN
SELECT *
FROM [
WHERE [
END

 

Wciś

3.

 

Uruchom 

procedurę 
składowaną 

 

Zaznacz  kod,  który  wywołuje  procedurę 
uruchomić zaznaczony fragment kodu

--

EXEC Promotorzy 

GO

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Procedury składowane i wyzwalacze

Strona 18/21 

prawym  przyciskiem  myszy  na  procedurze  Promotorzy
Execute  Stored  Procedure
,  co  wywoła  okienko,  w  którym  można 
przekazać do procedury jakieś parametry, jak na 

Rys. 11 Wywołanie procedury składowanej z parametrem

Wciśnij F5, aby uruchomić zaznaczony fragment kodu.

Problem 3 (czas realizacji 15 min) 

jakie  powinieneś  wykonać, to  zdefiniowanie  procedur  składowanych  dla 

użytkowników oraz modyfikacja już istniejących procedur składowanych z parametrami

Tok postępowania 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 
D:\VirtualPC\Dydaktyka\BD2008.vhd

Kliknij  Start.  Z  grupy  programów  Microsoft  SQL  Server  2008
SQL Server Management Studio

W oknie logowania kliknij Connect

 menu głównego wybierz File -> Open -> File

Odszukaj  plik  C:\Labs\Lab10\Procedura_z_parametr
Open

Zaznacz kod, który wywołuje procedurę składowaną 

-- (1) Ustawiamy sie na baze danych PraceDyplomowe

USE PraceDyplomowe 
GO 

-- (2) Tworzymy procedure skladowana użytkownika z parametrem

REATE PROCEDURE dbo.Promotorzy 
Nazwisko VARCHAR(30) 

AS 
BEGIN 
SELECT * 
FROM [PraceDyplomowe].[dbo].[Osoba] 
WHERE [PraceDyplomowe].[dbo].[Osoba].[nazwisko
END 

Wciśnij F5, aby uruchomić zaznaczony fragment kodu.

Zaznacz  kod,  który  wywołuje  procedurę  Promotorzy
uruchomić zaznaczony fragment kodu: 

-- (3) Wywolujemy procedure skladowana z parametrem

EXEC Promotorzy @Nazwisko='Kowalski' 

GO 

Moduł 9 

Procedury składowane i wyzwalacze 

Promotorzy  i  wybranie 

co  wywoła  okienko,  w  którym  można 

, jak na rys. 11. 

 

Wywołanie procedury składowanej z parametrem 

fragment kodu. 

procedur  składowanych  dla  nowych 

już istniejących procedur składowanych z parametrami. 

 

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w  Microsoft  Virtual 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 

Microsoft  SQL  Server  2008  uruchom 

z_parametrami.sql  i  kliknij 

Zaznacz kod, który wywołuje procedurę składowaną Promotorzy

(1) Ustawiamy sie na baze danych PraceDyplomowe 

(2) Tworzymy procedure skladowana użytkownika z parametrem 

nazwisko] = @Nazwisko 

, aby uruchomić zaznaczony fragment kodu.  

Promotorzy.  Wciśnij  F5,  aby 

(3) Wywolujemy procedure skladowana z parametrem 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy danych 

Problem 4 (czas realizacji 

Po zdefiniowaniu procedur składowanych wynikających z
pracujesz,  kolejnym  etapem  jest  stworzenie odpowiedniej  liczby  wyzwalaczy. 
powinien  obsługiwać  następujący  warunek: 
dyplomantów. 

Zadanie 

Tok postępowania

1.

 

Nawiąż 

połączenie z SQL 
Server 2008 

 

Uruchom maszynę wirtualną 


 

Kliknij 
SQL Server Manageme

 

W oknie logowania kliknij 

2.

 

Utwórz 

wyzwalacz 

 

 

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 obrębie okna 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Procedury składowane i wyzwalacze

Strona 19/21 

Problem 4 (czas realizacji 10 min) 

Po zdefiniowaniu procedur składowanych wynikających ze zmian, jakie zachodzą w firmie

kolejnym  etapem  jest  stworzenie odpowiedniej  liczby  wyzwalaczy. 

en  obsługiwać  następujący  warunek:  każdy  opiekun  może  mieć  maksymalnie  10 

Tok postępowania 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 
D:\VirtualPC\Dydaktyka\BD2008.vhd

Kliknij  Start.  Z  grupy  programów  Microsoft  SQL  Server  2008
SQL Server Management Studio

W oknie logowania kliknij Connect. 

 menu głównego wybierz File -> Open -> File

Odszukaj plik C:\Labs\Lab10\Wyzwalacz_1.sql i kliknij 
Zaznacz i uruchom (F5) poniższy 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 zawartości tabe

 
W obrębie okna Object Explorer wybierz Osoba ->

Moduł 9 

Procedury składowane i wyzwalacze 

jakie zachodzą w firmie, w której 

kolejnym  etapem  jest  stworzenie odpowiedniej  liczby  wyzwalaczy.  Jeden  z  wyzwalaczy 

każdy  opiekun  może  mieć  maksymalnie  10 

 

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w  Microsoft  Virtual 
PC, dodaj nową maszynę używając 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 zawartości tabeli 

Triggers.  

background image

Włodzimierz Dąbrowski, Przemysław 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  działania 
zapytanie:

--

UPDATE O
 
 
GO

 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Procedury składowane i wyzwalacze

Strona 20/21 

Wciśnij prawy przycisk myszy i wybierz New Trigger
Zaznacz i uruchom (F5) poniższy 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  działania  wyzwalacza 
zapytanie: 

-- (5) Sprawdzamy dzialanie wyzwalacza 

UPDATE Osoba 
  SET  [Nazwisko] = 'Nowak' 
  WHERE ID_Osoby=1 
GO 

Jeśli  wyzwalacz  zadziałał  poprawnie,  w  oknie 
pojawić się komunikat o treści przedstawionej na

Rys. 13 Sprawdzanie efektu działania wyzwalacza

 

Moduł 9 

Procedury składowane i wyzwalacze 

New Trigger

 

PRINT  'Uzytkownik '+ @username + ' zmienil zawartosc tabeli 

  wywołaj  następujące 

zadziałał  poprawnie,  w  oknie  Messages  powinien 

ci przedstawionej na rys. 13. 

 

Sprawdzanie efektu działania wyzwalacza 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 9 

ITA-101 Bazy danych 

 

Procedury składowane i wyzwalacze 

Strona 21/21 

Laboratorium rozszerzone 

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od swojego szefa, że 
firma  zarządzająca  bazą 

AdventureWorks  planuje  rozszerzenie  i  modernizacje  systemu.  W 

związku  z  modernizacją  systemu  bazodanowego  oraz  w  celu  spełnienia  standardów 
bezpieczeństwa,  dostęp  do  obiektów  bazy  danych  powinien  odbywać  się  poprzez  procedury 
składowane.  W  wyniku  tego  część  procedur  składowanych  powinna  zostać  zmodyfikowana  i 
przekompilowana,  część  powinna  zostać  napisana  od  początku,  a  część  powinna  zostać  usunięta. 
Kolejnym pojawiającym się problemem jest kwestia spójności zmodyfikowanej bazy danych. W tym 
celu  powinny  zostać  zmodyfikowane,  utworzone  lub  usunięte  wyzwalacze  służące  do 
zaimplementowania pewnych warunków. 

Zadanie, jakie przed Tobą stoi, to: 

1.

 

Podjęcie decyzji, jakie nowe procedury składowane i wyzwalacze powinny zostać utworzone 
w celu poprawienia bezpieczeństwa bazy danych. 

2.

 

Podjęcie decyzji, które procedury składowane w bazie danych pozostaną bez zmian, a które 
zostaną zmodyfikowane lub usunięte. 

3.

 

Podjęcie  decyzji,  które  wyzwalacze  w  bazie  danych  pozostaną  bez  zmian,  a  które  zostaną 
zmodyfikowane lub usunięte. 

background image

 

 

ITA-101 Bazy Danych 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 10 

Wersja 2.0 

Bezpieczeństwo w bazach danych 

Spis treści 

Bezpieczeństwo w bazach danych ....................................................................................................... 1 

Informacje o module ............................................................................................................................ 2 

Przygotowanie teoretyczne ................................................................................................................. 3 

Przykładowy problem .................................................................................................................. 3 

Podstawy teoretyczne.................................................................................................................. 3 

Przykładowe rozwiązanie ............................................................................................................. 6 

Porady praktyczne ..................................................................................................................... 10 

Uwagi dla studenta .................................................................................................................... 10 

Dodatkowe źródła informacji..................................................................................................... 10 

Laboratorium podstawowe ................................................................................................................ 12 

Problem 1 (czas realizacji 45 min) .............................................................................................. 12 

Laboratorium rozszerzone ................................................................................................................. 17 

Zadanie 1 (czas realizacji 90 min) ............................................................................................... 17 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 10 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 2/17 

Informacje o module 

Opis modułu 

W tym module dowiesz się, jak należy rozumieć bezpieczeństwo baz danych 
oraz  jakie  są  poziomy  bezpieczeństwa.  Ponadto  dowiesz  się,  jakim 
zagrożeniom  należy  przeciwdziałać,  a  jakich  nie  da  się  uniknąć  oraz  jak 
należy planować implementację poszczególnych poziomów bezpieczeństwa 
w aplikacji bazodanowej. 

Cel modułu 

Celem  modułu  jest  przedstawienie  czytelnikowi  typowych  zagadnień 
związanych z zabezpieczeniami dostępu do danych w SQL Server 2008. 

Uzyskane kompetencje 

Po zrealizowaniu modułu będziesz: 

 

wiedział jakie mechanizmy uwierzytelniania wspiera SQL Server 2008 

 

potrafił dodać użytkownika i nadać mu odpowiednie prawa 

 

rozumiał czym są schematy zabezpieczeń 

Wymagania wstępne 

Przed przystąpieniem do pracy z tym modułem powinieneś: 

 

wiedzieć, jak używać oprogramowania Microsoft Virtual PC 

 

znać podstawy obsługi systemu Windows 2000 lub nowszego 

 

znać podstawy obsługi SQL Server Management Studio 

Mapa zależności modułu 

Zgodnie  z  mapą  zależności  przedstawioną  na  rys.  1,  istnieje  konieczność 
wykonania wcześniej modułu 3. 

 

 

Rys. 1 Mapa zależności modułu 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 10 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 3/17 

Przygotowanie teoretyczne 

Przykładowy problem 

Firma National Insurance wdrożyła Microsoft SQL Server 2008. Założono na nim kilka baz i hurtowni 
danych. Ze względu na pilne potrzeby firmy szybko też zasilono bazy z dostępnych źródeł danych. 
Dostęp do poszczególnych baz danych zrealizowany jest poprzez dedykowane aplikacje łączące się 
z  serwerem  Microsoft  SQL  Server  2008  na  prawach  administratora.  W  pierwszych  tygodniach  po 
wdrożeniu system dział sprawnie lecz później pojawiły się problemy z wydajnością i  dostępem do 
danych. Niektórzy menadżerowie zauważyli szereg niezgodności, informacje jakie wprowadzali nie 
zgadzały się z danymi w raportach uzyskanych z systemu. Po krótkim czasie okazało się, że osoby 
nieuprawnione mają dostęp do poufnych danych, nie ma także żadnej polityki bezpieczeństwa dla 
serwerów bazodanowych. 

Rozwiązanie  tego  problemu  złożono  na  barki  głównego  informatyka,  jako  osoby  kompetentnej  i 
odpowiedzialnej za rozwój systemu bazodanowego firmy. W pierwszymi krokami jakie podjął on po 
otrzymaniu zadania był dokładny przegląd stanu obecnego systemu i porównanie go z wytycznymi i 
najlepszymi praktykami z zakresu bezpieczeństwa bazodanowego. 

Podstawy teoretyczne 

Pojęcie bezpieczeństwa baz danych wiąże się nieodłącznie z bezpieczeństwem serwera baz danych. 
W  hierarchii  bezpieczeństwo  takiego  serwera  stoi  wyżej  niż  bezpieczeństwo  pojedynczej  bazy, 
ponieważ brak zabezpieczeń na tym poziomie pociąga za sobą brak zaufania do pojedynczych baz 
danych znajdujących się na serwerze. 

Bezpieczeństwo serwera baz danych to: 

 

zapewnienie stabilnego i w miarę możliwości bezawaryjnego działania serwera baz danych 

 

zapewnienie uprawnionym użytkownikom dostępu do odpowiednich baz danych 

 

ograniczenie dostępu do danych dla użytkowników nieuprawnionych 

 

zapewnienie  jak  najmniejszej  ingerencji  serwera  baz  danych  w  działanie  systemu 
operacyjnego komputera 

Bezpieczeństwo baz danych natomiast dotyczy następujących aspektów: 

 

umożliwienie  tylko  autoryzowanym  użytkownikom  wykonywania  odpowiednich  operacji  na 
bazie danych 

 

zapewnienie  bezpieczeństwa  fizycznego  bazy  danych  (odpowiednia  strategia  kopii 
zapasowych) 

Mówiąc  o  bezpieczeństwie  należy  rozróżniać  dwa  pojęcia:  uwierzytelnienie  oraz  autoryzacja
Pierwsze  pojęcie  oznacza  identyfikację  użytkownika  na  podstawie  jego  nazwy  i  hasła.  Z  kolei 
autoryzacja  jest  fazą  następującą  po  poprawnym  uwierzytelnieniu  i  polega  na  określeniu 
uprawnień przypadających uwierzytelnionemu użytkownikowi. 

Poziomy bezpieczeństwa 

W najogólniejszym ujęciu można wyodrębnić następujące poziomy bezpieczeństwa: 

 

bezpieczeństwo fizyczne danych 

 

bezpieczeństwo sieci 

 

bezpieczeństwo domeny 

 

bezpieczeństwo maszyny lokalnej 

 

bezpieczeństwo serwera baz danych 

 

bezpieczeństwo bazy danych 

 

bezpieczeństwo aplikacji bazodanowej 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 10 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 4/17 

Bezpieczeństwa  doskonałego  nie  można  w  praktyce  nigdy  zapewnić,  ale  można  podjąć  kroki,  by 
zapobiegać  skutkom  wszelkich  awarii,  katastrof  lub  niepożądanych  ingerencji  czynnika  ludzkiego. 
Aby  zadbać  o  globalne  bezpieczeństwo,  należy  zaplanować  strategię  na  każdym  z  wymienionych 
poziomów. 

Bezpieczeństwo fizyczne danych 

Poziom bezpieczeństwa fizycznego danych określa, czy w przypadku awarii sprzętu, katastrofy (jako 
katastrofę  rozumiemy  nie  tylko  czynniki  naturalne,  jak  np.  powodzie,  lecz  także  kradzieże  i  inne 
wpływy czynnika ludzkiego) lub fizycznego uszkodzenia plików danych jesteśmy w stanie odtworzyć 
dane  i  jak  długo  baza  danych  (lub  serwer  baz  danych)  będzie  niedostępny  dla  użytkowników.  Na 
tym  poziomie  należy  też  odpowiedzieć  na  pytanie,  czy  kopie  danych  są  bezpieczne  (m.in.  czy 
niepowołane osoby nie mają do nich dostępu).  

Bezpieczeństwo sieci 

Poziom  bezpieczeństwa  sieci  określa,  czy  dane  są  bezpiecznie  przesyłane  w  sieci.  Szczególnie 
dotyczy  to  ściśle  poufnych  danych,  tj.  numerów  kart  kredytowych  czy  danych  personalnych 
klientów firmy.  

Bezpieczeństwo domeny 

Poziom  bezpieczeństwa  domeny  określa,  czy  komputery  w  domenie  (w  szczególności  kontrolery 
domeny)  są odpowiednio zabezpieczone. W  dobie  integracji serwerów  baz  danych  (np. Microsoft 
SQL Server) z systemami operacyjnymi, w przypadku braku zabezpieczeń w systemie operacyjnym 
bezpieczeństwo serwera baz danych spada do minimum.  

Bezpieczeństwo serwera baz danych 

Poziom  bezpieczeństwa  serwera  baz  danych  określa,  czy  serwer  baz  danych  jest  odpowiednio 
zabezpieczony  przed  nieuprawnionymi  użytkownikami  (fizycznie  –  maszyna  –  oraz  wirtualnie  – 
odpowiednie mechanizmy uwierzytelniające).  

Bezpieczeństwo bazy danych 

Poziom bezpieczeństwa bazy danych określa, czy dostęp do bazy danych i ról w bazie danych jest 
odpowiednio skonfigurowany (na ogół jest to sprawa konfiguracji w systemie bazodanowym).  

Bezpieczeństwo aplikacji bazodanowej 

Poziom bezpieczeństwa aplikacji bazodanowej określa, czy kod aplikacji klienckiej współpracującej z 
bazą  danych  jest  napisany  w  sposób  bezpieczny  (czy  aplikacja  nie  umożliwia  zmniejszenia 
bezpieczeństwa na którymkolwiek z pozostałych poziomów). Szczególnie należy tu zwrócić uwagę 
na dane wprowadzane przez użytkowników. 

Implementacja różnych poziomów bezpieczeństwa 

Każdy  z  poziomów  bezpieczeństwa  wymaga  podjęcia  określonych  kroków  przez  administratorów 
systemów i baz danych. 

Implementacja bezpieczeństwa fizycznego 

Zadaniem  administratora  baz  danych  jest  zapewnienie  tolerancji  błędów  dysków  fizycznych  dla 
systemu i dla danych oraz zaplanowanie strategii sporządzania i przechowywania kopii zapasowych. 

Tolerancję błędów dysków fizycznych można osiągnąć używając woluminów RAID (ang. Redundant 
Array of Independent Disks
) typu RAID-1 lub RAID-5. 

Implementacja  RAID-1  polega  na  jednoczesnym  przechowywaniu  danych  na  dwóch  fizycznych 
dyskach stanowiący jeden dysk logiczny (dwie kopie danych – w przypadku awarii jednego dysku, 
drugi nadal umożliwia dostęp do danych). Oznacza to, że 50% pojemności woluminu typu RAID-1 

background image

Włodzimierz Dąbrowski, Przemysław 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  połowa  służy  do  przechowywania  kopii 
danych. 

RAID-5  to  dysk  logiczny  składający  się  z  co  najmniej  trzech  dysków  fizycznych  (z  każdego  dysku 
wolumin  zabiera  tyle  samo  przestrzeni  dyskowej).  W  woluminach  typu  RAID-5  część  przestrzeni 
dyskowej jest poświęcana na zapis tzw. danych parzystości (niezbędnych do odzyskania danych w 
przypadku awarii jednego z dysków wchodzących w skład woluminu). Im więcej dysków wchodzi w 
skład woluminu, tym mniej przestrzeni dyskowej zajmują dane parzystości (mniejsza nadmiarowość 
danych). 

Najlepszym rozwiązaniem w kwestii zapewnienia tolerancji błędów dysków fizycznych są sprzętowe 
woluminy  RAID  pracujące  z  kontrolerami  SCSI,  z  uwagi  na  szybszą  pracę  niż  RAID  programowy. 
Niestety jest to jednocześnie najdroższe rozwiązanie.  

Kopie bezpieczeństwa, zwane też kopiami zapasowymi (ang. backup), powinny być przechowywane 
bądź na zewnętrznym nośniku (taśmy, płyty CD lub inne nośniki) lub na innym komputerze niż ten, 
z którego kopiujemy dane. Ponadto nośniki z kopiami zapasowymi powinny być przechowywane w 
innym  miejscu  niż  maszyna,  z  której  pochodzą  dane  (zmniejszamy  ryzyko  utraty  danych  w 
przypadku pożarów czy powodzi). 

Strategia  kopii  zapasowych  powinna  być  zaplanowana  przez  administratora  baz  danych  i 
administratora  systemu  operacyjnego.  Należy  zaplanować  strategię,  która  odpowiada  potrzebom 
firmy,  tzn.  należy  odpowiedzieć  na  pytanie,  czy  ważniejsze  jest  szybkie  sporządzanie  kopii 
zapasowych,  czy  też  istotniejsze  jest  jak  najszybsze  przywracanie  danych  po  awarii.  Na  ogół 
strategia  musi  uwzględnić  obie  kwestie.  Stąd  najczęściej  powtarzanym  schematem  sporządzania 
kopii  zapasowych  jest  wykonywanie  co  tydzień  kopii  wszystkich  danych  oraz  codzienne 
wykonywanie kopii przyrostowych (tylko dane zmodyfikowane danego dnia). 

W  budowaniu  strategii  kopii  zapasowych  należy  też  uwzględnić  „godziny  szczytu”  pracy  serwera 
(proces wykonywania kopii zapasowych pociąga za sobą dodatkowe obciążenie serwera). Dlatego 
na  ogół  operacje  te  są  wykonywane  w  godzinach  nocnych  i  są  planowane  w  ten  sposób,  by  nie 
kolidowały z czasem, gdy użytkowanie serwera przez klientów jest najintensywniejsze.  

Implementacja bezpieczeństwa sieci 

Przy  planowaniu  bezpieczeństwa  sieci  należy  zadać  sobie  pytanie,  czy  dane  przesyłane  z  naszego 
serwera  baz  danych  są  poufne.  Jeśli  tak,  to  możemy  zastosować  dostępne  protokoły  szyfrujące, 
takie  jak  SSH  czy  IPSec.  Oprócz  implementacji  sieciowych  protokołów  szyfrujących  do  transmisji 
danych, należy ograniczyć ilość danych wysyłanych w świat do niezbędnego minimum (najlepiej nie 
„przedstawiać się” zbytnio w sieci – ujawnienie oprogramowania serwera baz danych to pierwszy 
krok do zachwiania bezpieczeństwa naszego serwera).  

Implementacja bezpieczeństwa komputerów i domen 

Aby zapewnić komputerom i domenom niezbędny poziom bezpieczeństwa, należy trzymać się kilku 
zasad. 

Nie  należy  instalować  serwerów  baz  danych  na  serwerach  kluczowych  dla  domeny  (kontrolery 
domeny). Najlepsza struktura domeny to taka, w której każdy serwer pełni pojedynczą funkcję (np. 
serwer aplikacji, serwer plików, serwer baz danych itd.). 

Niezbędna jest odpowiednia polityka administratorów systemu (lub domeny), czyli: 

 

utrzymywanie  aktualnego  poziomu  zabezpieczeń  systemu  operacyjnego  oraz  serwera  baz 
danych 

 

odpowiednia polityka bezpiecznych haseł użytkowników 

 

zmiana nazw kont administratorskich 

 

monitorowanie logowania do systemu (domeny) 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 10 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 6/17 

 

ograniczanie dostępu do plików i folderów 

 

nadawanie minimalnych wymaganych uprawnień dla użytkowników i grup 

 

jak najmniejsze wykorzystywanie kont administratorskich 

 

implementacja „zapór ogniowych” (ang. firewall

 

ograniczenie fizycznego dostępu do serwerów i kontrolerów domeny 

 

uruchamianie  usług  serwera  baz  danych  przy  użyciu  konta  użytkownika  specjalnie 
stworzonego w tym celu (nie administratora) i zapewnienie stabilności tego konta (np. nigdy 
nie wygasające hasło) 

Implementacja bezpieczeństwa serwera baz danych i samych baz 

Pod  hasłem  bezpieczeństwa  serwera  baz  danych  rozumiemy  umożliwienie  korzystania  z  serwera 
tylko  osobom  do  tego  uprawnionym.  Większość  systemów  zarządzania  bazami  danych  oferuje 
uwierzytelnianie  użytkowników  na  dwóch  poziomach:  na  poziomie  serwera  (użytkownik  może 
dostać  się  do  serwera)  oraz  na  poziomie  bazy  danych  (użytkownik  serwera  ma  dostęp  do 
konkretnej bazy danych). 

Mechanizmy  uwierzytelniania  i  autoryzacji  są  różne  i  zależą  od  konkretnego  środowiska 
bazodanowego. Zazwyczaj użytkownicy dzieleni są na  role (grupy), natomiast rolom nadawane są 
określone  uprawnienia.  Ponadto  niezbędnym  nawykiem  administratora  baz  danych  powinno  być 
rejestrowanie i monitorowanie zdarzeń na serwerze w poszukiwaniu nietypowych zdarzeń.  

Implementacja bezpieczeństwa aplikacji bazodanowej 

Piętą  achillesową  systemu  informatycznego  współpracującego  z  bazą  danych  często  jest  interfejs 
użytkownika (od strony programistycznej i implementacji logiki biznesowej). Szczególnie chodzi tu o 
umożliwienie użytkownikom oddziaływania na serwer baz danych lub nawet na system operacyjny 
serwera z poziomu aplikacji klienckiej. 

Należy ze szczególną uwagą projektować aplikacje bazodanowe. Oto kilka zasad, którymi należy się 
kierować przy tworzeniu interfejsów dla tych aplikacji: 

 

zachowaj przezroczystość aplikacji i bazy danych (nie pokazuj informacji o źródle aplikacji i o 
strukturze bazy danych), szczególnie uważaj na komunikaty domyślne aplikacji (lepiej ustawić 
swoje, które powiedzą tylko, że wystąpił błąd) 

 

nigdy nie ufaj użytkownikowi aplikacji i wpisywanym przez niego wartościom 

 

sprawdzaj, czy wejście jest tym, czego oczekujesz i odrzucaj wszystko inne wartości 

 

walidację wejścia przeprowadzaj na wielu poziomach 

 

używaj wyrażeń regularnych 

 

staraj  się  nie  używać konkatenacji  do tworzenia  zapytań  SQL  (zamiast  tego  użyj  procedur  z 
parametrami) 

 

łącz się z bazą danych używając w miarę najmniej uprzywilejowanego konta użytkownika 

Przykładowe rozwiązanie 

Zapewnienie bezpieczeństwa serwerowi bazodanowemu jest sprawą złożoną i rozciągniętą na kilka 
poziomów.  Z  punktu  widzenia  administratora  systemu  podstawowym  poziomem  jest  kwestia 
autoryzacji użytkowników, którzy mają dostęp do serwera SQL. Narzędzie SQL Server Management 
Studio  umożliwia  kontrolę  nad  wieloma  parametrami  nie  tylko  bazy  danych,  ale  też  samego 
serwera. Jedną z grup interesujących nas parametrów jest sposób uwierzytelniania użytkowników, 
co  ilustruje  rys.  2.  Serwer  SQL  może  wykorzystywać  do  uwierzytelniania  własne  konta 
użytkowników lub dodatkowo honorować konta systemu operacyjnego. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 10 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 7/17 

 

Rys. 2 Opcje bezpieczeństwa serwera 

Mieszany tryb uwierzytelniania, który jest zaznaczony na rys. 2, pozwala na łączenie się z serwerem 
także użytkownikom, którzy nie mają kont w systemie Windows w sieci, w której pracuje serwer. 
Dobrą  praktyką  jest  monitorowanie  nieudanych  prób  logowania  do  systemu,  co  zapewnia  opcja 
Login auditing
 
Inną  interesującą  grupą  są  obiekty  związane  wewnętrznymi  kontami  użytkowników  serwera  SQL 
dostępne w polu  Logins. Procedura tworzenia nowego użytkownika jest podobna do analogicznej 
procedury w systemie operacyjnym co ilustruje rys. 3. 

 

Rys. 3 Tworzenie nowego loginu 

Jeśli  Microsoft  SQL  Server  2008  zainstalowany  jest  na  komputerze  pracującym  pod  kontrolą 
systemu  Microsoft  Windows  Server  2003,  można  wymusić  odpowiednią  politykę  bezpieczeństwa 
haseł serwera baz danych dzięki polisom systemu operacyjnego. 

Po  założeniu  odpowiednich  kont  możemy  sprawdzić,  czy  logowanie  do  serwera  przebiegało 
pomyślnie  czy  też  były  z  tym  jakieś  problemy.  Do  monitorowania  aktywności  serwera  służy 
dziennik. Przykładową zawartość dziennika serwera SQL pokazuje rys. 4. 

background image

Włodzimierz Dąbrowski, Przemysław 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 próby logowania do systemu. Dziennik pokazany 
na rys. 4 to dziennik to po prostu zdarzeń systemu Windows. Przeglądarka dziennika systemu SQL 
Server umożliwia jednoczesne przeglądanie wszystkich zapisywanych w tym systemie informacji. 

Utworzenie konta dla danego użytkownika nie oznacza jeszcze przyznanie mu jakichkolwiek praw 
poza  możliwością  połączenia  z  serwerem.  Aby  dany  użytkownik  mógł  skorzystać  z  baz  danych 
należy w kontekście danej bazy przyznać mu prawo do połączenia się z nią. Po rozwinięciu drzewa 
bazy  w  obszarze  Object  Explorer  widzimy  pole  Security,  gdzie możemy  ustalać,  który  użytkownik 
posiada dostęp i na jakich zasadach, co ilustruje rys. 5

 

Rys. 5 Dodawanie użytkownika do bazy danych 

Podobny  efekt  możemy  uzyskać  uruchamiając  odpowiednią  sekwencję  kodu  języka  SQL.  Do 
nadawania  i  odbierania  uprawnień  użytkownikom  służą  polecenia 

GRAND  i  REVOKE,  tak  jak  to 

pokazuje rys. 6. Należy jednak zauważyć, że do uruchomienia danego kodu SQL musimy posiadać 
konto, które: 

 

ma dostęp do danej bazy 

 

posiada odpowiednie uprawnienia np. administracyjne w kontekście tej bazy 

W innym wypadku kontrolowanie uprawnień z poziomu języka SQL nie powiedzie się. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 10 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 9/17 

 

Rys. 6 Nadanie uprawnień użytkownikowi Tomek 

Jeżeli  posiadamy  w  systemie  kilka  kont  użytkowników,  które  są  odpowiednio  skonfigurowane  i 
posiadają  uprawnienia  dostępu  do  bazy,  możemy  przełączać  pomiędzy  nimi  kontekst 
wykonywanych poleceń SQL. Służy do tego polecenie 

EXECUTE AS, jak pokazano na rys. 7. 

 

Rys. 7 Wykonanie kodu SQL w kontekście użytkownika Tomek 

Komenda 

EXECUTE  AS  pozwala  zmienić  kontekst  wykonywania  poleceń  na  wybranego 

użytkownika. Powrót do pierwotnego kontekstu zapewnia polecenie 

REVERT. 

W  rzeczywistych  systemach  pojawia  się  wiele  kont  i  grup  użytkowników.  Pomoc  w  zapanowaniu 
nad mnogością kont zapewniają schematy. Schematy to przestrzenie nazw lub pojemniki na obiekty 
w  bazie  danych.  Upraszczają  one  zarządzanie  uprawnieniami  w  bazie  danych  oraz  stanowią 
element niezbędny do poprawnego rozwiązywania nazw w systemie Microsoft SQL Server 2008.  

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 10 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 10/17 

Schematy umożliwiają nadawanie uprawnień na wiele obiektów jednocześnie. Wystarczy umieścić 
je  w  jednym  schemacie.  Ponadto  schematy  pozwalają  uniknąć  sytuacji,  w  których  usunięcie 
użytkownika z bazy jest niemożliwe, gdy jest on właścicielem obiektów w bazie danych (wcześniej 
trzeba zmienić właścicieli wszystkich obiektów, których właścicielem jest wspomniany użytkownik). 

Do tworzenia schematów służy polecenie 

CREATE SCHEMA. Więcej informacji na temat tworzenia i 

zarządzania schematami znajduje się w laboratorium podstawowym i Books Online na stronie firmy 
Microsoft. 

Porady praktyczne 

Nigdy nie myśl, że system i serwer baz danych są bezpieczne. Jest to jedna z podstawowych zasad 
przy  projektowaniu  lub  inspekcji  mechanizmów  zabezpieczających  systemy,  nie  tylko 
informatyczne.  Takie  podejście  znacznie  zwiększa  szanse  na  znalezienie  luki  lub  potencjalnego 
problemu.  
Nigdy nie ufaj temu, co użytkownik podaje na wejściu do systemu. Jeżeli przewidujesz możliwość 
wprowadzania  danych  przez  użytkownika  zawsze  staraj  się  prawidłowo  i  uważnie  obsługiwać 
pojawiające  się  informacje  automatycznie  odrzucając  wartości,  których  się  w  danej  sytuacji  nie 
spodziewasz. 
Zachowuj  zasadę  minimalnych  uprawnień  w  stosunku  do  użytkownika.  Prawidłowe  podejście  z 
punktu  widzenia  bezpieczeństwa  to  w  pierwszym  kroku  zabranie  użytkownikowi  wszystkich 
uprawnień  w  systemie  a  dopiero  później  ostrożne  przydzielenie  mu  takich  jakie  wydają  się  być 
niezbędne. Wprowadza to oczywiście wydłużenie czasu dostosowania systemu do pracy w pełnym 
wymiarze oraz swoiste niezadowolenie użytkowników ale jest niezbędne. Zasada ta jest szczególnie 
ważna  dla  użytkowników  typu  serwis  systemowy  i  implikuję  kolejną  o  nazwie  „domyślnie 
zamknięte”. Obszary działania systemu takie jak porty dostępu, protokoły komunikacyjne czy same 
bazy  danych  jeżeli  nie  są  w  danej  chwili  używane  powinny  mieć  status  zamkniętych  dla 
użytkownika.  Dopiero  formalna  potrzeba  użycia  danej  części  systemu  może  ją  aktywować. 
Eliminuje to znakomitą część prób włamań na nieużywane, „uśpione” ale ciągle aktywne zasoby. 
Regularnie  szukaj  nieprawidłowości  w  systemie.  Systemy  informatyczne  to  najczęściej  twory  o 
silnej dynamice podlegające ciągłym zmianom. Zmiany te mogą tworzyć nowe, potencjalne „furtki” 
dla  włamywaczy.  Inną  sprawą  jest  niedoskonałość  samego  oprogramowania.  Co  prawda  dla 
rozwijanych systemów co jakiś czas wydawane są aktualizacje jednakże praktyka wskazuje, że łatki 
takie potrafią naprawiać jedną część a jednocześnie stwarzać luki gdzie indziej. 
Bądź  na  bieżąco  z  technologiami  i  technikami  programistycznymi  aby  wiedzieć  jak  reagować  na 
potencjalne  zagrożenia.  Wiedza  ta  w  przypadku  systemów  bazodanowych  jest  szczególnie  cenna 
gdyż cześć funkcjonalności administrator może sam bezpośrednio oprogramować a co za tym idzie 
posiadać nad nią całkowita kontrolę. 

Uwagi dla studenta 

Jesteś przygotowany do realizacji laboratorium jeśli: 

 

rozumiesz, co oznacza serwis systemowy, serwis bazy danych, instalacja serwisu 

 

rozumiesz zasadę działania uruchomienia serwisów w kontekście użytkownika 

 

umiesz wymienić i opisać podstawowe komponenty systemu bazodanowego 

 

umiesz podać przykład zastosowania systemu bazodanowego w praktyce 

Pamiętaj  o  zapoznaniu  się  z  uwagami  i  poradami  zawartymi  w  tym  module.  Upewnij  się,  że 
rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego 
w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. 

Dodatkowe źródła informacji 

1.

 

Kalen  Delaney,  Microsoft  SQL  Server  2005:  Rozwiązania  praktyczne  krok  po  kroku,  Microsoft 
Press, 2006 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 10 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 11/17 

Podręcznik  ten  jest  idealną  pomocą  dla  użytkowników,  który  postawili  już  pierwsze  kroki  w 
systemach  bazodanowych.  Dużo  ćwiczeń  i  kodów  źródłowych  odnoszących  się  do  sytuacji 
spotykanych w praktyce jest doskonałą bazą do rozwiązywani problemów pojawiających się w 
rzeczywistości. 

2.

 

Edward Whalen, Microsoft SQL Server 2005 Administrator’s Companion, Microsoft Press, 2006 

Kompleksowe  opracowanie  na  temat  zaplanowania  I  wdrożenia  system  bazodanowego 
opartego  o  MS  SQL  Server  2005  w  małym  i  średnim  przedsiębiorstwie.  Autorzy  postawili  na 
formułę przedstawiania wielu problemów z praktyki administratora baz danych oraz możliwych 
dróg do ich rozwiązania. Książka jest adresowana do praktykujących użytkowników. 

3.

 

Dusan Petkovic,  Microsoft SQL Server 2008: A Beginner's Guide, McGraw-Hill, 2008  

Pozycja  adresowana  do  osób  zaczynających  przygodę  z  bazami  danych.  Znajdziemy  tu 
wprowadzenie  do  relacyjnych  baz  danych,  sposoby  ich  projektowania,  optymalizacji  i  w końcu 
wdrożenia  w  najnowszej  odsłonie  serwera  SQL  w  wersji  2008.  Omówienie  języka  T-SQL  w 
osobnej, dużej części książki 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 nowości 
z nim związane.  

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 

Laboratorium podstawowe

Problem 1 (czas realizacji 45 min)

Pierwszym  zadaniem,  jakie  sobie  postawiłeś
Server 2008 pod względem tworzenia użytkowników, nadawania im uprawnień i kontroli nad tymi 
uprawnieniami.  W  celach  testowych 
założoną na serwerze 

Evaluation

Zadanie 

Tok postępowania

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 części okna 

 

Zaznacz opcję 

 

Kliknij 

 

Kliknij
restartu usługi serwera.

 

Dokonaj 

2.

 

Utwórz loginy 

 

W oknie 

 

Prawym  przyciskiem  myszy  kliknij 
wybierz 

 

W polu 

 

Zaznacz opcję

 

W pola

 

Odznacz o

 

Kliknij 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Instalacja i konfiguracja MS SQL Server 2008

Strona 12/17 

Laboratorium podstawowe 

Problem 1 (czas realizacji 45 min) 

jakie  sobie  postawiłeś,  jest  zbadanie  możliwości  serwera 

2008 pod względem tworzenia użytkowników, nadawania im uprawnień i kontroli nad tymi 

uprawnieniami.  W  celach  testowych  postanowiłeś  wykorzystać  roboczą  bazę 

Evaluation.  

Tok postępowania 

Uruchom maszynę wirtualną BD2008

 

Jako nazwę użytkownika podaj Administrator.

 

Jako hasło podaj P@ssw0rd

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 
D:\VirtualPC\Dydaktyka\BD2008.vhd

Kliknij  Start.  Z  grupy  programów  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 części okna z listy Select a page wybierz Security
Zaznacz opcję SQL Server and Windows Authentication Mode
Kliknij OK
Kliknij OK w oknie informującym o tym, że nowe ustawienia wymagają 
restartu usługi serwera. 
Dokonaj restartu maszyny i połącz 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  możliwości  serwera  Microsoft  SQL 

2008 pod względem tworzenia użytkowników, nadawania im uprawnień i kontroli nad tymi 

roboczą  bazę 

PraceDyplomowe, 

 

Jeśli  nie  masz  zdefiniowanej  maszyny  wirtualnej  w  Microsoft  Virtual 
PC, dodaj nową maszynę używając wirtualnego dysku twardego z pliku 

Microsoft  SQL  Server  2008  uruchom 

Explorer  kliknij  prawym 

EVALUATION)  i  z  menu 

Security

Windows Authentication Mode

w oknie informującym o tym, że nowe ustawienia wymagają 

połącz się ponownie z serwerem SQL. 

rozwiń zawartość folderu Security

i  z  menu  kontekstowego 

P@ssw0rd

User must change password at next login

background image

Włodzimierz Dąbrowski, Przemysław 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 prób 
logowania 

 

Z menu głównego 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 próbie logowania kliknij OK

 

Zamknij okno logowania klikając 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  próbie  logowania  użytkownika 
Tomek

 

Zamknij okno dziennika systemowego. 

 

Rys. 9 Dziennik systemowy SQL Server 2008 

 

Utwórz  jeszcze  jeden  login  w  systemie.  Po  skonfigurowaniu  wszystkich 
opcji  loginu  (nazwa,  hasło,  itd.)  w  górnej  części  okna  wybierz  Script
Przyjrzyj się składni polecenia, które pojawi się w oknie edytora.  

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 10 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 14/17 

4.

 

Dodaj 

użytkownika 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 (klikając na przycisku z trzema kropkami masz możliwość wyboru 
istniejącego loginu z listy), a w polu Default schema wpisz Sales

 

W górnej części okna kliknij Script

 

Kliknij OK i obejrzyj skrypt, który został wygenerowany. 

 

Rys. 10 Dodawanie użytkownika do bazy danych 

5.

 

Nadaj 

uprawnienia 
użytkownikowi 

 

Z menu głównego wybierz File -> Open -> File

 

Odszukaj plik Grant.sql i kliknij Open

 

Wciśnij  F5,  aby  uruchomić  kod.  Kod  ten  nadaje  uprawnienia  do 
wykonywania 

polecenia 

SELECT 

na 

tabeli 

PracaDyplomowa 

użytkownikowi Tomek

6.

 

Wykorzystaj 

stworzonego 
użytkownika 

 

Z menu głównego wybierz File -> Open -> File

 

Odszukaj plik SelectAsTomek.sql i kliknij Open

 

Wciśnij  F5,  aby  uruchomić  kod.  Wykona  on  polecenie  SELECT  jako 
użytkownik Tomek, któremu odpowiednie uprawnienia nadałeś w kroku 
5. 

background image

Włodzimierz Dąbrowski, Przemysław 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 kontekście użytkownika Tomek 

7.

 

Utwórz 

właściciela 
schematu 

 

Z menu głównego wybierz File -> Open -> File

 

Odszukaj plik Schema.sql i kliknij Open

 

Zaznacz  kod,  który  tworzy  użytkownika  Janek,  będącego  właścicielem 
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 

 

Wciśnij F5, by uruchomić zaznaczony kod. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 

8.

 

Utwórz 

schemat 

 

Zaznacz 
NewSchema
oraz  nadaje  uprawnienia  do  wykonywania  polecenia 
użytkownikowi 

--
CREATE SCHEMA NewSchema AUTHORIZATION Janek
CREATE TABLE NewTable(col1 int, col2 int)
GRANT SELECT ON NewTable TO Tomek
GO

9.

 

Uzyskaj 

dostęp do danych 

 

Zaznacz kod, który przełączy kontekst użytkownika na login 

--
EXECUTE AS LOGIN = 'John';

 

Wciśnij 

 

Zaznacz kod, który wykona próbę dostępu do danych

--
SELECT * FROM NewTable

 

Wciśnij 

 

Zaznacz kod, który wykona ponownie próbę dostępu do danych

--
SELECT * FROM NewSchema.NewTable

 

Wciśnij 

 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Instalacja i konfiguracja MS SQL Server 2008

Strona 16/17 

Rys. 12 Tworzenie nowego użytkownika SQL Server

Zaznacz  i  uruchom  (F5)  poniższy  fragment  kod,  który  tworzy  schemat 
NewSchema dla użytkownika Janek, tabelę NewTable
oraz  nadaje  uprawnienia  do  wykonywania  polecenia 
użytkownikowi Tomek

--Tworzymy schemat 
CREATE SCHEMA NewSchema AUTHORIZATION Janek 
CREATE TABLE NewTable(col1 int, col2 int) 
GRANT SELECT ON NewTable TO Tomek 
GO 

Zaznacz kod, który przełączy kontekst użytkownika na login 

-- Zmieniamy kontekst (w SQL 2000 - setuser 'John')
EXECUTE AS LOGIN = 'John'; 

Wciśnij F5, by uruchomić zaznaczony kod. 
Zaznacz kod, który wykona próbę dostępu do danych

-- Error!!! Nie ma Sales.NewTable ani dbo.NewTable
SELECT * FROM NewTable 

Wciśnij F5, by uruchomić zaznaczony kod. 

Próba  wykonania  powyższego  kodu  spowoduje  wyświetlenie 
komunikatu  o  błędzie,  ponieważ  nie  istnieje  obiekt  o  nazwie 
Sales.NewTable  (Sales  to  domyślny  schemat  dl
ani obiekt o nazwie dbo.NewTable

Zaznacz kod, który wykona ponownie próbę dostępu do danych

-- Ok. 
SELECT * FROM NewSchema.NewTable 

Wciśnij F5, by uruchomić zaznaczony kod. 

Powyższy  kod  zostanie  poprawnie  wykonany,  ponieważ 
uprawnienia  do  wykonywania  operacji  na  schemacie 
będąc jego właścicielem. 

 

Moduł 10 

Instalacja i konfiguracja MS SQL Server 2008 

 

Tworzenie nowego użytkownika SQL Server 

kod,  który  tworzy  schemat 

NewTable w tym schemacie 

oraz  nadaje  uprawnienia  do  wykonywania  polecenia  SELECT  na  tabeli 

Zaznacz kod, który przełączy kontekst użytkownika na login John

setuser 'John') 

Zaznacz kod, który wykona próbę dostępu do danych: 

ales.NewTable ani dbo.NewTable 

spowoduje  wyświetlenie 

komunikatu  o  błędzie,  ponieważ  nie  istnieje  obiekt  o  nazwie 

to  domyślny  schemat  dla  użytkownika  John

Zaznacz kod, który wykona ponownie próbę dostępu do danych: 

Powyższy  kod  zostanie  poprawnie  wykonany,  ponieważ  Janek  ma 
uprawnienia  do  wykonywania  operacji  na  schemacie  NewSchema

background image

Włodzimierz Dąbrowski, Przemysław 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  użytkowników  i  powiązanie  ich  z  odpowiednimi  prawami  do  danych  w  bazach  firmy 
National  Insurance  znacznie  zwiększyło  poziom  bezpieczeństwa  systemu  bazodanowego. 
Monitoring  dzienników  systemowych  pokazał,  które  aplikacje  klienckie  i  którzy  użytkownicy 
sprawiali  problemy.  Widać  było  także  wyraźne  rezultaty  zabezpieczeń  w  postaci  odrzuconych 
nieuprawnionych prób dostępu do danych. Wyniki tych działań zachęciły zarząd firmy do wsparcia 
dalszych  prac  nad  bezpieczeństwem  systemu  bazodanowego.  Jako  główny  administrator  masz  za 
zadanie zapoznać się z możliwościami szyfrowania danych zawartymi w Microsoft SQL Server 2008 
oraz wdrożyć je w firmie. 

 

Zapoznaj się z możliwościami wykorzystania elementów kryptografii w SQL Server 2008 (plik 
cryptography.sql).   

 

Spróbuj  wykorzystać  szyfrowanie  i  certyfikaty  cyfrowe  do  zabezpieczenia  poszczególnych 
tabel bazy danych.  

Wszystkie  eksperymenty  mają  być  dokonywane  na  bazie 

PraceDyplomowe.  Jako  rezultat  masz 

napisać  raport  zawierający  przykłady  zastosowania  możliwości  szyfrowania  danych  i  autoryzacji 
dostępu do nich. 

background image

 

 

ITA-101 Bazy Danych 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 11 

Wersja 1.0 

Praca z XML 

Spis treści 

Praca z XML .......................................................................................................................................... 1 

Informacje o module ............................................................................................................................ 2 

Przygotowanie teoretyczne ................................................................................................................. 3 

Przykładowy problem .................................................................................................................. 3 

Podstawy teoretyczne.................................................................................................................. 3 

Przykładowe rozwiązanie ............................................................................................................. 4 

Porady praktyczne ....................................................................................................................... 8 

Uwagi dla studenta ...................................................................................................................... 8 

Dodatkowe źródła informacji....................................................................................................... 8 

Laboratorium podstawowe .................................................................................................................. 9 

Problem 1 (czas realizacji 45 min) ................................................................................................ 9 

Laboratorium rozszerzone ................................................................................................................. 15 

Zadanie 1 (czas realizacji 90 min) ............................................................................................... 15 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 11 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 2/15 

Informacje o module 

Opis modułu 

Wymiana  danych  z  relacyjnymi  bazami  danych  może  być  utrudniona  ze 
względu  na  różnice  programowo  –  sprzętowe  itp.  Rozwiązaniem  jest  język 
XML, który jest niezależny od standardów sprzętowych / programowych. 

Cel modułu 

Celem  modułu  jest  zapoznanie  się  z  możliwościami  zastosowania  języka 
XML w MS SQL 2008. 

Uzyskane kompetencje 

Po zrealizowaniu modułu będziesz: 

 

wiedzieć, jak uzyskać dokument XML ze zwykłego wyniku zapytania 

 

nauczysz się sterować zapisem danych do dokumentu XML 

 

będziesz umiał zapisać informacje z dokumentu XML do bazy danych 

 

nauczysz się przeprowadzać walidację danych XML według zadanych 
schematów 

 

poznasz  język  XQuery,  który  umożliwia  wykonywanie  operacji  na 
danych XML 

Wymagania wstępne 

Przed przystąpieniem do pracy z tym modułem powinieneś: 

 

wiedzieć, jak używać oprogramowania Microsoft Virtual PC 

 

znać podstawy obsługi systemu Windows 2000 lub nowszego 

 

znać podstawy obsługi SQL Server Management Studio 

Mapa zależności modułu 

Zgodnie  z  mapą  zależności  przedstawioną  na  Rys.  1,  istnieje  konieczność 
wykonania wcześniej modułu 3. 

 

 

Rys. 1 Mapa zależności modułu 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 11 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 3/15 

Przygotowanie teoretyczne 

Przykładowy problem 

Firma  National  Insurance  wykupiła  niedawno  udziały  w  mniejszej,  prężnie  działającej  firmie 
informatycznej  Miracle.  Ponieważ  dział  IT  w  Miracle  używał  innej  architektury  bazodanowej, 
nastąpił problem z wymianą danych pomiędzy centralą a nowym oddziałem. Informatycy obydwu 
oddziałów  wpadli  na  pomysł  użycia  uniwersalnego  języka  XML  do  wymiany  danych  pomiędzy 
platformami.  Przed  podjęciem  stosownych  działań  dyrektor  działu  IT  postanowił  sprawdzić,  co 
oferuje system MS SQL Server 2008 w tym zakresie. 

Podstawy teoretyczne 

XML  (ang.  eXtensible  Markup  Language)  jest  językiem  znaczników  (jak  HTML),  w  którym  to 
programista  decyduje  o  tym,  jaka  będzie  struktura  znaczników.  W  ostatnich  latach  XML  zyskał 
ogromną  popularność  jako  format  idealny  do  wymiany  danych  między  aplikacjami,  nośnik 
konfiguracji aplikacji, format zapisu danych. Znajomość możliwości XML i standardów skojarzonych 
jest  dziś  właściwie  niezbędna  nie  tylko  w  pracy  z  bazami  danych,  ale  również  z  technologiami 
programistycznymi. 

W dzisiejszym świecie informacja jest przechowywana w różnych formatach. Jednym z dość często 
spotykanych formatów jest XML. Oznacza to, że system bazodanowy powinny oferować możliwość 
zapisu  w  swoich  strukturach  (w  swoich  bazach  danych)  danych  przemieszanych  ze  znacznikami 
XML. 

Format danych 

Każdy system bazodanowy oferuje bogaty zestaw typów danych. Wśród tych typów można znaleźć 
sporo  typów  przechowujących  tekst.  Ponieważ  XML  jest  formatem  tekstowym,  może  być 
przechowywany jako tekst, ale typ danych, który w bazach danych ma służyć do przechowywania 
danych XML, powinien charakteryzować się czymś więcej niż tylko możliwością zapisu znaczników i 
zaszytych w nich informacji. 

Jedną  z  podstawowych  właściwości  dokumentu  XML  jest  wymóg,  który  mówi,  że  dokument  XML 
musi posiadać odpowiednią formę. Oznacza to, że: 

 

dokument ma jeden element główny (ang. root), w którym zawarte są pozostałe elementy 

 

pojedynczy znacznik nie zawiera dwóch atrybutów o takiej samej nazwie 

 

wartości atrybutów powinny znaleźć się w ogranicznikach (cudzysłowy lub apostrofy) 

 

znaczniki nie powinny się „zazębiać”. 

Poniższy listing ilustruje przykładowy fragment poprawnego dokument XML: 

<panstwa> 
  <panstwo nazwa="Polska"> 
    <stolica>Warszawa</stolica> 
    <obszar>312680</obszar> 
    <ludnosc>38456785</ludnosc> 
    <glowne_miasta>Wrocław</glowne_miasta> 
    <glowne_miasta>Gdańsk</glowne_miasta> 
    <glowne_miasta>Kraków</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> 

background image

Włodzimierz Dąbrowski, Przemysław 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ę 
poprawności zapisu danych. 

Walidacja 

Bardzo  często  struktura  dokumentów  XML  jest  w  jednoznaczny  sposób  określona  przy  pomocy 
innych standardów, takich jak XML Schema czy DTD (ang.  Document Type Definition). Szczególnie 
XML Schema jest doskonałym formatem opisującym struktury XML. Idealnie zatem byłoby, gdyby 
system bazodanowy umożliwiał wykorzystanie standardów walidujących XML do kontroli struktury 
danych zapisywanych w bazach danych. 

MS  SQL  Server  2000  wprowadził  możliwość  konwersji  danych  pobieranych  z  bazy  do  dokumentu 
XML  oraz  danych  z  tych  plików  na  wiersze  bazy  danych.  Umożliwiają  to  słowa  kluczowe  języka 
Transact-SQL: 

 

FOR XML  

 

OPENXML  

MS  SQL  Server  2005  rozszerza  możliwości  w/w  słów  kluczowych,  dzięki  czemu  można  sterować 
sposobem  tworzenia  dokumentu  XML  (dokładne  informacje  w  dokumentacji  do  tych  poleceń). 
Dodatkowo  umożliwiono  tworzenie  natywnych  typów  danych  XML  pozwalających  na  tworzenie 
własnych 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  połączeniu  z  XQuery  (język  pozwalający  na  pisanie  zapytań 
przeszukujących 

dokumenty 

XML, 

dokumentacja: 

http://msdn2.microsoft.com/en-

us/library/ms189075(SQL.100).aspx)  pozwala  na  pisanie  zapytań  do  treści  XML,  których  wynik 
także  jest  przedstawiony  w  dokumencie  XML.  Innym  udoskonaleniem  jest  możliwość  nadania 
indeksów kolumnom typu XML. Pozwala to na zwiększenie ogólnej wydajności. 

MS  SQL  2008  wprowadził  dalsze  udoskonalenia  w  zakresie  walidacji  danych.  Dodano  możliwość 
stworzenia schematu który może być dopasowany do dowolnych danych. Dodano słowo kluczowe 
let 

do 

XQuery 

(podstawy 

można 

opanować 

na 

bazując 

na 

tutorialach:  

http://www.w3schools.com/xquery/default.asp)  dzięki,  któremu  można  przypisywać  wartości  do 
zmiennych.  Ponadto  za  pomocą  XQuery  można  wykonywać  operacje  na  danych  XML  za  pomocą 
insert, replace value of, delete, modify, a MS SQL Server 2008 pozwala na użycie danych 
XML jako argumentu dla polecenia 

insert. 

Przykładowe rozwiązanie 

Rozpoczynając  pracę  z  plikami  XML  należy  zastanowić  się  jakie  dane  będziemy  w  nich 
przechowywać.  Dane  z  bazy  wybieramy  np.:  poleceniem  SELECT.  Aby trafiły one  do  pliku  XML  na 
końcu skryptu SQL należy dopisać sekwencję FOR XML z odpowiednimi parametrami. Przykładowo, 
wybierając 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ę odnośnik do  
pliku XML tak jak pokazano na Rys. 2:  

background image

Włodzimierz Dąbrowski, Przemysław 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  uzyskaliśmy  wynik  zapytania  w  postaci  dokumentu  XML.  Klikając  na  odnośnik 
możemy  obejrzeć  strukturę  pliku  a  następnie  zapisać  go  jako  zwykły  plik  systemowy.  Znając 
podstawy języka XML łatwo wprowadzać modyfikacje i rozbudowywać tego typu pliki nawet poza 
środowiskiem bazodanowym. Wystarczy dysponować dowolnym edytorem testu. 

 

Rys. 3 Wyświetlenie kodu XML 

Pracując  z  plikami  XML  zawsze  należy  zwracać  uwagę  na  sposób  kodowania  znaków.  Warto 
wymusić odpowiednie kodowanie umieszczając na początku pliku następującą sekwencję 

<?xml version="1.0" encoding="utf-16"?> 

Co prawda same polecenia XML nie zawierają w swojej strukturze znaków narodowych ale dane 
pojawiające  się  w  plikach  przeważnie  takie  posiadają.  Aby  uniknąć  przekłamań  rozsądnie 
rozpocząć plik XML tak jak pokazano na rys 4. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 

W  tym  momencie  posiadamy  pełnowartościowy  plik  XML  zawierający  dane  z  naszej  bazy. 
uzyskane  dane  można  z  łatwością  przenieść  do  innej  bazy  danych  np.  MySql,  ponieważ  zostały 
zapisane w uniwersalnym formacie (należy jedynie pamiętać
 
Isnieje  możliwość    wyeksportowania  do  pliku  XML  bardziej  złożonych  danych.  Poniższy  kod  SQL 
wybierze wszystkie zamówienia, których 

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 

Możemy  więc  jasno  i  precyzyjnie  określi  interesujący  nas  zakres  danych,  który  będzie 
wyeksportowany z systemu bazodanowego.

 
Porównaj działanie polecenia 
ELEMENTS,  ROOT 
http://msdn2.microsoft.com/en

 
Posiadając gotowy plik XML zawierający dane wyeksportowane z systemu bazodanowego może
w prosty sposób wczytać te dane do swojej bazy. W ty
typu  XML  i  wczytać  do  tak  zadeklarowanej  zmiennej  dane  ze  wskazanego  pliku.  Taką  operację 
wykonuje przykładowy kod SQL: 

DECLARE @xmlDoc XML 
SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK 'C:
SINGLE_NCLOB ) AS xmlData)
SELECT @xmlDoc 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Instalacja i konfiguracja MS SQL Server 2008

Strona 6/15 

Rys. 4 Dodanie tagu kodowania 

W  tym  momencie  posiadamy  pełnowartościowy  plik  XML  zawierający  dane  z  naszej  bazy. 
uzyskane  dane  można  z  łatwością  przenieść  do  innej  bazy  danych  np.  MySql,  ponieważ  zostały 
zapisane w uniwersalnym formacie (należy jedynie pamiętać o odpowiednim kodowa

Isnieje  możliwość    wyeksportowania  do  pliku  XML  bardziej  złożonych  danych.  Poniższy  kod  SQL 
wybierze wszystkie zamówienia, których ID_Klienta jest równe "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  więc  jasno  i  precyzyjnie  określi  interesujący  nas  zakres  danych,  który  będzie 

wyeksportowany z systemu bazodanowego. 

Porównaj działanie polecenia FOR XML z atrybutami RAWAUTO oraz 

  (oraz  bez  tych  opcji)  i  innymi  zgodnie  z  dokumentacją  na: 

http://msdn2.microsoft.com/en-us/library/ms173812.aspx 

Posiadając gotowy plik XML zawierający dane wyeksportowane z systemu bazodanowego może
w prosty sposób wczytać te dane do swojej bazy. W tym celu należy posłużyć się zmiennymi T
typu  XML  i  wczytać  do  tak  zadeklarowanej  zmiennej  dane  ze  wskazanego  pliku.  Taką  operację 
wykonuje przykładowy 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  pełnowartościowy  plik  XML  zawierający  dane  z  naszej  bazy.  Tak 
uzyskane  dane  można  z  łatwością  przenieść  do  innej  bazy  danych  np.  MySql,  ponieważ  zostały 

o odpowiednim kodowaniu znaków).  

Isnieje  możliwość    wyeksportowania  do  pliku  XML  bardziej  złożonych  danych.  Poniższy  kod  SQL 

y  więc  jasno  i  precyzyjnie  określi  interesujący  nas  zakres  danych,  który  będzie 

oraz PATH oraz atrybutami 

(oraz  bez  tych  opcji)  i  innymi  zgodnie  z  dokumentacją  na: 

Posiadając gotowy plik XML zawierający dane wyeksportowane z systemu bazodanowego możemy 

m celu należy posłużyć się zmiennymi T-SQL 

typu  XML  i  wczytać  do  tak  zadeklarowanej  zmiennej  dane  ze  wskazanego  pliku.  Taką  operację 

.xml', CODEPAGE='utf-16', 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 

Wynikiem jest wczytana treść wcześniej utworzonego pliku, znajdująca się w jednej kolumnie typu 
XML co ilustruje rysunek 5. 

 

W  operowaniu  na  danych  XML  pomocny  jest 
typu dokumentów. 
 

Do tej pory jedynie wyświetlaliśmy 
aby  za  pomocą  pliku  mapującego  dokonać
mapujący 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 według zadanego wcześniej 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 połączy się z naszym serwerem bazodanowym a
plikami XML co ilustruje rysunek 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Instalacja i konfiguracja MS SQL Server 2008

Strona 7/15 

Wynikiem jest wczytana treść wcześniej utworzonego pliku, znajdująca się w jednej kolumnie typu 

 

Rys. 5 Wczytanie pliku XML 

W  operowaniu  na  danych  XML  pomocny  jest  XQuery,  czyli  język  zapytań  właśnie  dla  tego 

Do tej pory jedynie wyświetlaliśmy  zawartość wczytanego pliku XML. Nic nie stoi na przeszkodzie 

pomocą  pliku  mapującego  dokonać  jego  zapisu  w  odpowiedniej  tabeli

odzwierciedla dane z pliku XML na tabele w przykładowej 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, który zrealizuje wstawianie danych 

do bazy według zadanego wcześniej 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 połączy się z naszym serwerem bazodanowym a następnie wykona zapy
plikami XML co ilustruje rysunek 6. 

Moduł 11 

Instalacja i konfiguracja MS SQL Server 2008 

Wynikiem jest wczytana treść wcześniej utworzonego pliku, znajdująca się w jednej kolumnie typu 

 

,  czyli  język  zapytań  właśnie  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 

następnie wykona zapytania SQL zgodnie z 

background image

Włodzimierz Dąbrowski, Przemysław 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  może  być  wydajna  i  przyjemna.  Warto  jednak  zaznaczyć,  że  szczególnie 
początkujący  użytkownicy  mogą  popełniać  drobne,  ale  męczące  błędy  związane  głównie  z 
nieścisłościami w nazewnictwie: 

 

Zawsze  sprawdzaj  poprawność  nazw  wszelkich  plików  i  ich  ścieżek  dostępu.  Często 
niemożność zlokalizowania pliku skutkuje komunikatami o innych błędach. 

 

Poprawne określenie kodowania  zapobiega  przekłamaniom w obróbce  danych. Czasami  złe 
kodowanie w ogóle wyklucza wykonanie danej operacji. 

 

Dowiedź  się  nieco  więcej  o  podstawach  programowania  w  VBscript.  Jest  to  bardzo  prosty, 
obiektowy język programowania, wykorzystywany w budowie skryptów. 

 

Czytaj uważnie dziennik błędów. W większości przypadków dziennik wskazuje na poprawne 
rozwiązanie problemu. 

Uwagi dla studenta 

Jesteś przygotowany do realizacji laboratorium jeśli: 

 

rozumiesz, czym różni się język XML od HTML  

 

rozumiesz zasadę działania struktury XML Schema 

 

umiesz zdefiniować przykładową strukturę pliku XML 

 

umiesz podać przykład zastosowania narzędzia XQuery. 

Pamiętaj  o  zapoznaniu  się  z  uwagami  i  poradami  zawartymi  w  tym  module.  Upewnij  się,  że 
rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego 
w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. 

Dodatkowe źródła 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.

 

Przemysław Kozienko, Krzysztof Gwiazda, XML na poważnie, Helion, 2002  

5.

 

Scott Short , Zastosowanie XML do tworzenia usług internetowych na platformie Microsoft .NET
Microsoft Press 2003 

 

 

background image

Włodzimierz Dąbrowski, Przemysław 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.  Twój  szef  zlecił  Ci 
rozpoznanie  możliwości  płynących  z  użycia  języka  XML  w  systemie  MS  SQL  Server  2008.  W 
pierwszej  kolejności  postanowiłeś  użyć  narzędzi  dostępnych  w  systemie  na  roboczym  serwerze 
Evaluation i sprawdzonej bazie danych Northwind. 

Zadanie 

Tok postępowania 

1.

 

Nawiązywanie 

połączenia z SQL 
Server 2008 

 

Zaloguj  się  do  maszyny  wirtualnej  BD  jako  użytkownik  Administrator  z 
hasłem P@ssw0rd

 

Kliknij  Start.  Z  grupy  programów  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, które się pokaże, zamień wartość 1000 na 10 (nie potrzeba 
tyle danych do testów), a na samym końcu skryptu dopisz: 

FOR XML RAW('Customer'), ELEMENTS, ROOT 

 

wykonaj zapytanie klikając przycisk Execute

background image

Włodzimierz Dąbrowski, Przemysław 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 odnośnik <Root><Customer>… w celu otwarcia okna z kodem 
XML. 

 

Rys. 9 Wyświetlenie kodu XML 

 

zapisz ten wynik do pliku: c:\customers.xml klikając na menu File->Save 
As.
 

 

Możesz  otworzyć  plik  w  przeglądarce,  aby  zobaczyć  jego  strukturę, 
jednak  zanim  to  zrobisz,  dopisz  na  samym  początku,  najlepiej  w 
edytorze w MS SQL, następującą linię: 

<?xml version="1.0" encoding="utf-16"?> 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 

 

zamkni

3.

 

Wczytanie 

danych XML do 
MS SQL 

 

Kliknij przycisk 

 

Wpisz następujący 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 następujące:

DECLARE @xmlDoc XML
SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK 
'C:
SELECT @xmlDoc.query(
'<Customers>

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Instalacja i konfiguracja MS SQL Server 2008

Strona 11/15 

Rys. 10 Dodanie tagu kodowania 

zamknij utworzone zapytania w głównym oknie Management Studio

 

Kliknij przycisk NewQuery. 
Wpisz następujący 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 

Jeśli  nie  można  wczytać  pliku  albo  na  początku  treści  pojawiają 
tzw.  „krzaczki”,  to  proszę  się  cofnąć  do  momentu  zapisu  i  zamiast 
przez edytor z MSSQL, proszę zapisać metodą kopiowania i wklejania 
treści dokumentu XML do notatnika 

W  operowaniu  na  danych  XML  pomocny  jest 
zapytań właśnie dla tego typu dokumentów. 

Zmień zapytanie SQL z poprzedniego zadania na następujące:

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 następujący kod SQL do nowego okna zapytania: 

= ( SELECT * FROM OPENROWSET ( BULK 

16', SINGLE_NCLOB ) AS xmlData) 

 

Jeśli  nie  można  wczytać  pliku  albo  na  początku  treści  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  język 

Zmień zapytanie SQL z poprzedniego zadania na następujące: 

SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK 

16', SINGLE_NCLOB ) AS xmlData) 

background image

Włodzimierz Dąbrowski, Przemysław 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 klikając przycisk Execute. 

 

Kliknij na odnośnik do kodu XML. 

 

 

Rys. 12 Generowanie kodu XML 

5.

 

Eksport 

wybranych 
danych do pliku 
XML 

 

Kliknij przycisk NewQuery. 

 

W nowym oknie wpisz następujący 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 odnośnik do kodu XML. 

 

Dodaj w pierwszej linijce pliku określenie kodowania znaków: 

<?xml version="1.0" encoding="unicode"?> 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 

 

Kliknij na menu 

 

Zapisz kod XML do pliku 

 

Kliknij przycisk 

 

W nowym oknie wpisz następują

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 odnośnik do kodu XML

6.

 

Zapisanie 

wczytanych 
danych XML do 
tabeli za pomocą 
pliku mapującego 

 

Kliknij menu 

 

Wpisz w oknie notatnika następujący kod XML, w którym znajdować się 
będą informacje, które chcemy zapisać w bazie:

<?xml version="1.0" encoding="unicode"?>
<root>
 
 
 
 
 
</root>

 

Zapisz plik pod nazwą 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Instalacja i konfiguracja MS SQL Server 2008

Strona 13/15 

Rys. 13 Dodanie tagu kodowania znaków

Kliknij na menu File->Save As. 
Zapisz kod XML do pliku C:\explicit.xml. 

W  następnym  kroku    wczytasz  wcześniej  zapisany  plik  explicit.xml  i 
uruchomisz  zapytanie  SQL  zliczające  ilość  wystąpień  tagu  Order, 
każdego elementu Customer: 

Kliknij przycisk NewQuery. 
W nowym oknie wpisz następujący 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 odnośnik do kodu XML. 

Rys. 14 Wyświetlenie wyników z kodu XML

Kliknij menu START->Programs->Accessories->Notepad
Wpisz w oknie notatnika następujący kod XML, w którym znajdować się 
będą informacje, które 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 znaków 

W  następnym  kroku    wczytasz  wcześniej  zapisany  plik  explicit.xml  i 
uruchomisz  zapytanie  SQL  zliczające  ilość  wystąpień  tagu  Order, 

SET @xmlDoc = ( SELECT * FROM OPENROWSET ( BULK 'C:\Documents and 

explicit.xml', CODEPAGE='unicode', 

 

Wyświetlenie wyników z kodu XML 

>Notepad. 

Wpisz w oknie notatnika następujący kod XML, w którym znajdować się 

background image

Włodzimierz Dąbrowski, Przemysław 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  następujący  kod  XML,  który  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  następujący  skrypt  Visual  Basic,  który  zrealizuje  wstawianie 
danych do bazy według zadanego wcześniej 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 

Możesz  sprawdzić  za  pomocą  SQL  Management  Studio->Object  Explorer

czy rzeczywiście zaszły zmiany w tabeli Customers bazy Northwind. 

 

 

background image

Włodzimierz Dąbrowski, Przemysław 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) 

Zapoznałeś  się  z  podstawami  obsługi  języka  XML  w  firmowym  systemie  bazodanowym. 
Postanowiłeś  wykorzystać  zdobytą  wiedzę  do  przeniesienia  danych  z  bazy 

PraceDyplomowe 

znajdującej się w centrali do bazy w nowym oddziale firmy. Zanim jednak dane trafią do oddziału, 
będziesz chciał zweryfikować poprawność zapisu w plikach XML: 

 

Utwórz  skrypty  SQL  zapisujące  do  plików  XML  jak  najwięcej  informacji  z  bazy  danych 
PraceDyplomowe 

 

Utwór 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 zespołami. 

background image

 

 

ITA-101 Bazy Danych 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 12 

Wersja 1.0 

Praca z Reporting Services 

Spis treści 

Praca z Reporting Services ................................................................................................................... 1 

Informacje o module ............................................................................................................................ 2 

Przygotowanie teoretyczne ................................................................................................................. 3 

Przykładowy problem .................................................................................................................. 3 

Podstawy teoretyczne.................................................................................................................. 3 

Przykładowe rozwiązanie ............................................................................................................. 6 

Porady praktyczne ..................................................................................................................... 12 

Uwagi dla studenta .................................................................................................................... 12 

Dodatkowe źródła informacji..................................................................................................... 13 

Laboratorium podstawowe ................................................................................................................ 14 

Problem 1 (czas realizacji 45 min) .............................................................................................. 14 

Laboratorium rozszerzone ................................................................................................................. 24 

Zadanie 1 (czas realizacji 90 min) ............................................................................................... 24 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 12 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 2/24 

Informacje o module 

Opis modułu 

Aby 

osiągnąć 

sukces 

na 

dzisiejszym, 

konkurencyjnym 

rynku, 

przedsiębiorstwa  gromadzące  duże  ilości  danych  powinny  wprowadzić 
rozwiązania  biznesowe  działające  w  czasie  rzeczywistym  zapewniające 
bezproblemową,  skuteczną  wymianę  informacji  pomiędzy  własnymi 
oddziałami,  swoimi  partnerami,  a  także  klientami.  Microsoft  SQL  Server 
Reporting  Services  jest  rozwiązaniem,  które  pozwala  szybko  i  komfortowo 
dzielić  i  udostępniać  dane  biznesowe,  przy  niższych  nakładach  rozmaitych 
zasobów. 

Cel modułu 

Celem modułu jest zapoznanie się z podstawową funkcjonalnością systemu 
raportowania w MS SQL Server 2008. 

Uzyskane kompetencje 

Po zrealizowaniu modułu będziesz: 

 

poznasz podstawy MS SQL Server Reporting Services 

 

dowiesz  się,  jak  zainstalować  narzędzie  MS  SQL  Server  Reporting 
Services 

 

nauczysz się, jak wykorzystywać MS SQL Server Reporting Services do 
tworzenia raportów 

Wymagania wstępne 

Przed przystąpieniem do pracy z tym modułem powinieneś: 

 

wiedzieć jak używać oprogramowania Microsoft Virtual PC 

 

znać podstawy obsługi systemu Windows 2000 lub nowszego 

 

znać podstawy obsługi SQL Management Studio 

Mapa zależności modułu 

Zgodnie  z  mapą  zależności  przedstawioną  na  Rys.  1,  istnieje  konieczność 
wykonania wcześniej modułu 3. 

 

 

Rys. 1 Mapa zależności modułu 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 12 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 3/24 

Przygotowanie teoretyczne 

Przykładowy problem 

W  firmie  National  Insurance  dyrektor  działu  marketingu  został  poproszony  o  przygotowanie  akcji 
marketingowej  skierowanej  do  klientów  firmy.  Liczba  klientów  w  bazie  danych  wynosi  około 
miliona osób, a koszt dotarcia do każdego klienta – 10 PLN. Akcja dotyczy luksusowego produktu, 
którym zainteresowani mogą być wybrani klienci. Jesteś specjalistą analitykiem w dziale IT i masz 
dostęp  do  bazy  danych  firmy.  Administrator  nowego  serwera  MS  SQL  Server  wskazał  na 
interesującą  usługę  o  nazwie  Reporting  Services,  pozwalającą  w  ciekawy  i  wygodny  sposób 
przedstawiać dane pobierane z bazy. Postanowiłeś zapoznać się z nową usługą. 

Podstawy teoretyczne 

MS  SQL  Server  Reporting  Services  jest  platformą  raportującą,  która  używana  jest  do  zarządzania 
tabelarycznymi,  macierzowymi  lub  innymi  raportami  zawierającymi  dane  z  wielowymiarowych 
źródeł. Raporty tworzone za pomocą MS SQL Server Reporting Services mogą być udostępniane i 
zarządzane przez sieć WWW. Podstawowe komponenty MS SQL Server Reporting Services to: 

 

pełny zestaw narzędzi do tworzenia, zarządzania i udostępniania raportów 

 

serwer  raportujący  (ang.  Report  Server)  udostępniający  i  przetwarzający  raporty  w  wielu 
formatach danych (np. HTML, PDF, TIFF, Excel, CSV, etc.) 

 

API,  za  pomocą,  którego  programiści  i  deweloperzy  mogą  rozszerzyć,  zintegrować  (dane  i 
przetwarzanie raportów) oraz utworzyć aplikacje do zarządzania raportami. 

Dane  źródłowe  dla  raportów  tworzonych  za  pomocą  MS  SQL  Server  Reporting  Services  mogą 
pochodzić  z  relacyjnych  lub  wielowymiarowych  zbiorów  danych.  Ich  dostawcą  może  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ą, można też tworzyć raporty ad-hoc 
(przy wykorzystaniu predefiniowanych modeli). 

Swoją  funkcjonalnością  i  metodami  wizualizacji  MS  SQL  Server  Reporting  Services  przewyższa 
dotychczasowe rozwiązania raportowe, między innymi dzięki opartej na sieci WWW wizualizacji. 

W dalszej części przyjrzymy się podstawowym cechom MS SQL Server Reporting Services. 

Raporty 

 

Dane  źródłowe  w  postaci  relacyjnej,  wielowymiarowej,  a  także  XML  –  dane  do  raportów 
mogą  być  dostarczone  przez  MS  SQL  Server,  Analysis  Services,  Oracle  (poprzez  .NET 
Framework), ODBC, OLE DB, a także ze zbiorów zapisanych w formacie XML. 

 

Raporty mogą być prezentowane za pomocą rozmaitych rozkładów, takich jak tabele (np. dla 
danych  kolumnowych),  macierze  (np.  dla  danych  streszczonych),  wszelakie  wykresy  (dane 
prezentowane  graficznie),  a  także  rozkład  dowolny,  oparty  na  dowolnie  ustawianych 
kontrolkach i polach wewnątrz kontenera. W razie potrzeby możliwe jest połączenie różnych 
rozkładów w jednym raporcie. 

 

Raporty typu ad-hoc – istnieje możliwość tworzenia i zapisywania raportów bezpośrednio na 
serwerze  raportującym  za  pomocą  aplikacji  ClickOnce  (Report  Builder).  Raporty  ad-hoc 
wykonywane są poprzez klienta ściąganego z serwer raportującego. 

 

Udoskonalone  przeglądanie  raportów  –  istnieje  możliwość  dodania  interaktywnych 
elementów  (np.  linki),  zapewniających  dostęp  do  spokrewnionych  raportów,  a  także  do 
raportów  bardziej  szczegółowych.  Do  raportów  można  także  dodać  skrypty  napisane  w 
języku Visual Basic. 

 

Parametryzacja  raportów  –  istnieje  możliwość  dodawania  parametrów  do  raportów,  żeby 
uszczegółowić  zapytanie  lub  przefiltrować  zbiór  danych.  Parametry  dynamiczne  pobierają 
wartości w czasie wykonywania na podstawie wyboru użytkownika. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 12 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 4/24 

 

Możliwość prezentacji danych w wielu formatach – format prezentacji może być zmieniany 
w  trakcie  oglądania  raportu.  Dostępne  formaty:  HTML,  MHTML,  PDF,  XML,  CSV,  TIFF  oraz 
Excel. 

 

Dodatkowe  kontrolki  –  funkcjonalność  Reporting  Services  można  rozszerzać  za  pomocą 
dodatkowych  kontrolek  dostarczanych  przez  formy  trzecie  Dodatkowe  kontrolki  wymagają 
specjalnego rozszerzenia przetwarzającego dane. 

 

Nawigacja  –  istnieje  możliwość  dodawania  zakładek  oraz  map  do  większych  raportów,  by 
ułatwić poruszanie się po nich. 

 

Agregacja  danych  –  dane  mogę  być  łączone  i  streszczane  za  pomocą  kontrolek  i  wyrażeń. 
Dostępne operacje to m.in. suma, średnia, min, max i wiele innych. 

 

Elementy graficzne – do raportów można dodawać rozmaite elementy graficzne. 

Projektowanie raportów i modeli 

 

Projektowanie  raportów  –  tworzenie  raportów  za  pomocą  rozbudowanej  aplikacji 
dostarczanej  wraz  z  Business  Intelligence  Development  Studio.  Aplikacja  ta  niesamowicie 
ułatwia  proces  tworzenia  raportów  poprzez  m.in.  definiowanie  rozkładu,  publikowanie 
raportu, generator zapytań oraz wiele innych, a wszystko to może być wykonywane krok po 
kroku.  

 

Projektowanie  modeli  –  narzędzie  to  umożliwia  definiowanie  wzorców/modeli  do 
automatycznego generowania raportów w trybie ad-hoc.  

 

Generator  raportów  –  generator  raportów  umożliwia  tworzenie  raportów  w  trybie  ad-hoc 
opartych na wcześniej zdefiniowanych modelach.  

Udostępnianie i administracja 

 

Konfiguracja  Raporting  Services  –  udostępnianie  i  utrzymywanie  serwera  raportującego  za 
pomocą graficznego interfejsu użytkownika, używanego między innymi do konfiguracji kont, 
wirtualnych, folderów, kluczy szyfrowania. 

 

Zarządca  raportów  –  za  pomocą  zarządcy  raportów  można  nadzorować  m.in.  tworzenie 
raportów, historie raportów oraz ustalać limity na najróżniejsze parametry, takie jak np. czas 
przetwarzania. 

 

Integracja  Raporting  Services  z  SQL  Server  Management  Studio,  SQL  Server  Configuration 
Manager oraz narzędziami Surface Area Configuration.  

 

Możliwość zarządzania serwerem z poziomu linii komend. 

 

Użytkownicy  serwera  przypisani  są  do  ról  z  których  każda  ma  wyznaczone  uprawnienia  i 
prawa dostępu. Poziom bezpieczeństwa serwera wzrasta. 

Dostęp do raportów i ich dostarczanie: 

 

Możliwość dostępu poprzez sieć WWW za pomocą zwykłej przeglądarki internetowej.  

 

Możliwość integracji Reporting Services z Microsoft SharePoint Portal. 

 

Możliwość przechowywania raportów i zarządzania nimi we własnej przestrzeni pracy. 

 

Reporting Services umożliwia ustawienie subskrypcji, za pomocą której raport będzie trafiał 
na  adres  e-mail  jako  załącznik  lub  link  do  strony.  Format  raportu  może  być  dowolnie 
definiowany. 

Programowanie i rozszerzalność: 

 

Report  Definition  Language  (RDL)  –  RDL  opisuje  wszystkie  możliwe  elementy  raportu  za 
pomocą języka XML. Zachowanie każdego raportu w czasie wykonywania jest zdefiniowane 
w specjalnym pliku XML.  RDL jest językiem rozszerzalnym, można do niego dodawać własne 
definicje. 

 

SOAP  API  –  możliwość  dostępu  do  Reporting  Services  z  poziomu  napisanej  przez  siebie 
aplikacji. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 12 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 5/24 

 

Dostęp  URL  –  każdy  element  raportu  może  mieć  własny  adres  URL  i  być  osiągalny 
bezpośrednio z sieci. 

 

WMI  –  Reporting  Services  zawiera  własnego  dostawcę  WMI,  za  pomocą  którego  można 
zarządzać serwisem Report Server Windows. 

Przypadki użycia Reporting Services 

 

Raporty  biznesowe  –  wiele  przedsiębiorstw  używa  oprogramowania  raportującego 
dystrybuując  informację do użytkowników, którzy zajmują się podejmowaniem decyzji (np. 
wynajdywanie  nowych  możliwości  czy  analiza  zagrożeń).  Reporting  Services  zawiera  całe 
spektrum  gotowych  do  użycia  narzędzi,  za  pomocą  których  można  utworzyć,  udostępnić,  a 
także  zarządzać  raportami  w  danej  organizacji.  Narzędzie  administracyjne  i  autoryzacyjne 
zawierają: Report Designer, SQL Server Management Studio, Report Manager oraz Reporting 
Services Configuration. Użytkownicy biznesowi mogą używać Report Manager, SharePoint, a 
także  zwykłej  przeglądarki  internetowej,  żeby  oglądać  raporty  na  żądanie  lub  dokonać 
subskrypcji raportów tak, aby były dostarczane wprost do skrzynki poczty elekronicznej. 

 

Raporty  ad-hoc  –  użytkownicy,  którzy  pracują  z  danymi  biznesowymi  często  potrzebują 
możliwości utworzenia lub zmiany raportu „na szybko”.  Reporting Services ma wbudowany 
generator raportów, specjalne narzędzie za pomocą którego można wybrać wzorzec i model 
raportu,  przeciągnąć  pola  danych  i  elementy  graficzne  na  projekt  raportu,  utworzyć 
podstawowy raport i całość zapisać na serwerze. Raporty typu ad-hoc wymagają specjalnych 
predefiniowanych  modeli,  utworzonych  w  generatorze  modeli,  a  następnie  zapisanych  na 
serwerze do dalszego wykorzystania. 

 

Wbudowane raporty – istnieje możliwość wykorzystania Reporting Services, aby w napisanej 
przez siebie aplikacji zapewnić mechanizmy raportowania. Aby było to możliwe, należy użyć 
generatora raportów do stworzenia raportu dla danych dostępnych publicznie lub z aplikacji, 
a  następnie  za  pomocą  API  zdefiniować  dostępność  i  zachowanie  wszystkich  elementów 
raportu,  który  ma  być  załączony  do  tworzonej  aplikacji.  Jako  fragment  aplikacji  należy 
umieścić bazę danych, na której zbudowany został raport, oraz inne konieczne metadane. W 
czasie  wykonywania  aplikacji  jej  kod  wywołuje  Report  Server  Web  Service,  poprzez  który 
otrzymuje  się  dane  dotyczące  raportu.  Jeśli  tworzona  aplikacja  nie  wymaga  pełnej 
funkcjonalności, do przeglądania raportu można wykorzystać zwykła kontrolkę RaportViewer 
dostępną w Visual Studio 2005. 

 

Integrowanie  raportów  –  ponieważ  raporty  często  prezentują  dane  z  wielu  źródeł,  bardzo 
użyteczne  jest  integrowanie  wielu  źródeł  danych  na  jednym  raporcie.  Dlatego  zamiast 
wykonywać  nowy  raport  dla  każdego  źródła  danych  często  dużo  bardziej  użyteczne  jest 
dodawanie  danych  do  jednego  raportu  i  wyświetlanie  ich  za  pomocą  zestawu  kontrolek  i 
elementów graficznych. 

 

Raportowanie  przez  WWW  –  dla  pracowników,  którzy  nie  pracują  w  centrali,  ale  np.  w 
biurach  regionalnych,  można  udostępniać  raporty  poprzez  sieć  WWW,  ale  należy  wtedy 
zwrócić szczególną uwagę na bezpieczeństwo.  

 

Dostosowywanie  środowiska  Reporting  Services  do  własnych  wymagań  –  narzędzie  i 
aplikacje  domyślnie  dostarczane  z  Reporting  Services  są  oparte  na  interfejsie 
programistycznym  i  dostępne  dla  wszystkich  użytkowników.  Oznacza  to,  że  domyślnie 
dostarczone narzędzie można zastąpić dowolnymi innymi, dostępnymi lub napisanymi przez 
samego siebie. Do tego właśnie celu służy WMI Reporting Services. 

 

Rozszerzanie dostępnej funkcjonalności – Reporting Services zostało zaprojektowane tak, by 
można  było  je  dowolnie  rozszerzać.  Istnieje  możliwość  tworzenia  własnych  rozszerzeń  dla 
wsparcia  dodatkowych  typów  źródeł  danych,  dostarczanie  raportów,  a  także  ich 
bezpieczeństwa.  Złożoność  procesu  tworzenia  dodatkowych  rozszerzeń  zależy  głównie  od 
stopnia  skomplikowania  danego  rozszerzenia,  a  także  jego  funkcjonalności.  Więcej  na  ten 
temat można dowiedzieć się sięgając do dokumentacji RDL. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 12 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 6/24 

Przykładowe rozwiązanie 

W  pierwszej kolejności  należy  stworzyć  nowy  raport  odpowiedniego typu.  Najwygodniej  posłużyć 
się  nowym  narzędziem  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  określenie  źródła  danych  dla  naszego  raportu.  Możemy  skorzystać  z 
dowolnych  źródeł  dostępnych  w  naszym  systemie  bazodanowym.  W  typowej  sytuacji  źródłem 
będzie baza danych umieszczona na firmowym serwerze SQL. Tutaj także doprecyzowujemy zakres 
danych poprzez podanie odpowiedniego zapytania SQL typu SELECT.  
 

 

Rys. 3 Wskazanie serwera SQL jako źródła danych 

Po utworzeniu połączenia z bazą danych możemy przystąpić do modelowania wizualnego wyglądu 
raportu. Jak pokazano na rysunku 4 metodą ‘przeciągnij i upuść’ przesuwamy interesujące nas pola 
do głównego okna programu.  

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 12 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 7/24 

 

 

 

Rys. 4 Modelowanie raportu 

Oczywiście  najważniejsze  są  pola  reprezentujące  poszczególne  kolumny  danych  z  bazy.  Stanowią 
one trzon raportu, ich wybór musi być przemyślany. 

 

Rys. 5 Ustalanie nazw i zawartości kolumn raportu 

W  każdej  chwili  możemy  podejżeć jak w  danym momecie  będzie wyglądał  nasz  raport od  strony 
odbiorcy.  Jest  to  przydatne  szczególnie  wówczaj,  gdy  testujemy  różne  pomysły  na  prezentację 
strony  graficznej  raportu.  Rysunek  6  ilustruje  podgląd  prostego  raportu  we  wczesnej  fazie 
konstrukcji. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 12 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 8/24 

 

Rys. 6 Podgląd 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 
można porównać do konstrukcji arkusza danych w arkuszu kalkulacyjnym. 

 

Rys. 7 Dodawanie kolumn do raportu 

Każde  z  dodanych  pól  reprezentuje  grupę  danych  z  bazy.  Grupę  tą  można  dowolnie  zmieniać 
poddawać  przekształceniom  zaglądając  do  właściwości  danego  pola.  Rysunek  8  ilustruje 
właściwości  pola  Nazwisko,  które  odwołuje  się  do  odpowiedniego  atrybutu  wskazanej  tabeli  w 
bazie danych PraceDyplomowe. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 12 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 9/24 

 

Rys. 8 Ustalanie zawartości nowych kolumn 

Właściwości  danego  pola  nie  tylko  wskazują  skojarzone  źródło  danych  ale  także  pozwalają  na 
rozbudowaną  manipulację  tymi  danymi.  Konwersja,  wyliczanie,  zmiana  wyglądu  czy  formatu 
wyświetlania  danych  dokonywana  jest  poprzez  wpisanie  (lub  wybranie  z  menu  kontekstowego) 
odpowiedniego  wyrażenia  w  polu  Expression.  Przykładowo  zastosowanie  agregacji  uśredniającej 
dane z powiązanej bazy ilustruje rysunek 9. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 12 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 10/24 

 

Rys. 9 Dodanie funkcji agregującej do nowego pola raportu 

Zmiana formatu wyświetlania daty także nie jest sprawą skomplikowaną. Odpowiednie wyrażenie 
można zbudować poprzez kilka kliknięć myszką. 

 
 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 

Rys. 

Po  ustaleniu  wszystkich  pól  i  ich  właściwości  nadeszla  pora  do  publik
odbiorców.  Publikacja  przebiega  w  dwóch  etapach:  generowanie  finalnej  wersji  raportu  oraz 
przesłanie go na wskazany serwer WWW. Serwer stron WWW musi być wcześniej przygotowany (a 
z  pewnością  musimy  posiadać  na  nim  odpowiednie  u
Adres URL serwera należy podać w
Wygodniej  i  zapobiegliwej  jest  jednak
raportującego używając Reporting S
Jak  pokazano  na  rysunku  1
WWW. 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Instalacja i konfiguracja MS SQL Server 2008

Strona 11/24 

Rys. 10 Ustalanie formatu wyświetlania daty w polu raportu 

Po  ustaleniu  wszystkich  pól  i  ich  właściwości  nadeszla  pora  do  publikacji  raportu  dla  właściwych 
odbiorców.  Publikacja  przebiega  w  dwóch  etapach:  generowanie  finalnej  wersji  raportu  oraz 
przesłanie go na wskazany serwer WWW. Serwer stron WWW musi być wcześniej przygotowany (a 
z  pewnością  musimy  posiadać  na  nim  odpowiednie  uprawnienia  do  zamieszczania  kodu  HTML). 
Adres URL serwera należy podać w polu TargetServerURL w narzędziu Business Intelligence Studio. 
Wygodniej  i  zapobiegliwej  jest  jednak  dokonać  tego  wraz  z  konfiguracją  całego  serwera 

Reporting Services Configuration Manager z grupy SQL Server 2008.

Jak  pokazano  na  rysunku  11  Gotowy  raport  możemy  obejżeć  w  dowolnej  przeglądarce  stron 

Moduł 12 

Instalacja i konfiguracja MS SQL Server 2008 

 

 

acji  raportu  dla  właściwych 

odbiorców.  Publikacja  przebiega  w  dwóch  etapach:  generowanie  finalnej  wersji  raportu  oraz 
przesłanie go na wskazany serwer WWW. Serwer stron WWW musi być wcześniej przygotowany (a 

prawnienia  do  zamieszczania  kodu  HTML). 

Business Intelligence Studio. 

dokonać  tego  wraz  z  konfiguracją  całego  serwera 

z grupy SQL Server 2008. 

Gotowy  raport  możemy  obejżeć  w  dowolnej  przeglądarce  stron 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 12 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 12/24 

 

 

Rys. 11 Podgląd strony WWW z raportem 

 

Porady praktyczne 

 

W niektórych systemach usługa raportowania nie jest standardowo zainstalowana z MS SQL 
Server. Dodaj tę usługę osobno lub poproś administratora systemu o doinstalowanie. 

 

Przed  przystąpieniem  do  pracy  z  serwerem  raportującym  upewnij  się,  że  usługa  Reporting 
Services  jest  włączona  w  systemie.  Unikniesz  dzięki  temu  długiego  szukania  przyczyn 
odmowy generowania raportu. 

 

Dla  często  generowanych  typów  raportów  stwórz  swoją  bazę  szablonów  raportów. 
Znajdować  się  w  niej  będą  raporty  obejmujące  swoim  zakresem  najczęstsze  zapytania  do 
bazy. Zawsze będą pod ręką, a ich modyfikacja jest bardzo łatwa. 

 

Jeżeli  nie  potrafisz  szybko  stworzyć  zapytania  SQL,  posłuż  się  graficznym  narzędziem  do 
konstrukcji zapytań. Aby go użyć, jako połączenie z serwerem SQL wybierz ODBC. 

 

Upewnij się, że posiadasz dostęp do konta uprawnionego do publikacji raportów na serwerze 
WWW.  Bez  tych  praw  będziesz  mógł  tylko  podejrzeć  raporty  w  narzędziu  Bussines 
Intelligence Development Studio. 

 

Zadbaj  o  dostępność  odpowiednio  przygotowanego  serwera  WWW.  Serwer  taki  powinien 
być  dostępny  z  punktu  widzenia  narzędzia  raportującego  oraz  widoczny  dla  Twoich 
odbiorców raportów. 

Uwagi dla studenta 

Jesteś przygotowany do realizacji laboratorium jeśli: 

 

rozumiesz, co oznacza budowa raportu typu ad-hoc  

 

rozumiesz zasadę działania generowania raportu na serwerze WWW 

 

umiesz zdefiniować rolę języka RDL 

 

umiesz podać przykład serwisów, z którymi Reporting Server dobrze się integruje. 

Pamiętaj  o  zapoznaniu  się  z  uwagami  i  poradami  zawartymi  w  tym  module.  Upewnij  się,  że 
rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego 
w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 12 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 13/24 

Dodatkowe źródła 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
O’Reilly, 2007  

4.

 

http://www.wss.pl 

 

 

background image

Włodzimierz Dąbrowski, Przemysław 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  źródło 
danych, które zazwyczaj wykorzystuje do eksperymentów. Postanowiłeś użyć Reporting Services do 
wydobycia i prezentacji danych z bazy PraceDyplomowe. 

Zadanie 

Tok postępowania 

1.

 

Nawiązywanie 

połączenia z SQL 
Server 2008 

 

Zaloguj  się  do  maszyny  wirtualnej  BD  jako  użytkownik  Administrator  z 
hasłem P@ssw0rd

 

Kliknij  Start.  Z  grupy  programów  Microsoft  SQL  Server  2008  uruchom 
SQL Server Management Studio

 

W oknie logowania kliknij Connect

2.

 

Tworzenie 

nowego raportu 

 

Kliknij  Start.  Z  grupy  programów  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  następnie  wprowadź  nazwę 
raportu: RS_Raport1.rdl.  

 

kliknij Add. 

 

Następnie  należy  utworzyć  połączenie  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

background image

Włodzimierz Dąbrowski, Przemysław 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 źródła danych 

 

W  oknie  Connection  Properties/Server  Name  wybierz  nazwę  serwera, 
na którym zainstalowana jest baza danych (EVALUATION).  

 

W polu Select or enter database name wybierz bazę PraceDyplomowe. 

 

Rys. 14 Wskazanie bazy danych jako źródła danych 

 

Zatwierdź klikając przycisk OK, a następnie 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 przeciągnij obiekt Table na środek ekranu. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 12 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 16/24 

 

Rys. 15 Modelowanie raportu 

 

Kliknij zakładkę Report Data. 

 

Z  okna  Report  Data  przeciągnij  pole  Data  do  pierwszej  kolumny 
stworzonej tabeli. 

 

Przeciągnij pole Temat do środkowej kolumny. 

 

Przeciągnij pole Ocena do trzeciej kolumny. 

 

Rys. 16 Ustalanie nazw i zawartości kolumn raportu 

 

Aby zobaczyć wygenerowany raport, wybierz zakładkę Preview

4.

 

Grupowanie 

danych 

 

Aby  dodać  grupę  do  raportu  w  tabeli,  kliknij  prawym  klawiszem myszy 
na szarą obwódkę tabelki na wysokości drugiego wiersza.   

 

Z menu wybierz DetailsGroup Group -> Properties

background image

Włodzimierz Dąbrowski, Przemysław 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

 

następnie kliknij przycisk Add

 

w polu Group On wybierz opcję [Nazwisko]

 

następnie kliknij przycisk Add

 

w polu And On wybierz opcję [Imie]. 

 

Rys. 18 Wybór danych w obrębie grupy 

 

W zakładce Sorting kliknij przycisk Add

 

następnie w polu Sort By wybierz opcję [LastName]Order A to Z.  

 

Kliknij przycisk Add i w polu Then By wybierz opcję [FirstName]Order 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 12 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 18/24 

A to Z.  

 

Zatwierdzić kliknięciem przycisku OK

 

Rys. 19 Wybór danych w obrębie grupy 

 

W tym celu należy kliknij prawym przyciskiem myszy na szarą ramkę nad 
kolumną OrderDate

 

z menu wybierz Insert Column -> Left. 

 

Rys. 20 Dodawanie kolumn do raportu 

background image

Włodzimierz Dąbrowski, Przemysław 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 zawartości nowych kolumn 

 

Zatwierdź kliknięciem przycisku OK

 

Kliknij przycisk Preview

 

Kolejnym  krokiem  będzie  pogrupowanie  wyników  wg  nazwiska,  a 
następnie daty obrony.  

 

Kliknij  prawym  przyciskiem  myszy  na  szarą  ramkę  wokół  tabelki  na 
wysokości drugiego wiersza. 

 

Z menu wybierz Tabla1_groupa1 Group -> Properties

 

Następnie kliknij w oknie Tablix Group Properties przycisk Add 

 

w nowym polu Add On wybierz wartość Order Date

background image

Włodzimierz Dąbrowski, Przemysław 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 
agregujących 

 

Kliknij prawym klawiszem myszy na szarą obwódkę tabeli na wysokości 
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  zakładkę  Common 
Functions -> Aggregate 

 

następnie w polu Item wybierz Avg.  

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 

6.

 

Formatowanie 

wyświetlanych 
danych 

 

kliknij prawym klawiszem myszy na komórkę zawierającą 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 klikając przycisk 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Instalacja i konfiguracja MS SQL Server 2008

Strona 21/24 

kliknij prawym klawiszem myszy na komórkę zawierającą 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 wyświetlania daty w polu raportu

Analogicznie  można  przeprowadzić  formatowanie  pola,  na  którym 
wyświetlana jest ilość pieniędzy (Number -> Currency
pól. 

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 klikając przycisk Close.  

Moduł 12 

Instalacja i konfiguracja MS SQL Server 2008 

kliknij prawym klawiszem myszy na komórkę zawierającą formułę daty 

> Date. 

 

Ustalanie formatu wyświetlania daty w polu raportu 

Analogicznie  można  przeprowadzić  formatowanie  pola,  na  którym 

> Currency), a także innych 

W  oknie  Solution  Explorer  kliknij  prawym  klawiszem  myszy  na 

czy w polu Configuration 

Release. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

ITA

-

101 Bazy Danych 

 

W polu 

 

Zatwierdź klikając przycisk 

 

Kliknij 

 

Jeśli  to  konieczne
umieszczania raportów na serwerze

 

Jeśli  wszystkie  czynności  zostały  wykonane  poprawnie
zostanie wyświetlona strona zawierająca raport.

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Instalacja i konfiguracja MS SQL Server 2008

Strona 22/24 

Rys. 25 Generowanie raportu 

W polu TargetServerURL podaj adres URL serwera raportującego

adres  URL  serwera  można  znaleźć  otwierając  Reporting  Services 
Configuration Manager w zakładce Web Service URL

Zatwierdź klikając przycisk OK
Kliknij Menu -> Debug -> Start without debugging
Jeśli  to  konieczne,  podaj  hasło  i  login  osoby  upoważnionej  do 
umieszczania raportów na serwerze. 

Rys. 26 Generowanie raportu 

Jeśli  wszystkie  czynności  zostały  wykonane  poprawnie
zostanie wyświetlona strona zawierająca raport. 

Moduł 12 

Instalacja i konfiguracja MS SQL Server 2008 

 

serwera raportującego.  

adres  URL  serwera  można  znaleźć  otwierając  Reporting  Services 
Configuration Manager w zakładce Web Service URL. 

without debugging  

podaj  hasło  i  login  osoby  upoważnionej  do 

 

Jeśli  wszystkie  czynności  zostały  wykonane  poprawnie,  automatycznie 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 12 

ITA

-

101 Bazy Danych 

 

Instalacja i konfiguracja MS SQL Server 2008 

Strona 23/24 

 

Rys. 27 Podgląd strony serwera WWW z raportami 

 

Kliknij  na  odnośnik  do  raportu.  Raport  będzie  wygenerowany  i 
wyświetlony w oknie przeglądarki. 

 

 

 

background image

Włodzimierz Dąbrowski, Przemysław 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  narzędzia  raportującego  wypadły  pomyślnie.  Dyrektor  Działu  Marketingu 
firmy  National  Insurance  polecił  przygotować  kilka  raportów  o  stanie  sprzedaży  kluczowych 
produktów. Uzyskałeś dostęp do bazy AdventureWorks, w której przechowywane są informacje 
m.in. na temat pracowników, sprzedaży, produktów i kluczowych transakcji. Twoim zadaniem jest 
przygotowanie  zwięzłych  i  efektownych  raportów  zawierających  dane  z  ostatniego  miesiąca  (lub 
kwartału) o: 

 

Sprzedanych produktach 

 

Sprzedawcach 

 

Zawartych transakcjach  

 

Wielkości sprzedaży 

 

Miejscach największej sprzedaży 

 

Producentach najpopularniejszych produktów 

Raporty  należy  opublikować  w  firmowej  sieci  intranet  na  wskazanym  (domyślnym)  serwerze 
WWW. Do utworzenia i publikacji raportu należy użyć narzędzia Reporting Services. 

background image

 

 

ITA-101 Bazy Danych 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 13 

Wersja 1.0 

Budowa interfejsu 

Spis treści 

Budowa interfejsu ................................................................................................................................ 1 

Informacje o module ............................................................................................................................ 2 

Przygotowanie teoretyczne ................................................................................................................. 3 

Przykładowy problem .................................................................................................................. 3 

Podstawy teoretyczne.................................................................................................................. 3 

Przykładowe rozwiązanie ............................................................................................................. 5 

Porady praktyczne ....................................................................................................................... 8 

Uwagi dla studenta ...................................................................................................................... 9 

Dodatkowe źródła informacji....................................................................................................... 9 

Laboratorium podstawowe ................................................................................................................ 11 

Problem 1 (czas realizacji 45 minut) .......................................................................................... 11 

Laboratorium rozszerzone ................................................................................................................. 16 

Zadanie 1 (czas realizacji 90 min) ............................................................................................... 16 

 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 13 

ITA-101 Bazy Danych 

 

Budowa interfejsu 

Strona 2/16 

Informacje o module 

Opis modułu 

W  module  tym  zobaczysz,  jak  napisać  aplikację,  która  będzie  wyciągała 
informacje  z  bazy  danych  prac  dyplomowych.  Dowiesz  się,  jak  za  pomocą 
Visual Studio utworzyć bazę danych, połączyć się z nią i wprowadzić do niej 
dane.  Następnie  zobaczysz,  jak  stworzyć  aplikację  Windows,  która  będzie 
korzystała z tych danych. 

Cel modułu 

Celem modułu  jest  zapoznanie  czytelnika  z  podstawami  programowania w 
Visual  Studio  2008  w  takim  stopniu,  żeby  potrafił  samodzielnie  stworzyć 
aplikację dostępową do danych zgromadzonych w bazie danych. 

Uzyskane kompetencje 

Po zrealizowaniu modułu będziesz: 

 

potrafił samodzielnie stworzyć prostą aplikację dostępu do danych  

 

potrafił  stworzyć  bazę  danych  za  pomocą  Microsoft  Visual  Studio 
2008 

 

potrafił  nawiązać  połączenie  z  bazą  danych  Microsoft  SQL  Server 
2008 

 

umiał poruszać się po Microsoft Visual Studio 2008 

 

wiedział co to jest ADO.NET 

Wymagania wstępne 

Przed przystąpieniem do pracy z tym modułem powinieneś: 

 

potrafić zaprojektować bazę danych 

 

potrafić zaimplementować bazę danych wraz z jej obiektami 

 

potrafić tworzyć proste procedury składowane i wyzwalacze 

 

potrafić definiować użytkowników i nadawać im uprawnienia 

Mapa zależności modułu 

Zgodnie  z  mapą  zależności  przedstawioną  na  rys.  1,  przed  przystąpieniem 
do  realizacji  tego  modułu  należy  zapoznać  się  z  materiałem  zawartym 
w modułach 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 zależności modułu 

 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 13 

ITA-101 Bazy Danych 

 

Budowa interfejsu 

Strona 3/16 

Przygotowanie teoretyczne 

Przykładowy problem 

Ostatnim  etapem  wytwarzania  bazy  danych  wraz  z  dostępem  do  niej  z  poziomu  aplikacji  jest 
konstrukcja  interfejsu  użytkownika.  Istnieje  wiele  metod  i  narzędzi  do  tworzenia  graficznego 
interfejsu  użytkownika.  Począwszy  od  rozwiązań  prostszych,  a  co  za  tym  idzie  przeważnie  nie 
wykorzystujących dobrodziejstw, jakie daje nam baza danych postawiona na SQL Server 2008, do 
rozwiązań profesjonalnych, wykorzystujących możliwości serwera bazodanowego. 

Jeżeli  baza  danych  została  profesjonalnie  zaprojektowana,  zaimplementowana  i  oprogramowana, 
to  wykorzystując  na  przykład  Microsoft  Visual  Studio  2008  jesteśmy  w  stanie  w  łatwy  sposób 
stworzyć  aplikację  dostępową  o  wysokim  poziomie  bezpieczeństwa  wykorzystując  wszystkie 
zaawansowane  mechanizmy  zabezpieczeń  dostępne  w  SQL  Server  2008.  Aplikacja  taka  będzie 
odporna  na  typowe  zagrożenia  typu  SQL  Injection,  gdyż  zapytania  zostaną  ukryte  w  procedurach 
składowanych, a zatem haker będzie widział jedynie, że po sieci przesyłane są pewne funkcje wraz z 
parametrami.  Należy  podkreślić  fakt,  iż  w  celu  stworzenia  bezpiecznej  bazy  danych  i  aplikacji 
dostępowej wymagana jest ciągła współpraca różnych członków zespołu projektowego, począwszy 
od  projektanta,  administratora  i  programisty  bazy  danych,  poprzez  projektanta  interfejsu 
użytkownika, a skończywszy na projektancie i programiście aplikacji dostępowej. 

Podstawy teoretyczne 

Rzadko  wprowadza  się  dane  do  bazy  za  pomocą  SQL  Server  2008  za  pomocą  SQL  Server 
Management  Studio.  Zwykle  daje  się  możliwość  wprowadzania  danych  użytkownikom  za  pomocą 
aplikacji  dostępowej  do  bazy  danych.  Dane  można  również  importować  z  różnych  źródeł 
zewnętrznych lub tworzyć je za pomocą skryptów SQL, co zostało przedstawione we wcześniejszych 
modułach. 

W  dalszej  części  skoncentrujmy  się  na  tworzeniu  aplikacji  Windows,  która  komunikuje  się  z  SQL 
Server 2008 korzystając z ADO.NET. 

Co to jest ADO.NET 

ADO.NET zapewnia jednolity dostęp zarówno do źródeł danych, takich jak na przykład SQL Server 
2008,  jak  również  źródeł  danych  publikowanych  za  pomocą  OLE DB  lub  XML.  Należy  zauważyć,  iż 
aplikacje, które współdzielą dostęp do danych, mogą korzystać właśnie z ADO.NET w celu łączenia 
się ze źródłami, pobierania danych oraz manipulowania nimi. 

Siłą  ADO.NET  jest  wyraźne  rozdzielenie  dostępu  do  danych  od  manipulowania  danymi  na 
niezależnie  odseparowane  składniki.  Składniki  te  mogą  być  wykorzystywane  razem  lub  osobno. 
ADO.NET  wykorzystuje  tzw.  dostawców  danych,  za  pomocą  których  można  tworzyć  połączenia  z 
bazami  danych,  wykonywać  polecenia  i  odbierać  wyniki.  Wyniki  te  mogą  po  pierwsze  być 
przetwarzane bezpośrednio, a po drugie mogą trafiać do zbioru danych, tzw. obiektów DataSet. 
W  takiej  sytuacji  dane  są  udostępniane  użytkownikom  w  dowolny  sposób.  Warto  wspomnieć,  że 
obiekty  DataSet  można  wykorzystywać  niezależnie  od  dostawców  ADO.NET  do  lokalnego 
zarządzania danymi oraz w aplikacjach wczytujących dane w formacie XML. 

Klasa  ADO.NET  znajduje  się  w  podzespole  System.Data.dll  i  jest  zintegrowana  z  klasami  XML 
znajdującymi się w podzespole System.Xml.dll. W momencie kompilacji kodu odwołującego się do 
przestrzeni  nazw 

System.Data

  należy  wskazać  zarówno  System.Data.dll,  jak  również 

System.Xml.dll

ADO.NET  zapewnia  programistom  tworzącym  aplikacje  w  środowisku  .NET  Framework  sposób 
dostępu  do  danych  oraz  coś  bardzo  ważnego  –  możliwość  programowego  manipulowania  nimi. 
Manipulacja  oczywiście  może  odbywać  się  również  na  innych  źródłach  danych,  na  przykład  na 
źródle XML. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 13 

ITA-101 Bazy Danych 

 

Budowa interfejsu 

Strona 4/16 

Dostęp do danych z użyciem ADO.NET 

Tworząc aplikacje korzystające z ADO.NET można spotkać się z różnymi wymaganiami dotyczącymi 
pracy z danymi. W pewnych sytuacjach wystarczy wyświetlenie danych w formularzu, innych razem 
trzeba opracować na przykład sposób wymiany informacji z inną firmą. 

Niezależnie  od  tego,  co  zamierzamy  robić  z  danymi,  warto  poznać  kilka  podstawowych  zasad 
dotyczących  obsługi  danych  w  ADO.NET.  Być  może  nigdy  nie  będziemy  musieli  znać  szczegółów 
obsługi  danych,  natomiast  kluczową  sprawą  jest  zrozumienie  architektury  danych  w  ADO.NET, 
poznanie podstawowych komponentów oraz sposobu ich współpracy. 

ADO.NET a uwierzytelnianie otwartego połączenia z bazą danych 

W tradycyjnych aplikacjach typu klient/serwer komponenty ustanawiały połączenie z bazą danych i 
utrzymywały to połączenie przez cały czas działania aplikacji. Z kilku względów metoda ta nie jest 
zbyt praktyczna: 

 

Otwarte  połączenie  z  bazą  danych  zajmuje  wiele  zasobów  systemowych,  które  mogłyby 
zostać  wykorzystane  do  innych  celów.  W  wyniku  utrzymywania  stałego  połączenia  z  bazą 
danych  zmniejsza  się  liczba  równocześnie  utrzymywanych  połączeń.  Obciążenie 
spowodowane utrzymywaniem otwartych połączeń zmniejsza ogólną wydajność aplikacji. 

 

Bardzo trudne jest skalowanie aplikacji, która wymaga otwartego połączenia z bazą danych. 
Należy  pamiętać  o  tym,  że  aplikacja,  która  nie  jest  w  pełni  skalowalna,  może  na  przykład 
dobrze  działać  z  czterema  użytkownikami,  ale  w  żaden  sposób  nie  poradzi  sobie  z  setką 
równoczesnych  użytkowników.  Wymóg  łatwej  skalowalności  dotyczy  szczególnie  aplikacji 
internetowych,  gdyż  obciążenie  witryny  internetowej  może  w  bardzo  niewielkim  czasie 
zwiększyć się nawet o kilka rzędów wielkości. 

 

W  aplikacjach  internetowych  komponenty  nie  są  ze  sobą  połączone.  W  momencie  kiedy 
serwer  zakończy  przetwarzanie  i  transmisję  dokumentu  w  odpowiedzi  na  żądanie 
przeglądarki,  pomiędzy  serwerem  a  przeglądarką  nie  jest  utrzymywane  żadne  połączenie. 
Połączenie  jest  wznawiane  w  chwili  kolejnego  żądania,  a  zatem  utrzymywanie  otwartego 
połączenia  z  bazą  w  żaden  sposób  się  nie  opłaca,  ponieważ  nie  jesteśmy  w  stanie 
przewidzieć, czy klient będzie jeszcze potrzebował dostępu do danych. 

 

Model,  którego  działanie  oparte  jest  na  utrzymywaniu  otwartych  połączeń  ze  źródłami 
danych  może  przyczynić  się  do  tego,  że  wymiana  danych  będzie  skomplikowana  i 
niepraktyczna.  Jeśli  dwa  komponenty  muszą  mieć  dostęp  do  tych  samych  danych,  obydwa 
muszą  utrzymywać  połączenie  ze  źródłem  danych  lub  musi  być  dostępny  jakiś  inny  sposób 
przekazywania danych. 

Między  innymi  z  wyżej  wymienionych  powodów  dostęp  do  danych  w  ADO.NET  został 
zaprojektowany  w  taki  sposób,  aby  przede  wszystkim  oszczędnie  korzystać  z  połączeń.  A  zatem 
aplikacje utrzymują połączenie z bazą danych tylko na czas odczytywania lub zapisywania danych. 
Ponieważ  bazy  danych  nie  muszą  utrzymywać  nieaktywnych  połączeń,  mogą  obsłużyć  znacznie 
więcej użytkowników. 

Współpraca z bazami danych za pomocą obiektów Command 

Jednym  z  najpowszechniejszych  zadań  dostępu  do  danych  jest  odczytanie  danych  z  bazy,  a 
następnie  wykonanie  na  nich  jakichś  operacji.  W  czasach  wielkiej  liczby  informacji  bardzo  często 
dochodzi  do  sytuacji,  że  aplikacja  musi  przetworzyć nie  jeden  rekord,  lecz  ich cały  zbiór.  W wielu 
przypadkach przetwarzane dane pochodzą nie z jednej, lecz z wielu tabel. 

Rekordy,  które  czytane  są  przez  aplikację,  traktowane  są  jako  grupa.  Na  przykład  aplikacja  może 
zezwolić użytkownikowi na przejrzenie listy wszystkich autorów o nazwisku Kowalski, a następnie 
sprawdzić  wszystkie  książki  napisane  przez  jednego  Kowalskiego,  potem  przez  kolejnego 
Kowalskiego i tak dalej. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 13 

ITA-101 Bazy Danych 

 

Budowa interfejsu 

Strona 5/16 

Takie  każdorazowe  odwoływanie  się  do  bazy  danych,  gdy  aplikacja  potrzebuje  kolejnego  rekordu 
do  przetworzania  jest  niepraktyczne.  W  myśl  tego,  co  zostało  powiedziane  wcześniej,  takie 
podejście  może  zniwelować  zalety  płynące  z  utrzymywania  małej  liczby  jednocześnie  otwartych 
połączeń. Pewnym rozwiązaniem jest tymczasowe przechowywanie odczytanych z bazy rekordów i 
praca na takim tymczasowym zbiorze. 

Na  tym  właśnie  polega  idea  obiektu  DataSet.  DataSet  jest  swego  rodzaju  buforem,  w  którym 
znajdują  się  przechowywane  rekordy  pobrane  z  bazy  danych.  Obiekt  ten  działa  podobnie  do  
wirtualnej  składnicy  danych,  a  zatem  zawiera  jedną  lub  więcej  tabel.  Tabele  te  są  fragmentami 
tabel rzeczywistej bazy danych. Ponadto obiekt DataSet posiada informacje o relacjach pomiędzy 
tymi tabelami oraz o ograniczeniach wartości danych, jakie mogą się znaleźć w tych tabelach. 

Należy pamiętać, że dane przechowywane w DataSet nie są pełnym odzwierciedleniem fizycznej 
tabeli. Są one niewielkim podzbiorem danych przechowywanych w bazie. Zaletą jednak jest to, że 
można z nimi pracować w sposób podobny do pracy z danymi z rzeczywistej bazy danych. 

Czasem  zdarza  się  że aplikacja musi  zapisać  dane  do  bazy. Dane te  można  przetwarzać wewnątrz 
obiektu DataSet, a następnie przesłać je do podstawowej bazy danych. 

Dane przechowywane w formacie XML 

Wszystkie dane są przesyłane ze składnicy danych do DataSet, a następnie z DataSet do innych 
komponentów.  ADO.NET  do  przesyłania  danych  wykorzystuje  format  XML.  Pliki  XML  mogą  być 
używane jak każde inne źródło danych. Ich zawartość można ł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  wysyłają  je  do  innego  komponentu.  Następnie 
komponent taki może wywołać inne API, by ponownie wczytać XML do obiektu DataSet. 

Oparcie protokołów wymiany danych na XML przynosi wiele korzyści: 

 

XML jest standardem przemysłowym, a zatem komponenty obsługi danych w jednej aplikacji 
mogą  wymieniać  dane  z  komponentami  w  innej  aplikacji.  Warunkiem  jest  obsługa  przez 
aplikację formatu XML. 

 

XML  jest  formatem  tekstowym.  Danych  w  postaci  XML  nie  zawiera  informacji  binarnych,  a 
zatem można je przesyłać za pomocą dowolnego protokołu – na przykład HTTP. 

Przykładowe rozwiązanie 

Tworzenie bazy danych z poziomu Microsoft Visual Studio 2008 

Bazę danych, do której będziemy tworzyli aplikacje  dostępową, można stworzyć na dwa sposoby. 
Sposób  pierwszy  polega  na  definiowaniu  bazy  danych  wraz  z  jej  obiektami  z  poziomu  SQL  Server 
2008.  Sposób  ten  poznałeś  w  poprzednich  modułach.  Sposób  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. 
Następnie  w  oknie  Database  Explorer  klikamy  prawym  przyciskiem  myszy  Data  Connections  i 
wybieramy Add Connection, co pokazano na rys. 2. 

W  obrębie  okna  definicji  połączenia  z  bazą  danych  możemy  ustawić  źródło  danych  oraz  wskazać 
istniejący lub stworzyć nowy plik bazy danych. W kolejnym etapie określamy sposób autoryzacji. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 13 

ITA-101 Bazy Danych 

 

Budowa interfejsu 

Strona 6/16 

 

Rys. 2 Okno definicji połączenia z bazą danych 

Stwórzmy testową bazę danych Dziekanat. Wynik pokazano na rys. 3. 

 

Rys. 3 Testowa baza danych dziekanat 

Definicja tabeli, diagramu, widoku 

W kolejnym kroku należy zdefiniować podstawowe obiekty bazy danych – tabele i widoki. W tym 
celu  klikamy  prawym  przyciskiem  myszy  katalog  Tables  i  wybieramy  Add  New  Table.  Tworzenie 
przykładowej tabeli Student pokazano na rys. 4. 

 

Rys. 4 Przykładowa tabela Student 

W  analogiczny  sposób  definiujemy  pozostałe  tabele  w  bazie  danych.  Następnie  wypełniamy  ją 
przykładowymi  danymi.  Ostatnim  krokiem  jest  stworzenie  przykładowego  widoku.  W  tym  celu 
klikamy prawym przyciskiem myszy zakładkę Views i wybieramy Add New View. Następnie w oknie 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 13 

ITA-101 Bazy Danych 

 

Budowa interfejsu 

Strona 7/16 

Add  Table  wybieramy tabele,  których  będziemy  używali  w  definiowanym  widoku.  Kolejny  krok  to 
wybór kolumn, które mają zostać użyte w definicji widoku. Na rys. 5 pokazano przykładowy widok 
na przedmioty, na które zapisani są studenci. 

 

Rys. 5 Definicja widoku na przedmioty, na które zapisani są studenci 

Tworzenie zestawu danych w Microsoft Visual Studio 2008 

Stwórzmy aplikację dostępową do zarządzania bazą danych przygotowaną w poprzednich krokach. 
Aby  utworzyć  obiekt  DataSet,  w  pasku  Data  Sources  klikamy  odsyłacz  Add  New  Data  Sources
Pierwszy  ekran  konfiguracji  źródła  danych  umożliwia  wybór  typu  źródła  danych,  które  chcemy 
połączyć. Wybieramy Dziekanat.mdf, co pokazano na rys. 6. 

 

Rys. 6 Wybór źródła danych 

Następnie wybieramy wszystkie obiekty z bazy danych, które mają zostać uwzględnione w obiekcie 
DataSet  –  zatem  wybieramy  wszystkie  tabele  i  widok.  W  wyniku  powyższych  operacji  projekt 
powinien wyglądać mniej więcej tak, jak na rys. 7. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 13 

ITA-101 Bazy Danych 

 

Budowa interfejsu 

Strona 8/16 

 

Rys. 7 Projekt aplikacji Dziekanat 

Następnie w panelu Data Sources wybieramy węzeł Przedmiot i klikamy wskazującą w dół strzałkę, 
rozwijając  listę.  Wybieramy  prezentację  danych  jako widok  siatki  danych.  Spowoduje  to  pobranie 
do  formularza  wszystkich pól  z  obiektu  DataSet w wielu  wierszach  w  postaci siatki  komórek, co 
pokazano na rys. 8. 

 

Rys. 8 Stworzony formularz 

W  celu  uruchomienia  aplikacji  należy  wybrać  przycisk  F5.  Wynik  skompilowanej  aplikacji 
przedstawia rys. 9. 

 

Rys. 9 Wynik działania aplikacji 

Porady praktyczne 

 

Jeśli korzystamy z obiektów SqlCommand z właściwością CommandType ustawioną na Text i 
przy ich pomocy przekazujemy do bazy danych informacje otrzymane od klienta, informacje 
te należy zawsze poddać procesowi walidacji. Niektórzy użytkownicy mogą próbować wysłać 
zmodyfikowane  lub  dodatkowe  polecenia  SQL  w  celu  zdobycia  dostępu  do  danych  lub 
uszkodzenia  bazy  danych.  Z  tego  względu  bardzo  ważne  jest,  żeby  zawsze  przed 
przekazaniem  do  bazy  wprowadzonych  przez  użytkownika  danych  przeprowadzić  proces 

background image

Włodzimierz Dąbrowski, Przemysław 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 
składowanych. 

 

Należy pamiętać, że DataSet jest tylko kontenerem przechowującym dane. Aby odczytać i 
zapisać  dane  z  bazy  należy  użyć  obiektu  DataAdapter.  DataAdapter  zawiera  jeden  lub 
więcej  obiektów  SqlCommand  używanych  do  wypełnienia  pojedynczej  tabeli  obiektu 
DataSet.  Obiekt  ten  zawiera  cztery  obiekty  SqlCommand  (do  pobierania,  dopisywania, 
uaktualniania i usuwania rekordów). 

 

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  definiujący  wewnętrzna  strukturę  zestawu  danych.  Pamiętaj,  że  zestaw 
danych jest przechowywany w pamięci reprezentującej jedną lub wiele tabel z bazy danych. 
ADO.NET będzie korzystał z pliku schematu przy współpracy z aplikacją. 

 

Przeważnie w projektach mamy jedna bazę danych, ale nie jest niczym niezwykłym potrzeba 
komunikowania się z dwiema lub więcej bazami danych. Z tego powodu połączenia z bazami 
danych  ułożone  są  w  drzewiastej  strukturze,  w  której  każda  baza  danych  jest 
reprezentowana przez osobny węzeł. 

 

Dopóki  nie  zapiszemy  projektu,  znajduje  się  on  w  tymczasowym  folderze.  Po  zapisaniu 
wszystkich plików projektu baza danych zostanie zapisana razem z innymi plikami projektu. 

 

Nie  wszystkie  kontrolki  Windows  można  podłączyć  do  źródeł  danych.  Te,  które  można, 
posiadają właściwości DataBindings. 

 

Po  przeciągnięciu  zestawu  danych  ponad  obszar  projektowania,  do  znajdującego  się  niżej 
szarego  panelu  są  dodawane  nowe  pozycje.  Dolna  część  obszaru  projektowania  nazywamy 
panelem  komponentów.  Visual  Studio  umieszcza  w  nim  kontrolki,  które  nie  posiadają 
graficznej reprezentacji. 

 

W  Visual  Studio  istnieje  możliwość  zastosowania  metody  „Smart  Defaults”.  Polega  ona  na 
sprawdzeniu,  czy  tabela  z  zestawu  danych  oprócz  ID  lub  klucza  głównego  zawiera  jakąś 
kolumnę typu tekstowego. Jeżeli tak, to kolumna ta jest podłączana 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,  które  umożliwiają  przygotowanie  w  pełni  działającej  aplikacji  bez  pisania  kodu 
źródłowego 

Uwagi dla studenta 

Jesteś przygotowany do realizacji laboratorium jeśli: 

 

rozumiesz co to jest ADO.NET 

 

rozumiesz na czym polega dostęp do danych poprzez ADO.NET 

 

potrafisz stworzyć prosta bazę danych korzystając z Visual Studio 2008 

 

potrafisz stworzyć prosty formularz obiektu typu tabela 

Pamiętaj  o  zapoznaniu  się  z  uwagami  i  poradami  zawartymi  w  tym  module.  Upewnij  się,  że 
rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego 
w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. 

Dodatkowe źródła informacji 

1.

 

Patrice Pelland, Projektuj sam. Microsoft Visual C# 2008, APN Promise,  

W książce autor w prosty i przejrzysty sposób prezentuje, jak należy poruszać się po 
Microsoft  Visual  Studio  2008,  jak  tworzyć  proste  projekty.  Pozycja  szczególnie 
polecana dla osób początkujących. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 13 

ITA-101 Bazy Danych 

 

Budowa interfejsu 

Strona 10/16 

2.

 

Kalen  Delaney,  Microsoft  SQL  Server  2005:  Rozwiązania  praktyczne  krok  po  kroku,  Microsoft 
Press, 2006  

W  książce  autor  w  przystępny  i  zrozumiały  sposób  przedstawia  podstawowe 
mechanizmy związane z bezpieczeństwem bazy danych przy założeniu dostępu do 
niej poprzez aplikację kliencką pisaną w Microsoft  Visual Studio. Pozycja polecana 
zarówno  dla  osób  początkujących,  jak  i  pragnących  poszerzyć  swoją  wiedzę  z  tej 
tematyki. 

3.

 

Nick Randolph, David Gardner, Professional Visual Studio 2008, Wrox, 2008 

W książce autor w prosty i przejrzysty sposób omawia zaawansowane mechanizmy 
dostępne w Microsoft Visual Studio 2008. Prezentuje, jak należy poruszać się w tym 
środowisku oraz jak tworzyć proste i zaawansowane projekty. W książce znajdziesz 
rozszerzony 

opis 

ADO.NET. 

Pozycja 

szczególnie 

polecana 

dla 

osób 

zaawansowanych,  chcących  poszerzyć  swoją  wiedzę  z  zakresu  programowania 
aplikacji klienckich. 

 

background image

Włodzimierz Dąbrowski, Przemysław 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. Właśnie dowiedziałeś się od swojego szefa, że 
firma  planuje  rozszerzenie  systemu  prac  dyplomowych,  którym  zarządza  na  Twoim  wydziale, 
dodając  nową  funkcjonalność  związaną  z  wyszukiwaniem  informacji  o  tym,  na  jakie  przedmioty 
chodzili  studenci  podczas  pięciu  lat  studiów.  Zadanie,  jakie  przed  Tobą  stoi,  to  zmodyfikowanie 
struktury fizycznej bazy danych oraz stworzenie modułu aplikacyjnego. 

Zadanie 

Tok postępowania 

1.

 

Utwórz 

projekt 

 

Uruchom Microsoft Visual Studio 2008, wybierając Start -> Programy -> 
Microsoft Visual C# 2008

 

Z  menu  głównego  wybierz  File  ->  New  Project  ->  Windows  Form 
Application

 

Nadaj nazwę dla projektu Dziekanat-aplikacja

2.

 

Utwórz bazę 

danych 

 

W obrębie 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 połączenia 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 

background image

Włodzimierz Dąbrowski, Przemysław 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 
węzeł 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. 

 

Połącz tabele związkami jak na rys. 14. 

 

Rys. 14 Diagram bazy danych Dziekanat 

5.

 

Zdefiniuj 

widok 

 

Przejdź do panelu Database Explorer, prawym przyciskiem myszy kliknij 
węzeł Views i wybierz Add New View

 

Wybierz  tabele  Student,  Przedmiot  i  Student_Przedmiot,  które 
potrzebne są do utworzenia widoku i kliknij Add

 

Kliknij  przycisk  Close,  aby  poinformować  Visual  Studio,  że  już  masz 
wszystkie potrzebne tabele. 

 

Zaznacz  kolumny,  które  chcesz  żeby  weszły  do  definiowanego  widoku. 
Wynik pokazano na rys. 15. 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski
ITA-101 Bazy Danych 

6.

 

Uwórz obiekt 

DataSet 

 

Przejdź  do  panelu 
Sources

 

Wybierz

 

 Wybier

 

Zaznacz opcję 

 

W
Finish

7.

 

Utwórz 

interfejs 
użytkownika 

 

Przejdź do panelu 
Label

 

W  oknie  właściwości  w  polu 
dziekanatu

 

Przejdź
TabCotrol

 

W  oknie  właściwości  w  polu 
Studenci
17

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

 

Strona 13/16 

Rys. 15 Definicja widoku 

Przejdź  do  panelu  Data  Sources  i  kliknij  odsyłacz 
Sources
Wybierz Database, a następnie 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 połączenie z bazą danych Dziekanat

Przejdź do panelu Toolbox, a następnie przeciągnij na
Label
W  oknie  właściwości  w  polu  Text  wpisz  Mini  aplikacja  obsługi 
dziekanatu.
 
Przejdź do panelu Toolbox, a następnie przeciągnij na 
TabCotrol.  
W  oknie  właściwości  w  polu  Text  dla  kolejnych 
Studenci,  Przedmioty  i  Na  jakie  przedmioty  uczęszczają  studenci
17). 

Moduł 13 

Budowa interfejsu 

 

i  kliknij  odsyłacz  Add  New  Data 

Next

przycisk Next

z  bazy  danych,  a  następnie  kliknij 

nowo  zdefiniowane  źródło 

 

Zdefiniowane połączenie z bazą danych Dziekanat 

przeciągnij na formularz obiekt 

Mini  aplikacja  obsługi 

a następnie przeciągnij na formularz obiekt 

kolejnych  zakładek  wpisz: 

Na  jakie  przedmioty  uczęszczają  studenci  (rys. 

 

background image

Włodzimierz Dąbrowski, Przemysław 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ń zakładkę Student

 

Kliknij wskazującą w dół strzałkę, rozwijając listę.  

 

Wybierz  Details  jako  prezentację  danych  i  przeciągnij  na  formularz  na 
zakładkę Studenci (rys. 18). 

 

Rys. 18 Zakładka „Studenci” 

 

Przejdź do panelu Data Sources i rozwiń zakładkę Przedmiot

 

Kliknij wskazującą w dół strzałkę, rozwijając listę.  

 

Wybierz  Details  jako  prezentację  danych  i  przeciągnij  na  formularz  na 
zakładkę Przedmiot (rys. 19). 

 

Rys. 19 Zakładka „Przedmioty” 

 

Przejdź do panelu Data Sources i rozwiń zakładkę  Na jakie przedmioty 
jest zapisany student

 

Kliknij wskazującą w dół strzałkę, rozwijając listę.  

 

Wybierz  DataGridView  jako  prezentację  danych  i  przeciągnij  na 
formularz  na  zakładkę  Na  jakie  przedmioty  uczęszczają  studenci  (rys. 
20). 

background image

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

Moduł 13 

ITA-101 Bazy Danych 

 

Budowa interfejsu 

Strona 15/16 

 

Rys. 20 Zakładka „Na jakie przedmioty uczęszczają studenci”  

 

Uruchom  aplikację  wybierając  przycisk  F5.  Wynik  skompilowanej 
aplikacji przedstawia rys. 21. 

 

Rys. 21 Wynik działania aplikacji 

 

 

 

background image

Włodzimierz Dąbrowski, Przemysław 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.  Właśnie  dowiedziałeś  się  od  swojego  szefa,  że 
firma  zarządzająca  bazą  AdventureWorks  planuje  rozszerzenie  i  modernizacje  systemu  w  celu 
spełnienia  pewnych  standardów.  W  związku  z  modernizacją  systemu  bazodanowego 
najprawdopodobniej  ulegną  zmianie  pewne  metody  wybierania  danych  w  celu  zapewnienia 
wyższego poziomu bezpieczeństwa. Dostaniesz dodatkowe procedury składowane i funkcje, które 
będziesz musiał wykorzystać w nowym module aplikacji klienckiej. 

Zadanie, jakie przed Tobą stoi, to:  

1.

 

Podjęcie decyzji, jakie procedury składowane powinny zostać napisane dla nowego modułu 
bazy danych oraz jak ich użyć w aplikacji klienckiej. 

2.

 

Podjęcie decyzji, jak ma wyglądać interfejs użytkownika. 

background image

 

 

ITA-101 Bazy danych 

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski 

DODATEK A 

Wersja 1.0 

Podstawy 

Spis treści 

Podstawy .............................................................................................................................................. 1 

Informacje o module ............................................................................................................................ 2 

Przygotowanie teoretyczne ................................................................................................................. 3 

Przykładowy problem .............................................................. Błąd! Nie zdefiniowano zakładki. 

Podstawy teoretyczne.................................................................................................................. 3 

Uwagi dla studenta .................................................................................................................... 11 

Dodatkowe źródła informacji..................................................................................................... 11 

 

 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Dodatek A 

ITA-101 bazy danych 

 

Podstawowe pojęcia 

Strona 2/11 

Informacje o module 

Opis modułu 

W  tym  module  zajmiemy  się  zebraniem  najważniejszych  informacji  na 
temat  baz  danych  niezbędnych  do  zrozumienia  i pełnego  wykorzystania 
dalszych  modułów.  Zebrane,  najważniejsze  pojęcia  nie  zastępują  pełnego 
wykładu  na  ten  temat  i nie  zwalniają  Cię  z przestudiowania  wykładu  lub 
podręcznika  z zakresu  baz  danych.  Mają  one  jedynie  na  celu  zebrać 
i utrwalić  najważniejsze  elementy  potrzebne  do  wykonywania  kolejnych 
modułów.  Zazwyczaj  pierwsze  zajęcia  laboratorium  są  zajęciami 
organizacyjnymi. 

Cel modułu 

Celem  modułu  jest  utrwalenie  i sprawdzenie  rozumienia  podstawowych 
pojęć  z baz  danych  oraz  przygotowanie  do  pracy  z kolejnymi  modułami 
kursu. 

Uzyskane kompetencje 

Po zrealizowaniu modułu będziesz: 

 

rozumiał czym jest baza danych, 

 

rozumiał na czym polega model relacyjnej bazy danych, 

 

umiał  swobodnie  poruszać  się  wśród  podstawowych  pojęć  baz 
danych. 

Wymagania wstępne 

Ten  moduł  nie  ma  wymagań  wstępnych.  Możesz  od  razu  rozpocząć  pracę 
z tym modułem. 

Mapa zależności modułu 

Przed  przystąpieniem  do  realizacji  tego  modułu  nie  jest  wymagane 
zapoznanie się z materiałem zawartym w innych modułach. 

 

 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Dodatek A 

ITA-101 bazy danych 

 

Podstawowe pojęcia 

Strona 3/11 

Przygotowanie teoretyczne 

Podstawy teoretyczne 

Na pewno pojęcie bazy danych nie jest dla Ciebie nowe. Pewnie każdy korzystał też z jakiejś bazy 
danych. Czy jednak zastanawiałeś się, co to jest baza danych? Od kiedy ludzie posługują się bazami 
danych?  Właśnie  na  te  i inne  podstawowe  pytania  dotyczące  pojęcia  baz  danych  spróbujemy 
odpowiedzieć w tym module. 

Zastanów  się,  co  rozumiesz  pod  pojęciem  bazy  danych,  co  to  takiego?  Zapisz  swoje  określenie, 
a następnie porównaj z naszym. 

Bazą  danych  (ang.  database)  będziemy  nazywać  trwały,  zamknięty  i dobrze  zorganizowany 
magazyn  danych.  Baza  danych  charakteryzuje  się  trzema  ważnymi  cechami:  trwałością
ograniczonością (zamkniętością) i dobrą organizacją (co dla kogo jest dobre jest rzeczą dyskusyjną 
– postaramy się jednak sprecyzować, co dla nas będzie oznaczać dobra organizacja magazynu). 

Trwałość bazy danych

 

Trwałość  oznacza,  że  dane  zapisane  w bazie  danych  są  w niej  zapisane  w sposób  nieulotny.  Nie 
można  zbudować  bazy  danych  w pamięci  operacyjnej  komputera,  gdyż  po  dołączeniu  zasilania 
dane  w niej  zapisane  są  tracone.  Na  trwały  magazyn  danych  dobrze  natomiast nadaje  się kamień 
(zapisy  dokonane w kamieniu  przetrwały tysiące  lat),  papier  (ten  nie  jest  już  tak  trwały) czy  dyski 
magnetyczne lub inne nośniki magnetooptyczne. Trwałość danych zapisanych w bazie danych jest 
bardzo ważnym postulatem. Wszystkie współczesne systemy baz danych muszą go spełniać.  

Ograniczoność bazy danych

 

Ograniczoność  oznacza,  że  w bazie  danych  nie  można  zapisać  zupełnie  dowolnych  danych.  Baza 
oparta jest na pewnym modelu rzeczywistości (modelu danych). Modele te mogą być bardzo różne 
i niektóre  z nich  pokrótce  omówimy  w dalszej  części.  Model  danych  definiowany  jest  przez 
projektanta  bazy  danych.  Określa on,  w jaki  sposób  dane  występujące  w rzeczywistości  (np.  dane 
adresowe studentów) będą reprezentowane w bazie. Przyjęty model ogranicza więc (determinuje) 
dane, które możemy trwale przechowywać w bazie.  

Dobra organizacja bazy danych

 

Aby  zbiór  danych  można  było  uważać  za  bazę  danych,  musi  on  być  odpowiednio  zorganizowany. 
Organizacja  ta  musi  zapewniać  możliwość  nie  tylko  sprawnego  umieszczania  danych  w bazie,  ale 
również możliwość odszukiwania i odczytywania danych już w niej zapisanych. Jeśli więc znalezienie 
danych zapisanych w magazynie wymaga od nas miesiąca przeglądania zapisanych danych, to taki 
magazyn nie może być uznany za bazę danych. 

Baza  danych  to  oczywiście  każdy  magazyn  danych  spełniający  powyższe  warunki.  Ludzkość 
dostrzegła  potrzebę  tworzenia  baz  danych  już  bardzo  dawno.  J.  Diamond  w swojej  książce  Guns, 
Germs and Steel: The Fastest of Human Societies
 twierdzi, że bazy danych istniały od czasów, kiedy 
cywilizacja  umeryjska  i egipska  zaczęły  korzystać  z pisma  klinowego  i hieroglifów  do  zapisu 
informacji  w formie  trwałej  i możliwej  do  odczytania  na  każde  żądanie.  Stosowane  w tamtych 
czasach nośniki danych były mało wygodne. Nasza cywilizacja przez całe wieki budowała swoje bazy 
danych  wykorzystując  jako  trwały  nośnik  danych  papier.  Bazy  „papierowe”  mają  jednak  bardzo 
wiele  wad,  takich  jak  duże  rozmiary  magazynu,  trudności  w wyszukiwaniu  danych,  brak 
wielodostępu  itd.  Do  budowy  i obsługi  baz  danych  nadają  się  natomiast  znakomicie  maszyny 
cyfrowe.  Dzisiaj  mówiąc  „baza  danych”  mamy  w zasadzie  na  myśli  komputerowe  bazy  danych. 
W dalszej  części  naszych  wykładów  pod  pojęciem  bazy  danych  będziemy  więc  rozumieli  bazę 
zorganizowaną i zarządzaną z wykorzystaniem komputera. 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Dodatek A 

ITA-101 bazy danych 

 

Podstawowe pojęcia 

Strona 4/11 

Gdzie i w jakim celu stosuje się bazy danych 

Bazy danych spotykamy właściwie na każdym kroku. Każdy na pewno korzystał z bazy papierowej 
takiej  jak  encyklopedia,  książka  telefoniczna  czy  kartoteka  w bibliotece.  Bazy  danych  są  też 
powszechne  w świecie  informatyki.  Większość  systemów  informatycznych  współpracuje  z bazami 
danych,  gdyż  muszą  one  przechowywać  dane.  Są  aplikacje,  których  głównym  zadaniem  jest 
przechowywanie, zarządzanie i udostępnianie danych. Potocznie są one nazywane bazami danych 
lub,  dla  podkreślenia  faktu  istnienia  odpowiednich  dodatków  ułatwiających  pracę,  aplikacjami 
bazodanowymi.  Należy  jednak  mieć  świadomość,  że  znakomita  większość  aplikacji  to  aplikacje, 
które współpracują z bazami danych mniej lub bardziej skomplikowanymi. 

Zastanowimy się teraz nad najważniejszymi cechami bazy danych, które powinna ona spełniać, aby 
mogła sprostać stawianym przed nią dzisiaj wymaganiom. 

Proponujemy,  abyś  przyjrzał  się  dowolnej  bazie  danych,  z którą  się  spotkałeś,  przeanalizował  jej 
cechy  (te,  które  ma  i które  Twoim  zdaniem  powinna  mieć)  i wypisał  je.  Następnie  sprawdź,  ile 
z wypisanych przez Ciebie cech pokrywa się uznanymi przez nas za najważniejsze. 

Zgodność z rzeczywistością

 

Postulat  zgodności  danych  zapisanych  w bazie  z rzeczywistością  jest  jednym  z ważniejszych 
postulatów stawianych bazom danych. Na przykład, jeśli baza opisuje dane osobowe pracowników, 
takie  jak  ich  imię,  nazwisko,  telefon,  adres  zamieszkania,  stanowisko  itd.,  to  postulat  zgodności 
z rzeczywistością  oznacza,  że  w chwili,  gdy  pracownik  zmienia  stanowisko  pracy  (a  tym  samym 
również telefon), to również w bazie danych dokonywane są odpowiednie zmiany danych. 

Postulat  zgodności  z rzeczywistością  oznacza,  że  dane  zgromadzone  w bazie  są  danymi 
prawdziwymi,  odpowiadającymi  faktycznemu  stanowi  świata,  którego  dotyczą.  Na  pewno  każdy 
z nas  spotkał  się  z bazą,  która  nie  spełniała  tego  postulatu  i przechowywała  dane  dawne  już 
nieaktualne. 

Z  takimi  bazami  często  spotykam  się  dzisiaj  zaglądając  do  oferty  sklepów  i firm  internetowych. 
Niezwykle rzadko zdarza się, aby dane podawane w bazach udostępnianych przez te podmioty były 
prawdziwe. Najczęściej nie zgadzają się ani ceny towarów, ani ich dostępność w magazynie. 

Powoduje to nie tylko stratę naszego czasu (bo i tak trzeba zadzwonić do „żywego człowieka”), ale 
również utratę zaufania do firmy, która udostępnia bazę z danymi niezgodnymi z rzeczywistością. 

Spełnienie  postulatu  zgodności  z rzeczywistością  nie  jest  łatwe.  Trudności  nie  leżą  w zasadzie  po 
stronie  technicznej,  ale  po  stronie  ludzkiej.  Nie  można  (jak  na  razie)  całkowicie  zautomatyzować 
procesów  biznesowych  i  w każdym  z nich  niezbędnym  ogniwem  jest  człowiek.  Aby  zapewnić 
zgodność danych przechowywanych w bazie z danymi rzeczywistymi, trzeba opracować i stosować 
w firmie odpowiednie procedury. 

Na  przykład  w wypadku  zmiany  stanowiska  przez  pracownika,  dział  kadr  mógłby  (obowiązkowo) 
przesyłać odpowiednie zgłoszenie do operatora bazy (albo wprowadzać samodzielnie) z informacją 
o zaistniałych  zmianach.  Sposób  przesyłania  takiego  zgłoszenia,  jego  zawartość,  określenie 
odpowiedzialności itd. powinien być właśnie określony w takiej procedurze. 

Problem  aktualności  danych  w bazie  jest  jednym  z trudniejszych  problemów  do  rozwiązania, 
szczególnie  kiedy  w przedsiębiorstwie  działa  wiele  różnych  systemów  i baz  danych.  Dlatego  też 
obserwuje się dzisiaj silną tendencję do integracji różnych systemów w jeden spójny system, który 
potrafiłby  automatycznie wymieniać  dane  między  swymi modułami  (częściami).  Rozwiązania tego 
typu  noszą  nazwę  rozwiązań  EAI  (ang.  Enterprise  Architecture  Integration)  i są  oferowane 
i rozwijane przez wiodących dostawców systemów bazodanowych.  

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Dodatek A 

ITA-101 bazy danych 

 

Podstawowe pojęcia 

Strona 5/11 

Ilustracja fragmentu rzeczywistości

 

Projektując bazę danych należy pamiętać, że stanowi ona pewien model otaczającego nas świata. 
Aby  baza  spełniała  swoje  zadania,  musi  być  ilustracją  kompletnego  i dobrze  zdefiniowanego 
fragmentu  rzeczywistości.  Można  oczywiście  zbudować  działającą  bazę  danych,  która  będzie 
pozwalała  na  poprawne  wprowadzanie,  usuwanie  i modyfikację  danych,  ale  która  nie  będzie 
związana ze światem rzeczywistym. Przydatność takiej bazy stoi oczywiście pod znakiem zapytania. 

Aby  spełnić  ten  postulat,  należy  prawidłowo  zdefiniować  dziedzinę  problemową,  która  będzie 
modelowana za pomocą bazy oraz wykonać odpowiadający tej rzeczywistość model logiczny bazy. 
Określaniem  wymagań  i budową  modelu  logicznego  bazy  danych  będziemy  się  zajmować 
w module 2. 

Kontrola replikacji danych

 

Replikacja  danych  oznacza  reprezentowanie  w bazie  tego  samego  faktu  w wielu  jej  miejscach  lub 
w różnych formach. Na przykład baza danych zawierająca informacje o dostawach towarów może 
przechowywać  nazwę  i adres  dostawcy  w specjalnej  liście  dostawców  współpracujących  z naszą 
firmą oraz te same dane w wykazie zamówień. Taka sytuacja jest zazwyczaj niepożądana. Może ona 
prowadzić do: 

 

niepotrzebnego zwiększenia miejsca zajmowanego przez bazę, 

 

niepotrzebnego  angażowania  mocy  obliczeniowych  w przeprowadzanie  operacji  w wielu 
miejscach  (np.  zmiana  adresu  dostawcy  będzie  musiała  być  wykonana  i na  liście  dostawcy 
i przy każdym zamówieniu), 

 

powstania błędów i niezgodności danych gromadzonych w bazie z danymi rzeczywistymi (np. 
zapomnimy o zmianie adresu dostawcy przy zamówieniach z lipca). 

Czasem  jednak  zachodzi  potrzeba  replikacji  danych.  Może  ona  wynikać  ze  względów 
wydajnościowych  lub  ze  względów  bezpieczeństwa.  Trzeba  jednak  zawsze  pamiętać,  że  jeśli 
decydujemy  się  na  zastosowanie  (dopuszczenie)  replikacji,  to  zawsze  należy  poświęcić  jej 
szczególną uwagę, aby pozostawała pod kontrolą.  

Spójny model danych

 

Baza  danych  powinna  być  zbudowana  na  podstawie  spójnego  modelu.  Spójny  model  danych 
oznacza,  że  fragment  rzeczywistości,  którego  dotyczy  baza  został  zamodelowany  w jednym 
z możliwych  modeli  oraz  że  dane  i pojęcia  (np.  pojęcie  faktury)  reprezentowane  w bazie  będą  ze 
sobą połączone tworząc jedną spójną logicznie całość. 

Spójny  model  należy  zapewnić  na  etapie  projektowania  logicznego  bazy,  a jego  wyegzekwowanie 
w czasie  eksploatacji  bazy  jest  możliwe  dzięki  narzuceniu  na  bazę  odpowiednich  warunków 
i więzów (np. związków, o których więcej w module 2). 

Współbieżny dostęp do danych

 

Można  sobie  oczywiście  wyobrazić  bazę  (a  nawet  znaleźć  takie  działające  bazy),  która  będzie 
umożliwiać  dostęp  w danej  chwili  tylko  jednemu  użytkownikowi.  Taka  cecha  nie  powinna  nikogo 
z nas  dziwić,  gdyż  wiele  baz  papierowych,  z których  korzystamy  działa  w ten  właśnie  sposób.  Nie 
jest  to  jednak  wygodne,  w szczególności  jeśli  baza  ma  służyć  wielu  użytkownikom.  Problem  ten 
zauważono  już  dawno  i radzono  sobie  z nim  powielając  zbiory  danych.  Na  przykład  książka 
telefoniczna  jest  drukowana  w wielu  tysiącach  egzemplarzy,  dzięki  czemu  z danych  w niej 
zawartych  może  jednocześnie  korzystać  wielu  użytkowników.  Nikogo  jednak  nie  trzeba 
przekonywać, jak wiele wad ma to rozwiązanie. 

Systemy  komputerowe  pozwalają  na  dostęp  do  danych  wielu  użytkownikom  jednocześnie. 
Oczywiście  udostępnienie  danych  wielu  osobom  na  raz  stwarza  dodatkowe  problemy  związane 
z zarządzaniem  dostępem  do  tych  danych  i wymaga  odpowiedniego  zaprojektowania  i organizacji 
bazy danych.  

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Dodatek A 

ITA-101 bazy danych 

 

Podstawowe pojęcia 

Strona 6/11 

Bezpieczeństwo 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,  księgowe,  dane  osobowe,  transakcje  bankowe  itp.  Z oczywistych  powodów  wymagają 
one  ochrony.  Dobra  baza  danych  musi  zapewniać  odpowiednie  mechanizmy  identyfikacji, 
uwierzytelnienia, autoryzacji, poufności, integralności i dostępności. 

Rodzaje, klasyfikacja i przykłady SZBD 

Sprostanie  wymaganiom  stawianym  dzisiaj  bazom  danych  nie  jest  łatwe,  dlatego  budowane  są 
złożone  systemy  zawierające  zbiór  gotowych  narzędzi  zapewniających  odpowiedni  dostęp, 
manipulację i aktualizację do danych gromadzonych w systemach komputerowych. Narzędzia te to 
Systemy  Zarządzania  Bazą  Danych  –  w skrócie  SZBD  (ang.  Database  Management  Systems  – 
DBMS). 
Do najważniejszych cech charakteryzujących SZBD możemy zaliczyć: 

 

operowanie na dużych i bardzo dużych zbiorach danych, 

 

zarządzanie złożonymi strukturami, 

 

działanie w długim cyklu życia. 

Schemat  SZBD  wraz  z otaczającym  go  środowiskiem pokazuje  poniższy  Rys.  1  System  Zarządzania 
Bazami Danych. 

 

Rys. 1 System Zarządzania Bazami Danych 

SZBD składa się z: 

 

menedżera  bazy  danych  (ang.  DB  manager)  –  jego  rola  polega  na  zarządzaniu  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 obiektów znajdujących się w bazie na postać zrozumiałą dla menedżera bazy. 

Jak widać na rys. 1.1, SZBD komunikuje się jednej strony z menedżerem plików (ang. file manager), 
a  z drugiej  z warstwą  wyższego  poziomu.  Menedżer  plików  jest  odpowiedzialny  za  obsługę 
fizycznych nośników danych – zna i rozumie sposób organizacji tych nośników (systemu plików). 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Dodatek A 

ITA-101 bazy danych 

 

Podstawowe pojęcia 

Strona 7/11 

W  warstwie  wyższego  poziomu  mogą  natomiast  znajdować  się  aplikacje  użytkownika  (ang. 
application),  zapytania  formułowane  przez  użytkownika  (ang.  user  query),  narzędzia  do 
definiowania schematu bazy danych (ang. pattern description) itp. 

Na rynku dostępnych jest wiele Systemów Zarządzania Bazami Danych dostarczanych przez różnych 
producentów. Do najważniejszych należą: 

 

Oracle 

 

MS SQL Server 

 

DB2 

 

Sybase 

 

Informix 

 

Adabase 

 

ObjectStore 

 

MS Access 

oraz wiele innych. 

Kryteria doboru SZBD 

Wybór odpowiedniego systemu SZBD nie jest łatwy. Przed podjęciem decyzji warto jest rozważyć 
wiele aspektów związanych zarówno z tym co baza danych ma robić, jak i innymi uwarunkowaniami 
po stronie dostawcy systemu i jego użytkownika. 

Do najważniejszych kryteriów doboru SZBD należą: 

 

Wydajność  (ang.  performance)  –  określa,  jak szybko system  będzie  reagował  na  wydawane 
mu polecenia, ile jednocześnie będzie potrafił obsłużyć zleceń czy użytkowników.  

 

Skalowalność (ang. scalability) – określa, jak zmieni się działanie systemu (jego wydajność), 
jeśli wzrośnie liczba użytkowników lub danych. Cecha ta określa również możliwość adaptacji 
systemu  do  nowych  warunków  obciążenia  i możliwość  jego  rozbudowy  w celu  sprostania 
nowym, większym obciążeniom.  

 

Funkcjonalność  (ang.  functionality)  –  określa,  jakie  funkcje  są  dostępne  w systemie.  Warto 
zwrócić uwagę zarówno na funkcje wykorzystywane przez użytkownika, jak i administratora 
czy  projektanta  takiego  systemu.  Najczęściej  brak  odpowiednich  funkcji  –  szczególnie 
potrzebnych  projektantom  i administratorom  pociąga  za  sobą  konieczność  dokupienia 
dodatkowych narzędzi i zwiększa koszty systemu.  

 

Zgodność ze standardami – oznacza spełnienie przez system pewnych zasad i reguł uznanych 
za powszechne, czyli standardów (np. standard języka, standard protokołu, itp.). Spełnienie 
powszechnie  stosowanych  standardów  uniezależnia  nas  od  dostawcy  systemu i pozwala  na 
dokładanie  do  niego  innych  elementów  proponowanych  przez  różnych  dostawców 
(oczywiście jeśli są godne ze standardem).  

 

Łatwość  użycia  (ang.  usability)  –  jest  ważną  cechą  systemu.  Zdarzają  się  systemy  o bardzo 
dobrych parametrach wydajnościowych lub dużej niezawodności, które jednak są tak trudne 
w obsłudze,  że  użytkownicy  z nich  rezygnują.  Ocena  tej  cechy  zależy  od  użytkownika 
systemu, jego przygotowania i doświadczenia. Jest więc cechą subiektywną i ten sam system 
przez różnych użytkowników może być zakwalifikowany jako łatwy lub trudny w użyciu.  

 

Niezawodność (ang. reliability) – oznacza, jak często system przestaje działać. Oczywiście, im 
większa  niezawodność  systemu,  tym  większe  są  jego  koszty  wytworzenia.  Trzeba  więc 
wyważyć 

odpowiednią 

proporcję 

między 

niezawodnością 

systemu 

a potrzebami 

użytkownika. Choć każdy chciałby, aby jego system działał bezbłędnie (był niezawodny) w jak 
największym  stopniu,  to  jednak  często  jesteśmy  gotowi  zaakceptować  przestój  systemu 
trwający godzinę w zamian za przystępną cenę.  

 

Wspomaganie (ang. support) – oznacza zapewnienie odpowiedniej pomocy przez dostawcę 
systemu. Z całą pewnością jest to bardzo ważna cecha systemu. Z pewnością warto zapłacić 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski

ITA-101 bazy danych 

wyższą  cenę  za  produkt,  którego  producent  zapewnia  dobry
przecież  systemów  niezawodnych
o sposobie ich użytkowania. 

 

Środowisko (ang. environment
działać nasz system.  

 

Cena (ang. price) – oznacza nie tylko koszt zakupu systemu, ale również wszystkie pozostałe 
koszty  związane  z 
eksploatacji. Koszt zakupu jest cz

Użytkownicy baz danych i

Wśród najważniejszych grup użytkowników systemów SZBD możemy wyróżnić następujące grupy:

 

Administrator  systemu
systemem.  To  on  definiuje  bazy  danych
globalnym itp.  

 

Administrator bazy danych
ma  pod  swoją  opieką.  Ma  on  uprawnienia  do  zakładania
ale tylko w obrębie danej bazy danych. 

 

Programista  aplikacji
będzie wspomagał użytkowanie bazy (np. procedur składowanych). 

 

Operator  –  czuwa  nad  codzienną  eksploatacją  bazy.  Czuwa  nad  wykonaniem  kopii 
bezpieczeństwa i wykonuje inne proste, codzienne czynności admnistracyjne. 

 

Użytkownik (ang. user
pozostałych grup. 

Modele struktury logiczne

Modele  struktury  logiczn
odzwierciedlić  rzeczywistość,  której  baza  dotyczy  oraz  mają  zasadniczy 
i działanie  bazy.  Dzisiaj  najpopularniejszym  modelem  stosowanym
Obok  niego  funkcjonują  też  inne  modele 
popularność model obiektowy.

Model hierarchiczny

 

Model  hierarchiczny  przypomina  odwrócone  drzewo.  Jeden
a pozostałe  tworzą  gałęzie
związkami ojciec-syn

Związki  takie  charakteryzują  się  tym,  że 
z wieloma  innymi  obiektami  podrzędnymi  (synowie),  natomiast  tylko
nadrzędnym w stosunku do niego (jego ojcem).

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

 

Strona 8/11 

ższą  cenę  za  produkt,  którego  producent  zapewnia  dobry  i stabilny  serwis.  Nie  ma 

przecież  systemów  niezawodnych  w stu  procentach  ani  systemów,  które  nie  kryją  tajemnic

sposobie ich użytkowania.  

environment) – określa, na jakim sprzęcie czy systemie operacyjnym będzie 

 

oznacza nie tylko koszt zakupu systemu, ale również wszystkie pozostałe 

 wdrożeniem  tego  systemu  oraz  przewidywanymi  kosztami  jego 

eksploatacji. Koszt zakupu jest często tylko elementem składowym ogólnej ceny systemu.

i ich rola w systemie 

Wśród najważniejszych grup użytkowników systemów SZBD możemy wyróżnić następujące grupy:

Administrator  systemu  (ang.  system  administrator) –  jego  zadaniem  jes
systemem.  To  on  definiuje  bazy  danych  w systemie,  zakłada  użytkowników

Administrator bazy danych (ang. database administrator) – administruje jedynie bazą, którą 
ma  pod  swoją  opieką.  Ma  on  uprawnienia  do  zakładania  i administrowania  obiektami  bazy 

obrębie danej bazy danych.  

Programista  aplikacji  (ang.  application  programmer)  –  jego  rolą  jest  pisanie  kodu,  który 

e wspomagał użytkowanie bazy (np. procedur składowanych).  

czuwa  nad  codzienną  eksploatacją  bazy.  Czuwa  nad  wykonaniem  kopii 

wykonuje inne proste, codzienne czynności admnistracyjne. 

user) – to ktoś wykonujący czynności nie wchodzące

Modele struktury logicznej bazy danych 

ej  bazy  danych  mogą  być  bardzo  różne.  Modele  te  starają  się 

ść,  której  baza  dotyczy  oraz  mają  zasadniczy  wpływ  na  implementacje

działanie  bazy.  Dzisiaj  najpopularniejszym  modelem  stosowanym  w SZBD  jest 

Obok  niego  funkcjonują  też  inne  modele  –  starszy  model  hierarchiczny  i

model obiektowy. 

przypomina  odwrócone  drzewo.  Jeden  z elementów  pełni  role  korzenia,

pozostałe  tworzą  gałęzie  i liście.  W modelu  tym  występują  związki  między  obiektam

Związki  takie  charakteryzują  się  tym,  że  obiekt  nadrzędny  (ojciec)  może  pozostawać

wieloma  innymi  obiektami  podrzędnymi  (synowie),  natomiast  tylko

stosunku do niego (jego ojcem). 

Rys. 2. Model hierarchiczny 

Dodatek A 

Podstawowe pojęcia 

stabilny  serwis.  Nie  ma 

stu  procentach  ani  systemów,  które  nie  kryją  tajemnic 

czy systemie operacyjnym będzie 

oznacza nie tylko koszt zakupu systemu, ale również wszystkie pozostałe 

wdrożeniem  tego  systemu  oraz  przewidywanymi  kosztami  jego 

ęsto tylko elementem składowym ogólnej ceny systemu. 

Wśród najważniejszych grup użytkowników systemów SZBD możemy wyróżnić następujące grupy: 

jego zadaniem jest nadzór nad całym 

systemie,  zakłada  użytkowników  o charakterze 

administruje jedynie bazą, którą 

administrowania  obiektami  bazy 

jego  rolą  jest  pisanie  kodu,  który 

 

czuwa  nad  codzienną  eksploatacją  bazy.  Czuwa  nad  wykonaniem  kopii 

wykonuje inne proste, codzienne czynności admnistracyjne.  

czynności nie wchodzące w zakres obowiązków 

j  bazy  danych  mogą  być  bardzo  różne.  Modele  te  starają  się 

wpływ  na  implementacje 

SZBD  jest  model  relacyjny. 

i zyskujący  sobie  powoli 

elementów  pełni  role  korzenia, 

modelu  tym  występują  związki  między  obiektami  zwane 

obiekt  nadrzędny  (ojciec)  może  pozostawać  w związku 

wieloma  innymi  obiektami  podrzędnymi  (synowie),  natomiast  tylko  z jednym  obiektem 

 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski

ITA-101 bazy danych 

Na  Rys.  2  przedstawiono  przykład  modelu  hierarchicznego  dla  bazy  przechowującej  informacje
o wykładach, wykładowcach oraz studentach uczęszczających na te wykłady.

Model hierarchiczny ma jednak wiele w

 

niemożność zapisania
roku nie prowadzi wykładów)

 

nadmiarowość danych (np. dane
i przedmiotach), 

 

brak możliwości obsługi bardziej złożonych związków między obiektami (np. związków 
do wiele”). 

Zaletą tego modelu jest łatwość (a co za tym idzie szybkość) dojścia do szukanych danych (idziemy 
od korzenia wzdłuż gałęzi 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
siedemdziesiątych  nowy  model  zwany 
relacyjnego opracował dr E. Codd pracując
tytułem  Relacyjny  model  logiczny  dla  dużych  banków  danych
podstawach matematycznych

Idea modelu relacyjnego bazuje na pojęciu 
przechowywane  w tabelach  (relacjach).  T
związkami.  Rysunek  rys.  1.
relacyjnych  jest  ich  znaczna  rozbieżność
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ą,  która  pozwala  najlepiej  odwzorowywać  świat  rzeczywisty
oprogramowania, jest technologia obiektowa.
programowania  jak  C++  czy  Java. 
przy tworzeniu dużych i złożonych projektów.

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

 

Strona 9/11 

przedstawiono  przykład  modelu  hierarchicznego  dla  bazy  przechowującej  informacje

wykładach, wykładowcach oraz studentach uczęszczających na te wykłady.

Model hierarchiczny ma jednak wiele wad. Do najważniejszych należą: 

niemożność zapisania w bazie danych, które nie mają ojca (np. wykładowcy, który
roku nie prowadzi wykładów), 
nadmiarowość danych (np. dane o przedmiocie są wpisane w bazie dwa razy 

brak możliwości obsługi bardziej złożonych związków między obiektami (np. związków 

Zaletą tego modelu jest łatwość (a co za tym idzie szybkość) dojścia do szukanych danych (idziemy 
od korzenia wzdłuż gałęzi aż do celu), ale pod warunkiem, że znamy strukturę tego modelu.

Model  hierarchiczny  stosowany  jest  dziś  w systemach  plików  (struktura  katalogów  ma  strukturę 

wielu popularnych aplikacjach (np. MS Outlook, Lotus Notes). 

W  celu  wyeliminowania  wad  modelu  hierarchicznego  opracowano  na  początku  lat 
siedemdziesiątych  nowy  model  zwany  modelem  relacyjnym.  Podstawy  teoretyczne  dla  modelu 
relacyjnego opracował dr E. Codd pracując w firmie IBM i opublikował w roku 1970

logiczny  dla  dużych  banków  danych.  Model  ten  oparty  jest  na  silnych 

podstawach matematycznych, głównie teorii mnogości. 

Idea modelu relacyjnego bazuje na pojęciu  relacji – czyli  tabeli. Wszystkie dane

tabelach  (relacjach).  Tabele  te  mogą  być  ze  sobą  powiązane  tak  zwanymi 

.  Rysunek  rys.  1.3  przedstawia  przykład  modelu  relacyjnego.  Zasadniczą  wadą  modeli 

relacyjnych  jest  ich  znaczna  rozbieżność  w stosunku  do  świata  rzeczywistego,  który  mają 
modelować. Pozwalają za to na efektywne przechowywanie danych, obniżają redundancję danych 

pozwalają na łatwe wyszukiwanie danych. 

Rys. 3. Model relacyjny 

Bazy  danych  oparte  na  modelu  relacyjnym  są  obecnie  najbardziej  rozpowszechnionym  rodza

Obecnie  technologią,  która  pozwala  najlepiej  odwzorowywać  świat  rzeczywisty
oprogramowania, jest technologia obiektowa. O jej sukcesie świadczy popularność takich języków 
programowania  jak  C++  czy  Java.  Technologia  obiektowa  jest  obecnie  dominującym  narzędziem 

złożonych projektów. 

Dodatek A 

Podstawowe pojęcia 

przedstawiono  przykład  modelu  hierarchicznego  dla  bazy  przechowującej  informacje 

wykładach, wykładowcach oraz studentach uczęszczających na te wykłady. 

bazie danych, które nie mają ojca (np. wykładowcy, który w danym 

bazie dwa razy – w wykładach 

brak możliwości obsługi bardziej złożonych związków między obiektami (np. związków „wiele 

Zaletą tego modelu jest łatwość (a co za tym idzie szybkość) dojścia do szukanych danych (idziemy 

namy strukturę tego modelu. 

systemach  plików  (struktura  katalogów  ma  strukturę 

wielu popularnych aplikacjach (np. MS Outlook, Lotus Notes).  

hierarchicznego  opracowano  na  początku  lat 

.  Podstawy  teoretyczne  dla  modelu 

roku 1970 w książce pod 

.  Model  ten  oparty  jest  na  silnych 

. Wszystkie dane w tym modelu są 

abele  te  mogą  być  ze  sobą  powiązane  tak  zwanymi 

przedstawia  przykład  modelu  relacyjnego.  Zasadniczą  wadą  modeli 

stosunku  do  świata  rzeczywistego,  który  mają 

a efektywne przechowywanie danych, obniżają redundancję danych 

 

Bazy  danych  oparte  na  modelu  relacyjnym  są  obecnie  najbardziej  rozpowszechnionym  rodzajem 

Obecnie  technologią,  która  pozwala  najlepiej  odwzorowywać  świat  rzeczywisty  w projektowaniu 

jej sukcesie świadczy popularność takich języków 

Technologia  obiektowa  jest  obecnie  dominującym  narzędziem 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Dodatek A 

ITA-101 bazy danych 

 

Podstawowe pojęcia 

Strona 10/11 

Obiektowość  nie  ogranicza  się  jedynie  do  nowego  sposobu  organizacji  kodu  w językach 
programowania.  Jest  ona  pewną  ideologią  w informatyce,  której  cechą  jest  chęć  dopasowania 
modeli pojęciowych stosowanych w informatyce do modelu świata postrzeganego przez człowieka. 
Jest to kolejny krok w ewolucji kontaktów człowiek-maszyna (a ściślej programista-komputer). 

Śledząc, nawet pobieżnie, rozwój języków programowania widzimy, że ewolucja ta przebiega ciągle 
w stronę  ułatwiania  życia  człowiekowi.  Wynika  to  z rozwoju  technologii  i związanego  z tym 
zwiększania  złożoności  modelowanych  procesów.  Bez  wprowadzania  nowych  metod,  wyższych 
poziomów  abstrakcji  w projektowaniu  i programowaniu  ,  człowiek  szybko  staje  się  najsłabszym 
ogniwem w procesie tworzenia oprogramowania. 

Większość  producentów  systemów  relacyjnych  baz  danych  wyposaża  obecnie  swoje  produkty 
w rozszerzenia  obiektowe.  Są  one  implementowane  w różnym  stopniu  i zakresie.  Obejmują  takie 
funkcje  jak  obsługa  abstrakcyjnych  typów  danych,  klas,  przechowywanie  obiektów,  wyzwalacze, 
procedury  składowane.  Podstawą  takiego  systemu  jest  najczęściej  ten  sam  „silniczek”,  jaki  był 
stosowany w wersji relacyjnej – dobry i sprawdzony, ale pisany z myślą o modelu relacyjnym, a nie 
obiektowym.  Systemy  tego  typu  nie  spełniają  w pełni  paradygmatu  obiektowości,  mogą  być 
traktowane raczej jako rozszerzenie systemów relacyjnych o pewne atrakcyjne cechy umożliwiające 
efektywne tworzenie aplikacji, a nie jako pełnowartościowe systemy obiektowe. 

Systemy  w pełni  obiektowe  zrywają  natomiast  z założeniami  modelu  relacyjnego  i opierają  się 
w całości na technologii obiektowej. Zapewniają tradycyjną funkcjonalność bazy danych (trwałość, 
integralność danych, obsługę wielodostępu, odtwarzanie danych) przy zastosowaniu obiektowego 
modelu danych. Wiele tego typu systemów obsługuje również bardziej zaawansowane funkcje jak 
np. obsługa rozproszonych baz danych. 

Systemy obiektowych baz danych są najlepiej dopasowane do potrzeb zorientowanych obiektowo 
aplikacji  przetwarzających  duże  ilości  danych  oraz  obsługujących  wielu  użytkowników.  Istniejące 
rozwiązania  obejmują  różne  zakresy  funkcjonalności  –  od  prostych  systemów  przeznaczonych  do 
obsługi  małej  liczby  użytkowników,  dostosowanych  do  jednego  języka  programowania,  aż  do 
bardzo  zaawansowanych  rozwiązań,  w których  wydajny  serwer  obiektowej  bazy  danych  jest 
sercem całego systemu serwera aplikacji. 

Należy  jednak  zwrócić  uwagę,  że  systemy  obiektowe  ciągle  stanowią  przedmiot  badań  i nie 
osiągnęły jeszcze pełnej dojrzałości. 

Podsumowanie  

Współczesne  systemy  informatyczne  wykorzystują  bazy  danych,  od  małych  baz  budowanych 
specjalnie  na  ich  potrzeby,  aż  po  duże  i bardzo  duże  uniwersalne  bazy  i systemy  baz  danych. 
W zasadzie trudno byłoby znaleźć program komputerowy, który nie korzystałby z baz danych. 

Nie każdą strukturę przechowującą dane możemy jednak uznać za bazę danych. Baza danych musi 
charakteryzować się odpowiednimi cechami. Ponieważ dzisiaj przed bazami danych stawia się coraz 
większe  wymagania  związane  z wydajnością,  bezpieczeństwem  itd.  Wymaganiom  tym  mogą 
sprostać  dopiero  Systemy  Zarządzania  Bazami  Danych,  które  są  wyposażone  w odpowiednie 
mechanizmy zapewniające bezpieczeństwo, spójność, wydajność i łatwość obsługi. 

Modele  baz  danych  są  różne.  Do  najpopularniejszych  należą  model  hierarchiczny,  relacyjny 
i obiektowy. Każdy z nich nadaje się do innych celów, a najbardziej rozpowszechnionym modelem 
w bazach  spotykanych  w rozwiązaniach  przemysłowych  jest  model  relacyjnym.  Nasze  zajęcia 
poświęcone są właśnie temu modelowi. 

background image

W.Dąbrowski, P.Kowalczuk, K.Markowski 

 

Dodatek A 

ITA-101 bazy danych 

 

Podstawowe pojęcia 

Strona 11/11 

Uwagi dla studenta 

W tym module nie jest przewidziane laboratorium. Jeśli chcesz się przekonać, czy jesteś gotowy do 
wykonywania  laboratoriów  w kolejnych  modułach,  zastanów  się  i odpowiedz  na  następujące 
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 założenia modelu relacyjnego? 

Jeśli potrafisz na te pytania odpowiedzieć twierdząco, to jesteś przygotowany do dalszej drogi przez 
świat  baz  danych.  Jeśli  nie,  to  zapoznaj    się  ponownie  z uwagami  i poradami  zawartymi  w tym 
module.  Upewnij  się,  że  rozumiesz  omawiane  w nich  zagadnienia.  Jeśli  masz  trudności  ze 
zrozumieniem  tematu  zawartego  w uwagach,  przeczytaj  ponownie  informacje  z tego  rozdziału 
i zajrzyj do notatek z wykładów. 

Dodatkowe źródła informacji 

1.

 

Jeffrey D. Ullman, Jennifer Widom, Podstawowy wykład z systemów baz danych, WNT, 2000 

Książka  zawiera  pełny  akademicki  wykład  z baz  danych.  Znajdziesz  w niej  szerokie 
omówienie  wszystkich  przedstawianych  w tym  module  pojęć  wraz  z licznymi 
przykładami.  Jeśli  jesteś  zainteresowany  odrobiną  teorii  i chciałbyś  dogłębnie 
zrozumieć jak działają bazy danych to jest to książka dla Ciebie. 

2.

 

Rebeca R. Riordan, Projektowanie relacyjnych baz danych, Microsoft Press, 2000 

Książka  poświęcona  jest  praktycznym  aspektom  projektowania  relacyjnych  baz 
danych  w środowisku  aplikacji  firmy  Microsoft.  Rebeca  Riordan  znana  jest 
z łatwego  i zrozumiałego  języka  i łatwości  tłumaczenia  zagadnień  trudnych.  Ten 
swój  talent  wykorzystuje  również  w tej  pozycji.  Jeśli  nie  interesuje  Cię  zgłębianie 
teoretycznych  podstaw  działania  baz  danych,  a bardziej  nastawiony  jesteś  na 
praktyczne wykorzystanie wiedzy, to jest to książka dla Ciebie. 

3.

 

C.J.Date, Wprowadzenie do systemów baz danych, WNT, 2000 

Jest  to  pełny  podręcznik  do  wykładu  z baz  danych  znanego  i cenionego  na  całym 
świecie  autora.  Znajdziesz  w nim  szersze  spojrzenie  na  problematykę  budowy 
i modelowania  baz  danych.  Polecamy  ją  wszystkim,  którzy  chcieliby  poszerzyć 
swoje wiadomości z tego zakresu.