background image

Projektowanie baz danych. 

Projektowanie 

konceptualne i diagram 

obiektowo-związkowy. 

background image

Projektowanie baz danych 

  

Zacznijmy tak prosto, jak to tylko możliwe. Kluczowym pytaniem, 

które należy sobie zadad przed rozpoczęciem projektowania, jest – czym 
właściwie jest baza danych? Jeśli odpowiedź miałaby zostad zawarta w 
jednym zdaniu, brzmiałoby ono mniej więcej tak: „baza danych jest 
zbiorem informacji powiązanych ze sobą tematycznie”. Baza danych ma 
za zadanie przechowywad informacje dotyczące poszczególnych 
przedmiotów lub osób. 

background image

 

OK, ale czemu właściwie nie użyd do tego celu prostego dokumentu 

tekstowego? Oczywiście możemy otworzyd notatnik i zacząd wypisywad dane, np. 
naszych kolejnych klientów, w postaci długich łaocuchów znaków. Przypuszczam, że 
dla kilku, a nawet kilkudziesięciu klientów jest to całkiem proste i możliwe do 
wykonania. Jednak w momencie, gdy będziemy chcieli wyszukad nazwisko 
interesującego nas klienta spośród wszystkich zapisanych, napotkamy już pewien 
problem. Dla większej liczby klientów będziemy musieli niestety przeskrolowad już 
cały dokument w celu znalezienia interesującego elementu, co nie będzie już takie 
łatwe, a na pewno niezbyt wygodne. Może zatem zeszyt programu Excel? Jest to na 
pewno lepszy pomysł niż zwykły dokument tekstowy, ma jednak również wiele wad 
– bo co zrobid w przypadku, gdybyśmy chcieli wyświetlid np. dziesięciu najlepszych 
klientów z bazy kilku tysięcy osób? Na pewno jest to możliwe, jednak nie takie 
proste. Zarządzanie dużą ilością danych w dokumencie programu Excel będzie na 
pewno skomplikowane. A co w sytuacji, gdybyśmy chcieli podzielid się tymi danymi 
z innymi osobami w naszej organizacji? Może zapisad je na pulpicie i wysład 
mailem? Odpowiedź jest prosta –  potrzebujemy narzędzia, które ułatwi nam 
zarządzanie dużą ilością informacji. Wbrew początkowym zarzutom co do 
funkcjonalności w pewnym sensie nawet dokument tekstowy, przy spełnieniu 
pewnych założeo, możemy nazwad bazą danych. Jednak dopiero wtedy, gdy 
zarządzanie tymi danymi będzie względnie łatwe, taki dokument będziemy mogli 
nazwad bazą danych. 

background image

 

W trosce o to, aby tworzona przez nas baza danych spełniała 

wspomniany wcześniej szereg użyteczności niezwykle ważne jest, aby cały ten 
cykl wytwarzania rozpocząd od etapu projektowania. Często, gdy tworzony jest 
prosty projekt informatyczny, pomija się etap jego projektowania. Rozważmy 
przez chwilę, czy słusznie. Niezależnie od stopnia złożoności projektu po pewnym 
czasie stajemy przed koniecznością dokonania w nim zmian. Zmiany, lub może 
poprawki, mogą wynikad na przykład z rozszerzenia funkcjonalności bazy danych. 
W przypadku gdy owa baza danych nie opierała się na projekcie z podstawowymi 
założeniami, jest niestety wysoce prawdopodobne, że w momencie jej 
rozszerzania lub modyfikacji natkniemy się na błędy spójności. Wtedy często 
łatwiej będzie zbudowad nową bazę danych od podstaw, pomimo że zmiany 
miały byd niewielkie. Przed rozpoczęciem budowania bazy danych należy zatem 
koniecznie poświęcid nieco czasu na jej zaprojektowanie. „Stracony” w ten 
sposób czas odzyskamy w kilkakrotnie większym wymiarze podczas dalszych 
etapów wytwarzania bazy danych. Projektowanie bazy danych wymaga 
umiejętności spojrzenia na informację jako na zbiór danych opisujących 
poszczególne przedmioty, oraz związki (relacje) zachodzące pomiędzy 
poszczególnymi obiektami. Dobry projekt jest podstawą utworzenia bazy danych, 
która pozwoli na szybkie, dokładne i skuteczne wykonywanie zamierzonych 
celów. 

background image

 

Pierwszym krokiem, jaki musimy postawid w momencie 

zabierania się za projektowanie bazy danych jest określenie celu, 
któremu ma ona służyd, oraz sposobu jej używania. Musimy przecież 
wiedzied, jakich informacji ma nam dostarczad i jak z tych informacji 
właściwie skorzystad. Na tej podstawie określimy, jakie zagadnienia będą 
przez nią analizowane oraz jakich informacji użyjemy do opisu tych 
zagadnieo. Na pewno warto porozmawiad z przyszłymi użytkownikami 
bazy danych o tym, na jakie pytania ma im ona odpowiadad. Przed 
przystąpieniem do budowy tabel, kwerend, formularzy i innych 
obiektów warto pokusid się o naszkicowanie projektu na kartce papieru i 
jego dokładne przeanalizowanie. Wstępne zarysy wzorów raportów i 
formularzy pozwolą lepiej zobrazowad nam funkcje, jakie będzie pełniła 
baza danych. Dla jeszcze lepszego efektu warto zapoznad się z 
działaniem już istniejących, dobrze zaprojektowanych baz danych, 
podobnych do tej, która ma byd utworzona. 

background image

 

Aby uniknąd rozczarowao ze strony przyszłych użytkowników. 

Powinniśmy określid oczekiwania wobec aplikacji z punktu widzenia 
osób, które będą z niej korzystały. Na tym etapie zbierania wymagao 
ważne jest, aby pod uwagę wziąd perspektywę każdego z użytkowników 
– da nam to pewnośd, że zbudowana przez nas baza danych będzie 
odzwierciedleniem ich wizji, a jeśli ta jest nierealna, to informacja o tym 
dotrze do nich natychmiast, co da im czas na przeredagowanie ich 
oczekiwao. Podczas zbierania wymagao mogą pojawid się pomysły 
przyszłych użytkowników co do jej działania. Na tym etapie potrzebowad 
będziemy przede wszystkim opisów wykorzystywanych i tworzonych 
danych, szczegółów dotyczących sposobów wykorzystania lub tworzenia 
bazy danych.  
 

Ale czy każdy projekt jest dobry? Projekt bazy danych kryje w 

sobie zbiór zasad, którymi należy się posługiwad podczas tworzenia bazy 
danych. A zatem jedną z najważniejszych rzeczy podczas planowana 
projektu jest zrozumienie, że całym procesem jego realizacji kierują 
pewne niezmienne zasady. 

 

 

       

background image

 

Pierwszą wspomnianą zasadą jest nawyk minimalizacji rozmiaru danych 

przechowywanych w bazie danych. Zrealizowanie tego punktu polega, najprościej 
mówiąc, na redukowaniu zbędnych danych oraz zapewnieniu ich integralności. 
Przechowywanie tych samych danych w jednym miejscu, w jednym rekordzie 
minimalizuje szanse, że jakaś wersja tej danej będzie niepoprawna. A jeśli nawet w 
trakcie jej użytkowania dojdzie do tego, że któraś wartośd zostanie niepoprawnie 
wprowadzona, zostanie ona wyświetlona we wszystkich miejscach w ten sam sposób, 
przez co łatwiejsze będzie wychwycenie błędu. 
 

Drugim aspektem, na który warto zwrócid uwagę, jest rozłożenie większych 

zbiorów danych na mniejsze, powiązane ze sobą elementy. Podział na mniejsze tabele, 
a następnie relacyjne ich połączenie sprawi, że nie usuniemy przez przypadek danej, 
którą uważaliśmy za niepotrzebną, a która – jak się okazuje – ma powiązania z innym 
elementem. Jeśli cała baza danych podzielona jest na mniejsze części, to jeśli zajdzie 
potrzeba przywrócenia jakiegoś jej elementu, nie trzeba będzie przywracad całej bazy 
danych, a wystarczy kawałek, w którym znajduje się ten element.  Dodatkowo, aby 
zapewnid lepszą integralnośd danych niezbędne jest zdefiniowanie, jaki typ danych 
chcemy przechowywad w danej kolumnie. Chodzi o to, żeby uniemożliwid wpisanie 
litery tam, gdzie jakaś wartośd przyjmuje tylko liczbową postad, co uczyni już na starcie 
bazę danych bardziej poprawną, a to z kolei podniesie jej integralnośd. 

 

 

