Ocena użytkowników: 5 / 5

Gwiazdka aktywnaGwiazdka aktywnaGwiazdka aktywnaGwiazdka aktywnaGwiazdka aktywna
 

Najważniejszą częścią wszystkich systemów CMS jest baza danych. Prawidłowo zaprojektowana baza danych powinna uwzględniać możliwość rozbudowy systemu o nowe tabele. Dzięki takiemu podejściu, można projektować system w postaci modułów.

W większości przypadków bazę danych przedstawia się w postaci diagramu związku encji (ERD - entity relationship diagram). Po pierwszym uruchomieniu MySQL należy utworzyć bazę danych odpowiedzialną za zarządzanie projektem (Listing 1).

 

Listing 1. Polecenie tworzące bazę danych

CREATE DATABASE wiedzanaplus;

 

Program do komunikacji z MySQL prosi o połączenie z konkretnym użytkownikiem, do utworzenia którego służy polecenie GRANT (Listing 2). W większości projektów na localhost program korzysta z konta administratora (root), jednak można utworzyć własne konto i podpiąć do programu. Tworzenie nowego konta jest przedstawione na listingu 3. Z poziomu konta można zadawać zapytania, dopisywać dane do tabeli, kasować dane z tabeli oraz aktualizować wprowadzone wcześniej informacje. Z poziomu konta istnieje dostęp tylko do tabel w bazie danych „wiedzanaplus”.

 

Listing 2. Składnia polecenia GRANT

GRANT przywileje[kolumny] ON obiekt TO identyfikator_użytkownika [IDENTIFIED BY `hasło`] [WITH GRANT OPTION]

 

Listing 3. Polecenie odpowiedzialne za utworzenie konta użytkownika

GRANT SELECT, INSERT, DELETE, UPDATE ON wiedzanaplus.* TO wiedzanaplus@localhost IDENTIFIED BY `hasło`;

 

W bazie danych znajduje się dziesięć tabel:

  • uzytkownicy – posiada informacje o administratorach, użytkownikach zarejestrowanych w programie (Tabela 1.);
  • kontakty – przechowuje dane kontaktowe zarejestrowanych użytkowników, administratorów systemu (Tabela 2.);
  • adresy – przechowuje dane dotyczące adresu zamieszkania obecnie zarejestrowanych użytkowników, administratorów (Tabela 3.);
  • wojewodztwa – tabela zawierająca listę wszystkich województw (Tabela 4.);
  • sekcje – tabela zawierająca wszystkie sekcje w systemie (Tabela 5.);
  • kategorie - tabela zawierająca wszystkie kategorie w systemie (Tabela 6.);
  • artykuly – wszystkie artykuły dodane do bazy danych (Tabela 7.);
  • pola_menu – tabela zawiera wszystkie utworzone pola menu (Tabela 8.);
  • typy_menu – tabela przechowuje nazwy wszystkich typów menu dostępnych w systemie np.: Menu główne, Menu górne (Tabela 9.);
  • typy_pozycji_menu – tabela przechowuje typy pozycji menu, jakie mogą być utworzone w systemie np.: Artykuły => Sekcje, Pojedynczy artykuł, Łącze zewnętrzne (Tabela 10.).

 

Tabele 1 - 10 prezentują strukturę tabel.

 

Tabela 1. uzytkownicy
Nazwa pola: Opis:
id_uzytkownik Klucz główny, przydzielany automatycznie
id_kontakt Klucz obcy z tabeli kontakty
id_adres Klucz obcy z tabeli adresy
login Nazwa administratora, użytkownika systemu
md5_haslo Hasło szyfrowane algorytmem MD5
imie Imię
nazwisko Nazwisko
uprawnienie Pole przechowuje numer uprawnienia przydzielony przez administratora (1, 2, 3, 4)
konto_aktywne Pole przechowuje datę, od kiedy konto użytkownika ma być aktywne w systemie
data_utworzenia Data utworzenia konta
data_zablokowania_konta Pole przechowuje datę, od kiedy konto użytkownika musi zostać wyłączone z systemu
opis Pole przechowuje dodatkowe informacje o użytkowniku np.: dlaczego jest na urlopie

 

Tabela 2. kontakty
Nazwa pola: Opis:
id_kontakt Klucz główny przydzielany automatycznie
nr_tel_1 Pole odpowiedzialne za przechowywanie numeru telefonu
nr_tel_2 Pole odpowiedzialne za przechowywanie dodatkowego numeru telefonu
fax Numer fax-u
email Adres e-mail
www Adres strony internetowej

 

Tabela 3. adresy
Nazwa pola: Opis:
id_adres Klucz główny przydzielany automatycznie
id_wojewodztwo Klucz obcy z tabeli „wojewodztwa”
miasto Miasto
miejscowosc Miejscowość
powiat Powiat
kod_pocztowy Kod pocztowy
ulica Nazwa ulicy
nr_domu Numer domu
nr_lokalu Numer lokalu

 

