Projekt Bazy Danych

advertisement
KATOLICKI UNIWERSYTET LUBELSKI
Projekt Bazy Danych
Maciej Lis
2009
KATOLICKI UNIWERSYTET LUBELSKI
2009
Projekt Bazy Danych
Spis treści
1
Wstęp ..................................................... 3
2
Postacie normalne ......................................... 3
2.1 Pierwsza postać normalna ............................... 3
2.2 Druga postać normalna .................................. 4
2.3 Trzecia postać normalna ................................ 4
3
Analiza wymagań ........................................... 5
4
Definiowanie tabel ........................................ 5
4.1 Użytkownicy ............................................ 5
4.1.1 Nazwy kolumn........................................ 5
4.2 Wiadomości prywatne .................................... 6
4.2.1 Nazwy kolumn........................................ 6
4.3 Grupy użytkowników ..................................... 6
4.3.1 Nazwy kolumn........................................ 7
4.4 Użytkownicy do Grupy Użytkowników ...................... 7
4.4.1 Nazwy kolumn........................................ 7
4.5 Posty.................................................. 7
4.5.1 Nazwy kolumn........................................ 7
4.6 Fora................................................... 8
4.6.1 Nazwy kolumn........................................ 8
4.7 Prawa do forów ......................................... 9
4.7.1 Nazwy kolumn........................................ 9
5
Model bazy danych ....................................... 10
Katolicki
Uniwersytet
Lubelski
Strona 2
2009
Projekt Bazy Danych
1 Wstęp
Tematem referatu jest przedstawienie projektu bazy danych dla
forum
internetowego.
bezpiecznego,
Celem
elastycznego,
jest
oraz
stworzenie
zgodnego
ze
szybkiego,
standardami
(postaci normalnymi) modelu.
2 Postacie normalne
Postacie normalne (ang. normal forms lub NF) mają za zadanie
nie dopuścić do błędów w projektowaniu modelu bazy danych.
Określają jak powinno się wyeliminować powtarzające się dane,
aby
baza
zajmowała
mniej
miejsca,
była
szybsza
i
elastyczniejsza.
2.1 Pierwsza postać normalna
Relacja
jest
w
pierwszej
postaci
normalnej,
gdy
wartości
atrybutów są elementarne. Czyli nie występuje sytuacja gdzie
wymienia
się
dane
po
przecinku.
Zasada:
„Jedna
wartość
w
jednym atrybucie”.
Rysunek 2.1 – Pierwsza postać normalna
Katolicki
Uniwersytet
Lubelski
Strona 3
2009
Projekt Bazy Danych
2.2 Druga postać normalna
Aby relacja była w drugiej postaci normalnej musi spełnić dwa
warunki. Być już w pierwszej postaci normalnej, oraz każdy
rekord powinien zależeć wyłącznie od klucza podstawowego. Tak
więc powinno się utworzyć oddzielne tabele dla powtarzających
się danych, i powiązać tą tabele za pomocą klucza obcego z
tabelami które powinny posiadać te dane.
Klienci
imie
nazwisko
adresMiasto
adresUlica
Wysyłka
data
adresMiasto
adresUlica
Rysunek 2.1 - Błędne rozmieszczenie danych
Klienci
FK1
IDAdresu
imie
nazwisko
Adresy
PK
Wysyłka
FK1
IDAdresu
miasto
ulica
IDAdresu
data
Rysunek 2.2 - Rozmieszczenie zgodne z drugą postacią normalną
2.3 Trzecia postać normalna
Relacja jest w trzeciej postaci normalnej wtedy i tylko wtedy
gdy jest w II postaci normalnej i kolumny są w bezpośredniej
zależności funkcyjnej jedynie od klucza głównego. Oznacza to
np. że jeśli w encji (tabeli) cena owocu zależy od nazwy owocu
Katolicki
Uniwersytet
Lubelski
Strona 4
2009
Projekt Bazy Danych
to powinno się stworzyć osobną tabele z owocami i adekwatnymi
do nich cenami.
3 Analiza wymagań
Podstawowe założenia i wymagania:

możliwość rejestracji na forum