background image

 

Klucz podstawowy służy do unikatowej identyfikacji poszczególnych 

wierszy danej tabeli. Działa na podobnej zasadzie, jak np. numer seryjny 
przedmiotu czy numer identyfikacyjny pracownika. Konkretnie – może nim byd na 
przykład identyfikator produktu lub identyfikator zamówienia. Klucz podstawowy 
służy do powiązania informacji przechowywanych w różnych tabelach. Na przykład, 
aby powiązad klienta ze wszystkimi jego zamówieniami, każda tabela w bazie 
danych musi zawierad pole lub zbiór pól, które jednoznacznie określają każdy 
wiersz w tej tabeli (po to, żeby np. określid jednoznacznie danego klienta lub 
konkretne zamówienie). Kluczem podstawowym nie mogą byd duplikujące się 
wartości, takie jak imiona czy nazwiska, ponieważ takie dane mogą się powtórzyd. 
Unikatowym natomiast może byd numer produktu czy zamówienia. Zazwyczaj rolę 
klucza podstawowego odgrywa dowolny unikatowy numer, a służy on wyłącznie do 
identyfikowania danego produktu czy zamówienia. Numer ten zostaje określony 
raz i nigdy się nie zmienia dla danego produktu, co sprawia, że jednoznacznie go 
określa. Warto zauważyd, że niekiedy może byd wymagane użycie dwóch lub 
większej liczby pól, które razem będą stanowiły klucz podstawowy tabeli (zostanie 
to dokładniej przybliżone w dalszej części). 
 

Dopiero po tak określonej i przygotowanej strukturze tabel możemy 

zacząd wprowadzad do nich wszystkie potrzebne dane, a na ich podstawie tworzyd 
następnie dowolne kwerendy, formularze, raporty, makra czy moduły. 

background image

 

Zastanówmy się zatem, jak stworzyd odpowiednią strukturę do przechowywania 

danych oraz jak podzielid cały stos informacji na konkretne tabele. Jednym z rozwiązao jest 
zastosowanie metody kolejnych podziałów, najpierw na główne jednostki, następnie każdą 
jednostkę na mniejsze części czy może tematy. Dla uproszczenia skupimy się teraz na dosyd 
oczywistej sytuacji – sprzedaży produktów. Utworzymy wstępną wersję listy, za pomocą której 
spróbujemy zorganizowad w pewien sposób posiadane informacje. 

 

Nazwy tabel zostały określone 

przez słowa odpowiadające na główne 
pytania naszego małego biznesu, czyli: kto 
kupuje, co kupuje, jak kupuje? 
Konsekwentnie odpowiedzi to: Klient, 
Produkt, Zamówienie. A zatem intuicyjnie 
rysowane są w naszej wyobraźni trzy 
tabele: jedna zawierająca informacje 
dotyczące klientów, jedna dotycząca 
produktów oraz jedna z produktami 
zamawianymi przez klientów. Tak 
zdefiniowana lista jest dla nas  bardzo 
dobrym punktem startu, do którego 
możemy następnie dodawad kolejne 
elementy. 
 

Wstępne określenie nazw i zawartości tabel 

background image

 

Jeśli mamy już zdefiniowane tabele, rekordy oraz klucze podstawowe, nie pozostaje 

nam nic innego, jak poprawnie połączyd powiązane dane w logiczną całośd. Takie właśnie 
połączenie pomiędzy tabelami nazywamy relacjami. 
 

Ażeby zabrad się za tę operację, należy przejrzed wszystkie tabele i zdecydowad, jaka 

