VYSOKÁ ŠKOLA BÁŇSKÁ – TECHNICKÁ UNIVERZITA OSTRAVA
INFORMAČNÍ SYSTÉMY A DATOVÉ SKLADY
IS Veřejná databáze filmů (semestrální projekt) ZS 2009-2010
Číslo skupiny: Členové skupiny:
Analýza
Implementace
T6
T16
Příjmení, jméno, login 1. Fajfr, Stanislav, FAJ069 2. Horák, Ondřej, HOR638 3. Jeřábek, Tomáš, JER042 4. Dočkal, Martin, DOC068
1. Bašniar, Václav, BAS064 2. Šlahař, Jan, SLA395 3. Akike, Daniel, AKI002 4. Hromek, Martin, HRO088 5. Červeňák, Darek, CER439
1 Zadání (skupina| autor, datum) (JEDNÁ SE O ZADÁNÍ OD ZADAVATELE!!! FORMA JEDNODUCHÉHO PSANÉHO TEXTU) Popis zadání úkolu ….
1.1 Funkční požadavky (JEDNÁ SE O PŘEPIS ZADÁNÍ DO PŘEHLEDNĚJŠÍHO TVARU!!!)
PROČ nový IS
Úkolem je popsat okolnosti rozhodnutí o budování IS: popsat současný stav evidence, stručně vysvětlit, proč tento stav nevyhovuje, charakterizovat nové potřeby a představy o tom, jak má nový systém fungovat.
K ČEMU má IS sloužit
Co je hlavní prioritou pro funkci systému: vnitřní evidence, vnější reprezentace informací apod.
KDO s IS bude pracovat
Primární funkce systému budou sloužit hlavním uživatelům systému s nejčastějším přístupem. Případné další funkce mohou sloužit občasným uživatelům nebo i náhodným dotazům na informace z databáze.
VSTUPY do systému
Vstupy znamenají informace, které mají být v IS evidované. Je to seznam entit a jejich atributů. Jsou základem pro datovou analýzu, proto mají obsahovat skutečně podrobný výčet. Protože analytik nemusí být odborníkem v oblasti, pro niž je IS budován, jsou vhodné i komentáře vysvětlující odborné pojmy nebo zdůvodnění speciálních potřeb.
VÝSTUPY ze systému
Výstupy znamenají všechny výstupní sestavy, které budou uživatelé potřebovat. Stačí název sestav a seznam informací na nich, lepší jsou načrtnuté ukázky nebo existující sestavy.
Nefunkční požadavky
Další požadavky na IS.
2 Analýza (skupina| autor, datum)
2.1 Analýza datová 2.1.1 Lineární zápis typů entit a typů vazeb 2.1.2 ER diagram 2.1.3 Datový slovník
2.2 Analýza funkční (skupina| autor, datum) 2.2.1 DF diagramy 2.2.2 Minispecifikace
2.3 Analýza časová
3 Analýza datového skladu (T16| AKI002, BAS064, CER439, HRO088, SLA395, datum)
3.1 Úvod
potřebujeme znát nejvyšší, nejnižší a průměrné hodnocení filmu v kategorii či podle žánru a státu
potřebujeme znát nejvyšší, nejnižší a průměrnou délku filmu v kategorii či podle žánru a státu
potřebujeme znát počet filmů v kategorii či podle žánru a státu
3.2 Rozdělení na dimenze a fakty Tabulka Filmy Filmy Filmy Filmy Filmy Filmy Filmy Staty Staty KategorieFi lmu KategorieFi lmu Zanry Zanry
Por. Atribut
popis + IO
Potřebujeme do DS?
D/F/A
1
objektID
Automaticky generováno
N
x
2
puvodniNazev
Původní název filmu
N
x
3
ceskyNazev
Český název filmu
N
x
4
rokVzniku
Datum vzniku filmu
N
x
5
kategorieID
Cizí klíč
A, klíč
D
6
delkaFilmu
Délka filmu
A, průměr délky...
F
7
celkoveHodnoceni
Celkové hodnocení filmu
A, hodnocení filmu
F
1
statID
Automaticky generováno
A, klíč
D
2
nazev
Název státu
A, popisný atribut
A
1
kategorieID
Automaticky generováno
A, klíč
D
2
nazev
Název kategorie filmu
A, popisný atribut
A
1
zanrID
Automaticky generováno
A, klíč
D
2
nazev
Název žánru filmu
A, popisný atribut
A
3.2.1 Dimenze KategorieFilmu (kategorieID, nazev) Staty (statID, nazev) Zanry (zanrID, typ)
3.2.2 Fakty Název
Zkratka
Z tabulky
Hodnocení filmů
hod_fil
Filmy
Délka filmů
del_fil
Filmy
Počet filmů
poc_fil
Filmy
Poznámka
3.3 Aditivita atributů a omezení na dotazy Všechny atributy jsou semiaditivní. hod_fil
del_fil
poc_fil
kategorie
AVG, MIN, MAX
AVG, MIN, MAX
SUM
zanry
AVG, MIN, MAX
AVG, MIN, MAX
SUM
staty
AVG, MIN, MAX
AVG, MIN, MAX
SUM
staty, zanry
AVG, MIN, MAX
AVG, MIN, MAX
SUM
staty, kategorie
AVG, MIN, MAX
AVG, MIN, MAX
SUM
kategorie, zanry
AVG, MIN, MAX
AVG, MIN, MAX
SUM
vše
AVG, MIN, MAX
AVG, MIN, MAX
SUM
3.4 Graf DS
4 Návrh implementace (T16| AKI002, BAS064, CER439, HRO088, SLA395, 11. prosince 2009)
4.1 Změny provedené v analýze
Fotky – přidán atribut hlavni typu boolean, definuje jestli se jedná o hlavní fotografii reprezentující osobnost/film
Přidána tabulka OBLIBENE, umožňuje uživateli označit jeho oblíbené filmy s atributy objektID a uzivatel ID, oba atributy jsou cizími klíči i části primárního klíče
4.2 Popis implementačního prostředí Implementace aplikace bude provedena v IDE MS Visual Studio 2008 a jazyce C#. Implementace databáze bude provedena pomocí SQL Server Manager Studia. 4.2.1 Požadavky na hardware a software Klient: Vzhledem k tomu, že se jedná o on-line aplikaci, jediný požadavek na klienta je mít webový browser podporující JavaScript. MS SQL Server 2008 Enterprise (32-bit): Microsoft Windows Installer 4.5 a vyšší Procesor: Pentium III kompatibilní a vyšší, 2.0 GHz a vyšší OS: Windows server 2003 a vyšší
Paměť: 2048 MB IIS 7.0: Procesor: 1,4 GHz OS: Windows Server 2008 Paměť: 512 MB
4.3 Odvozené atributy Jedinými odvozenými atributy je celkoveHodnoceni typu int v tabulkách Osobnost a Film. Tento atribut vypočítáván z údajů v tabulce Hodnoceni pomocí triggerů CelkoveHodnoceniFilmuIU a CelkoveHodnoceniFilmuDel, více v Triggery a procedury.
4.4 Indexová analýza Uzivatele název
typ
index popis
uzivatelID
udržovaný
Ano
inkrement, automaticky setříděno, primární klíč
Prameni
udržovaný
Ano
hledání podle příjmení, výpisy
Ano
setřídění podle datumu registrace uživatele
datumRegistrace dočasný
Role název
typ
index popis
roleID
udržovaný
Ano
název
typ
index popis
uzivatelID
udržovaný
Ano
realizuje spojení s jinou tabulkou, cizí klíč
roleID
udržovaný
Ano
realizuje spojení s jinou tabulkou, cizí klíč
inkrement, automaticky setříděno, primární klíč
UzivateleVRole
Filmy název
typ
index popis
objektID
udržovaný Ano
inkrement, automaticky setříděno, primární klíč
puvodniNazev
udržovaný Ano
hledání podle původního názvu filmu, výpisy
ceskyNazev
udržovaný Ano
hledání podle českého názvu filmu, výpisy
kategorieID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
celkoveHodnoceni dočasný
Ano
setřídění podle celkového hodnocení filmu
Staty název
typ
index popis
statID
udržovaný
Ano
Název
typ
index popis
objektID
udržovaný
Ano
realizuje spojení s jinou tabulkou, cizí klíč
statID
udržovaný
Ano
realizuje spojení s jinou tabulkou, cizí klíč
Název
typ
index popis
kategorieID
udržovaný
Ano
název
typ
index popis
zanrID
udržovaný
Ano
název
typ
index popis
objektID
udržovaný
Ano
realizuje spojení s jinou tabulkou, cizí klíč
zanrID
udržovaný
Ano
realizuje spojení s jinou tabulkou, cizí klíč
inkrement, automaticky setříděno, primární klíč
FilmyVeState
KategorieFilmu
inkrement, automaticky setříděno, primární klíč
Zanry
inkrement, automaticky setříděno, primární klíč
ZanryFilmu
Zmeny
název
typ
index popis
zmenaID
udržovaný Ano
inkrement, automaticky setříděno, primární klíč
objektID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
typID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
uzivatelID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
Osobnosti název
typ
objektID
udržovaný Ano
inkrement, automaticky setříděno, primární klíč
prijmeni
udržovaný Ano
hledání podle příjmení osobnosti, výpisy
celkoveHodnoceni dočasný
index popis
Ano
setřídění podle celkového hodnocení osobnosti
SeznamPostav název
typ
index popis
objektID
udržovaný Ano
primární klíč, realizuje spojení s jinou tabulkou, cizí klíč
osobnostID
udržovaný Ano
primární klíč, realizuje spojení s jinou tabulkou, cizí klíč
SeznamOsob název
typ
index popis
objektID
udržovaný Ano
primární klíč, realizuje spojení s jinou tabulkou, cizí klíč
osobnostID
udržovaný Ano
primární klíč, realizuje spojení s jinou tabulkou, cizí klíč
funkceID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
Fotogalerie název
typ
fotoID
udržovaný Ano
inkrement, automaticky setříděno, primární klíč
uzivatelID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
Fotky
index popis
název
typ
index popis
objektID
udržovaný Ano
primární klíč, realizuje spojení s jinou tabulkou, cizí klíč
fotoID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
typID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
Hodnoceni název
typ
index popis
objektID
udržovaný Ano
primární klíč, realizuje spojení s jinou tabulkou, cizí klíč
uzivatelID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
typID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
Zajimavosti název
typ
index popis
zajimavostID
udržovaný Ano
inkrement, automaticky setříděno, primární klíč
objektID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
uzivatelID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
typID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
Trailery název
typ
index popis
trailerID
udržovaný Ano
inkrement, automaticky setříděno, primární klíč
objektID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
Filmoteky název
typ
index popis
uzivatelID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
objektID
udržovaný Ano
primární klíč, realizuje spojení s jinou tabulkou, cizí klíč
mediumID
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč
Media název
typ
index popis
mediumID
udržovaný Ano
inkrement, automaticky setříděno, primární klíč
Zpravy název
typ
index popis
zpravaID
udržovaný Ano
inkrement, automaticky setříděno, primární klíč
odesilatel
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč-uzivatel
prijemce
udržovaný Ano
realizuje spojení s jinou tabulkou, cizí klíč-uzivatel
Funkce název
typ
index popis
funkceID
udržovaný Ano
inkrement, automaticky setříděno, primární klíč
TypObjektu název
typ
index popis
typID
udržovaný Ano
inkrement, automaticky setříděno, primární klíč
4.5 Optimalizace přístupů k datům, analýza časové a prostorové složitosti algoritmů Funkce 2.3.1 - Vložení nového traileru 1. Zobraz seznam filmů (tabulka Filmy) LINQ - var listFilmy = from f in Filmy select f; sql – SELECT * from Filmy; 7. Jestliže vstupy jako potenciální budoucí atributy tabulky Trailer odpovídají doménám z datového slovníku, popřípadně dalším integritním omezením, pak ulož data PFilmID, titulek, umisteni jako nový záznam do tabulky Trailer a vypiš informativní hlášku "Data se podařila úspěšně vložit. Jinak vypiš informativní hlášku "Data nejsou ve správném tvaru", popřípadě vypiš bližší upřesnění a pokračuj od kroku 4.
LINQ - var trailer = new Trailer{objektID = PfilmID, titulek = titulek, umisteni = umisteni}; Trailers.InsertOnSubmit(trailer); SubmitChanges(); sql – INSERT into Trailer(objektID, titulek, umisteni) values (PFilmID, titulek, umisteni);
Funkce 2.3.2 - Úprava traileru 1. Zobraz seznam trailerů (tabulka Trailer) LINQ - var listTrailer = from t in Trailer select t; sql – SELECT * from Trailer; 7. Jestliže proběhla validace úspěšně, pak v tabulce Trailer změň atributy uživatelem vyplněnými vstupy (titulek, resp. umisteni), kde TraileryID = PTraileryID a vypiš informativní hlášení "Data se podařila úspěšně změnit". Jinak vypiš informativní hlášení "Data nejsou ve správném formátu" a pokračuj od kroku 4. LINQ - var trailer = (from t in Trailer where t.TraileryID = PTraileryID select t).First(); trailer.objektID = PfilmID; trailer.titulek = titulek; trailer.umisteni = umisteni; sql – UPDATE Trailer set objektID = PFilmID, titulek = titulek, umisteni = umisteni WHERE TraileryID = PTraileryID;
Funkce 2.3.3 - Smazání traileru 4. Vymaž z tabulky Trailer záznam, kde TraileryID = PTraileryID.
LINQ - var trailer = (from t in Trailer where t.TraileryID = PTraileryID select t).First(); Trailers.DeleteOnSubmit(trailer); SubmitChanges(); sql – DELETE from Trailer WHERE TraileryID = PTraileryID;
Funkce 2.3.4 - Přiřazení traileru k filmu
1. Zobraz seznam trailerů (tabulka Trailer). Navíc zobraz u každého informace o filmu, k němuž je trailer aktuálně přidružen (tabulka Filmy).
LINQ - var listFilmyTrailer = from f in Filmy join t in Trailer on f.objektID equals t.objektID select new {titulek = t.titulek, umisteni = t.umisteni, puvodniNazev = f.puvodniNazev, ceskyNazev = f.ceskyNazev}; sql – SELECT * FROM Filmy AS f INNER JOIN Trailer AS t ON f.objektID = t.objektID;
4. Zobraz formulář Přiřazení traileru k filmu s výběrovým vstupem pro uživatele (seznam dostupných filmů - tabulka Film).
LINQ - var listFilmy = from f in Filmy select f; sql – SELECT * from Filmy; 7. Změň v tabulce Trailer hodnotu ObjektID = PFilmID, kde TraileryID = PTraileryID.
LINQ - var trailer = (from t in Trailer where t.TraileryID = PTraileryID select t).First(); trailer.objektID = PfilmID; sql – UPDATE Trailer set objektID = PFilmID WHERE TraileryID = PTraileryID;
Funkce 2.1.1.4.4 - Přiřazení žánru k filmu 4. Zobraz formulář "Přiřazení žánru k filmu" pro přiřazení existujícího žánru jako dalšího žánru k filmu s požadovanými vstupy pro uživatele (seznam existujících žánrů - tabulka Zanry).
LINQ - var listZanry = from z in Zanry select z; sql – SELECT * from Zanry; 7. Vlož do tabulky (ZanryFilmu) nový záznam s hodnotami vybranými uživatelem (objetkID = PFilmID, zanrID = PZanrID).
LINQ - var zanryfilmu = new Zanry{objektID = PFilmID, zanrID = PZanrID}; Zanrys.InsertOnSubmit(zanryfilmu); SubmitChanges(); sql – INSERT into ZanryFilmu(objektID,zanrID) values (PFilmID, PZanrID);
Funkce 2.1.1.4.5 - Přiřazení kategorie k filmu 7. Aktualizuj v tabulce Film hodnoty atributů a přišlusných hodnot (KategorieID = PKategorieID), kde objektID = PFilmID.
LINQ - var film = (from f in Film where f.objektID = PfilmID select f).First(); film.objektID = PfilmID; sql – UPDATE Film set KategorieID = PkategorieID WHERE objektID = PFilmID;
Funkce 3.2 - Úprava zajímavosti 1. Vypiš seznam zajímavostí, které patří přihlášenému uživateli.
LINQ - var listZajimavostiUzivatel = from z in Zajimavosti where uzivatelID = p.uzivatelID select z;
sql – SELECT * FROM Zajimavosti WHERE uzivatelID = p.uzivatelID; 14. Změň údaje v tabulce Zajimavosti, přepiš obsah proměnnou text, kde klíč je id_zajimavost.
LINQ - var zajimavost = (from z in Zajimavost where z.zajimavostID = p.zajimavostID select z).First(); zajimavost.obsah = text; sql – UPDATE Zajimavosti set obsah = text WHERE zajimavostID = p.zajimavostID; 15. Vlož nový záznam do tabulky Zmeny(id_zmena, id_objekt, id_typ, id_uzivatel, datum, druh).
LINQ - var zmeny = new Zmeny{objektID = id_objekt, typID = id_typ, uzivatelID = id_uzivatel, datumZmeny = datum, druhZmeny = druh}; Zmenys.InsertOnSubmit(zmeny); SubmitChanges(); sql – INSERT into Zmeny(objektID, typID, uzivatelID, datumZmeny, druhZmeny) values (id_objekt, id_typ, id_uzivatel, datum,
druh);
Funkce 1.1.3 – Smazat uživatele 2. JESTLIŽE existuje ID uživatele ke smazání 2.1. PAK načti uživatele s daným ID z tabulky Uzivatele a ulož do p.uzivatel. 2.2. JINAK zobraz seznam všech uživatelů z tabulky Uzivatele. 2.2.1. Uživatel administrátor vybere uživatele do p.uzivatel. LINQ - var listUzivatele = from u in Uzivatele where uzivatelID = p.uzivatelID select u; sql – SELECT * FROM Uzivatele WHERE uzivatelID = p.uzivatelID; 5. Smaž hodnocení v tabulce Hodnoceni, kde uzivatelID = p.uzivatelID. LINQ - var hodnoceni = (from h in Hodnoceni where h.uzivatelID = p.uzivatelID select h).First(); Hodnocenis.DeleteOnSubmit(hodnoceni); SubmitChanges(); sql – DELETE from Hodnoceni WHERE uzivatelID = p.uzivatelID; 6. Smaž soukromé zprávy v tabulce Zpravy, kde odesilatel nebo prijemce = p.uzivatelID. LINQ - var zprava = (from z in Zprava where z.odesilatelID = p.uzivatelID select h).First(); Zpravas.DeleteOnSubmit(zprava); SubmitChanges(); sql – DELETE from Hodnoceni WHERE uzivatelID = p.uzivatelID;
Funkce 1.1.4 – Změnit roli uživatele 2. JESTLIŽE existuje ID uživatele k editaci. 2.1. PAK načti uživatele s daným ID z tabulky Uzivatele a ulož do p.uzivatel. 2.2. JINAK zobraz seznam všech uživatelů z tabulky Uzivatele. 2.2.1. Uživatel administrátor vybere uživatele do p.uzivatel. LINQ - var listUzivatele = from u in Uzivatele where uzivatelID = p.uzivatelID select u; sql – SELECT * FROM Uzivatele WHERE uzivatelID = p.uzivatelID; 3. Zobraz seznam všech rolí z tabulky Role. LINQ - var listRole = from r in Role select r; sql – SELECT * FROM Role; 7. V tabulce UzivateleVRoli, kde uzivatelID = p.uzivatelID, nastav roleID na p.roleID. LINQ - var uzivatel = (from u in UzivateleVRoli where u.uzivatelID = p.uzivatelID select u).First(); uzivatel.roleID = p.roleID; sql – UPDATE UzivateleVRoli set roleID = p.roleID WHERE uzivatelID = p.uzivatelID;
Funkce 1.3.1 – Odeslat zprávu 9. Vlož novou zprávu do tabulky Zprava s hodnotami predmet = p.predmet, odesilatel = p.odesilatel, prijemce = p.prijemce, datumOdeslani = p.datum, precteno = false. LINQ – var zprava = new Zprava{predmet = p.predmet, obsah = p.obsah, odesilatel = p.odesilatel, prijemce = p.prijemce, datumOdeslani = p.datum, precteno = false}; Zpravas.InsertOnSubmit(zprava); SubmitChanges(); sql – INSERT into Zprava(predmet, obsah, odesilatel, prijemce, datumOdeslani, precteno) values (p.predmet, p.obsah, p.odesilatel, p.prijemce, p.datum, false);
Funkce 2.1.1.4.3 - Přiřazení státu k filmu 4. Zobraz formulář "Přiřazení státu k filmu" pro přiřazení existujícího státu jako dalšího státu k filmu s požadovanými vstupy pro uživatele (seznam existujících států - tabulka Staty).
LINQ - var listStaty = from s in Staty select s; sql – SELECT * FROM Staty; 7. Vlož do tabulky (FilmyVeState) nový záznam s hodnotami vybranými uživatelem (FilmID = PFilmID, StatID = PStatID).
LINQ – var filmyStat = new FilmyVeState{objektID = PFilmID, StatID = PStatID}; FilmyVeStates.InsertOnSubmit(filmyStat); SubmitChanges(); sql – INSERT into FilmyVeState(objektID, statID) values (PfilmID, StatID);
Funkce 2.1.1.1 - Vložení nového filmu 6. Jestliže hodnoty vyplněných vstupů (PuvodniNazev, PCeskyNazev, PRokVzniku, PDelkaFilmu), resp. jejich domény, které odpovídají potencialním atributům (puvodniNazev,ceskyNazev, rokVzniku, delkaFilmu) nového záznamu v tabulce Filmy, jsou v pořádku, pak vlož do tabulky Filmy nový záznam s hodnotami atributů puvodniNazev = P PuvodniNazev, ceskyNazev = PCeskyNazev, rokVzniku =PRokVzniku, delkaFilmu=PDelkaFilmu, kategorieID = PKategorieID) a vypiš informativní hlášení "Záznam se podařilo úspěšně vložit". Jinak vypiš chybové informativní hlášení "Data jsou ve špatném formátu" a pokračuj od kroku 1.
LINQ – var film = new Filmy{puvodniNazev = PPuvodniNazev, ceskyNazev = PCeskyNazev, rokVzniku =PRokVzniku, delkaFilmu = PDelkaFilmu, kategorieID = PKategorieID}; Filmy.InsertOnSubmit(film); SubmitChanges(); sql – INSERT into FilmyVeState(puvodniNazev, ceskyNazev, rokVzniku, delkaFilmu, kategorieID) values (PPuvodniNazev, PceskyNazev, ProkVzniku, PdelkaFilmu, PKategorieID);
Funkce 2.1.1.2 - Úprava existujícího filmu 8. Jestliže proběhla validace úspěšně, pak v tabulce Filmy změň atributy uživatelem vyplněnými vstupy (puvodniNazev = PPuvodniNazev, ceskyNazev = PCeskyNazev, rokVzniku =PRokVzniku, delkaFilmu=PDelkaFilmu, kategorieID = PKategorieID), kde FilmID = PFilmID a vypiš informativní hlášení "Data se podařila úspěšně změnit". Jinak vypiš informativní hlášení "Data nejsou ve správném formátu" a pokračuj od kroku 4.
LINQ - var film = (from f in Filmy where t.FilmID = PFilmID select t).First(); film.puvodniNazev = PPuvodniNazev; film.ceskyNazev = PceskyNazev; film.rokVzniku = PRokVzniku; film.delkaFilmu = PDelkaFilmu; film.kategorieID = PKategorieID; sql – UPDATE Trailer set puvodniNazev = PPuvodniNazev, ceskyNazev = PCeskyNazev, rokVzniku = ProkVzniku, delkaFilmu = PDelkaFilmu, kategorieID = PKategorieID WHERE FilmID = PFilmID;
4.6 Transakční analýza Funkce 2.3.1 - Vložení nového traileru
LS(Film) 1. Zobraz seznam filmů (tabulka Film) UN(Film) 2. Uživatel - publicista vybere ze seznamu požadovaný objekt (film), k němuž chce aktuálně přidávaný trailer přidružit a stiskne odeslání. 3. Ulož hodnotu atributu FilmId vybraného objektu do proměnné PFilmID 4. Zobraz formulář Nový trailer se vstupy pro uživatele (titulek, umisteni) 5. Uživatel - publicista vyplní formulář a odešle do systému. 6. Validuj datové typy uživatelem odeslaných vstupů. BEGIN Transaction LX(Trailer) 7. Jestliže vstupy jako potenciální budoucí atributy tabulky Trailer odpovídají doménám z datového slovníku, popřípadně dalším integritním omezením, pak ulož data PFilmID, titulek, umisteni jako nový záznam do tabulky Trailer a vypiš informativní hlášku "Data se podařila úspěšně vložit. Jinak vypiš informativní hlášku "Data nejsou ve správném tvaru", popřípadě vypiš bližší upřesnění a pokračuj od kroku 4. UN(Trailer) END Transaction
Funkce 2.3.2 - Úprava traileru LS(Trailer) 1. Zobraz seznam trailerů (tabulka Trailer) UN(Trailer) 2. Uživatel - publicista vybere ze seznamu požadovaný objekt (trailer), jehož data chce změnit a stiskne odeslání. 3. Ulož hodnotu TrailerID vybranéh objektu do proměnné PTrailerID. 4. Zobraz formulář "Změna traileru" se vstupy pro uživatele (titulek, umisteni). 5. Uživatel - publicista může vyplnit jeden nebo více těchto vstupů za účelem jejich změny a potvrdí odesláním na server. 6. Jestliže je vyplněn alespoň jeden vstup, pak validuj (jen) vyplněné vstupy podle domén z datového slovníku tabulky Trailer a vstupům odpovídajícím atributům (titulek, umisteni), jinak vypiš informativní hlášení "Nebyly vyplněny údaje pro změny" a pokračuj od kroku 4. BEGIN Transaction LX(Trailer) 7. Jestliže proběhla validace úspěšně, pak v tabulce Trailer změň atributy uživatelem vyplněnými vstupy (titulek, resp. umisteni), kde TrailerID = PTrailerID a vypiš informativní hlášení "Data se podařila úspěšně změnit". Jinak vypiš informativní hlášení "Data nejsou ve správném formátu" a pokračuj od kroku 4. UN(Trailer) END Transaction
Funkce 2.3.3 - Smazání traileru LS(Trailer) 1. Zobraz seznam trailerů (tabulka Trailer) UN(Trailer)
2. Uživatel - publicista vybere ze seznamu požadovaný objekt (trailer), jenž chce z databáze odstranit a stiskne odeslání. 3. Ulož hodnotu TrailerID vybranéh objektu do proměnné PTrailerID. BEGIN Transaction LX(Trailer) 4. Vymaž z tabulky Trailer záznam, kde TrailerID = PTrailerID. UN(Trailer) END Transaction 5. Jestliže se podařilo záznam odstranit, pak vypiš informativní hlášení "Záznam se podařilo z databáze odstranit". Jinak vypiš informativní hlášení "Záznam se nepodařilo z databáze odstranit, kontaktujte prosím administrátora".
Funkce 2.3.4 - Přiřazení traileru k filmu LS(Trailer) LS(Film) 1. Zobraz seznam trailerů (tabulka Trailer). Navíc zobraz u každého informace o filmu, k němuž je trailer aktuálně přidružen (tabulka Film) UN(Film) UN(Trailer) 2. Uživatel - publicista vybere ze seznamu požadovaný objekt (trailer), jenž chce přeřadit k jinému filmu a stiskne odeslání. 3. Ulož hodnotu atributu TrailerID vybraného traileru do proměnné PTrailerID. LS(Film) 4. Zobraz formulář Přiřazení traileru k filmu s výběrovým vstupem pro uživatele (seznam dostupných filmů - tabulka Film). UN(Film) 5. Jestliže počet filmů v databázi je větší nebo roven 1, pak uživatel publicista vybere jednu z N položek jako objekt (film), ke kterému chce trailer přeřadit a stiskne odeslání. Jinak vypiš informativní hlášení "V současnosti nejsou zatím dostupné filmy, ke kterým by bylo možno trailer přiřadit, zkuste to prosím později". 6. Ulož hodnotu atributu FilmID zvoleného filmu ze seznamu uživatelem do proměnné PFilmID. BEGIN Transaction LX(Trailer) 7. Změň v tabulce Trailer hodnotu ObjektID = PFilmID, kde TrailerID = PTrailerID. UN(Trailer) END Transaction 8. Jestliže se podařilo záznam změnit, pak vypiš informativní hlášení "Záznam se podařilo úspěšně změnit". Jinak vypiš informativní hlášení "Záznam se nepodařilo změnit, kontaktujte prosím administrátora".
Funkce 2.1.1.4.4 - Přiřazení žánru k filmu LS (Film)
1. Zobraz seznam existujících filmů (tabulka Film) UN (Film) 2. Uživatel - publicista vybere požadovaný objekt (film), ke kterému chce přiřadit další žánr a odešle stisknutím tlačítka (odeslat) na server. 3. Ulož hodnotu atributu FilmID uživatelem vybraného a odeslaného objektu (filmu) do proměnné PFilmID. LS (Zanr) 4. Zobraz formulář "Přiřazení žánru k filmu" pro přiřazení existujícího žánru jako dalšího žánru k filmu s požadovanými vstupy pro uživatele (seznam existujících žánrů - tabulka Zanr). UN (Zanr) 5. Uživatel - publicista vybere ze seznamu maximálně jeden objekt (žánr) a odešle stisknutím tlačítka (odeslat) na server. 6. jestliže uživatel nevybral žádný objekt, pak vypiš informativní chybové hlášení "Pro přiřazení objektu (žánru) k vybranému objektu (filmu) nebyl vybrán žádný záznam." a pokračuj od kroku 4. Jinak ulož hodnotu vybraného záznamu objektu (z tabulky Zanr) atributu ZanrID do proměnné PZanrID. LX (ZanrFilm) 7. Vlož do tabulky (ZanrFilm) nový záznam s hodnotami vybranými uživatelem (FilmID = PFilmID, ZanrID = ZanrID). UN (ZanrFilm) 8. Jestliže se podařilo záznam vložit do databáze, vypiš informativní hlášení "Záznam se podařilo úspěšně vložit". Jinak vypiš chybové hlášení "Záznam se nepodařilo vložit, kontaktujte prosím administrátora.".
Funkce 2.1.1.4.5 - Přiřazení kategorie k filmu LS (Film) 1. Zobraz seznam existujících filmů (tabulka Film) UN (Film) 2. Uživatel - publicista vybere požadovaný objekt (film), ke kterému chce přiřadit kategorii a odešle stisknutím tlačítka (odeslat) na server. 3. Ulož hodnotu atributu FilmID uživatelem vybraného a odeslaného objektu (filmu) do proměnné PFilmID. 4. Zobraz formulář "Přiřazení kategorie k filmu" pro přiřazení existující kategorie jako další kategorie k filmu s požadovanými vstupy pro uživatele (seznam existujících kategorií - tabulka KategorieFilm). 5. Uživatel - publicista vybere ze seznamu právě jeden objekt (kategorii) a odešle stisknutím tlačítka (odeslat) na server. 6. jestliže uživatel nevybral žádný objekt, pak vypiš informativní chybové hlášení "Pro přiřazení objektu (kategorie) k vybranému objektu (filmu) nebyl vybrán žádný záznam." a pokračuj od kroku 4. Jinak ulož hodnotu vybraného záznamu objektu (z tabulky KategorieFilm) atributu KategorieID do proměnné PKategorieID. LX (Film – záznam s FilmID) 7. Aktualizuj v tabulce Film hodnoty atributů a přišlusných hodnot (KategorieID = PKategorieID), kde FilmID = PFilmID. UN (Film – záznam s FilmID) 8. Jestliže se podařilo záznam v databázi změnit,pak vypiš informativní hlášení "Záznam se podařilo úspěšně změnit". Jinak vypiš chybové hlášení "Záznam se nepodařilo změnit, kontaktujte prosím administrátora.".
Funkce 3.1 - Nová zajímavost
LS (Film) 1. Zobraz film. UN (Film) 2. Publicista zvolí: „Nová zajímavost“. 3. Zobraz formulář pro novou zajímavost. 4. Uživatel vyplní text zajímavosti. 5. Ulož vyplněný text do proměnné obsah. 6. Zkontroluj, zda je délka řetězce obsah delší než 0 znaků. 7. Pokud je délka 0, vypiš: „Text zajímavosti musí být delší než 0 znaků“, jinak pokračuj na 8. 8. Vytvoř proměnnou datum, ulož do ní aktuální datum a čas. 9. Vytvoř proměnnou id_uzivatel, ulož do ní uzivatelID aktuálně přihlášeného uživatele. 10. Vytvoř proměnnou id_film, ulož do ní objektID vybraného filmu. LS (TypyObjektu) 11. Vyhledej v tabulce TypyObjektu objektID pro filmy a ulož do nové proměnné id_typ. UN (TypyObjektu) 12. Vytvoř proměnnou id_zajimavost (poslední záznam v tabulce Zajimavost + 1). LX (Zajimavosti) 13. Zapiš do tabulky Zajimavosti (id_zajimavost, id_film, id_uzivatel, id_typ, obsah, datum). UN (Zajimavosti) 14. Vypiš „Zajímavost byla úspěšně vložena“.
Funkce 3.2 - Úprava zajímavosti LS (Zajimavosti) 1. Vypiš seznam zajímavostí, které patří přihlášenému uživateli. UN (Zajimavosti) 2. Publicista vybere zajímavost. 3. Ulož zajímavost do proměnné Zajimavost. 4. Ulož zajimavostID do proměnné id_zajimavost z Zajimavost. 5. Ulož typID do proměnné id_typ z Zajimavost. 6. Ulož uzivatelID aktuálně přihlášeného uživatele id_uzivatel. 7. Ulož objektID do id_objekt z Zajimavost. 8. Zobraz formulář pro úpravu zajímavosti. 9. Vyplň pole text hodnotou obsah. 10. Uživatel upraví zajímavost a potvrdí změnu. 11. Ulož hodnotu pole text do proměnné text. 12. Vytvoř proměnnou datum, ulož do ní aktuální datum a čas. 13. Do proměnné druh ulož „EditaceZajimavosti“. begin transaction LX (Zajimavosti – záznam s id_zajimavosti) 14. Změň údaje v tabulce Zajimavosti, přepiš obsah proměnnou text, kde klíč je id_zajimavost. LX (Zmeny) UN (Zajimavosti – záznam s id_zajimavosti)
15. Vlož nový záznam do tabulky Zmeny(id_zmena, id_objekt, id_typ, id_uzivatel, datum, druh). UN (Zmeny) end transaction 16. Vypiš „Zajímavost byla úspěšně upravena“.
Funkce 1.1.3 – Smazat uživatele 1. Zobraz formulář pro smazání uživatele. LS(Uzivatele) 2. JESTLIŽE existuje ID uživatele ke smazání 2.1. PAK načti uživatele s daným ID z tabulky Uzivatele a ulož do p.uzivatel. 2.2. JINAK zobraz seznam všech uživatelů z tabulky Uzivatele. 2.2.1. Uživatel administrátor vybere uživatele do p.uzivatel. UN(Uzivatele) 3. Zobraz hlášení „Opravdu chcete smazat uživatele p.uzivatel ?“ 4. POKUD uživatel zvolí „ne“, PAK krok 8 s hlášením „Operace byla přerušena uživatelem.“. BEGIN transaction LX(Hodnoceni) 5. Smaž hodnocení v tabulce Hodnoceni, kde uzivatelID = p.uzivatel.uzivatelID. UN(Hodnoceni) LX(Zpravy) 6. Smaž soukromé zprávy v tabulce Zpravy, kde odesilatel nebo prijemce = p.uzivatel.uzivatelID. UN(Zpravy) LX(Filmoteky) 7. Smaž filmotéku v tabulce Filmoteky, kde uzivatelID = p.uzivatel.uzivatelID. UN(Filmoteky) 8. JESTLIŽE je uživatel p.uzivatel publicista nebo administrátor, LX(Zmeny) 8.1. PAK Smaž změny v tabulce Zmeny, kde uzivatelID = p.uzivatel.uzivatelID. UN(Zmeny) LX(Zajimavosti) 8.1.1. Smaž zajímavosti v tabulce Zajimavosti, kde uzivatelID = p.uzivatel.uzivatelID. UN(Zajimavosti) LS(Fotogalerie) 8.1.2. PRO KAŽDOU fotografii p.foto v tabulce Fotogalerie, kde uzivatelID = p.uzivatel.uzivatelID DĚLEJ: LX(Fotky) 8.1.2.1. Smaž záznam v tabulce Fotky, kde fotoID = p.foto.fotoID. UN(Fotky) UN(Fotogalerie) LX(Fotogalerie)
8.1.3. Smaž fotografie v tabulce Fotogalerie, kde uzivatelID = p.uzivatel.uzivatelID. UN(Fotogalerie) END transaction 9. Zobraz informaci o stavu transakce.
Funkce 1.1.4 – Změnit roli uživatele 1. Zobraz formulář pro změnu role uživatele. LS(Uzivatele) 2. JESTLIŽE existuje ID uživatele k editaci. 2.1. PAK načti uživatele s daným ID z tabulky Uzivatele a ulož do p.uzivatel. 2.2. JINAK zobraz seznam všech uživatelů z tabulky Uzivatele. 2.2.1. Uživatel administrátor vybere uživatele do p.uzivatel. UN(Uzivatele) LS(Role) 3. Zobraz seznam všech rolí z tabulky Role. UN(Role) 4. Uživatel administrátor vybere roli do p.role. 5. Ověř, zdali je vybrán uživatel p.uzivatel. POKUD ne, PAK krok 2. 6. Ověř, zdali je vybrána role p.role, POKUD ne, PAK krok 3. BEGIN transaction LX(UzivateleVRoli) 7. V tabulce UzivateleVRoli, kde uzivatelID = p.uzivatel.uzivatelID, nastav roleID na p.role.roleID. UN(UzivateleVRoli) END transaction 8. Zobraz informaci o stavu transakce.
Funkce 1.3.1 – Odeslat zprávu 1. Zobraz formulář pro odeslání soukromé zprávy. LS(Uzivatele) 2. JESTLIŽE existuje ID přijemce1 2.1. PAK načti uživatele s daným ID z tabulky Uzivatele a ulož do p.prijemce. 2.2. JINAK zobraz seznam všech uživatelů z tabulky Uzivatele. 2.2.1. Registrovaný uživatel vybere příjemce do p.prijemce. UN(Uzivatele) 3. Registrovaný uživatel2 zadá předmět zprávy do p.predmet. 4. Registrovaný uživatel zadá obsah zprávy do p.obsah. 5. Ověř, zdali je vybrán příjemce p.prijemce. POKUD ne, pak krok 2. 6. Ulož ID aktuálního uživatele do p.odesilatel. 7. Ulož aktuální datum do p.datum. LS(Zpravy) 8. Ověř platnost zadaných údajů dle datového slovníku (tabulka Zpravy) toku Odesl_zpr. Pokud chyba, pak krok 9 s hlášením „Předmět a obsah zprávy musí být vyplněn“. UN(Zpravy)
BEGIN transaction LX(Zpravy) 9. Vlož novou zprávu do tabulky Zpravy s hodnotami predmet = p.predmet, odesilatel = p.odesilatel, prijemce = p.prijemce, datumOdeslani = p.datum, precteno = false. UN(Zpravy) END transaction 10. Zobraz informaci o stavu transakce.
Funkce 1.2.1 – Přidat film do filmotéky 1. Zobraz formulář pro přidání filmu do filmotéky. LS(Filmy) 2. JESTLIŽE existuje ID filmu k přidání3, 2.1. PAK načti film s daným ID z tabulky Filmy a ulož do p.film. 2.2. JINAK zobraz seznam všech filmů z tabulky Filmy. 2.2.1. Registrovaný uživatel vybere film do p.film. UN(Filmy) LS(Media) 3. Zobraz seznam všech typů médií z tabulky Media. UN(Media) 4. Registrovaný uživatel2 vybere médium do p.medium. 5. Ulož ID aktuálního uživatele do p.uzivatelID. BEGIN transaction LX(Filmoteky) 6. Vlož nový záznam to tabulky Filmoteky s hodnotami uzivatelID = p.uzivatelID, objektID = p.film.objektID, mediumID = p.medium.mediumID. UN(Filmoteky) END transaction 7. Zobraz informaci o stavu transakce.
Funkce 2.1.1.4.2 - Přiřazení postavy k filmu LS(Film) 1. Zobraz seznam existujících filmů (tabulka Film) UN(Film) 2. Uživatel - publicista vybere požadovaný objekt (film), ke kterému chce přiřadit další postavu a odešle stisknutím tlačítka (odeslat) na server. 3. Ulož hodnotu atributu FilmID uživatelem vybraného a odeslaného objektu (filmu) do proměnné PFilmID. LS(Osobnost) 4. Zobraz formulář "Vytvoření postavy ze seznamu k filmu" pro přiřazení existující osobnosti jako další postavy k filmu s požadovanými vstupy pro uživatele (seznam existujících osobností - tabulka Osobnost, vstup pro jméno - jmeno vstup pro prijmeni - prijmeni, vstup pro přezdívku prezdivka, vstup pro popis - popis ). UN(Osobnost) 5. Uživatel - publicista vybere ze seznamu maximálně jeden objekt (osobnost), vyplní textové vstupy pro budoucí potenciální atributy nového záznamu tabulky SeznamPostav (jmeno, prijmeni, prezdivka, popis) a odešle stisknutím tlačítka (odeslat) na server.
6. jestliže uživatel nevybral žádný objekt, pak vypiš informativní chybové hlášeni "Pro přiřazení objektu (osobnosti) jako role postava k vybranému objektu (filmu) nebyl vybrán žádný zádný záznam." a pokračuj od kroku 4. Jinak ulož hodnotu vybraného záznamu objektu (z tabulky Osobnost) atributu OsobnostID do proměnné POsobnostID, a vstupy do proměnných: jmeno = PJmeno, prijmeni = PPrijmeni, prezdivka = PPrezdivka, popis = PPopis). 7. Validuj uživatelem vyplněné vstupy jako atributy (jmeno, prijmeni, prezdivka, popis) dle démén datového slovníku SeznamPostav a jejich ekvivalentních atributů. LX(SeznamPostav - OsobnostID) 8. Jestliže je vše v pořádku, pak vlož do tabulky (SeznamPostrav) nový záznam s hodnotami vybranými uživatelem (FilmID = PFilmID, OsobnostID = POsobnostID, Jmeno = PJmeno, Prijmeni = PPrijmeni, Prezdivka = PPrezdivka, Popis = PPopis). Jinak vypiš chybové hlášení "Vyplněná data nejsou ve správném formátu." a pokračuj od kroku 5. UN(SeznamPostav - OsobnostID) 9. Jestliže se podařilo záznam vložit do databáze, vypiš informativní hlášení "Záznam se podařilo úspěšně vložit". Jinak vypiš chybové hlášení "Záznam se nepodařilo vložit, kontaktujte prosím administrátora.".
Funkce 2.1.1.4.3 - Přiřazení státu k filmu LS(Film) 1. Zobraz seznam existujících filmů (tabulka Film) UN(Film) 2. Uživatel - publicista vybere požadovaný objekt (film), ke kterému chce přiřadit další stát a odešle stisknutím tlačítka (odeslat) na server. 3. Ulož hodnotu atributu FilmID uživatelem vybraného a odeslaného objektu (filmu) do proměnné PFilmID. LS(Stat) 4. Zobraz formulář "Přiřazení státu k filmu" pro přiřazení existujícího státu jako dalšího státu k filmu s požadovanými vstupy pro uživatele (seznam existujících států - tabulka Stat). UN(Stat) 5. Uživatel - publicista vybere ze seznamu maximálně jeden objekt (stát) a odešle stisknutím tlačítka (odeslat) na server. 6. jestliže uživatel nevybral žádný objekt, pak vypiš informativní chybové hlášeni "Pro přiřazení objektu (stát) k vybranému objektu (filmu) nebyl vybrán žádný záznam." a pokračuj od kroku 4. Jinak ulož hodnotu vybraného záznamu objektu (z tabulky Osobnost) atributu OsobnostID do proměnné POsobnostID. LX(FilmStat - FilmID) 7. Vlož do tabulky (FilmStat) nový záznam s hodnotami vybranými uživatelem (FilmID = PFilmID, StatID = PStatID). UN(FilmStat - FilmID) 8. Jestliže se podařilo záznam vložit do databáze, vypiš informativní hlášení "Záznam se podařilo úspěšně vložit". Jinak vypiš chybové hlášení "Záznam se nepodařilo vložit, kontaktujte prosím administrátora.".
Funkce 2.1.1.5.2 - Odebrání postavy k filmu LS(Film) 1.Zobraz seznam existujících filmů (tabulka Film)
UN(Film) 2. Uživatel - publicista vybere požadovaný objekt (film), ke kterému chce odebrat postavu a odešle stisknutím tlačítka (odeslat) na server. 3. Ulož hodnotu atributu FilmID uživatelem vybraného a odeslaného objektu (filmu) do proměnné PFilmID. 4. Jestliže P = 0, pak vypiš informativní hlášení "Požadovaný vybraný objekt (film) nemá žádné objekty (postavy) k odebrání." a pokračuj od kroku 1, kde P je počet postav (tabulka SeznamPostav, řádky kde filmID = PFilmID ) k užvatelem vybranému objektu (filmu). LS(Film - FilmID) 5. Zobraz formulář "Odebrání postavy k filmu" pro odebrání existující osobnosti jako postavy k filmu s požadovanými vstupy pro uživatele (seznam existujících postav k filmu - tabulka SeznamPostav, řádky kde FilmID = PFilmID). UN(Film - FilmID) 6. Uživatel - publicista vybere ze seznamu právě jeden objekt (osobnost) a odešle stisknutím tlačítka (odeslat) na server. 7. jestliže uživatel nevybral žádný objekt, pak vypiš informativní chybové hlášeni "Pro odebrání objektu (osobnosti) jako role postava k vybranému objektu (filmu) nebyl vybrán žádný záznam." a pokračuj od kroku 5. Jinak ulož hodnotu vybraného záznamu objektu (z tabulky Osobnost) atributu OsobnostID do proměnné POsobnostID. LX(SeznamPostav - OsobnostID) 8. Vymaž v tabulce (SeznamPostav) záznam , kde OsobnostID = POsobnostID. LX(SeznamPostav - OsobnostID) 9. Jestliže se podařilo záznam z databáze odstranit , vypiš informativní hlášení "Záznam se podařilo úspěšně odstranit". Jinak vypiš chybové hlášení "Záznam se nepodařilo odstranit, kontaktujte prosím administrátora.".
Funkce 2.1.1.5.3 - Odebrání státu k filmu LS(Film) 1.Zobraz seznam existujících filmů (tabulka Film) UN(Film) 2. Uživatel - publicista vybere požadovaný objekt (film), ke kterému chce odebrat stát a odešle stisknutím tlačítka (odeslat) na server. 3. Ulož hodnotu atributu FilmID uživatelem vybraného a odeslaného objektu (filmu) do proměnné PFilmID. LS(FilmStat) 4. Zobraz formulář "Odebrání státu k filmu" pro odebrání existujícího státu k filmu s požadovanými vstupy pro uživatele (seznam existujících států k danému vybranému filmu- tabulka FilmStat, řádky kde FilmID = PFilmID). UN(FilmStat) 5. Uživatel - publicista vybere ze seznamu maximálně jeden objekt (stát) a odešle stisknutím tlačítka (odeslat) na server. 6. jestliže uživatel nevybral žádný objekt, pak vypiš informativní chybové hlášeni "Pro odebrání objektu (státu) k vybranému objektu (filmu) nebyl vybrán žádný záznam." a pokračuj od kroku 4. Jinak ulož hodnotu vybraného záznamu objektu (z tabulky FilmStat) atributu StatID do proměnné PStatID. LX(FilmStat - FilmID) 7. Vymaž z tabulky (FilmStat) záznam s hodnotami vybranými uživatelem (FilmID = PFilmID, StatID = PStatID). UN(FilmStat - FilmID)
8. Jestliže se podařilo záznam odstranit z databáze, vypiš informativní hlášení "Záznam se podařilo úspěšně odstranit". Jinak vypiš chybové hlášení "Záznam se nepodařilo odstranit, kontaktujte prosím administrátora.".
5 Popis implementace (T16| AKI002, BAS064, CER43, 11. prosince 2009)
5.1 Struktura databáze Struktura databáze je vytvořena pomocí SQL skriptu pro MS SQL Server. Skript je přiložen v textovém souboru sql_skript_T16.sql.
5.2 Analýza zálohování a archivování dat Žlutě jsou vyznačeny číselníky.
Zálohování Zálohování pouze při změně. 1/2 roku denně ve 3:00h pak pouze při změně Zálohování 2x denně ve 12h a 24h.
IS DB Filmů
Archivace
Role
Nearchivujeme
Osobnosti
Nearchivujeme
UzivateleVRoli Nearchivujeme
1/2 roku denně ve 3:00h pak pouze při změně SeznamPostav Nearchivujeme Zálohování 2x denně ve 12h a 24h.
Fotky
Nearchivujeme
Zálohování 2x denně ve 12h a 24h.
Fotografie
Nearchivujeme
Zálohování 2x denně ve 12h a 24h.
Uzivatele
Nearchivujeme
TypObjektu
Nearchivujeme
Zálohování 2x denně ve 12h a 24h.
Zmeny
Nearchivujeme
Zálohování 2x denně ve 12h a 24h.
Zamavosti
Nearchivujeme
Zálohování 2x denně ve 12h a 24h.
Hodnoceni
Nearchivujeme
Funkce
Nearchivujeme
1/2 roku denně ve 3:00h pak pouze při změně
SeznamOsob
Nearchivujeme
1/2 roku denně ve 3:00h pak pouze při změně
Filmy
Nearchivujeme
Zálohování pouze při změně.
Staty
Nearchivujeme
FilmyVeState
Nearchivujeme
Zanry
Nearchivujeme
ZanryFilmu
Nearchivujeme
Zálohování pouze při změně.
Zálohování pouze při změně.
1/2 roku denně ve 3:00h pak pouze při změně Zálohování pouze při změně. 1/2 roku denně ve 3:00h pak pouze při změně
Zálohování pouze při změně. Zálohování 2x denně ve 12h a 24h. Zálohujeme 1x týdně (vůbec) Zálohování 2x denně ve 12h a 24h. Zálohování pouze při změně.
KategorieFilmu Nearchivujeme Trailery
Nearchivujeme
Zprávy
Zprávy starší než rok a ve stavu přečteno, zprávy ve stavu smazáno. 1x za měsíc ve 3:00h
Filmoteky
Nearchivujeme
Media
Nearchivujeme
5.3 Triggery a procedury 5.3.1 Trigger CelkoveHodnoceniIU Trigger upraví atribut celkoveHodnoceni. Spouští se po UPDATE a INSERT. CREATE TRIGGER CelkoveHodnoceniDel ON Hodnoceni AFTER UPDATE, INSERT AS UPDATE Filmy SET celkoveHodnoceni=( SELECT AVG(h.hodnoceni) FROM Hodnoceni AS h INNER JOIN deleted AS d ON h.objektID=d.objektID ) FROM Filmy AS f INNER JOIN Hodnoceni AS h ON h.objektID=f.objektID; UPDATE Osobnosti SET celkoveHodnoceni=( SELECT AVG(h.hodnoceni) FROM Hodnoceni AS h INNER JOIN deleted AS d ON h.objektID=d.objektID ) FROM Filmy AS f INNER JOIN Hodnoceni AS h ON h.objektID=f.objektID; 5.3.2 Trigger CelkoveHodnoceniDel Trigger upraví atribut celkoveHodnoceni. Spouští se po DELETE. CREATE TRIGGER CelkoveHodnoceniDel ON Hodnoceni AFTER DELETE AS UPDATE Filmy SET celkoveHodnoceni=( SELECT AVG(h.hodnoceni) FROM Hodnoceni AS h INNER JOIN inserted AS i ON h.objektID=i.objektID ) FROM Filmy AS f INNER JOIN Hodnoceni AS h ON h.objektID=f.objektID; UPDATE Osobnosti SET celkoveHodnoceni=( SELECT AVG(h.hodnoceni) FROM Hodnoceni AS h INNER JOIN inserted AS i ON h.objektID=i.objektID ) FROM Filmy AS f INNER JOIN Hodnoceni AS h ON h.objektID=f.objektID;;
6 Programátorská příručka (T16| BAS064, HRO088, SLA395, 13. prosince 2009)
6.1 Adresářová struktura Code\IS_vdf\ - obsahuje solution projektu WebSites\IS_vdf\ - osahuje Handler.aspx a web.config WebSites\IS_vdf\App_Code\ - obsahuje mapování LINQ to SQL
WebSites\IS_vdf\App_Themes\SkinFile\ - obsahuje skinfile.skin WebSites\IS_vdf\CSSaJS\ - obsahuje kaskádové styly WebSites\IS_vdf\img\ - obsahuje obrázky aplikace WebSites\IS_vdf\Public\ - obsahuje veřejně přístupné stránky WebSites\IS_vdf\Publicist\ - obsahuje administrátorské stránky
7 Uživatelská příručka (T16| AKI002, 13. prosince 2009) Uživatelská příručka je přiložena v dokumentu Uzivatelska_prirucka_T16.pdf.