autoryzacja użytkowników

użytkownicy z różnymi prawami(grupy użytkowników)

grupowanie tematów

tworzenie tematów przez zarejestrowanych użytkowników

możliwość odpowiedzi na utworzony temat

profile użytkowników

wiadomości prywatne

ignorowanie tematów
4 Definiowanie tabel
4.1 Użytkownicy
Encja użytkownicy będzie zawierała dane odnośnie użytkowników
zarejestrowanych na forum.
4.1.1 Nazwy kolumn

UzytkownikID – określa jednoznacznie poszczególny wiersz
encji; Wiele innych tabel będzie się odnosiło do tego
parametru,

Login –
określa login jaki osoba ma na forum; Login
również jednoznacznie określa poszczególny rekord,

Imie – imię użytkownika,

DrugieImie
–
drugie
imię
użytkownika;
Wartość
ta
nie
jest obowiązkowa,
Katolicki
Uniwersytet
Lubelski
Strona 5
2009
Projekt Bazy Danych

Nazwisko – nazwisko użytkownika,

Haslo – zawiera hasło użytkownika zakodowane za pomocą
szyfru MD5 dlatego zawiera 32 bajty,

Email – pole zawiera email; Wartość jest wymagana do
poprawnej rejestracji na forum,

GaduGadu
–
określa
komunikator
internetowy;
Pole
nie
jest wymagane,

ICQ –
określa drugi komunikator internetowy; Podobnie
jak poprzednio pole nie jest wymagane.
4.2 Wiadomości prywatne
Encja
zawiera
rekordy,
z
czego
każdy
to
jedna
wiadomość.
Wiadomości mogą być wysyłane jedynie do jednej osoby, choć
relacja może w przyszłości być rozbudowana o dodatkową tabele
zamieniając relacje z jeden do wielu na wiele do wielu.
4.2.1 Nazwy kolumn

WiadomoscID – określa jednoznacznie poszczególny wiersz
encji,

Temat – określa temat wiadomości; Wiadomość bez tematu
nie może być wysłana,

OdUzytkownikaID
–
określa kto jest nadawcą widomości.
Zawiera klucz obcy do tabeli Uzytkownicy,

DoUzytkownikaID - określa kto jest odbiorcą widomości.
Zawiera klucz obcy do tabeli Uzytkownicy,

Tekst – treść wiadomości,

DataWyslania
–
data
wysłania
wiadomości;
Potrzebna
również do sortowania wiadomości.
4.3 Grupy użytkowników
Encja zawiera rekordy, z czego każdy to jedna grupa. Dzięki
relacji
wiele
do
wielu
Katolicki
zrealizowanej
Uniwersytet
za
pomocą
Lubelski
tabeli
Strona 6
2009
Projekt Bazy Danych
pomocniczej
Uzytkownicy_GrupyUzytkownikow
pozwala
na
przynależność jednego użytkownika do więcej niż jednej grupy.
4.3.1 Nazwy kolumn

GrupaID
–
określa
jednoznacznie
poszczególny
wiersz
encji,

Nazwa
–
określa
nazwę
grupy
np.
Administratorzy,
Przyjaciele,

Opis – nieobowiązkowy opis grupy,

ZalozycielID
–
klucz
obcy
odnoszący
się
do
tabeli
Uzytkownicy; Określa osobę która założyła daną grupę.
4.4 Użytkownicy do Grupy Użytkowników
Tabela jest encją pomocniczą dzięki której jeden użytkownik
może należeć do wielu grup, oraz jedna grupa może mieć wiele
użytkowników.
4.4.1 Nazwy kolumn

UzytkownikID – klucz obcy odpowiadający jednemu rekordowi
w encji Uzytkownicy,

GrupaID – klucz obcy odpowiadający jednemu rekordowi w
encji GrupyUzytkownikow.
4.5 Posty
Encja zawiera rekordy, z czego każdy to jeden post. Każdy post
może
być
wysłany
przez
jedną
osobę
i
właśnie
do
niej
się
odnosi.
4.5.1 Nazwy kolumn

PostID
–
klucz
podstawowy
jednoznacznie
identyfikujący
każdy rekord,

