Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:ztb:2010:projekty:upr_krakow:start [2010/05/27 17:24] ztb2010 |
pl:dydaktyka:ztb:2010:projekty:upr_krakow:start [2019/06/27 15:50] (aktualna) |
==== Streszczenie ==== | ==== Streszczenie ==== |
Projekt stanowi podstawę bazodanową dla projektu realizowanego z przedmiotu Technologie i Programowanie WWW. | Projekt stanowi podstawę bazodanową dla projektu realizowanego z przedmiotu Technologie i Programowanie WWW. |
| [[http://www.rafal.xtreemhost.com|Link do wersji roboczej serwisu]] |
| |
==== Sformułowanie zadania projektowego ==== | ==== Sformułowanie zadania projektowego ==== |
- Zapisanie się do newslettera | - Zapisanie się do newslettera |
- Przeglądanie treści serwisu | - Przeglądanie treści serwisu |
* Przeglądanie głównych działów serwisu: aktualności, książki, publicystyka, linki, o partii | * przeglądanie głównych działów serwisu: aktualności, książki, publicystyka, linki, o partii |
* Możliwość oglądania multimediów | * możliwość oglądania multimediów |
- Przeszukiwanie treści wiadomości | - Przeszukiwanie treści wiadomości |
- Możliwość dodawania komentarzy | |
* Dodawanie komentarzy do aktualności | |
* Dodawanie komentarzy do felietonów | |
* Dodawanie komentarzy w dziale multimediów | |
* Dodawanie komentarzy w dziale książek | |
- Scenariusze dla zalogowanego użytkownika | - Scenariusze dla zalogowanego użytkownika |
- Dostęp do serwisu | - Dostęp do serwisu |
* Zalogowanie do systemu | * zalogowanie do systemu |
* Przypomnienie hasła użytkownika | * przypomnienie hasła użytkownika |
- Dodawanie felietonów | - Dodawanie felietonów |
- Aktualizacja profilu | - Aktualizacja profilu |
* zmiana adresu email | * zmiana adresu email |
* zmiana hasła | * zmiana hasła |
| - Możliwość dodawania komentarzy |
| * dodawanie komentarzy do aktualności |
| * dodawanie komentarzy do felietonów |
| * dodawanie komentarzy w dziale multimediów |
| * dodawanie komentarzy w dziale książek |
- Scenariusze dla redaktora | - Scenariusze dla redaktora |
- Dodawanie tekstów | - Dodawanie tekstów |
- Zatwierdzanie felietonów dodanych przez użytkowników | - Zatwierdzanie felietonów dodanych przez użytkowników |
- Moderowanie komentarzy | - Moderowanie komentarzy |
| - Tworzenie wiadomości do wysłania w newsletterze |
- Scenariusze dla administratora | - Scenariusze dla administratora |
- Usuwanie użytkowników | - Usuwanie użytkowników |
* edycja wiadomości i wpisów we wszystkich działach | * edycja wiadomości i wpisów we wszystkich działach |
* usuwanie wiadomości i wpisów we wszystkich działach | * usuwanie wiadomości i wpisów we wszystkich działach |
* Dodawanie tekstów we wszystkich działach | * dodawanie tekstów we wszystkich działach |
| |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:use_case.png|}} |
| |
==== Identyfikacja funkcji ==== | ==== Identyfikacja funkcji ==== |
| |
| * logowanie i wylogowanie z serwisu |
| * modyfikacja i usuwanie kont użytkowników |
| * dodanie, modyfikacja i usuwanie aktualności na pierwszej stronie |
| * dodanie, modyfikacja i usuwanie multimediów |
| * dodanie, modyfikacja i usuwanie informacji o spotkaniach |
| * dodanie, modyfikacja i usuwanie opisów książek |
| * dodanie, modyfikacja i usuwanie linków oraz informacji o partii |
| * dodanie, modyfikacja i usuwanie komentarzy pod wpisami |
| * zapisywanie się i wysyłanie newslettera |
| * dodawanie własnych felietonów przez użytkowników |
| |
| |
==== Analiza hierarchii funkcji projektowanej aplikacji ==== | ==== Analiza hierarchii funkcji projektowanej aplikacji ==== |
| |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:fhd.png|}} |
| |
==== Budowa i analiza diagramu przepływu danych ==== | ==== Budowa i analiza diagramu przepływu danych ==== |
| |
| === DIAGRAM KONTEKSTOWY === |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:dfd_kontekstowe.png|}} |
| |
| === DIAGRAM GŁÓWNY === |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:dfd_glowny.png|}} |
| |
| === OBSŁUGA GOŚCIA === |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:dfd_obsluga_goscia.png|}} |
| |
| === OBSŁUGA UŻYTKOWNIKA === |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:dfd_obsluga_uzytkownika.png|}} |
| |
| === OBSŁUGA REDKATORA === |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:dfd_obsluga_redaktora.png|}} |
| |
| === OBSŁUGA ADMINISTARTORA === |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:dfd_obsluga_administratora.png|}} |
| |
==== Wybór encji (obiektów) i ich atrybutów ==== | ==== Wybór encji (obiektów) i ich atrybutów ==== |
| |
| **AKTUALNOSCI** |
| * id_aktualnosci INT not null (PK) |
| * naglowek VARCHAR not null |
| * zawartosc TEXT not null |
| * data_publikacji DATE not null |
| * godzina_publikacji TIME not null |
| * autor INT not null (FK) |
| |
| **INFORMACJE** |
| * id_informacji INT not null (PK) |
| * typ VARCHAR |
| * autor INT not null (FK) |
| * zawartosc TEXT not null |
| * data_modyfikacji DATE |
| * godzina_modyfikacji TIME |
| |
| **KATEGORIE** |
| * id_kategorii INT not null (PK) |
| * nazwa VARCHAR not null |
| * opis TEXT |
| |
| **KOMENTARZE** |
| * id_komentarza INT not null (PK) |
| * autor INT not null (FK) |
| * zawartosc TEXT |
| * data DATE |
| * godzina TIME |
| * id_obiektu INT not null (FK) |
| * typ VARCHAR not null |
| |
| **KSIAZKI** |
| * id_ksiazki INT not null (PK) |
| * nazwa VARCHAR not null |
| * opis TEXT |
| * autor INT (FK) |
| * kategoria INT (FK) |
| |
| **LINKI** |
| * id_linku INT not null (PK) |
| * autor INT not null (FK) |
| * nazwa VARCHAR not null |
| * opis TEXT |
| * link VARCHAR not null |
| * logo VARCHAR not null |
| * data_dodania DATETIME not null |
| |
| **MEDIA** |
| * id INT not null (PK) |
| * link TEXT not null |
| * nazwa VARCHAR |
| * autor INT (FK) |
| * data_dodania DATETIME not null |
| |
| **NEWSLETTER** |
| * id INT not null (PK) |
| * tytul VARCHAR not null |
| * tresc TEXT not null |
| * zawartosc TEXT not null |
| * data_wyslania DATE not null |
| * godzina_wyslania TIME not null |
| * autor INT not null (FK) |
| |
| **SPOTKANIA** |
| * id_spotkania INT not null (PK) |
| * nazwa VARCHAR not null |
| * opis TEXT |
| * data_dodania DATETIME |
| * autor INT (FK) |
| |
| **TEKSTY** |
| * id_tekstu INT not null (PK) |
| * naglowek VARCHAR not null |
| * tresc TEXT not null |
| * autor INT not null (FK) |
| * zaakceptowano TINYINT not null |
| * data_dodania DATETIME not null |
| |
| **UZYTKOWNICY** |
| * id_uzytkownika INT not null (PK) |
| * login VARCHAR not null |
| * haslo VARCHAR not null |
| * email VARCHAR not null |
| * imie VARCHAR |
| * nazwisko VARCHAR |
| * rola VARCHAR not null |
| * newsletter TINYINT not null |
| |
==== Projektowanie powiązań (relacji) pomiędzy encjami ==== | ==== Projektowanie powiązań (relacji) pomiędzy encjami ==== |
| |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:diagram_relacji.png|}} |
| |
==== Projekt diagramów STD (State Transition Diagram – diagramy przejść pomiędzy stanami) ==== | ==== Projekt diagramów STD (State Transition Diagram – diagramy przejść pomiędzy stanami) ==== |
| |
| === Diagram stanów dla użytkownika zalogowanego i gościa === |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:std_user_gosc.png|}} |
| |
| === Diagram stanów dla redaktora i administratora === |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:std_redaktor_admin.png|}} |
| |
| ==== Projektowanie tabel, kluczy, kluczy obcych, powiązań między tabelami, indeksów w oparciu o zdefiniowany diagram ERD ==== |
| |
| <code sql> |
| |
| CREATE TABLE IF NOT EXISTS aktualnosci ( |
| id_aktualnosci int(11) NOT NULL AUTO_INCREMENT, |
| naglowek varchar(100) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, |
| zawartosc text CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, |
| data_publikacji date NOT NULL, |
| godzina_publikacji time NOT NULL, |
| autor int(11) NOT NULL, |
| zdjecie mediumblob, |
| PRIMARY KEY (id_aktualnosci), |
| KEY autor (autor) |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=66 ; |
| |
| CREATE TABLE IF NOT EXISTS informacje ( |
| id_informacji int(11) NOT NULL AUTO_INCREMENT, |
| typ varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL, |
| autor int(11) NOT NULL, |
| zawartosc text CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, |
| data_modyfikacji date DEFAULT NULL, |
| godzina_modyfikacji time DEFAULT NULL, |
| PRIMARY KEY (id_informacji), |
| KEY autor (autor) |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ; |
| |
| CREATE TABLE IF NOT EXISTS kategorie ( |
| id_kategorii int(11) NOT NULL AUTO_INCREMENT, |
| nazwa varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, |
| opis text CHARACTER SET utf8 COLLATE utf8_polish_ci, |
| autor varchar(100) DEFAULT NULL, |
| PRIMARY KEY (id_kategorii) |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; |
| |
| CREATE TABLE IF NOT EXISTS komentarze ( |
| id_komentarza int(11) NOT NULL AUTO_INCREMENT, |
| autor int(11) NOT NULL, |
| zawartosc text CHARACTER SET utf8 COLLATE utf8_polish_ci, |
| data date DEFAULT NULL, |
| godzina time DEFAULT NULL, |
| id_obiektu int(11) NOT NULL, |
| typ varchar(50) NOT NULL, |
| PRIMARY KEY (id_komentarza), |
| KEY autor (autor), |
| KEY id_obiektu (id_obiektu) |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ; |
| |
| CREATE TABLE IF NOT EXISTS komentarz_obiekt ( |
| id_komentarza int(11) NOT NULL, |
| id_obiektu int(11) NOT NULL, |
| typ varchar(20) NOT NULL, |
| PRIMARY KEY (id_komentarza,id_obiektu), |
| KEY id_obiektu (id_obiektu), |
| KEY typ (typ) |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1; |
| |
| CREATE TABLE IF NOT EXISTS ksiazki ( |
| id_ksiazki int(11) NOT NULL AUTO_INCREMENT, |
| nazwa varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, |
| opis text CHARACTER SET utf8 COLLATE utf8_polish_ci, |
| autor int(11) DEFAULT NULL, |
| kategoria int(11) DEFAULT NULL, |
| PRIMARY KEY (id_ksiazki), |
| KEY autor (autor), |
| KEY kategoria (kategoria) |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=22 ; |
| |
| CREATE TABLE IF NOT EXISTS linki ( |
| id_linku int(11) NOT NULL AUTO_INCREMENT, |
| autor int(11) NOT NULL, |
| nazwa varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, |
| opis text CHARACTER SET utf8 COLLATE utf8_polish_ci, |
| link varchar(100) NOT NULL, |
| logo varchar(100) NOT NULL, |
| data_dodania datetime NOT NULL, |
| PRIMARY KEY (id_linku), |
| KEY autor (autor) |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ; |
| |
| CREATE TABLE IF NOT EXISTS media ( |
| id int(11) NOT NULL AUTO_INCREMENT, |
| link text NOT NULL, |
| nazwa varchar(100) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL, |
| autor int(11) DEFAULT NULL, |
| data_dodania datetime NOT NULL, |
| PRIMARY KEY (id), |
| KEY autor (autor) |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ; |
| |
| CREATE TABLE IF NOT EXISTS newsletter ( |
| id int(11) NOT NULL AUTO_INCREMENT, |
| tytul varchar(120) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, |
| tresc text CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, |
| data_wyslania datetime NOT NULL, |
| autor int(11) NOT NULL, |
| PRIMARY KEY (id), |
| KEY autor (autor) |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ; |
| |
| CREATE TABLE IF NOT EXISTS organizacje ( |
| id_organizacji int(11) NOT NULL AUTO_INCREMENT, |
| dodal varchar(50) NOT NULL, |
| nazwa varchar(50) NOT NULL, |
| opis text, |
| link varchar(100) NOT NULL, |
| logo varchar(100) NOT NULL, |
| data_dodania datetime NOT NULL, |
| PRIMARY KEY (id_organizacji) |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; |
| |
| CREATE TABLE IF NOT EXISTS spotkania ( |
| id_spotkania int(11) NOT NULL AUTO_INCREMENT, |
| nazwa varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, |
| opis text CHARACTER SET utf8 COLLATE utf8_polish_ci, |
| data_dodania datetime DEFAULT NULL, |
| autor int(11) DEFAULT NULL, |
| PRIMARY KEY (id_spotkania), |
| KEY autor (autor) |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ; |
| |
| CREATE TABLE IF NOT EXISTS teksty ( |
| id_tekstu int(11) NOT NULL AUTO_INCREMENT, |
| naglowek varchar(120) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, |
| tresc text CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, |
| autor int(11) NOT NULL, |
| zaakceptowano tinyint(4) NOT NULL DEFAULT '0', |
| data_dodania datetime NOT NULL, |
| PRIMARY KEY (id_tekstu), |
| KEY autor (autor) |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; |
| |
| CREATE TABLE IF NOT EXISTS uzytkownicy ( |
| id_uzytkownika int(11) NOT NULL AUTO_INCREMENT, |
| login varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, |
| haslo varchar(40) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, |
| email varchar(40) NOT NULL, |
| imie varchar(40) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL, |
| nazwisko varchar(40) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL, |
| rola varchar(20) NOT NULL DEFAULT 'user', |
| newsletter tinyint(4) NOT NULL DEFAULT '0', |
| data_rejestracji datetime DEFAULT NULL, |
| PRIMARY KEY (id_uzytkownika) |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ; |
| </code> |
| |
| ==== Analiza zależności funkcyjnych i normalizacja tabel ==== |
| |
| W każdej tabeli atrybuty są w pełni bezpośrednio zależne od klucza głównego, dane przechowywane w bazie są z punktu widzenia implemntacji projektu istotnie atomiczne, więc wydaje nam się, że baza danych spełnia założenia 3NF. |
| |
| ==== Projektowanie operacji na danych ==== |
| |
| <code sql> |
| SELECT * FROM komentarze JOIN uzytkownicy ON (komentarze.autor = uzytkownicy.id_uzytkownika) WHERE id_obiektu = $id AND typ = 'aktualnosc' ORDER BY data DESC, godzina DESC; |
| |
| SELECT * FROM newsletter LEFT JOIN uzytkownicy ON (newsletter.autor = uzytkownicy.id_uzytkownika) WHERE id = $id; |
| |
| SELECT id_uzytkownika, login, email FROM uzytkownicy ORDER BY data_rejestracji; |
| |
| UPDATE teksty ('naglowek', 'tresc', 'autor') VALUES ($naglowek, $tresc, $autor) WHERE id_tekstu = $id; |
| </code> |
| |
| ==== Zdefiniowanie interfejsów do prezentacji, edycji i obsługi danych ==== |
| |
| * rejestracja użytkownika |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:rejestracja.jpg|}} |
| |
| * logowanie |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:logowanie.jpg|}} |
| |
| * dodawanie komentarza |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:dodawanie_komentarza.jpg|}} |
| |
| * przypomnienie hasła |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:przypomnienie_hasla.jpg|}} |
| |
| * dodawanie tekstu |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:dodanie_wiadmosci.jpg|}} |
| |
| * dodawanie multimediów |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:dodanie_multimediow.jpg|}} |
| |
| * dodawanie książki |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:dodawanie_ksiazki.jpg|}} |
| |
| |
| |
| |
| |
| |
| |
| ==== Zdefiniowanie panelu sterowania aplikacji ==== |
| |
| * akceptacja tekstów użytkowników |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:akceptacja_tekstow.jpg|}} |
| |
| * edycja linków |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:edycja_linku.jpg|}} |
| |
| * edycja kont użytkowników |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:edycja_uzytkownikow.jpg|}} |
| |
| * edycja wiadomości |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:edycja_wiadomosci.jpg|}} |
| |
| * zarządzanie użytkownikami |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:uzytkownicy.jpg|}} |
| |
| * rozsyłanie newslettera |
| {{:pl:dydaktyka:ztb:2010:projekty:upr_krakow:wysylanie_newslettera.jpg|}} |
| |