jest relacja danych z jednej tabeli do danych w innych tabelach. Aby jasno określid relacje, 
niekiedy trzeba dodad nowe tabele. W relacyjnej bazie danych informacje są rozdzielane do 
osobnych, tematycznych tabel. Dla poszczególnych sytuacji, z którymi mamy do czynienia, 
możemy zdefiniowad kilka typów relacji: „jeden do wielu”, „jeden do jednego” oraz „wielu do 
wielu”. Zastanówmy się przez chwilę, co na pierwszy rzut oka, jakie tabele oraz jakie elementy 
mogłyby stanowid podwaliny bazy danych, np. sklepu. 
 

Jeśli chcielibyśmy określid relację w naszej bazie danych pomiędzy tabelami Produkty 

oraz Klienci, to łatwo zauważyd, że jednemu klientowi może byd przyporządkowanych kilka 
produktów, dlatego relację należy określid „jeden do wielu”. No to teraz bardziej konkretnie, aby 
zrealizowad praktycznie relację „jeden do wielu”, należy klucz podstawowy z tabeli Klienci 
(„jeden”) dodad jako kolumnę do tabeli Produkty („wiele”). W tabeli Produkty kolumna ta jest 
kluczem obcym. Klucz obcy to, jak łatwo zauważyd, klucz podstawowy innej tabeli. Sprzęganie 
tabel polega zatem na ustanawianiu takich par kluczy podstawowych i obcych. Co w przypadku, 
kiedy każdemu produktowi może odpowiadad wiele zamówieo, a każdemu zamówieniu może 
odpowiadad wiele produktów? Samo się nasuwa, żeby zastosowad relację „wiele do wielu”. 
Należy zauważyd, że aby wykryd relację „wiele do wielu” pomiędzy tabelami, trzeba się przyjrzed 
obu stronom relacji. Tym razem niestety nie możemy postąpid podobnie, jak w przykładzie 
powyżej. Jeśli dodamy klucz podstawowy tabeli Produkty (identyfikator tabeli Produkty) do 
tabeli Zamówienia, to o ile dla zamówienia zawierającego jeden produkt byłoby możliwa do 
zrealizowania relacja „jeden do wielu”, to przy zamówieniu zawierającym wiele produktów 
należałoby dla każdego produktu tworzyd nowe zamówienie.  

background image

 

Ostatnim etapem weryfikacji poprawności projektu bazy danych 

jest sprawdzenie, czy umożliwia ona wszystkie podstawowe funkcje: 
•projektowanie rekordów: 
      - nazwa pola, 
      - długośd pola, 
      - rodzaj pola (tekstowe, liczbowe, logiczne), 
•edycja (dopisywanie, usuwanie, poprawianie rekordów), 
•sortowanie, 
•wyszukiwanie i selekcja danych, 
•tworzenie zapytao, 
•tworzenie raportów, 
•drukowanie. 

background image

Projektowanie konceptualne 

 

Projektowanie konceptualne  jest to faza uściślenia i 

sformalizowania  
wymagao dotyczących polityki bezpieczeostwa, a więc podmiotów i  
obiektów ważnych z punktu widzenia zabezpieczeo, praw dostępu i reguł 
dostępu.  
 

Etap projektowania konceptualnego jest jednym z najtrudniejszych i  

najważniejszych zadao. Od poprawnie zaprojektowanego schematu zależy  
właściwe działanie systemu.  
Poprawny schemat to taki, który posiada ścisły związek z faktami świata  
rzeczywistego, jest podatny na zmiany, zawiera kompletne dla danej  
aplikacji informacje oraz pozwala na tworzenie różnych obrazów danych,  
czyli różnych logicznych modeli baz danych. 

background image

Oto przykład fragmentu konceptualnego modelu bezpieczeostwa 
dla pewnego  
systemu opisany przy pomocy pseudojęzyka wykorzystującego 
zapytania SQL  
1. Identyfikacja podmiotów: 
podmiot {Bartoszek} nazwa kier_dziekanatu; 
podmiot {Jakow, Martan, Nowak} nazwa kier_płac; 
podmiot {Ada, Ewa} nazwa prac_płac; 
podmiot {Nowak} nazwa ABD; 
podmiot {*}ABD  nazwa użytkownicy BD; 
2. Identyfikacja obiektów: 
obiekt{Pracownicy(NrPrac, Nazwisko, Adres, Wiek, Oddział, 
Stanowisko,  
Płaca)}nazwa dane1; 
obiekt {SELECT  NrPrac, Nazwisko, Adres, Oddział Stanowisko, 
Płaca 
from Pracownicy} nazwa dane2; 
obiekt {SELECT NrPrac, Płaca from Pracownicy} nazwa dane3; 

