Projekt bazy danych strony internetowej został wykonany w programie DBDesigner 4 - obecnie nie jest dalej rozwijany, jednak dla starszego systemu Windows XP jest dobrym rozwiązaniem. Właściciele nowszych komputerów powinni zainteresować się nowszą wersją programu, rozwijaną przez firmę Oracle pod nazwą „MySQL Workbench”. W przedstawionej bazie danych wszystkie pola są obowiązkowe.
W bazie danych znajduje się piętnaście tabel:
- admin – posiada informacje o administratorach, zarejestrowanych w programie (Tabela 1.);
- artykuly – wszystkie artykuły dodane do bazy danych (Tabela 2.);
- autor – dane o autorze razem z uprawnieniami jakie mu przysługują w aplikacji (Tabela 3.);
- galerii – wszystkie galerie dodane do programu (Tabela 4.);
- kat_artykuly – tabela odpowiadająca za kategorię w dziale artykuły (Tabela 5.);
- kat_galerii – tabela odpowiadająca za kategorię w dziale galerii (Tabela 6.);
- kat_pliki – tabela odpowiadająca za kategorię w dziale pliki (Tabela 7.);
- pliki – zawiera wszystkie materiały dodane do działu pliki (Tabela 8.);
- pomoc – tabela zawierająca pytania i odpowiedzi dla działu pomoc (Tabela 9.);
- sesja_admin – przechowuje informacje dotyczące zalogowanego administratora (Tabela 10.);
- sesja_autor – przechowuje informacje dotyczące zalogowanego autora (Tabela 11.);
- sesja_uzytkownik – odpowiada za przechowywanie informacji, czy użytkownik jest zalogowany (Tabela 12.);
- zdjecia – przechowuje informacje o miejscu zdjęć na serwerze dla galerii (Tabela 13.);
- uzytkownik – przechowuje informacje o zarejestrowanych użytkownikach (Tabela 14.);
- zmienna_sesji – odpowiada za przechowywanie sesji w bazie danych (Tabela 15.).
UWAGA: Tabele zmienna_sesji, sesja_admin, sesja_autor i sesja_uzytkownik zostały oparte na rozdziale 15 z książki „PHP5 Zaawansowane programowanie”.
Podczas nauki przy tworzeniu bazy danych korzystano również z książki „PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty. Wydanie czwarte”.
Tabele 1 - 15 prezentują strukturę tabel.
Nazwa pola: | Opis: |
id_admin | Klucz główny, przydzielany automatycznie, INTEGER |
nazwa | Nazwa administratora, VARCHAR(35) |
md5_haslo | Hasło administratora, VARCHAR(32) |
imie | Imię, VARCHAR(35) |
nazwisko | Nazwisko, VARCHAR(35) |
E-mail, VARCHAR(60) | |
data_utworzenia | Data utworzenia konta, DATETIME |
Nazwa pola: | Opis: |
id_artykuly | Klucz główny przydzielany automatycznie do artykułu, INT |
id_kat | Klucz obcy z tabeli kat_artykuly, INT |
id_autor | Klucz obcy z tabeli autor, INT |
naglowek | Tytuł artykułu,VARCHAR(100) |
opis | Opis artykułu, TEXT |
obrazek | Zdjęcie widoczne obok artykułu, VARCHAR(100) |
utworzony | Data utworzenia artykułu, DATETIME |
opublikowany | Data opublikowania artykułu, DATETIME |
Nazwa pola: | Opis: |
id_autor | Klucz główny przydzielany automatycznie, INT |
id_admin | Klucz obcy z tabeli admin, INTEGER |
nazwa | Nazwa autora potrzebna przy logowaniu, VARCHAR(35) |
md5_haslo | Hasło autora, VARCHAR(32) |
imie | Imię, VARCHAR(35) |
nazwisko | Nazwisko, VARCHAR(35) |
p_artykuly | Odpowiada za uprawnienia do artykułu, ENUM('N', 'Y') |
p_galeria | Odpowiada za uprawnienia do galerii, ENUM('N', 'Y') |
p_pliki | Odpowiada za uprawnienia do działu pliki, ENUM('N', 'Y') |
p_pomoc | Odpowiada za uprawnienia do działu pomoc, ENUM('N', 'Y') |
adres | Adres zamieszkania, VARCHAR(100) |
kod_pocz | Kod pocztowy, VARCHAR(10) |
miasto | Miasto, VARCHAR(45) |
wojewodztwo | Województwo, VARCHAR(45) |
E-mail, VARCHAR(80) | |
telefon | Telefon stacjonarny, VARCHAR(20) |
data_urodzenia | Data urodzenia, VARCHAR(20) |
data_utworzenia | Data utworzenia konta autora, DATETIME |
Nazwa pola: | Opis: |
id_galerii | Klucz główny galerii przydzielany automatycznie, INT |
id_kat | Klucz obcy kat_galerii, INT |
id_autor | Klucz obcy z tabeli autor, INT |
naglowek | Tytuł galerii, VARCHAR(100) |
opis | Opis galerii, TEXT |
obrazek | Obrazek widoczny jako miniaturka, VARCHAR(100) |
id_zdjecia | Informuje czy galeria posiada zdjęcia, INT |
utworzony | Data utworzenia galerii, DATETIME |
opublikowany | Data opublikowania galerii, DATETIME |
Nazwa pola: | Opis: |
id_kat | Klucz główny kategorii artykułów, INT |
nazwa_kat | Nazwa kategorii, CHAR(40) |
Nazwa pola: | Opis: |
id_kat | Klucz główny kategorii galerii, INT |
nazwa_kat | Nazwa kategorii, CHAR(40) |
Nazwa pola: | Opis: |
id_kat | Klucz główny kategorii działu pliki przydzielany automatycznie, INT |
nazwa_kat | Nazwa kategorii, CHAR(40) |
Nazwa pola: | Opis: |
id_pliki | Klucz główny galerii pliki, INT |
id_kat | Klucz obcy z kategorii plików, INT |
id_autor | Klucz obcy z tabeli autor, INT |
naglowek | Nazwa pliku, VARCHAR(100) |
opis | Opis dla pliku, TEXT |
obrazek | Nazwa obrazka, VARCHAR(100) |
plik | Nazwa pliku, VARCHAR(100) |
utworzony | Data utworzenia, DATETIME |
opublikowany | Data opublikowania, DATETIME |
Nazwa pola: | Opis: |
id_pomoc | Klucz główny przydzielany automatycznie, INT |
id_autor | Klucz obcy przydzielany z tabeli autor, INT |
pytanie | Pytanie, VARCHAR(350) |
odpowiedz | Odpowiedź na zadane pytanie, TEXT |
Nazwa pola: | Opis: |
id | Klucz główny przydzielany automatycznie, INT |
id_admin | Klucz obcy z tabeli admin, INTEGER |
id_sesji_ascii | Identyfikator sesji ASCII, VARCHAR(32) |
zalogowany | Odpowiada za informowanie czy administrator jest zalogowany, BOOL |
ostatnie_dzialanie | Przechowuje datę ostatniego zalogowania, TIMESTAMP |
utworzono | Przechowuje datę utworzenia konta, TIMESTAMP |
user_agent | Przechowuje typ przeglądarki administratora, VARCHAR(256) |
Nazwa pola: | Opis: |
id | Klucz główny przydzielany automatycznie, INT |
id_autor | Klucz obcy z tabeli autor, INT |
id_sesji_ascii | Identyfikator sesji ASCII, VARCHAR(32) |
zalogowany | Odpowiada za informowanie czy autor jest zalogowany, BOOL |
ostatnie_dzialanie | Przechowuje informację ostatniego zalogowania, TIMESTAMP |
utworzono | Przechowuje informację utworzenia sesji dla autora, TIMESTAMP |
user_agent | Przechowuje typ przeglądarki autora, VARCHAR(256) |
Nazwa pola: | Opis: |
id | Klucz główny przydzielany automatycznie, INT |
id_uzytkownik | Klucz obcy z tabeli użytkownika, INT |
id_sesji_ascii | Identyfikator sesji ASCII, VARCHAR(32) |
zalogowany | Odpowiada za informowanie czy użytkownik jest zalogowany, BOOL |
ostatnie_dzialanie | Zapisuje ostatnią datę zalogowania użytkownika, TIMESTAMP |
utworzono | Zapisuje datę utworzenia sesji, TIMESTAMP |
user_agent | Przechowuje typ przeglądarki użytkownika, VARCHAR(256) |
Nazwa pola: | Opis: |
id_galerii | Klucz obcy, posiada informacje dla której galerii zostało przydzielone zdjęcie, INT |
id_zdjecia | Zapisywany jest numer galerii do której zdjęcie jest przydzielone, INT |
zdjecie | Nazwa zdjęcia, TEXT |
utworzony | Data utworzenia zdjęcia, DATETIME |
Nazwa pola: | Opis: |
id_uzytkownik | Klucz główny automatycznie przydzielany, INT |
nazwa | Nazwa użytkownika, VARCHAR(35) |
md5_haslo | Hasło, VARCHAR(32) |
imie | Imię, VARCHAR(35) |
nazwisko | Nazwisko, VARCHAR(35) |
adres | Adres zamieszkania, VARCHAR(60) |
kod_poczt | Kod pocztowy, VARCHAR(6) |
miasto | Miasto, VARCHAR(30) |
wojewodztwo | Województwo, VARCHAR(30) |
E-mail, VARCHAR(60) | |
telefon | Telefon stacjonarny, VARCHAR(12) |
data_urodzenia | Data urodzenia użytkownika, VARCHAR(20) |
data_utworzenia | Data utworzenia użytkownika, DATETIME |
Nazwa pola: | Opis: |
id_zmienna_sesji | Identyfikator przydzielany automatycznie, INT |
id_sesji | Identyfikator sesji, INT |
nazwa_zmiennej | Nazwa zmiennej, VARCHAR(64) |
wartosc_zmiennej | Wartość zmiennej, TEXT |
Rysunek 1. prezentuje relację pomiędzy tabelą użytkownika i tabelą sesja_uzytkownika.
Rys. 1. Relacje użytkownika i tabela zmiennych sesji
Rysunek 2. prezentuje relację pomiędzy tabelami w bazie danych.
Rys. 2. Relacje głównej części bazy danych
Przedstawiona baza danych nie jest idealnym rozwiązaniem, jednak ma za zadanie zmusić czytelnika do myślenia w celu udoskonalenia przedstawionego rozwiązania lub napisania od podstaw własnego, pozbawionego wad zauważonych podczas zapoznawania się z artykułem. Baza danych została utworzona 2007 roku. Warto również zapoznać się z innymi przykładami projektów baz danych, które zostały umieszczone w serwisie.
Lista książek, do których odwołano się w artykule:
- Luke Welling, Laura Thomson: PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty. Wydanie czwarte, Wydawnictwo Helion, 2009.
- Edward Lecky-Thompson, Heow Eide-Goodman, Steven D. Nowicki, Alec Cove: PHP5. Zaawansowane programowanie, Wydawnictwo Helion, 2005.
Warto przeczytać:
- MySQL Workbench
- Przykładowa baza danych prostego systemu CMS
- Przykładowa baza danych sklepu internetowego, diagram związków encji
- Projekt bazy danych - Baza serwisowa sprzętu RTV
- Nathan Marz, James Warren: Big Data. Najlepsze praktyki budowy skalowalnych systemów obsługi danych w czasie rzeczywistym, Wydawnictwo Helion, 2016.
- Joe Celko: Praktyki mistrza SQL. Programowanie zaawansowane, Wydawnictwo Helion, 2016.
- Ryan Stephens, Arie D. Jones, Ron Plew: SQL w 24 godziny. Wydanie VI, Wydawnictwo Helion, 2016.
- John Viescas, Michael J. Hernandez: Zapytania w SQL. Przyjazny przewodnik, Wydawnictwo Helion, 2015.
- Bill Karwin: Antywzorce języka SQL. Jak unikać pułapek podczas programowania baz danych, Wydawnictwo Helion, 2015.
Strony internetowe: