Analýza Redakční systém blogu (ADA274, BYS037, RAB020, SIV021) Obecný popis Jelikož musíme držet krok s vývojem webových technologií a s daty chceme pracovat efektivněji, použijeme jako prostředek pro uložení a práci s daty databázi. Výsledkem našeho snažení budou kategorie evidované podle svého čísla, názvu a popisu, články podle svého čísla, podle autora a kategorie, příbuznost článků, reakce na články podle čísla článku, čísla uživatele, čísla reakce a jejího textu, soupisy uživatelů a jejich dat, sbor obrázků a jejich provázání s články, ankety a jejich provázání s uživateli a výsledky hlasování a s možnými odpověďmi a zálohovací tabulky pro kategorie, články a uživatele. Zadání, specifikace funkčních požadavků Proč: Již nějakou dobu zkoumáme možnosti publikování svých děl na internetu, avšak žádná z nabízených komerčních služeb nám nevyhovovala. Tudíž nám nezbylo nic jiného, než si napsat systém na míru. Hlavní důvod je zpřehlednit a zrychlit si práci a přitom mít totální kontrolu nad systémem. Kdo: Se systémem bude pracovat administrátor, moderátoři, autoři a v neposlední řadě čtenáři. Vstupy: Vstupy budou nadpisy, podnadpisy, texty článků, nadpisy a texty příspěvků v diskuzi, dvojce podobných článků, hodnocení článku, obrázky a jejich vazby na články, zařazení článků do kategorií, informace o uživatelích, anketní otázky a možnosti. Výstupy: Výstupy budou články s obrázky a průměrným hodnocením, příspěvky diskuze, informace o uživatelích, seznam článků v kategoriích a ankety s ohodnocením možností. Funkce: Systém bude umět: Vkládat články, ankety, obrázky a příspěvky do diskuze (při tom kontrolovat duplicity), upravovat a mazat články, ankety, obrázky a příspěvky do diskuze, vytvářet, upravovat a mazat kategorie článků, manipulovat se zařazením článků, vkládat ohodnocení anketní otázky, vypisovat informace o článcích, obrázcích, anketách a příspěvcích do diskuze, hodnotit články, registrovat nové uživatele, měnit práva uživatelů, přidávat, upravovat a vypisovat informace o uživatelích. Okolí: Čtenáři, autoři, moderátoři a administrátor.
Seznam událostí a reakcí Událost Reakce Aktér Nový článek Přidej článek Autor, administrátor Nový příspěvek do diskuze Přidej příspěvek Čtenář, moderátor, administrátor Chyba v článku Oprav článek Moderátor, administrátor Nevyhovující článek Odstraň článek Čtenář, moderátor, administrátor Výpis článku Vypiš článek Čtenář, moderátor, administrátor Výpis diskuze ke článku Vypiš diskuzi ke článku Čtenář, moderátor, administrátor Výpis uživatelů Vypiš uživatele Čtenář, moderátor, administrátor Výpis ankety Vypiš anketu Čtenář, moderátor, administrátor Výpis obrázku Vypiš obrázek s titulkem Čtenář, moderátor, administrátor Nevyhovující příspěvek Odstraň příspěvek Moderátor, administrátor Hlasování v anketě Přidej odpověď do ankety Čtenář, moderátor, administrátor Hodnocení článku uživatelem Přidej hodnocení článku Čtenář, moderátor, administrátor Hodnocení článku Vypočti průměrné hodnocení Systém Podobný článek Přidej k sobě 2 podobné články Moderátor, administrátor Nová anketa Vytvoř anketu Moderátor, administrátor Chyba v anketě Oprav anketu Moderátor, administrátor Nevyhovující anketa Smaž anketu Moderátor, administrátor Nový obrázek Vlož obrázek Autor, moderátor, administrátor Chyba u obrázku Oprav obrázek Autor, moderátor, administrátor Nevyhovující obrázek Smaž obrázek Autor, moderátor, administrátor Nová kategorie Vytvoř kategorii Administrátor Chyba v kategorii Oprav kategorii Administrátor Nevyhovující kategorie Odstraň kategorii Administrátor Špatné zařazení článku Přemísti článek Administrátor Nový uživatel Zapiš do seznamu uživatelů Uživatel Nutnost změny práv Změň práva Administrátor Zálohování Kategorie Ulož smazanou kategorii Systém Zálohování Uživatele Ulož smazaného uživatele Systém Zálohování Článku Ulož smazaný článek Systém Model jednání Čtenář: smí číst článek, psát k němu komentáře do diskuze a mazat své komentáře, vypsat si informace o uživatelích, hlasovat v anketách Autor: smí číst a psát článek a přidat k němu obrázek, psát k němu komentáře do diskuze, upravovat své články, mazat své komentáře v diskuzi, vypsat si informace o uživatelích, hlasovat v anketách Moderátor: smí číst a psát článek a přidat k němu obrázek, psát k němu komentáře do diskuze, upravovat všechny články, vypsat si informace o uživatelích mazat články v diskuzi a smazat článek, přiřadit k sobě podobné články, přemisťovat špatně zařazené články, hlasovat v anketách, vytvářet nové a mazat je Administrátor: smí číst a psát článek a přidat k němu obrázek, psát k němu komentáře do diskuze, upravovat všechny články, vypsat si informace o uživatelích, mazat články v diskuzi a smazat článek a obrázek, přiřadit k sobě podobné články, přidávat, upravovat a odebírat kategorie, přemisťovat špatně zařazené články, přidat a odebrat uživatele, změnit práva uživatele, hlasovat v anketách, vytvářet nové a mazat je
Zadání, specifikace nefunkčních požadavků 1.) Systém musí mít dobrou odezvu a jednoduché, srozumitelné prostředí, aby se co nejvíce urychlila a zjednodušila práce se systémem. Důležité je i bezpečnost při práci s daty a zálohování. 2.) Je žádoucí, aby bylo použito webové rozhraní. 3.) Použité technologie nejsou důležité, je však žádoucí nepoužívat komerční software. Lineární zápis Entity: Category (ID_CATEGORY, name_category, text_category) Article (ID_ARTICLE, id_user, id_category,title_article, subtitle_article, text_article, date_article, status_article) Forum (id_article, id_user,id_forum, forid_forum, title_forum, text_forum, time_forum) User (ID_USER, name_user, surname_user, nick_user, email_user, group_user, pass_user) Value_user_article(id_article, id_user, value) Picture (ID_PICTURE, title_picture, adress_picture) Picture_Article ( id_picture, id_article) Similar_Articles (id_article, id_article) Survay (ID_SURVAY, text_survay) Survay_question ( ID_QUESTION, id_survay, text_question) User_Opinion ( id_survay, id_question, id_user) bak_category (ID_CATEGORY, name_category, text_category) bak_article (ID_ARTICLE, id_user, id_category,title_article, subtitle_article, text_article, date_article, status_article) bak_user (ID_USER, name_user, surname_user, nick_user, email_user, group_user, pass_user) KLÍČ, cizí_klíč Vztahy: ARTICLE_IN_CATEGORY(Category, Article), 1:N REACTED(Article, Forum), 1:N ARTICLE_VALUED(Article, Value user article), 1:N USER_VARUE(User, Value user article), 1:N WRITEN_ARTICLE (User, Article), 1:N WRITEN_REACTION(User, Forum), 1:N ARTICLE_SIMILARITY (Article, Similar_Article), 1:N PICTURE_IN_ARTICLE (Picture, Picture_Article), 1:N ARTICLE_WITH_PICTURES (Article, Picture_Article), 1:N QUESTION_IN_SURVAY (Survay, Survay_Question), 1:N ANSWER_SURWAY (Survay, User_Opinion), 1:N ANSWER_QUESTION (Question, User_Opinion), 1:N ANSWER_USER (User, User_Opinion), 1:N Mezi tabulkami bac_category, bac_article a bac_user jsou vztahy obdobné jako mezi tabulkami Category, Article a User.
ER-Diagram
Datový slovník User id_user mediumint 6 A N A kladné číslo, autoincrement name_user varchar 15 N N N jméno, text surname_user varchar 15 N N N příjmení, text nick_user varchar 20 N N N přihlašovací jméno, text email_user varchar 40 N N N emailová adresa, text group_user enum 1 N N N user, redactor, corrector, admin pass_user varchar 32 N N N heslo v md5, text Tabulka User obsahuje informace o všech uživatelích Category id_category tinyint 2 A N A kladné číslo, autoincrement name_category varchar 20 N N N název kategorie, text text_category varchar 50 N N N popis kategorie, text Tabulka Category obsahuje informace o všech kategoriích Article id_article smallint 4 A N A kladné číslo, autoincrement id_user mediumint 6 N N N kladné číslo, cizí klíč z User id_category tinyint 2 N N N kladné číslo, cizí klíč z Category title_article varchar 25 N N N nadpis článku, text subtitle_article text N N N podnadpis článku, text text_article text N N N text článku date_article int 11 N N N datum vložení článku v sec od roku 1970 status_article enum 1 N N N rozepsaný, schválený, odmítnutý Tabulka Article obsahuje informace o všech článcích. Forum id_article smallint 4 N N A kladné číslo, cizí klíč z Article id_user mediumint 6 N N N kladné číslo, cizí klíč z User id_forum int 10 A N N kladné číslo, autoincrement forid_forum int 10 N N N číslo nadřazeného přídpěvku, kladné title_forum varchar 255 N N N titulek příspěvku text_forum text N N N text příspěvku time_forum int 11 N N N datum vložení článku v sec od roku 1970 Tabulka Forum obsahuje informace o všech příspěvcích v diskuzi.
Value_user_article id_article smallint 4 A N A kladné číslo, cizí klíč z Article id_user mediumint 6 A N A kladné číslo, cizí klíč z User value tinyint 1 N N N kladné číslo z rozsahu 1-5 V tabulce Value_user_article je seznam všech hodnocení článků uživatelem. Picture id_picture smallint 4 A N A kladné číslo, autoincrement title_picture varchar 50 N N N popisek obrázku, text adress_picture varchar 100 N N N adresa obrázku, text Tabulka picture obsahuje seznam všech obrázků. Picture_Article id_article mediumint 6 A N A kladné číslo, cizí klíč z Article id_picture smallint 4 A N A kladné číslo, cizí klíč z Picture Tabulka Picture_article obsahuje záznamy o propojení článků a obrázků. Similary_Article id_article mediumint 6 A N A kladné číslo, cizí klíč z Article id_article mediumint 6 A N A kladné číslo, cizí klíč z Article Tabulka Similary_Article je soupis všech navzájem podobných článků. Survay id_survay mediumint 6 A N A kladné číslo, autoincrement text_survay varchar 100 N N N anketní otázka Tabulka Survay obsahuje soupis všech anket. Survay_question id_question mediumint 7 A N A kladné číslo, autoincrement id_survay mediumint 6 N N N kladné číslo, cizí klíč ze Survay text_question varchar 100 N N N odpověď na anketní otázku Tabulka Survay_question je soupisem všech anketních dotazů. User_Opinion id_question mediumint 7 A N A kladné číslo, cizí klíč z Question id_survay mediumint 6 N N N kladné číslo, cizí klíč ze Survay id_user mediumint 6 N N N kladné číslo, cizí klíč z User Tabulka User_Opinion je souhrn všech hlasů uživatelů ve všech anketách.
Funkční analýza Kontextový diagram DFD - Úroveň 0:
DFD - Úroveň 1 - Anketa DFD - Úroveň 1 - Článek
DFD - Úroveň 1 Kategorie DFD - Úroveň 1 - Obrázek
DFD - Úroveň 1 Reakce DFD - Úroveň 1 Uživatel
Minispecifikace Přidání a editace Kategorie: 1.) Zobraz formulář "Přidání a editace Kategorie". 2.) Uživatel-administrátor zadá/upraví název kategorie do title a popis kategorie do text a odešle. 3.) Zkontroluj, zda title není prázdný. Pokud ano, pak zpět na bod 2. 4.) Vygeneruj jednoznačné číslo kategorie do id. 5.) Ulož(REPLACE) všechna data z proměnných do tabulky Category. Přidání článku 1.) Zobraz formulář pro přidání článku. 2.)Uživatel-autor zadá text článku do text a název článku do title a odešle. 3.)Zkontroluj, zda text a title nejsou prázdné. Pokud ano, pak zpět na bod 1. 4.)Vygeneruj jednoznačné číslo článku do id. 5.)Doplň dnešní datum do datum. 6.)Nastav status "rozepsaný" do status. 7.)Doplň číslo autora do user. 8.)Ulož(REPLACE) všechna data z proměnných do tabulky Article.
Korektura článku 1.) Zobraz formulář "Korektura článku". 2.) Doplň text článku do text, název článku do title, číslo článku do id, číslo kategorie do category a status do status. 3.) Uživatel-moderátor/administrátor edituje článek do text a/nebo název článku do title, a/nebo kategorii v category a/nebo status do status, dodá podtitul short a odešle. 4.) Zkontroluj, zda text, short a title nejsou prázdné. Pokud ano, pak zpět na bod 3. 5.) Ulož(UPDATE) všechna data z proměnných do tabulky Article. Změna práv uživatele: 1.)Zobraz formulář Změna práv. 2.)Doplň číslo uživatele do id, login do nick, jméno do name a příjmení do surname, skupinu do group, telefon do phone, číslo na mobil do mobil a email do email. 3.)Uživatel-administrátor změní práva uživatele do group. 4.)Ulož(UPDATE) změnu práv do tabulky User.
Uživatel(Nový/Editace): 1.) Obě akce mají podobný formulář "Uživatel nový/editace" (formulář registrace má navíc "Smluvní podmínky" a zaškrtávací políčko agree). 2.) Pro registraci zobraz prázdný formulář; pro editaci do formuláře doplň login do nick, jméno do name příjmení do surname, telefon do phone, mobilní telefon do mobil a email do email. 3.) Uživatel zadá/změní své jméno do name, příjmení do surmane, přihlašovací jméno do nick,heslo do pass a pro kontrolu do re_password, telefon do phone, mobilní telefon do mobil a email do email (v případě registrace i odsouhlasí smluvní podmínky) a odešle. 4.)Zkontroluj, zda name, surname, nick, pass, re_password a email (v případě registrace i agree) nejsou prázdné. Pokud ano, pak zpět na bod 3. 5.)V případě registrace vygeneruj jednoznačné číslo uživatele do nick 6.)Práva uživatele nastav na čtenář do group 7.)Ulož(REPLACE) všechna data z proměnných do tabulky User Reakce: 1.)Zobraz formulář nová Reakce 2.)Doplň číslo uživatele do user 3.)Uživatel zadá text reakce do text a title. 4.)Zkontroluj, zda text není prázdný. Pokud ano, pak zpět na bod 3. 5.)Vygeneruj jednoznačné číslo reakce do id 6.)Doplň dnešní datum do datum 7.)Ulož(REPLACE) všechna data z proměnných do tabulky Forum
Dynamická analýza Anketa Článek Stavy článku jsou realizovány atributem status_article typu enum.
Kategorie Obrázek Reakce na článek
Uživatel Stavy uživatele jsou realizovány atributem group_user typu enum.
Uživatelské rozhraní