TematID
–
klucz
obcy
odnoszący
się
do
kolumny
PostID
własnej encji; Przyjmuje wartość NULL, gdy jest pierwszym
postem danego tematu,
Katolicki
Uniwersytet
Lubelski
Strona 7
2009
Projekt Bazy Danych

ForumID – klucz obcy odnoszący się do encji Fora, dzięki
czemu
identyfikuje
Przyjmuje
danego
wartość
post
NULL,
tematu;
do
gdy
Kolejne
jakiego
nie
jest
posty
forum
należy;
pierwszym
mają
postem
automatycznie
przypisane fora dzięki odnośnikowi TematID;

WlascicielID
–
klucz
obcy
odnoszący
się
do
encji
Uzytkownicy, wskazując kto jest napisał posta,

Tekst – treść posta,

DataPowstania – data wysłania posta na forum,

DataOstatniejEdycji
–
określa
kiedy
ostatnio
był
modyfikowany dany post; Przyjmuje wartość NULL, gdy nie
był modyfikowany,

IloscEdycji
–
określa
ile
razy
był
modyfikowany
dany
post,

Temat – każdy post nie tylko pierwszy może zawierać temat
wiadomości, aby łatwiej można było przeglądać posty.
4.6 Fora
Forum może być pogrupowane na różne pod fora, dzięki czemu
łatwiej
można
odszukać
wiadomości
i
forum
jest
bardziej
uporządkowane.
4.6.1 Nazwy kolumn

ForumID – klucz podstawowy jednoznacznie identyfikujący
każdy rekord,

Nazwa – zawiera nazwę danego pod forum,

Ilość wiadomości – zawiera ilość wiadomości należących do
danego
pod
forum;
Oczywiście
tę
ilość
można
uzyskać
grupując wiadomości w encji Posty, ale byłoby to mało
efektywne.
Katolicki
Uniwersytet
Lubelski
Strona 8
2009
Projekt Bazy Danych
4.7 Prawa do forów
Encja określa jakie prawa dostępu do forów mają użytkownicy
należący do danych grup. Jest tabelą pomocniczą dzięki której
jedna grupa może mieć prawa do wielu forów, oraz jedno forum
może mieć przyporządkowane wiele grup użytkowników.
4.7.1 Nazwy kolumn

ForumID – klucz obcy do encji Fora,

GrupaID - Klucz obcy do encji GrupyUzytkownikow.
Katolicki
Uniwersytet
Lubelski
Strona 9
2009
Projekt Bazy Danych
5 Model bazy danych
Uzytkownicy
Column Name
Data Type
WiadomosciPrywatne
Nullable
UzytkownikID
int
No
Login
nvarchar(20)
No
Imie
nvarchar(50)
No
DrugieImie
nvarchar(50)
Yes
Nazwisko
nvarchar(50)
No
Haslo
varchar(32)
No
Email
nvarchar(50)
No
GaduGadu
nvarchar(12)
Yes
ICQ
nvarchar(12)
Yes
Column Name
Data Type
Nullable
WiadomoscID
int
No
Temat
nvarchar(50)
No
OdUzytkownikaID
int
No
DoUzytkownikaID
int
No
Tekst
text
No
DataWyslania
date
No
GrupyUzytkownikow
Column Name
Data Type
Nullable
GrupaID
int
No
Nazwa
nvarch...
No
Opis
nvarch...
Yes
ZalozycielID
int
No
Uzytkownicy_GrupyUzytkownikow
UzytkownikID
GrupaID
Posty
PrawaDoForum
Column Name
Data Type
Nullable
GrupaID
ForumID
PostID
int
No
TematID
int
No
ForumID
smallint
No
WlascicielID
int
No
Tekst
text
No
DataPowstania
date
No
Column Name
Data Type
Nullable
DataOstatniejEdycji
date
Yes
ForumID
smallint
No
IloscEdycji
smallint
No
Nazwa
nvarch...
No
Temat
nvarchar(50)
No
IloscWiado...
int
No
Katolicki
Fora
Uniwersytet
Lubelski
Strona 10
Download