Tabela 4. wojewodztwa
Nazwa pola: Opis:
id_wojewodztwo Klucz główny przydzielany automatycznie
nazwa_wojewodztwa Nazwa województwa

 

Tabela 5. sekcje
Nazwa pola: Opis:
id_sekcja Klucz główny przydzielony automatycznie
nazwa_sekcji Nazwa sekcji
opis_sekcji Opis sekcji
data_utworzenia Data utworzenia sekcji
data_opublikowania Data opublikowania sekcji
kolejnosc Pole przechowuje numer odpowiedzialny za kolejność wyświetlania wybranej sekcji

 

Tabela 6. kategorie
Nazwa pola: Opis:
id_kategoria Klucz główny przydzielony automatycznie
id_sekcja Klucz obcy z tabeli „sekcje”
nazwa_kategorii Nazwa kategorii
opis_kategorii Opis kategorii
data_utworzenia Data utworzenia kategorii
data_opublikowania Data opublikowania kategorii
kolejnosc Pole przechowuje numer odpowiedzialny za kolejność wyświetlania kategorii w wybranej sekcji

 

Tabela 7. artykuly
Nazwa pola: Opis:
id_artykul Klucz główny przydzielany automatycznie do artykułu
id_uzytkownik Klucz obcy z tabeli „uzytkownicy”
id_kategoria Klucz obcy z tabeli „kategorie”
tytul Tytuł artykułu
tekst_artykulu Zawartość artykułu
data_utworzenia Data utworzenia artykułu
data_opublikowania Data opublikowania artykułu
data_modyfikacji Data ostatniej modyfikacji artykułu
meta_slowa_kluczowe Słowa kluczowe znaczniku „meta” w HTML
meta_opis Opis znaczniku „meta” w HTML
meta_autor Autor artykułu, znacznik „meta” w HTML
kolejnosc Pole przechowuje numer odpowiedzialny za kolejność wyświetlania w wybranej kategorii
przeczytano Pole zawiera liczbę odpowiedzialną za ilość odwiedzin gościa serwisu w danym artykule
strona_tytulowa Pole odpowiedzialne za przechowywanie informacji, czy artykuł ma być wyświetlany na głównej stronie serwisu

 

Tabela 8. pola_menu
Nazwa pola: Opis:
id_pole_menu Klucz główny przydzielony automatycznie
id_typ_menu Klucz obcy z tabeli „typy_menu”
id_typ_pozycji_menu Klucz obcy z tabeli „typy_pozycji_menu”
nazwa Nazwa przycisku w pozycji menu
opis Opis przycisku znacznik „title”
adres_strony Adres strony internetowej
okno Pole zawiera wartość atrybutu „target” znacznika <a href=””></a>
data_utworzenia Data utworzenia przycisku w pozycji menu
data_opublikowania Data opublikowania przycisku w pozycji menu
kolejnosc Pole przechowuje numer odpowiedzialny za kolejność wyświetlenia przycisku w wybranym menu
komponent_id Pole nie jest obowiązkowe i przechowuje numer z klucza głównego komponentu, który jest podpinany pod wybrany przycisk w pozycji menu

 

 

Tabela 9. typy_menu
Nazwa pola: Opis:
id_typ_menu Klucz główny przydzielony automatycznie
typ_menu Unikatowa nazwa tekstowa pozycji menu np.: mainmenu
tytul Nazwa menu
opis Opis menu

 

Tabela 10. typy_pozycji_menu
Nazwa pola: Opis:
id_typ_pozycji_menu Klucz główny przydzielony automatycznie
nazwa Pole tekstowe zawierające nazwę typu pozycji menu np.: Artykuły => Sekcje, Pojedynczy artykuł, Łącze zewnętrzne
opis Opis typu pozycji menu
akcja Pole, dzięki któremu program rozpoznaje typ pozycji menu wybranego dla konkretnego przycisku. Nazwa pola jest unikatowa oraz typu string. Programiście lepiej jest oprogramowywać dodatkowe funkcje korzystając z pola „akcja” niż za pomocą klucza głównego. Przykładowe nazwy: review_articles, single_article, external_link

 

Rysunek 1. prezentuje relację pomiędzy tabelami w bazie danych.

 

 

Przykładowa baza danych prostego systemu CMS.

Rys. 1. Relacje przykładowej bazy danych prostego systemu CMS.

 

Zapraszamy do szczegółowego zapoznania się z tematem projektowania baz danych. W celu poszerzania wiedzy poniżej umieściliśmy listę książek powiązanych z tematem artykułu.

 

Warto przeczytać również:

Wybrane książki:

Strony internetowe:

  • Baza danych zaprezentowana w artykule pochodzi z projektu zrealizowanego pod marką „Piksel-Net”, więcej na stronie www.piksel-net.pl.

Książki Helion