VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA INFORMAČNÍ SYSTÉMY A DATOVÉ SKLADY INZERTNÍ SERVER (semestrální projekt) ZS 2008-2009 Členové skupiny: Příjmení, jméno, login Analýza Implementace XIII. 1. Grác Vladimír, gra065 1. 2. Haltufová Zuzana, hal188 2. 3. Kapča Daniel, kap077 3. 4. Juchelková Kateřina, juc024 4.
1 Zadání ( XIII autor, datum) Vydáváme inzertní týdeník. Inzerují se zde inzeráty různých odvětví a oborů, od hraček až po nemovitosti. Obyčejné inzeráty jsou uveřejněny zdarma. Komerční inzeráty, prodeje aut a nemovitostí jsou zpoplatněny. Dosud nepůsobíme na internetu a jsme si vědomi ztrát, které nám takto vznikají. Chceme proto tištěnou podobu novin přenést na internet a vytvořit tak svůj nový inzertní systém, který usnadní práci našim zaměstnancům i zákazníkům. Systém inzerátů by měl být rozdělen na nabídky a poptávky. Dále by měl obsahovat rubriky, které jsou dále děleny na kategorie. Systém by měl umožňovat zadávat inzeráty. Do systému smí vstupovat pouze registrovaní uživatelé. Nekomerční inzeráty jsou zdarma, komerční a nadstandardní služby (zvýraznění atd.) se platí..pokud si uživatel přeje, inzerát může vyjít v novinách. Bylo by dobré, kdyby každý uveřejnění inzerát na internetu mohl být komentován jinými uživateli. Jednotliví zaměstnanci se starají o své přidělené rubriky inzerátů. Redaktoři kontrolují inzeráty zda jsou v pořádku a mohou se zveřejnit. Například zda inzerát který je zdarma, neobsahuje komerční sdělení (u inzerátů zdarma), nebo zda patří do správné kategorie atd. Potřebujeme tedy aby naši redaktoři mohli takto kontrolovat inzeráty i na internetu. Pokud je inzerát v pořádku po kontrole se objeví na webu (v novinách), v opačném případě správce inzerátů kontaktuje inzerenta (mimo IS). Při objednání placené služby redaktor předá potřebné informace o druhu služby účetní a ta službu vyúčtuje. V systému by tedy redaktor zkontrolovat inzerát a předat inzerát účetní teprve po vystavení faktury by se inzerát měl zobrazovat na webu. Každému uživateli který si zadá placený inzerát dojde faktura dle ceníku. Faktury vystavuje účetní. Chtěli bychom vést evidenci těchto faktur a mít tak lepší přehled o našich financích. Potřebuje také znát informace, které by mohli vést k zlepšení provozu firmy. Například v jaké kategorii se nejčastěji inzeruje, kolik rubrika vydělává. Představujeme si to asi tak, že statistiky u zaměstnanců budou děleny na celou dobu sledování (do statistik se počítají inzeráty mladší 2 let). Dále pak na čtvrtletí a měsíce (možnost změnit). Z těchto statistik by mělo jít vyčíst v jednotlivých období průměrné denní pracovní vytížení. Pozn: nejkratší doba inzerátu je 1 týden s tím, že zákazník může svůj inzerát kdykoli smazat. 1.1 Funkční požadavky PROČ nový IS Redakce XY vydává inzertní týdeník. Redakce dosud nepůsobí na internetu a je si vědoma ztrát, které ji takto vznikají. Chce proto tištěnou podobu novin přenést na internet a vytvořit tak svůj nový inzertní systém. Dosud inzerenti museli svůj inzerát podávat poštou nebo osobně na pobočce. Pro rychlejší, jednoduší a levnější zadávání inzerátů by se v systému měli dát zadávat inzeráty, jejich zobrazení na internetu a v novinách (dle přání zákazníka, ohraničení, zvýraznit atd.). Faktury za placené inzeráty jsou občas vystavovány pozdě, redaktor nestíhá předat účetní informace o objednaných službách, proto pro rychlejší
vyúčtovaní služeb a zpracování plateb je třeba aby systém zpracovával a evidoval i faktury. Někteří redaktoři jsou vytíženi víc než jejich kolegové (např. správce rubriky auta mají více inzerátu než správce rubriky nábytek). Tento jev se dosud nepodařilo v redakci odstranit. Proto by bylo dobré sledovat u jednotlivé rubriky jejich počty inzerátu a dobu trvání a kolik rubrika vydělává. Na základě výsledku pak redakce může vylepšit systém rozdělení práce. K ČEMU má IS sloužit Hlavní prioritou, proč agentura požaduje IS pro svou práci je, že se tím výrazně urychlí, rozšíří a zlepší jejich služby zákazníkům i jejím zaměstnancům. Se systémem by se měla zlepšit přehlednost díky rychlejšímu vyhledávání jak inzerátů, zákazníků i faktur. V systému by měla být kompletní evidence zaměstnanců, zákazníků, inzerátů, faktur. Systém by měl výrazně urychlit komunikaci ze zákazníkem. Měl by umožňovat zákazníkovy pohodlně, rychle a levně z domova zadat inzerát pomocí formuláře. Také by měl umožňovat uživatelům komentovat inzeráty od jiných uživatelů, což v papírové formě nebylo možné. V systému bude také obsažena evidence faktur, kde je hlavní prioritou sledovat stav faktury (zaplacená, nezaplacená, stornovaná, ke zpracování). KDO s IS bude pracovat Se systémem mohou pracovat pouze registrovaní uživatelé. Všichni uživatelé mohou procházet jednotlivými rubrikami (elektronika), jejich kategoriemi (audio) a následně prohlížet si všechny inzeráty a jejich komentáře. Všichni uživatelé si mohou editovat své osobní údaje. Se systémem budou pracovat zákazníci kteří mohou zadávat, editovat, mazat (u placených inzerátů zaplatí celou fakturu) a komentovat inzeráty. Mohou sledovat své inzeráty. Dále mohou sledovat své faktury (zda jsou zaplacené či nikoli). Jednotlivé inzeráty kontrolují redaktoři. Může si zobrazit a vyhledat informace o zákaznících. Redaktor kontroluje nově zadané inzeráty ve své rubrice a při špatném zadání kontaktuje uživatele (mimo IS). Redaktor dále kontroluje objednané služby. Po kontrole a editaci se inzerát zobrazí účetní (placený) nebo se objeví v systému (zdarma). Redaktor si může zobrazit informace o zákaznících. Dále má možnost si zobrazit statistiky rubrik které spravuje (počet inzerátů, výdělek... ), do statistik se počítají inzeráty mladší dvou let, dále se rozdělují na měsíční a čtvrtletní (tak jak nastaví šéfredaktor). Uživateli účetní se zobrazují zkontrolované inzeráty. Může si zobrazit a vyhledat informace o zákaznících. Na základě objednaných služeb vystavuje faktury zákazníkům, po vystavení faktury se placený inzerát objeví v inzerci. Účetní kontroluje faktury a edituje jejich stav (zaplacená, nezaplacená). Dále může editovat ceny v ceníku a zadávat a rušit nové tarify. Změny v ceníku nesmí ovlivnit již vystavené faktury! Šéfredaktor má přístup ke všem funkcím zaměstnanců. Může také sledovat a porovnávat všechny statistiky rubrik a tak zjišťovat, který ze zaměstnanců je víc či méně vytížen. Dále přiděluje redaktorům jednotlivé rubriky. Může si zobrazit a vyhledat informace o redaktorů. Šéfredaktor může nastavovat období pro statistiky. Šéfredaktor přidává do systému nové zaměstnance, rubriky a jejich kategorie. Zaměstnance, rubriky včetně kategorii může také editovat.
Pozn.: Každý neregistrovaný uživatel má možnost se zaregistrovat jako zákazník. Ostatní role v systému registruje pouze šéfredaktor! VSTUPY do systému Zaměstnanec nového zaměstnance může zadávat šéfredaktor Zákazník nový zákazník se může sám zaregistrovat Inzerát každý zákazník může zadat nový inzerát Rubrika novou rubriku může zadat šéfredaktor Kategorie novou kategorii může zadat šéfredaktor Tarif účetní může přidávat nové služby a jejich ceny Komentář každý zákazník může přidávat komentáře k inzerátům VÝSTUPY ze systému Zaměstnanec šéfredaktor si může nechat zobrazit výpis svých redaktorů a jejich statistik Zákazník redaktoři si mohou nechat vypisovat seznamy zákazníků Inzerát každý zaregistrovaný uživatel může vidět seznam inzerátů tříděny dle rubriky a kategorie Rubrika každý registrovaný uživatel vidí seznam rubrik Kategorie každý registrovaný uživatel vidí seznam kategorií Tarif zákazníci a účetní si mohou vypsat seznam tarifů Komentář každý registrovaný uživatel může vidět komentáře k danému inzerátu Faktura účetní vidí faktury Statistika_zákazníka každý zákazník si může zobrazit svou statistiku Statistika_inzerátů šéfredaktor si může nechat zobrazit statistiky jednotlivých inzerátů Analýza (XIII autor, datum)
1.2 Analýza datová 1.2.1 Lineární zápis typů entit a typů vazeb Zaměstnanec Zákazník Funkce Role Inzerát ( ID_zaměstnanec, login, jméno, příjmení, mobil, e-mail, město, ulice, čp, psč, heslo, ID_funkce, ID_role) ( ID_zákazník, login, jméno, příjmení, mobil, e-mail, město, ulice, čp, psč, datum_registrace, heslo,id_role) ( ID_funkce, funkce) ( ID_role, role) ( ID_inzerát, název, popis, popis_cena, datum_od, datum_do, stav, noviny, ID_zákazník, ID_kategorie,) Rubrika ( ID_rubrika, název, druh, ID_zaměstnanec ) Kategorie ( ID_kategorie, název, ID_rubrika) Tarif ( ID_tarif, název, popis, cena_tyden ) Komentář ( ID_komentář, popis, ID_zákazník, ID_inzerát ) Faktura ( ID_faktura, datum_vystavení, datum_splatnosti, stav, cena_celkem, ID_zákazníka, ID_zaměstnance, ID_inzerat ) Položka ( ID_položka, ID_faktura, ID_tarif, cena_položky ) Stat_rubrika Období (ID_statiska_rubrika, počet_aktiv_inzereratu, počet_celkem_inzeratu, cena_prum, cena_za_inzeraty, ID_rubrika, ID_období) (ID_období, název, od,do)
JE V SYSTÉMU (Role, Zákazník) 1:N MÁ PRÁVA (Role, Zaměstnanec) 1:N ZASTÁVÁ (Funkce,Zaměstnanec) 1:N PÍŠE (Zákazník, Komentář) 1:N PODÁVÁ (Zákazník, Inzerát) 1:N PLATÍ (Zákazník, Faktura) 1:N VYSTAVÍ (Zaměstnanec, Faktura) 1:N SPRAVUJE (Zaměstnanec, Rubrika) 1:N HODNOTÍ (Inzerát, Komentář) 1:N JE VYPSÁNA (Faktura, Položka) 1:N PODÁVÁ (Zákazník, Inzerát) 1:N PLATÍ (Zákazník, Faktura) 1:N VYSTAVÍ (Zaměstnanec, Faktura) 1:N SPRAVUJE (Zaměstnanec, Rubrika) 1:N HODNOTÍ (Inzerát, Komentář) 1:N JE VYPSÁNA (Faktura, Položka) 1:N PODÁVÁ (Zákazník, Inzerát) 1:N JE VYPSÁNA (Faktura, Položka) 1:N JE ZAŘAZEN (Kategorie, Inzerát) 1:N JE ÚČTOVÁN (Tarif, Položka) 1:N OBSAHUJE (Rubrika, Kategorie) 1:N SE VYPOČÍTÁ (Rubrika, Statistika_inzerátů) 1:N SE DĚLÍ (Období, Statistika_inzerátů) 1:N UČTUJE (Inzerát,Faktura) 1:N
1.2.2 ER diagram 1.2.3 Datový slovník typ délka Klíč index is null? io poznámka Zamestnanec ID_zamestnanec varchar 6 PK A N unikatni XXXYYY jmeno varchar 30 N N N primeni varchar 30 N A N mobil int 15 N N N e-mail varchar 100 N N N *@*.* mesto varchar 50 N N A ulice varchar 50 N N A cp int 6 N N A Číslo popisné psc int 5 N N N NNNNN heslo varchar 32 N N N MD5 ID_funkce int 6 CK N N z Funkce ID_role int 6 CK N N z Role Zakaznik ID_zakaznik varchar 6 PK A N unikatni XXXYYY jmeno varchar 30 N N N primeni varchar 30 N A N
mobil int 15 N N N e-mail varchar 100 N N N *@*.* mesto varchar 50 N N A ulice varchar 50 N N A cp int 6 N N A Číslo popisné psc int 5 N N N NNNNN datum_registrace Date N N N heslo varchar 32 N N N MD5 ID_role int 6 CK N N z Role Funkce ID_funkce int 6 PK A N NNNNNN funkce varchar 30 N N N editor atd. Role ID_role int 6 PK A N NNNNNN role varchar 30 N N N zakaznik, ucetni, redaktor, sefredaktor Inzerat ID_inzerat int 6 PK A N NNNNNN nazev varchar 30 N A N popis longtext - N N N cena_popis float 10,2 N N A cena za nabízený produkt datum_od date - N N N datum_do date - N N N stav bool - N N N true/false aktivni, neaktivní, k zpracovani... noviny bool - N N N true/false Vyjít v novinách? ID_zakaznik varchar 6 CK N N ID_kategorie int 6 CK N N Rubrika ID_rubrika int 6 PK A N NNNNNN nazev varchar 30 N A N druh enun - N N N ID_zamestnanec varchar 6 CK N N nabídka, poptávka Kategorie ID_kategorie int 6 PK A N NNNNNN nazev varchar 30 N A N ID_rubrika int 6 CK N N Tarif ID_tarif int 6 PK A N NNNNNN nazev varchar 30 N N N popis longtext - N N N cena_tyden float 10,2 N N N
Komentar ID_komentar int 6 PK A N NNNNNN popis longtext - N N N ID_zakaznik varchar 6 CK N N ID_inzerat Int 6 CK N N Faktura ID_faktura int 6 PK A N NNNNNN datum_vystaveni date - N N A datum_splatnosti date - N N A stav enum - N N N cena_celkem float 10,2 N N A ID_zakaznika varchar 6 CK N N ID_zamestnance int 6 CK N N ID_inzerat int 6 CK N A NNNNNN splacena, nesplacena... Polozka ID_polozka int 6 PK A N NNNNNN ID_faktura int 6 CK N N ID_tarif int 6 CK N N cena_polozky float 10,2 N N A Stat_rubrika ID_statistika_rubrika int 6 PK A N NNNNNN pocet_aktiv_inzeratu int 6 N N N pocet_celkem_inzeratu int 6 N N N cena_prum float 15,2 N N N cena_za_inzeraty float 15,2 N N N ID_rubrika int 6 CK N N ID_obdobi int 6 CK N N Obdobi ID_obdobi int 6 PK A N autoinc. nazev varchar 30 N N A od date - N N N do date - N N N * čeká znamená, že ještě neprošel kontrolou ** zdarma nemá fakturu, pokud hodnota null a stav aktivní aut. do systému
1.3 Analýza funkční (skupina autor, datum) 1.3.1 DF diagramy HOST REDAKTOR 1. EVIDENCE ZÁKAZNÍKŮ 2. EVIDENCE ZAMĚSTNANCE ÚČETNÍ 3. MENU 4. INZERCE 5. STATISTIKY 6. FAKTURY 7. SLUŽBY ŠÉFREDAKTOR ZÁKAZNÍK 0. DFD
HOST 1.1 REGISTRACE ZÁKAZNÍKA Id_role ZÁKAZNÍK 1.4 ZMĚNA ZÁKAZNÍKA ZÁKAZNÍK ROLE id_zakaznik, jmeno, prijmeni 1.3 DETAIL ZÁKAZNÍKA 1.2 VÝPIS ZÁKAZNÍKŮ ÚČETNÍ REDAKTOR ŠÉFREDAKTOR 1. EVIDENCE ZÁKAZNÍKA 1.1 Registrace zákazníka 1. Zobraz formulář pro registraci uživatele (jméno, příjmení, mobil, e-mail, mesto, ulice, cp, psc, heslo) 2. Uživatel host zadá svoje osobní údaje a heslo 3. Zkontroluj zadané údaje z formuláře a) kontrola proběhla úspěšně I. Vyber z tabulky Role id_role, kde role="zakaznik" II. Zapamatuj si do zakaznik.id_role= Role.id_role BEGIN III. IV. Vygeneruj zakaznik.id_zakaznik Zapiš vyplněný formulář a zákaznik.id_zakaznik, zakaznik.id_role do tabulky Zakaznik END b) kontrola proběhla neúspěšně I. Vypiš uživateli hlášku o chybě
1.2 Výpis zákazníků 1. Načti všechny záznamy z tabulky Zákazník, (id_zakaznik, jmeno, prijmeni) 2. Setřiď načtené data postupně podle atributu zak.prijmeni 3. Pro každý načtený záznam dělej 3.1 Vypiš zak.id_zakaznika, zak.jmeno, zak.prijmen 3.2 Přidej odkaz detail konec cyklu 1.3 Detail zákazníka 1. Načti data z tabulky Zákazník dle ID_zakaznik 2. Vypiš uživateli načtené hodnoty id_zakaznik, jmeno, prijmeni, mobil, e-mail, město, ulice, cp, psc 1.4 Změna zákazníka 1. Načti data z tabulky Zákazník dle ID_zakaznik (jméno, příjmení, mobil, e-mail, mesto, ulice, cp, psc, heslo) 2. Zobraz formulář s načtenými daty 3. Uživatel zákazník upraví načtené atributy 4. Proveď kontrolu dat z formuláře a) kontrola proběhne úspěšně BEGIN I. Ulož data do tabulky Zakaznik dle atributu ID_zakaznik END II. Vypiš aktérovi hlášku o úspěšném uložení b) kontrola proběhne neúspěšně I. Vypiš uživateli hlášku o chybě
2.1 Registrace zaměstnance 1. Zobraz formulář pro registraci zaměstnance (jméno, příjmení, mobil, e-mail, mesto, ulice, cp, psc, heslo, role, funkce) 2. Uživatel šéfredaktor zadá povinné údaje 3. Zkontroluj zadané údaje z formuláře a) kontrola proběhla úspěšně I. Vyber z tabulky Role id_role, kde role=form.role II. Zapamatuj si do zam.id_role= Role.id_role III. Vyber z tabulky Funkce id_funkce, kde funkce="form.funkce" IV. Zapamatuj si do zam.id_funkce=funkce.id_funkce BEGIN V. Vygeneruj zam.id_zamestnanec VI. Zapiš vyplněný formulař, zam.id_zamestnanec, zam.id_role a zam.id_funkce do tabulky Zamestnanec END b) kontrola proběhla neúspěšně I. Vypiš uživateli hlášku o chybě
2.2 Výpis zaměstnance 1 Načti všechny záznamy z tabulky Funkce 2. Pro každý načtený záznam dělej 2.1 Ulož do pole funkce[funkce.id_funkce]=funkce.funkce konec cyklu 3. Načti všechny záznamy z tabulky Zaměstnanec (id_zamestnance, jmeno, prijmeni) 4. Setřiď načtené data postupně podle atributu zam.prijmeni 5. Pro každý načtený záznam dělej 5.1 Ulož do zam.funkce=funkce[zam.id_funkce] 5.2 Vypiš zam.id_zamestnanec, zam.jmeno, zam.prijmeni, zam.funkce 5.3 Přidej odkaz detail konec cyklu 2.3 Detail zaměstnance 1. Načti data z tabulky Zaměstnanec dle ID_zaměstnanec (vše) 2. Vypiš načtené hodnoty (id_zmestnanec, jmeno, prijmeni, mobil, e-mail, město, ulice, cp, psc) a) Pokud je uživatel přihlášen jako šéfredaktor I) z tabulky Funkce najdi Funkce.funkce tak aby Zaměstnanec.ID_funkce=Funkce.ID_funkce II) zapamatuj si Funkce.funkce jako Form.funkce III) tabulky Role najdi Role.role tak aby Zaměstnanec.ID_role=Role.ID_role IV) zapamatuj si Role.role jako Form.role V) Vypiš i Form.role a Form.funkce 2.4 Edit zaměstnance 1. Načti data z tabulky Zaměstnanec dle ID_zaměstnanec a) pokud je aktrér zaměstnanec (jméno, příjmení, mobil, e-mail, město, ulice, čp, psč, heslo,) b) pokud je aktér šéfredaktor, pak z tabulky Funkce najdi Funkce.funkce tak aby Zaměstnanec.ID_funkce=Funkce.ID_funkce a z tabulky Role najdi Role.role tak aby Zaměstnanec.ID_role=Role.ID_role (jméno, příjmení, mobil, e-mail, město, ulice, čp, psč, heslo, ID_funkce, ID_role) 2. Zobraz formulář s načtenými daty 3. Aktér upraví načtené atributy 4. Proveď kontrolu dat z formuláře a) (pokud je aktér šéfredaktor) and (původní Zaměsnanec.role=redaktor) and (Zaměstnanec.role byla změněna) I.) prohledej data v tabulce Rubrika zda Zaměstnanec.ID_zaměstnanec=Rubrika.ID_zaměstnanec I.1) pokudzaměstnanec.id.zaměstnanec=rubrika.id_zaměstnanec I.1.1 vypiš aktérovi šéfredaktor hlášku, že nemůže změnit roli I.2)pokud Zaměstnanec.ID.zaměstnanec<>Rubrika.ID_zaměstnanec II.1) vyber z tabulky Role Role.ID_role, kde Role.role=form.role II.2) zapamatuj si do zaměstnanec.id_role=role.id_role II.3) vyber z tabulky Funkce ID_funkce, kde funkce=form.funkce II.4) zapamatuj si do zaměstnanec.id_funkce=funkce.id_funkce b) pokud je aktér zaměstnanec I) pokračuj na bod 4.1 4.1 a) kontrola proběhne úspěšně
BEGIN I.) Ulož data do tabulky Zaměstnanec dle atributu ID_zaměstnanec END II.) Vypiš aktérovi hlášku o úspěšném uložení b) kontrola proběhne neúspěšně I.) Vypiš uživateli hlášku o chybě 3.1.1 Přidej rubriku 1. Načti data role.id_role z tabulky Role role.id_role, kde role="redaktor" 2. Načti data z tabulky Zamestnanec kde Zaměstnanec.id_role=Role.id_role (ID_zaměstnanec, jméno, příjmení) 3. Zobraz formulář pro přidání nové rubriky 4. Aktér šéfredaktor vyplní údaje formuláře a vybere druh(nabídka, poptávka) a zaměstnance (název, druh, ID_zaměstnance)
5. Zkontroluj zadane údaje z formuláře a) kontrola proběhla úspěšně BEGIN I) vygeneruj ID_rubrika II) ulož ID_rubrika a data z formuláře do tabulky Rubrika END III) vypiš aktérovi hlášku o úspěšném uložení b) kontrola proběhla neúspěšně I) vypiš uživateli hlášku o chybě 3.1.2 Přidej kategorii 1 Načti data z tabulky Rubrika (ID_rubrika, název) 2. Zobraz formulář pro přidání nové kategorie 3. Aktér šéfredaktor vyplní údaje formuláře a vybere rubriku (název, ID_rubrika) 4. Zkontroluj zadané údaje z formuláře a) kontrola proběhla úspěšně BEGIN I) vygeneruj ID_kategorie II) ulož ID_kategorie a data z formuláře do tabulky Kategorie END III) vypiš aktérovi hlášku o úspěšném uložení b) kontrola proběhla neúspěšně I) vypiš uživateli hlášku o chybě VŠICHNI AKTÉŘI Druh= poptávka Druh= nabídka 3.2.1 VYPIS RUBRIKY POPTÁVKA RUBRIKA 3.2.2 VYPIS RUBRIKY NABÍDKA ID_rubrika KATEGORIE 3.2.3 VYPIS KATEGORIE 3.2 VYPIS POLOŽEK 3.2.1 Výpis rubriky poptávka 1. Vyber vše z tabulky Rubrika kde Rubrika.druh="poptávka"
2 Pro každý načtený záznam dělej 2.1 Vypiš Rubrika.název konec cyklu 3.2.2 Výpis rubriky nabídka 1. Vyber vše z tabulky Rubrika kde Rubrika.druh="nabídka" 2 Pro každý načtený záznam dělej 2.1 Vypiš Rubrika.název konec cyklu 3.2.3 Výpis kategorie 1. Načti data z tabulky Kategorie dle ID_rubrika (název) 2. Pro každý načtený záznam dělej 2.1 Vypiš Kategorie.název konec cyklu 3.3.1 Změň rubriku 1. Načti data z tabulky Rubrika dle ID_rubrika (název, druh, ID_zaměstnanec) 2. Načti data z tabulky Zamestnanec, kde Zaměstnanec.ID_zaměstnanec=Rubrika.ID_zaměstnanec (jméno, příjmení) 4. Načti data z tabulky Zaměstnanec kde Zaměstnanec.ID_role=Role.ID_role Role.role="redaktor" 5. Zobraz formulář s načtenými daty 6. Aktér šéfredaktor upraví načtené atributy 7. Proveď kontrolu dat z formuláře a) kontrola proběhne úspěšně BEGIN I) Ulož data do tabulky Rubrika dle atributu ID_rubrika END II) Vypiš aktérovi šéfredaktor hlášku o úspěšném uložení b) kontrola proběhne neúspěšně I) Vypiš uživateli hlášku o chybě
3.3.2 Změň kategorii 1. Načti data z tabulky Kategorie dle ID_kategorie (název) 2. Zobraz formulář s načtenými daty 3. Aktér šéfredaktor upraví načtené atributy 4. Proveď kontrolu dat z formuláře a) kontrola proběhne úspěšně BEGIN I) Ulož data do tabulky Kategorie dle atributu ID_kategorie END II) Vypiš aktérovi šéfredaktor hlášku o úspěšném uložení b) kontrola proběhne neúspěšně I) Vypiš uživateli hlášku o chybě
4.1.1 Přidej inzerát 1. Zobraz formulář pro nový inzerát. 2. Vypiš tabulku Tarif (viz. minispecifikace 7.2) 3. Uživatel zákazník vyplní údaje formuláře (datum z kalendáře) (název, popis, popis_cena, datum_od, datum_do, noviny) 4. Uživatel vybere rubriku a kategorii v rozbalovacím menu na formuláři (ID_kategorie). 5. Zapamatuj si Inzerat.ID_kategorie=menu.ID_kategorie 6. Uživatel zákazník vybere tarify k inzerátu (checkbox) 7. Zkontroluj zadané údaje z formuláře a) kontrola proběhla úspěšně I.) nastav Inzerat.stav="ke zpracování" II.) nastav Inzerat.ID_zákazník=Zakaznik.ID_zakaznik II.1) Pokud je vybrán alespoň jeden Tarif vytvoř fakturu dle minispecifikace 6.1 II.1.I) Zapamatuj si do nova.id_faktury vygenerované nové ID_faktury BEGIN III.) Vygeneruj ID_inzerátu IV.) Do tabulky inzerát ulož hodnoty Inzerat.stav, Inzerát.ID_zakaznika, Inzerat.ID_kategorie a hodnoty z formulare V.1) Pokud nova.id_faktrura<>null Do tabulky Faktura zapiš ID_inzeratu kde nova.id_faktura=faktura.id_faktura END V.) vypiš aktérovi hlášku o úspěšném uložení b) kontrola proběhla neúspěšně I.) vypiš uživateli hlášku o chybě 4.1.2 Změň inzerát 1. Načti data z tabulky Inzerát dle ID_inzerát
(název, popis, popis_cena, datum_od, datum_do, stav, noviny) 2. Načti data do formuláře 3 Zapamatuj si stare_datum_od=datum_od a stare_datum_do=datum_do 4. Vypiš tabulku Tarif (viz. minispecifikace 7.2) 5. Uživatel zákazník vyplní údaje formuláře (datumy z kalendáře) (název, popis, popis_cena, datum_od, datum_do, noviny) a) pokud je aktér zaměstnanec I.) vypiš atribut Inzerat.stav 6. Uživatel zákazník vybere tarify k inzerátu (checkbox) 7. Zkontroluj zadané údaje z formuláře a) kontrola proběhla úspěšně I.) (Pokud je vybrán alespoň jeden Tarif) and (stare_datum_od<>form.datum_od) and ( stare_datum_do<>form.datum_do) I.1) vytvoř fakturu dle minispecifikace 6.1 s ID_inzerat I.2) nastav Inzerát.stav="ke zpracování" II.) pokud podmínka není splněna ulož do form.datum_od=stare.datum_od a form.datum_do=stare.datum_do BEGIN III.) do tabulky inzerát ulož data z formuláře, Inzerat.stav a ID_faktury END IV.) vypiš aktérovi hlášku o úspěšném uložení b) kontrola proběhla neúspěšně I.) vypiš uživateli hlášku o chybě 4.1.3 Smaž inzerát 1. Některý aktér zadal příkaz delete dle ID_inzerát 2. Potvrď smazání tarifu a) pokud ano (Ok) I.) vyhledej z tabulky Faktura Faktura.stav="nezaplaceno", kde Faktura.ID_inzerat=Inzerát.ID_inzerat II.) pokud najdeš takový záznam hlášku aktérovi o nezaplacené faktuře III.) pokud nenajdeš takový záznam III.1) najdi záznamy z tabulky Komentář, kde Inzerát.ID_inzerat=Komentář.ID_inzerat III.2) pro každý nalezený záznam dělej III.2.1) Smaž položky konec cyklu III.3) najdi záznamy z tabulky Faktura, kde III.4) Inzerát.ID_inzerat=Faktura.ID_inzerat pro každý nalezený záznam dělej III.4.1)Smaž položky konec cyklu III.5) Smaž z tabulky Inzerát záznam dle ID_inzerat IV.) Vypiš uživateli hlášku o úspěšném smazání b) pokud ne (Zrušit) i.) Vrať se na seznam inzerátů
Všichni uživatelé Zákazník Zákazník ID_zákazník, mobil, e-mail 4.2.1 Vypiš detail Inzerát 4.2.2 Přidej komentář ID_inzerát ID_zákazník Komentář 4.2 DETAIL INZERÁTU 4.2.1 Vypiš detail 1. načti data z tabulky Inzerát dle ID_inzerát ( ID_inzerát, název, popis, popis_cena, ID_zákazník) 2. načti data z tabulky Zákazník, kde Inzerát.ID_zákazník=Zákazník.ID_zákazník ( mobil, e-mail) 3. načti záznamy z tabulky Komentář, kde Komentář.ID_inzerát=Inzerát.ID_inzerát 4. Vypiš načtené hodnoty ( ID_inzerát, název, popis, popis_cena, ID_zákazník, mobil, e-mail) 5. Pro načtené záznamy z tabulky komentář dělej 5.1 Vypiš položky konec cyklu 4.2.2 Přidej komentář 1. Načti formulář pro přidání komentáře 2. Uživatel zákazník vypíše položky formuláře 3. Proveď kontrolu formuláře a) kontrola proběhla úspěšně BEGIN I.) vygeneruj ID_komentář II.) ulož data do tabulky Komentar, s ID_inzerat, ID_zakaznik END III.) vypiš uživateli hlášku o úspěšném uložení b) kontrola proběhla neúspěšně I) vypiš uživateli hlášku o chybě
Zákazník Všichni aktréři ID_zákazník Zákazník 4.3.1 Výpis vlastních inzerátů 4.3.2 Výpis všech inzerátů Inzerát Kategorie ID_kategorie 4.3.1 Výpis vlastních inzerátů 4.3 VÝPIS INZERÁTŮ 1. Načti data z tabulky Inzerát dle ID_zakazník (id_inzarátu, název, popis, datum od, datum do, stav) 2. Setřiď podle datum_od 3. Pro každý načtený záznam dělej 3.1 Vypiš položky 3.2 přidej odkaz detail konec cyklu 4.3.2 Výpis všech inzerátů 1. Pokud je aktér zákazník I) Načti data z tabulky Inzerát dle ID_kategorie kde Inzerát.stav="aktivní" (ID_inzerát, název, popis, cena) 2. Pokud je aktér šéfredaktor nebo účetní I) Načti data z tabulky Inzerát dle ID_kategorie (ID_inzerát, název, popis, cena, stav) II) Setřiď dle Inzerát.stav 4. Pro každý načtený záznam dělej 4.1 Vypiš položky 4.2 Přidej odkaz detail konec cyklu 5.1.1 Vypočítej statistiky 1. Načti vše z tabulky Obdobi dle ID_obdobi 2. Načti vše z tabulky Kategorie ID_kategori dle ID_rubrika 3. Pro všechny záznamy dělej 2.1 Najdi všechny záznamy z tabulky Inzerat kde Inzerat.ID_kategorie=Kategorie.ID_kategorie and Inzerat.datum_od>=Obdobi.od and Inzerat.datum_do<=Obdobi.do (stav, id_inzerat) 2.2 Do stat.celkem_inzerat+= count(nalezene inzeraty) 2.3 Pro všechny načtené záznamy dělej" 2.3.1 pokud inzerat.stav="aktivni" pak stat_aktivni++
2.3.2 Vyber z tabulky Faktura Cena_celkem kde Faktura. id_inzerat=inzerat. id_inzerat 2.3.3 stat.cena_celkem=+ faktura.cena_celkem konec cyklu pro Inzerat konec cyklu pro Kategorie 4. Vypočítej stat.cena_prum= stat,celkem_inzerat/stat.cena_celkem BEGIN 5. Ulož do tabulky Stat_rubrika vypočítané hodnoty pocet_aktiv_inzeratu = stat_aktivni pocet_celkem_inzeratu = stat.celkem_inzerat cena_prum = stat.cena_prum cena_za_inzeraty = stat.cena_celkem END 5.1.2 Vypiš statistiky 1. Načti všechny záznamy z tabulky Stat_rubrika dle ID_rubrika (pocet_aktiv_inzeratu, celkem_inzeratu, cena_prum, cena_za_inzeraty) 2. Pro všechny záznamy dělej 2.1 Načti z tabulky Období záznam kde Obdobi.ID_obdobi= Stat_rubrika.ID_obdobi (od, do) 2.2 Vypiš Obdobi.od, Obdobi.do, pocet_aktiv_inzeratu, celkem_inzeratu, cena_prum, cena_za_inzeraty 2.3 Pokud je uživatel šéfredaktor vypiš odkaz přepočítej konec cyklu 5.2.1 Nové období 1. Zobraz formulář pro nové období (název, od, do) 2. Uživatel šéfredaktor zadá údaje 3. Zkontroluj zadané údaje z formuláře a) kontrola proběhla úspěšně I.) Najdi v tabulce Obdobi záznam kde form.od=obdobi.od and form.do=obdobi.do I.1) pokud byl záznam nalezen I.1.I) Upozorni uživatele na chybu I.2) pokud záznam nenalezen BEGIN I.2.I) Vygeneruj ID_obdobi I.2.2) Zapiš vyplněný formulář a ID_obdobi do tab. období I.2.3) Vypočítej statistiky pro nové období (minispec. 5.1.1) END b) kontrola proběhla neúspěšně I.) upozorni na chyby 5.2.2 Vypiš období 1. Načti všechny data z tabulky Obdobi 2. Pro každý načtený záznam dělej 2.1 Vypiš atributy ID_obdobi, nazev, od, do a, pokud uživatel je šéfredaktor vypiš odkaz přepočítej statistiku konec cyklu
5.2.3. Změň období 1. Zobraz formulář pro editaci období dle (název, od, do) 2. Uživatel šéfredaktor zadá údaje 3. Zkontroluj zadané údaje z formuláře a) kontrola proběhla úspěšně I.) pokud byl změněn od nebo do I.1) Najdi v tabulce Obdobi záznam kde form.od=obdobi.od and form.do=obdobi.do I.2) pokud byl záznam nalezen I.2.I.) Upozorni uživatele na chybu a jdi na krok 3.b) I.3) pokud záznam nenalezen do stat=true BEGIN II.) Ulož do tabulky data podle formuláře dle ID_obdobi III.) pokud stat=true IV.1) Vypočítej statistiky pro editované obdobi minispec. 5.1.2 END b) kontrola proběhla neúspěšně I) upozorni na chyby 5.2.4 Smaž období 1. Uživatel šéfredaktor zadal příkaz delete dle ID_obdobi 2. Potvrď smazání období a) pokud ano (Ok) I.) Smaž z tabulky Stat_rubriky záznamy, kde Stat_rubriky.id_obdobi=del.id_obdobi II.) Smaž z tabulky Obdobi záznam, kde Obdobi.id_obdobi=del.id_obdobi b) pokud ne (Zrušit) I.) Neprováděj akci Zákazník Účetní Šéfredaktor 6.1 Nová faktura 6.2 Výpis fakturu 6.3 Edituj fakturu 6. FAKTURY
Zákazník Zaměstnanci ID_zaměstnanec 6.1 Nová faktura ID_inzerát Tarif Faktura Položky Inzerát 6.1 Nová faktura 6.1 NOVÁ FAKTURA V 1. Pro všechny vybrané tarify (zaškrtnuté checkboxy) delej 1.1 Načti záznam z tabulky Tarif kde checkbox.id_tarif=tarif.id_tarif 1.2 Spočítej celková cena za zapamatuj si jako Cena_polozky dle doby zobrazení inzerátu (Inzerat.datum_od, Inzerat.datum_do) a dle Tarif.Cena/tyden 1.3 Vygeneruj Položka.ID_polozka 1.4 Ulož data ID_polozka, checkbox.id_tarif, Cena_polozky do pole polozka [ID_polozka] konec cyklu 2. Zapamatuj si do Faktura.ID_zaměstnanec z tabulky Rubrika Rubrika.ID_zamestnance dle Inzerát.ID_rubrika 3. Zapamatuj si do Faktura.ID_zákazník=Inzerát.ID_zákazník 4. Zapamatuj si do Faktura.ID_inzerát=Inzerát.ID_inzerát 5. Zapamatuj si do Faktura.stav="ke zpracování" BEGIN 6. Vygeneruj Fatkura.ID_faktura 7. Ulož z pole polozka do tabulky Polozka 8. Ulož do tabulka Faktura data Faktura.ID_faktura, Faktura.ID_zaměstnanec, Faktura.ID_zákazník, Faktura.ID_inzerát, Faktura.stav END
6.2 Výpis faktury 1. Načti data z tabulky Faktura ( ID_faktura, datum_vystavení, datum_splatnosti, splacena, cena_celkem, ID_zákazníka, ID_zaměstnance ) 2. Pro každý načtený záznam dělej 2.1 Vypiš položky konec cyklu 6.2 Edit faktura 1. Načti data z tabulky Faktura dle ID_faktura (ID_faktura, datum_vystavení, datum_splatnosti, stav, cena_celkem, ID_zákazníka, ID_zaměstnance ) a) pokud stav="ke zpracováni" I.) zapamatuj si do Faktura.datum_vystaveni=aktuálni datum II.) zapamatuj si do Faktura.datum_splatnosti=Faktura.datum_vystaveni+14dni III.) načti záznamy z tabulky Polozka, kde Polozka.ID_faktura=Faktura.ID_faktura a spočítej suma(cena_polozky) IV.) nastav form.stav="nezaplacena" b) pokud stav<>"ke zpracováni" I) Načti data do formuláře (ID_faktura, datum_vystavení, datum_splatnosti, splacena, cena_celkem, ID_zákazníka, ID_zaměstnance ) II) Aktér účetní upravuje data ve formuláři (stav) 2. Zkontroluj zadané údaje z formuláře a) kontrola proběhla úspěšně BEGIN I.) do tabulky Faktura ulož data z formuláře, dle ID_faktura END II.) vypiš aktérovi hlášku o úspěšném uložení b) kontrola proběhla neúspěšně I) vypiš uživateli hlášku o chybě
Všichni 7.1 Nový tarif Účetní Šéfredaktor 7.2 Výpis tarifů Tarif 7.3 Edit tarifu Položka 7.4 Smaž tarif ID_tarif 7. Tarif 7.1 Nový tarif 1. Zobraz formulář pro přidání nového tarifu 2. Uživatel účetní nebo šéfredaktor vyplní nazev, popis a cenu za týden 3. Zkontroluj zadane údaje z formuláře a) kontrola proběhla úspěšně BEGIN I.) Vygeneruj Tarif.id_tarif II.) Zapiš vyplněný formulař a Tarif.id_tarif do tabulky Tarif END b) kontrola proběhla neúspěšně I.) Vypiš uživateli hlášku o chybě 7.2 Výpis tarifů 1. Načti data z tabulky Tarif (id_tarif, název, popis, cena/týden) 2. Pro každý načtený záznam dělej 2.1 Vypiš položky konec cyklu 7.3 Edit tarifu 1. Načti data z tabulky Tarif dle ID_tarif (název, popis, cena_tyden) 2. Zobraz formulář s načtenými daty 3. Aktér účetní nebo šéfredaktor upraví načtené atributy 4. Proveď kontrolu dat z formuláře a) kontrola proběhne úspěšně BEGIN
I.) Ulož data do tabulky Tarif dle atributu ID_tarif END II.) Vypiš aktérovi hlášku o úspěšném uložení b) kontrola proběhne neúspěšně I.) Vypiš uživateli hlášku o chybě 7.4 Smaž tarif 1. Uživatel účetní nebo šéfredaktor zadal příkaz delete dle ID_tarif 2. Potvrď smazání tarifu a) pokud ano (Ok) I.) Smaž z tabulky Tarif záznam, kde Tarif.id_tarif=del.id_tarif II.) Nastav všem záznamů v tabulce Položka kde Polozka.id_tarif=Tarif.id_tarif hodnotu NULL b) pokud ne (Zrušit) I.) Vrať se na seznam tarifů
1.4 Dynamická analýza STD Zaměstnanec
STD Zákazník
STD Registrace uživatele
STD Faktura
STD Přihlášení uživatelů
STD Inzerát
STD Tarif
STD Statistika 2 Analýza datového skladu (skupina autor, datum)
3 Návrh implementace 4 Popis implementace 5 Programátorská příručka (skupina autor, datum) 6 Uživatelská příručka (skupina autor, datum)