background image

3. Definicja praw dostępu: 
prawo_dostępu {SELECT}nazwa READ; 
prawo_dostępu {INSERT, UPDATE}nazwa WRITE; 
prawo_dostępu {DELETE, DROP}nazwa DELETE; 
prawo_ABD {GRANT}nazwa GRANT; 
prawo_ABD {REVOKE}nazwa REVOKE; 
4. Definicja reguł dostępu: 
ABD can GRANT, REVOKE użytkownicy BD*,*; 
użytkownicy BD cannot GRANT, REVOKE; 
kier_dziekanatu can READ,WRITE, DELETE dane1; 
kier_płac can READ,WRITE dane2; 
prac_płac can READ dane3; 
kier_dziekanatu can GRANT kier_płac READ dane1; 

background image
background image

Diagram obiektowo-związkowy ER 

(Entity – Relationship) 

 

Podstawowe elementy tego modelu to: encje,  

atrybuty i związki. 
Encja – coś, co istnieje niezależnie i jest jednoznacznie  
identyfikowalne. Encja może byd obiektem fizycznym  
(pojazd), usługą (wizyta), jak i pojęciem (zamówienie). 
Atrybut – opisuje własności encji. Wszystkie encje danego  
typu mają wspólne własności (atrybuty), np. pracownik  
posiada numer, nazwisko, imię, itd. Każdy atrybut przybiera  
wartości z określonego zbioru wartości (dziedziny). 
Związek – opisuje połączenia między encjami. Encje  
objęte związkiem są uczestnikami tego związku 

background image

Każdy związek jest określany przez: 
• Liczebnośd – liczba uczestników w związku.  
Maksymalna liczba instancji jednej encji  
(wystąpieo w danej encji), które mogą byd 
powiązane z instancją innej encji.   
• Związek E/R może byd związkiem: 
     - Jeden do jeden (1 : 1)  
     - Jeden do wiele (1 : M) 
     - Wiele do wiele (M : N) 

background image

Związek jeden-do-jeden: 
• Najprostszy typ powiązania 
• Jedna instancja pierwszej encji jest powiązana z tylko jedną instancją drugiej encji.  
• Przykład: 
     * Każdy dział w przedsiębiorstwie może posiadad tylko jednego kierownika 
     * Każdy pracownik musi mied przyznany pokój do wyłącznego użytku, tylko jeden. Mogą 
istnied pokoje nie przydzielone żadnemu pracownikowi. 

Związek jeden-do-wiele: 
• Najczęstsze powiązanie 
• Pojedyncza instancja jednej encji może byd połączona z jedną lub wieloma instancjami 
drugiej encji. 
• Przykład: 
    * Matki – dzieci 
    * Budynki – Pomieszczenia 

Związek wiele-do-wiele: 
• Przykład  
     * Studenci – Wykłady 
     * Zamówienia - Produkt 

background image

Każdy związek jest określany przez: 
• Uczestnictwo – uczestnictwo w związku może byd: 
     * Opcjonalne – uczestnictwo encji w związku jest opcjonalne, 
jeżeli istnieje przynajmniej jedna instancja encji, która nie bierze 
udziału w związku.  
     * Wymagane – uczestnictwo encji jest wymagane, jeżeli 
wszystkie instancje encji muszą brad udział w związku. 

background image

http://msdn.microsoft.com/pl-pl/library/projektowanie-baz-danych.aspx

 

http://www.wstt.edu.pl/pliki/materialy/mch/bdwsk/wyk1.pdf

 

http://www.itbiznes.us.edu.pl/images/justyna/bazy_danych_wyk.pdf

 

Źródła: 

Wykonawcy: 

Arkadiusz Pacek 
Karol Niebrzydowski