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 Nevyhovující článek Výpis článku Výpis diskuze ke článku Výpis uživatelů Výpis ankety Výpis obrázku Nevyhovující příspěvek Hlasování v anketě Hodnocení článku uživatelem Hodnocení článku Podobný článek Nová anketa Chyba v anketě Nevyhovující anketa Nový obrázek Chyba u obrázku Nevyhovující obrázek Nová kategorie Chyba v kategorii Nevyhovující kategorie Špatné zařazení článku Nový uživatel Nutnost změny práv Zálohování Kategorie Zálohování Uživatele Zálohování Článku
Oprav článek Odstraň článek Vypiš článek Vypiš diskuzi ke článku Vypiš uživatele Vypiš anketu Vypiš obrázek s titulkem Odstraň příspěvek Přidej odpověď do ankety Přidej hodnocení článku Vypočti průměrné hodnocení Přidej k sobě 2 podobné články Vytvoř anketu Oprav anketu Smaž anketu Vlož obrázek Oprav obrázek Smaž obrázek Vytvoř kategorii Oprav kategorii Odstraň kategorii Přemísti článek Zapiš do seznamu uživatelů Změň práva Ulož smazanou kategorii Ulož smazaného uživatele Ulož smazaný článek
Moderátor, administrátor Čtenář, moderátor, administrátor Čtenář, moderátor, administrátor Čtenář, moderátor, administrátor Čtenář, moderátor, administrátor Čtenář, moderátor, administrátor Čtenář, moderátor, administrátor Moderátor, administrátor Čtenář, moderátor, administrátor Čtenář, moderátor, administrátor Systém Moderátor, administrátor Moderátor, administrátor Moderátor, administrátor Moderátor, administrátor Autor, moderátor, administrátor Autor, moderátor, administrátor Autor, moderátor, administrátor Administrátor Administrátor Administrátor Administrátor Uživatel Administrátor Systém Systém 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.) 2.) 3.)
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í. Je žádoucí, aby bylo použito webové rozhraní. 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 Atribut
Dat. typ
velikost
KEY
NULL
index
Integritní omezení
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 Atribut
Dat. typ
velikost
KEY
NULL
index
Integritní omezení
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 Atribut
Dat. typ
velikost
KEY
NULL
index
Integritní omezení
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 Atribut
Dat. typ
velikost
KEY
NULL
index
Integritní omezení
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
N
N
N
datum vložení článku v sec od roku 1970
11
Tabulka Forum obsahuje informace o všech příspěvcích v diskuzi.
Value_user_article Atribut
Dat. typ
velikost
KEY
NULL
index
Integritní omezení
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 Atribut
Dat. typ
velikost
KEY
NULL
index
Integritní omezení
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 Atribut
Dat. typ
velikost
KEY
NULL
index
Integritní omezení
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 Atribut
Dat. typ
velikost
KEY
NULL
index
Integritní omezení
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 Atribut
Dat. typ
velikost
KEY
NULL
index
Integritní omezení
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 Atribut
Dat. typ
velikost
KEY
NULL
index
Integritní omezení
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 Atribut
Dat. typ
velikost
KEY
NULL
index
Integritní omezení
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í