VYSOKÁ ŠKOLA BÁŇSKÁ – TECHNICKÁ UNIVERZITA OSTRAVA
INFORMAČNÍ SYSTÉMY A DATOVÉ SKLADY
INFORMAČNÍ SYSTÉM AUTOBAZARU S INZERČNÍM SYSTÉMEM A RECENZEMI AUTOMOBILŮ (semestrální projekt) ZS 2009-2010
Analýza
Implementace
Číslo skupiny: Členové skupiny:
T09
6
Příjmení, jméno, login
1. Michal Zigo, ZIG012 2. Wrona Tomáš, WRO015 3. Miroslav Zpěvák, ZPE003 4. Lapiš Richard, LAP028
1. Fajfr, Stanislav, faj069 2. Horák, Ondřej, hor638 3. Jeřábek, Tomáš, jer042 4. Dočkal, Martin, doc068
1 Zadání (skupina T09, 7. října 2009) Cílem projektu je vytvoření komplexního informačního systému pro autobazar, který bude určený jak pro vnitřní správu informací, tak i prezentace prodávaných automobilů, které budou přístupné přes webové rozhraní. Tyto prezentace si vytváří samotní prodávající uživatelé a tak odpadá nutnost zaměstnávat na tuto činnost administrátora, ten tyto prezentace pouze autorizuje pro veřejné zobrazení, aby tak předešel zobrazení nevhodného inzerátu. Uživatel (prodejce či kupující) se nejprve na portále zaregistruje a až poté může v jednotlivých transakcích vystupovat buď jako prodávající či nakupující (např. jeden uživatel může současně prodávat svůj starý automobil a kupovat novější). Při prodeji uživatel přiveze prodávaný automobil do areálu autobazaru a zaměstnanec jej (automobil, případně při první transakci i zákazníka) zaregistruje. Poté prodávající zvolí tarif (doba platnosti inzerátu) - tedy již zobrazení inzerátu je paušálně zpoplatněno a spolu se zaměstnancem sepíší smlouvu, v níž si prodávající určí cenu, kterou si za automobil nárokuje. Tato cena bude navýšena o provizi autobazaru, která momentálně činí 15% z prodejní ceny. Jedním z požadavků je, aby tento procentuální podíl byl do budoucna snadno editovatelný. Poté je zákazníkovi umožněno vytvořit si vlastní prezentaci pro prodej automobilu - resp. inzerát s možností přidání fotek. Tyto inzeráty se běžným uživatelům zobrazí až po autorizaci inzerátu administrátorem. Inzeráty může prohlížet každý návštěvník stránek, avšak rezervovat si vůz bude moct pouze přihlášený (tedy registrovaný) uživatel za předpokladu, že automobil již nebude zamluven někým jiným. Rezervace je ovšem pouze dočasná, a pokud uživatel autobazar do 48hodin nenavštíví, automobil si nekoupí nebo rezervaci dříve nezruší, tak mu automaticky tato rezervace propadá. Prodej bude probíhat prostřednictvím autobazaru, přičemž autobazar zaujímá roli zprostředkovatele, za kterou dostane v případě prodeje procentuální provizi. Při prodeji se doplní odběratel v již podepsané smlouvě a také se vystaví faktury. Jelikož pracovníci autobazaru čas od času provádějí testy prodávaných automobilů, může být součástí prezentace i takzvaná recenze a to v případě, že již byl někdy v minulosti prováděn test totožného modelu automobilu (např. všechny testy automobilů Škoda Favorit). Zaměstnanci tedy musí mít i možnost tyto recenze vytvářet a měnit. Součástí systému bude i interní evidence zaměstnanců, kterou bude mít právo spravovat pouze vedoucí pracovník či administrátor.
Se systémem budou moci pracovat tito uživatelé:
vedoucí pracovník, administrátor - právo editovat zaměstnance + to co zaměstnanec
zaměstnanec - správa a autorizace prezentací, provádění finančních transakcísepisování smluv, správa recenzí, registrace zákazníků + to co nepřihlášený uživatel
zákazník - to co nepřihlášený uživatel
-
v roli prodávajícího - vytváření a správa prezentací
-
v roli kupujícího - možnost rezervace automobilu
nepřihlášený uživatel - prohlížení inzerátů a recenzí, registrace
1.1 Funkční požadavky
PROČ nový IS
V současné době je evidence autobazaru vedena prostřednictvím papírové kartotéky, což je z nynějšího hlediska naprosto nevyhovující. Tato evidence také neumožňuje efektivní prezentaci prodávaných automobilů.
K ČEMU má IS sloužit
Hlavní funkcí systému by měla být prezentace prodávaných automobilů s možností rezervace a vytváření vlastních prezentací (inzerátů s fotografiemi) z kterých plynou autobazaru příjmy, doplněných recenzemi modelů automobilů vytvářených pracovníky autobazaru pro lepší orientaci zákazníků ve světě motorů. Mezi vedlejší funkce systému bude také patřit vnitřní evidence zaměstnanců se správou jejich rolí a správy jejich tabulkových platů.
KDO s IS bude pracovat o vedoucí pracovník, administrátor - právo editovat zaměstnance + to co zaměstnanec o
zaměstnanec - správa a autorizace prezentací, provádění finančních transakcí-sepisování smluv, správa recenzí, registrace zákazníků + to co nepřihlášený uživatel
o zákazník - to co nepřihlášený uživatel v roli prodávajícího - vytváření a správa prezentací
v roli kupujícího - možnost rezervace automobilu
o nepřihlášený uživatel - prohlížení inzerátů a recenzí, registrace
VSTUPY do systému
U automobilů evidujeme značku a model automobilu, typ karoserie, typ automobilu (osobní/nákladní atd.), palivo, rok výroby, najeté kilometry, obsah motoru, barvu karoserie a typ převodovky a datum platnosti STK a kontroly emisí. U zákazníků evidujeme jméno a příjmení, kontaktní telefon, e-mail, adresu, případné IČO a DIČ a jeho heslo do systému. U zaměstnanců evidujeme jméno a příjmení, kontaktní telefon, e-mail, adresu, jeho pozici v autobazaru spojenou a jeho finančním ohodnocením a heslo do systému. U inzerátů evidujeme titulek inzerátu a doprovodný text majitele, datum vytvoření či editace, a zda byl inzerát schválen pracovníky autobazaru. U smluv evidujeme dodavatele a v případě prodeje i kupce automobilu, součástí smlouvy je i ujednání o zvoleném tarifu - tj. doby zobrazení inzerátu, prodejní cena, procenta z případného prodeje plynoucí autobazaru, datum vytvoření a datum vyřízení, identifikační číslo příslušného inzerátu a číslo automobilu, jehož se smlouvy týká. U fotografií se eviduje identifikační číslo inzerátu k němuž fotka přísluší, adresa fotky (její url) a alternativní její popis. U rezervací evidujeme identifikační číslo příslušného auta, zákazníka jenž si automobil rezervuje, čas rezervace, případně i poznámku k rezervaci. U recenzí evidujeme model automobilu, kterého se recenze týká, zaměstnance jež recenzi vytváří, datum vytvoření, titulek recenze (perex) a její samotný text.
VÝSTUPY ze systému
U faktur jsou požadovány standardní položky faktur jako dodavatel (vždy autobazar – dodavatel služby) a odběratel (prodejce automobilu-odběr služby zprostředkování prodeje), datum, datum splatnosti, datum zdanitelného plnění, vystavil, doprovodný text, konečná cena a platební podmínky.
Nefunkční požadavky
I když informační systém eviduje kupce automobilu, neřeší občansko-právní smlouvy o prodeji mezi dodavatelem a kupcem automobilu, avšak pouze vztah mezi prodejcem s autobazarem o procentuální provizi ze zprostředkování prodeje a inzerci. Na implementaci nejsou kladeny žádné striktní požadavky, avšak, jelikož má být informační systém přístupný přes webové rozhraní, měly by se při implementaci zvolit vhodné moderní technologie jako např. .NET + MSSQL či PHP5 + MySQL5
1.1.1 Výpis funkcí, aktérů a reakcí výpis zaměstnanců (vedoucí, admin) -> vypíše zaměstnance přidání zaměstnance (vedoucí, admin) -> přidá nového zaměstnance editace zaměstnance (vedoucí, admin) -> upraví údaje zaměstnance smazání zaměstnance (vedoucí, admin) -> smaže zaměstnance výpis rolí (vedoucí, admin) -> vypíše role vytvoření nové role (vedoucí, admin) -> vytvoří novou roli editace role (vedoucí, admin) -> edituje roli smazání role (vedoucí, admin) -> smaže roli výpis inzerátů (vedoucí, admin, zaměstnanec, zákazník) -> vypíše inzeráty vytvoření inzerátu (vedoucí, admin, zaměstnanec, zákazník) -> vytvoření nového inzerátu editace inzerátu (vedoucí, admin, zaměstnanec, zákazník) -> editace inzerátu autorizace inzerátu (vedoucí, admin, zaměstnanec) -> autorizace inzerátu deaktivace inzerátu (vedoucí, admin, zaměstnanec) -> zrušení autorizace inzerátu smazání inzerátu (vedoucí, admin, zaměstnanec) -> smazání inzerátu výpis zákazníků (vedoucí, admin, zaměstnanec) -> vypíše zákazníky vytvoření zákazníka (vedoucí, admin, zaměstnanec) -> přidá nového zákazníka do systému editace zákazníka (vedoucí, admin, zaměstnanec) -> edituje parametry zákazníka smazání zákazníka (vedoucí, admin, zaměstnanec) -> smaže záznam zákazníka výpis fotografií (vedoucí, admin, zaměstnanec, zákazník) -> zobrazí fotografie přidání fotografie (vedoucí, admin, zaměstnanec, zákazník) -> přidá k inzerátu novou fotku smazání fotografie (vedoucí, admin, zaměstnanec, zákazník) -> smaže fotografii výpis rezervací (vedoucí, admin, zaměstnanec, zákazník) -> vypíše rezervace vytvoření rezervace (vedoucí, admin, zaměstnanec, zákazník) -> vytvoření nové rezervace zrušení rezervace (vedoucí, admin, zaměstnanec, zákazník, timer) -> zruší rezervaci výpis smluv (vedoucí, admin, zaměstnanec) -> vypíše smlouvy vytvoření smlouvy (vedoucí, admin, zaměstnanec) -> vytvoří záznam o nové smlouvě editace smlouvy (vedoucí, admin, zaměstnanec) -> edituje smlouvu storno smlouvy (vedoucí, admin, zaměstnanec) -> stornuje smlouvu (a tudíž i fakturu) výpis faktur (vedoucí, admin, zaměstnanec) -> vypíše faktury vytvoření faktury (vedoucí, admin, zaměstnanec) -> vytvoří záznam o nové faktuře editace faktury (vedoucí, admin, zaměstnanec) -> editace faktury storno faktury (vedoucí, admin, zaměstnanec) -> stornuje fakturu (defakto smlouvu)
výpis automobilů (vedoucí, admin, zaměstnanec, zákazník) -> vypíše automobily vytvoření automobilu (vedoucí, admin, zaměstnanec) -> vytvoření záznamu nového auta editace automobilu (vedoucí, admin, zaměstnanec) -> editace automobilu smazání automobilu (vedoucí, admin, zaměstnanec) -> smazání automobilu výpis recenzí (vedoucí, admin, zaměstnanec, zákazník) -> výpis recenzí modelu vytvoření recenze (vedoucí, admin, zaměstnanec) -> vytvoření recenze editace recenze (vedoucí, admin, zaměstnanec) -> editace recenze smazání recenze (vedoucí, admin, zaměstnanec) -> smazání recenze výpis tarifů (vedoucí, admin, zaměstnanec, zákazník) -> výpis tarifů vytvoření tarifu (vedoucí, admin, zaměstnanec) -> vytvoření tarifu editace tarifu (vedoucí, admin, zaměstnanec) -> úprava tarifu smazání tarifu (vedoucí, admin, zaměstnanec) -> smazání tarifu výpis modelů(vedoucí, admin, zaměstnanec, zákazník) -> výpis seznamu modelů značky auta vytvoření modelu(vedoucí, admin, zaměstnanec) -> přidání nového modelu auta editace modelů(vedoucí, admin, zaměstnanec) -> editace modelu smazání modelu (vedoucí, admin, zaměstnanec) -> smazání modelu výpis značek (vedoucí, admin, zaměstnanec, zákazník) -> výpis značek automobilů přidání značky (vedoucí, admin, zaměstnanec) -> přidání značky automobilu editace značky (vedoucí, admin, zaměstnanec) -> editace značky smazání značky (vedoucí, admin, zaměstnanec) -> smazání značky výpis barev (vedoucí, admin, zaměstnanec, zákazník) -> zobrazí seznam barev přidání barvy (vedoucí, admin, zaměstnanec) -> přidání barvy editace značky (vedoucí, admin, zaměstnanec) -> editace barvy smazání značky (vedoucí, admin, zaměstnanec) -> smazání barvy výpis typů aut(vedoucí, admin, zaměstnanec, zákazník) -> zobrazí výpis typů automobilů přidání typu aut (vedoucí, admin, zaměstnanec) -> přidá nový typ automobilu editace typu aut (vedoucí, admin, zaměstnanec) -> editace typu smazání typu aut (vedoucí, admin, zaměstnanec) -> smazání typu výpis karoserií (vedoucí, admin, zaměstnanec, zákazník) -> zobrazí výpis karoserií přidání karoserie (vedoucí, admin, zaměstnanec) -> přidá karoserii editace karoserie (vedoucí, admin, zaměstnanec) -> edituje karoserii smazání karoserie (vedoucí, admin, zaměstnanec) -> smaže karoserii Pozn. součástí operací výpisů je jak výpis seznamů, tak i detailů jediné entity
2 Analýza (skupina T09, 19. 10. 2009)
2.1 Datová analýza 2.1.1 Lineární zápis typů entit a typů vazeb Auto (id_auta, id_model, id_barva, id_karoserie, rok_vyroby, obsah, palivo, prevodovka, najeto, STK, emise, vybava) Model (id_model, id_znacka, id_typ, nazev) Znacka (id_znacka, nazev) Typ (id_typ, nazev) Karoserie (id_karoserie, nazev) Fotografie (id_fotky, id_inzerat, url, alt) Inzerat (id_inzerat, id_smlouvy, perex, text, datum, autorizovan) Zamestnanec (id_zamestnance, jmeno, prijmeni, id_role, město, ulice, psc, telefon, mail, heslo) Zakaznik (id_zakaznik, jmeno, prijmeni, město, ulice, psc, telefon, mail, ico, dic , heslo) Smlouva (id_smlouvy, id_auta, id_dodavatel, id_odberatel, id_tarif, datum_uzavreni, datum_vyrizeni, prodejni_cena, procenta_z_prodeje, storno) Faktura (cislo_fakutry, id_smlouvy, cena, datum, datum_splatnosti, datum_zdan_plneni, vyrizena, forma_uhrady, bankovni_spojeni, cislo_uctu, variabilni_symbol, text_faktury, vystavil) Rezervace (id_rezervace, id_auta, id_odberatel, cas_rezervace, poznamka) Recenze (id_recenze, id_model, id_zamestnanec, perex, text, datum) Barva (id_barvy, barva) Tarif (id_tarifu, cena, doba_expirace) Role (id_role, nazev, plat)
ZNAC_MODEL (Znacka, Model) MODEL_REC (Model, Recenze) REC_ZAM (Recenze, Zamestnanec) ZAM_ROLE (Zamestnanec, Role) TYP_MODEL (Typ, Model) MODEL_AUTO (Model, Auto) KAROS_AUTO (Karoserie, Auto) AUTO_BARVA (Auto, Barva) FAKT_SML (Faktura, Smlouva) AUTO_SML (Auto, Smlouva) AUTO_REZ (Auto, Rezervace) INZER_SML (Inzerat, Smlouva) SML_TARIF (Smlouva, Tarif) INZER _FOTO (Inzerat, Fotografie) SML_PROD (Smlouva, Zakaznik) SML_KUP (Smlouva, Zakaznik) REZ_ZAK (Rezervace, Zakaznik)
2.1.2 ER diagram
Datový slovník
Atribut
Datový typ
Popis a IO
Klíč
Null
Index
PK FK FK N FK N N N N N N N
N N N N N N N N N N N A
A N N N N N N N N N N N
PK FK FK N
N N N N
A N N N
aut.inkr.
PK N
N N
A N
aut.inkr.
PK N
N N
A N
aut.inkr.
PK N
N N
A N
aut.inkr.
PK FK N N
N N N N
A N N N
aut.inkr.
PK FK N N N N
N N N N N N
A N N N N N
aut.inkr.
Auto id_auta id_model id_barva rok_vyroby id_karoserie obsah palivo prevodovka najeto STK emise vybava
int(8) int(8) int(8) int(4) int(8) int(4) enum enum int(8) date date longtext
aut.inkr.
ccm *1/ auto/manual km
Model id_model id_znacka id_typ nazev
int(8) int(8) int(8) varchar(30)
Znacka id_znacka nazev
int(8) varchar(30)
Typ id_typ nazev
int(8) varchar(20)
Karoserie id_karoserie nazev
int(8) varchar(30)
Fotografie id_foto id_inzeratu url alt
int(8) int(8) varchar(60) varchar(60)
Inzerat id_inzeratu is_smlouvy perex text datum autorizace
int(8) int(8) varchar(60) longtext date char
*2/
Atribut
Datový typ
Popis a IO
Klíč
Null
Index
PK FK FK FK FK N N N N N
N N N A N N A N N N
A N N N N N N N N N
aut.inkr.
PK FK N N N N N N N N N N N
N N N N N N N N N N N N N
A N N N N N N N N N N N N
*3/
PK N N
N N N
A N N
aut.inkr.
PK FK FK N N
N N N N A
A N N N N
aut.inkr.
PK FK FK N N N
N N N N N N
A N N N N N
aut.inkr.
Smlouva id_smlouvy id_auta id_dodavatel id_odberatel id_tarif datum_uzavreni datum_vyrizeni prodejni_cena procenta_z_prodeje storno
int(8) int(8) int(8) int(8) int(8) date date int(8) float(2,2) boolean
Faktura cislo_faktury id_smlouvy cena datum datum_zdan_plneni datum_splatnosti vyrizena forma_uhrady bankovni_spojeni cislo_uctu variabilni_symbol text_faktury vystavil
int(8) int(8) int(8) date date date bool varchar(30) varchar(30) varchar(15) int(16) longtext int(8)
Tarif id_tarif cena doba_expirace
int(8) int(8) int(8)
počet dnů
Rezervace id_rezervace id_auta id_odberatel cas_rezervace poznamka
int(8) int(8) int(8) datetime longtext
Recenze id_recenze id_model id_zamestnanec perex text datum
int(8) int(8) int(8) varchar(60) longtext date
Atribut
Datový typ
Klíč
Popis a IO
Null
Index
PK N N FK N N N N N N
N N N N N N N N N N
A N N N N N N N N N
PK N N N N N N N N N N
N N N N N N N N A A N
A N N N N N N N N N N
PK N N
N N N
A N N
aut.inkr.
PK N
N N
A N
aut.inkr.
Zamestnanec id_zamestnance jmeno prijmeni role mesto ulice psc telefon mail heslo
int(8) varchar(30) varchar(30) int(8) varchar(30) varchar(30) int(5) int(9) varchar(60) varchar(32)
aut.inkr.
MD5 hash
Zakaznik id_zakaznik jmeno prijmeni mesto ulice psc telefon mail dic ico heslo
int varchar(30) varchar(30) varchar(30) varchar(30) int(5) int(9) varchar(60) varchar(60) varchar(60) varchar(32)
aut.inkr.
MD5 hash
Role id_role nazev plat
int(8) varchar(30) int(8)
Barva id_barvy nazev
int(8) varchar(30)
*1/ natural, diesel, lpg *2/ A – autorizovan, N – neautorizovat, W – čeká na autorizaci, D - deaktivován *3/ zřetězení znaků aktuálního data a pořadového čísla faktury v roce např. 20090001, 20090002 apod.
2.2 Funkční analýza 2.2.1 DF diagramy +Minispecifikace
2.2.1.1 KONTEXTOVÝ DIAGRAM
2.2.1.2 DF diagram 0. úroveň
1. Evidence automobilů
1.1 Přidání automobilu 1. Zobraz formulář pro přidání nového automobilu. 2. Načti údaje z tabulek Model, Karoserie, Barva 3. Uživatel vybere model, barvu a typ karoserie automobilu a zadá rok výroby, obsah motoru, datum platnosti kontroly STK a emisí, najeté kilometry, palivo a výbavu. 4. Systém doplní id_modelu, id_karoserie a id_barvy 5. Pokud nejsou vyplněny všechny údaje, vypiš chybové hlášení a jdi na bod č.1
BEGIN TRANS 6. Jinak vygeneruj nové id do p.id_auta. 7. Přidej nový záznam do tabulky Auto s hodnotami v paměti.
END TRANS 8. Vypiš informace o stavu daného procesu.
1.2 Editace automobilu 1. Zobraz formulář Změnit záznam auta. 2. Uživatel vybere id auta a provedené změny se uloží do p.id_auta, p.id_modelu, p.id_barvy, p.rok_vyroby, p.id_karoserie, p.obsah, p.palivo, p.prevodovka, p.najeto, p.stk, p.emise, p.vybava. 3. Vybere seznam z tabulky Auto kde Auto.id_auta = p.id_auta.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak změna dat v tabulce Auto kde Auto.id_auta = p.id_auta s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
1.3 Smazání automobilu 1. Zobraz formulář Smazat auto. 2. Uživatel zadá id auta do p.id_auta. 3. Vybere seznam z tabulky Auto kde Auto.id_auta = p.id_auta.
BEGIN TRANS 4. Pokud nevybrán žádný záznam, pak krok 5. Naopak smaž záznam v tabulce Auto kde Auto.id_auta = p.id_auta.
END TRANS 5. Vypiš informace o stavu daného procesu.
1.4 Výpis automobilů 1. Zobraz formulář Zobrazit seznam aut. 2. Uživatel požádá zobrazit seznam aut vyhovující kritériu. 3. Vybere seznam z tabulky Auto podle kritéria. 4. Vypiš informace o stavu daného procesu.
2. Evidence barev
2.1 Přidání barvy 1. Zobraz formulář Nová barva. 2. Uživatel zadá nazev do p.nazev.
BEGIN TRANS 3. Vygeneruj nové id do p.id_barvy. 4. Přidej nový záznam do tabulky Barva s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
2.2 Editace barvy 1. Zobraz formulář Změnit záznam barvy. 2. Uživatel vybere id barvy a provedené změny se uloží do p.id_barvy, p.nazev. 3. Vybere seznam z tabulky Barva kde Barva.id_barvy = p.id_barvy.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak změna dat v tabulce Barva kde Barva.id_barvy = p.id_barvy s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
2.3 Smazání barvy 1. Zobraz formulář Smazat barvu. 2. Uživatel zadá id barvy do p.id_barvy. 3. Vybere seznam z tabulky Barva kde Barva.id_barvy = p.id_barvy.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak smaž záznam v tabulce Barva kde Barva.id_barvy = p.id_barvy.
END TRANS 5. Vypiš informace o stavu daného procesu.
2.4 Výpis barev 1. Zobraz formulář Zobrazit seznam barev. 2. Uživatel požádá zobrazit seznam barev vyhovující kritériu. 3. Vybere seznam z tabulky Barva podle kritéria. 4. Vypiš informace o stavu daného procesu.
3. Evidence faktur
3.1 Vytvoření faktury 1. Zobraz formulář Nová faktura. 2. Uživatel zadá id smlouvy, cenu, datum, datum zdan. plneni, datum splatnosti, vyrizena, forma uhrady, bankovni spojeni, cislo uctu, variabilni symbol, text faktury, vystavil do p.id_smlouvy, p.cena, p.datum, p.datum_zdan_plneni, p.datum_splatnosti, p.vyrizena, p.forma_uhrady, p.bankovni_spojeni, p.cislo_uctu, p.variabilni_symbol, p.text_faktury, p.vystavil.
BEGIN TRANS 3. Vygeneruj nové id do p.cislo_faktury. 4. Přidej nový záznam do tabulky Faktura s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
3.2 Editace faktury 1. Zobraz formulář Změnit záznam faktury. 2. Uživatel vybere cislo faktuy a provedené změny se uloží do p.cislo_faktury, p.id_smlouvy, p.cena, p.datum, p.datum_zdan_plneni, p.datum_splatnosti, p.vyrizena, p.forma_uhrady, p.bankovni_spojeni, p.cislo_uctu, p.variabilni_symbol, p.text_faktury, p.vystavil. 3. Vybere seznam z tabulky Faktura kde Faktura.cislo_faktury = p.cislo_faktury.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak změna dat v tabulce Faktura kde Faktura.cislo_faktury = p.cislo_faktury s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
3.3 Storno faktury 1. Zobraz formulář Storno faktury. 2. Uživatel zadá cislo faktury do p.cislo_faktury. 3. Vybere seznam z tabulky Faktura kde Faktura.cislo_faktury = p.cislo_faktury.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak smaž záznam v tabulce Faktura kde Faktura.cislo_faktury = p.cislo_faktury.
END TRANS 5. Vypiš informace o stavu daného procesu.
3.4 Výpis faktur 1. Zobraz formulář Zobrazit seznam faktur. 2. Uživatel požádá zobrazit seznam faktur vyhovující kritériu. 3. Vybere seznam z tabulky Faktura podle kritéria. 4. Vypiš informace o stavu daného procesu.
4. Evidence Fotografií
4.1 Přidání fotografie 1. Zobraz formulář Nová fotografie. 2. Uživatel zadá id inzeratu, url, popis do p.id_inzeratu, p.url, p.alt.
BEGIN TRANS 3. Vygeneruj nové id do p.id_foto. 4. Přidej nový záznam do tabulky Fotografie s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
4.2 Smazaní fotografie 1. Zobraz formulář Smazat fotografii. 2. Uživatel zadá id fotografie do p.id_foto. 3. Vybere seznam z tabulky Fotografie kde Fotografie.id_foto = p.id_foto.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak smaž záznam v tabulce Fotografie kde Fotografie.id_foto = p.id_foto.
END TRANS 5. Vypiš informace o stavu daného procesu.
4.3 Výpis fotografií 1. Zobraz formulář Zobrazit seznam fotografií. 2. Uživatel požádá zobrazit seznam fotografií vyhovující kritériu. 3. Vybere seznam z tabulky Fotografie podle kritéria. 4. Vypiš informace o stavu daného procesu.
5. Evidence inzerátů
5.1 Vytvoření inzerátu 1. Zobraz formulář Nový inzerát. 2. Uživatel zadá perex, text, datum, autorizace do p.perex, p.text, p.datum, p.autorizace.
BEGIN TRANS 3. Vygeneruj nové id do p.id_inzeratu. 4. Přidej nový záznam do tabulky Inzerat s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
5.2 Editace inzerátu 1. Zobraz formulář Změnit záznam inzerátu. 2. Uživatel vybere id inzeratu a provedené změny se uloží do p.perex, p.text, p.datum, p.autorizace. 3. Vybere seznam z tabulky Inzerat kde Inzerat.id_inzeratu = p.id_inzeratu.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak změna dat v tabulce Inzerat kde Inzerat.id_inzeratu = p.id_inzeratu s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
5.3 Smazání inzerátu 1. Zobraz formulář Smazat inzerát. 2. Uživatel zadá id inzeratu do p.id_inzeratu. 3. Vybere seznam z tabulky Inzerat kde Inzerat.id_inzeratu = p.id_inzeratu.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak smaž záznam v tabulce Inzerat kde Inzerat.id_inzeratu = p.id_inzeratu.
END TRANS 5. Vypiš informace o stavu daného procesu.
5.4 Zobraz seznam 1. Zobraz formulář Zobrazit seznam inzerátů. 2. Uživatel požádá zobrazit seznam inzerátů vyhovující kritériu. 3. Vybere seznam z tabulky Inzerát podle kritéria. 4. Vypiš informace o stavu daného procesu.
5.5 Autorizace 1. Zobraz formulář Autorizace inzerátu. 2. Uživatel vybere id inzeratu a do p.autorizace uloží „true“. 3. Vybere seznam z tabulky Inzerat kde Inzerat.id_inzeratu = p.id_inzeratu.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak změna dat v tabulce Inzerat kde Inzerat.id_inzeratu = p.id_inzeratu s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
5.6 Deaktivace 1. Zobraz formulář Deaktivace inzerátu. 2. Uživatel vybere id inzeratu a do p.autorizace uloží „false“. 3. Vybere seznam z tabulky Inzerat kde Inzerat.id_inzeratu = p.id_inzeratu.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak změna dat v tabulce Inzerat kde Inzerat.id_inzeratu = p.id_inzeratu s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
6. Evidence modelů
6.1 Vytvoření modelu 1. Zobraz formulář Nový model. 2. Uživatel zadá znacku, typ, nazev do p.znacka, p.typ, p.nazev.
BEGIN TRANS 3. Vygeneruj nové id do p.id_model. 4. Přidej nový záznam do tabulky Model s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
6.2 Editace modelu 1. Zobraz formulář Změnit model. 2. Uživatel vybere id modelu a provedené změny se uloží do p.id_modelu, p.znacka, p.typ, p.nazev.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak změna dat v tabulce Model kde Model.id_modelu = p.id_modelu s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
6.3 Smazání modelu 1. Zobraz formulář Smazat model. 2. Uživatel zadá id modelu do p.id_modelu. 3. Vybere seznam z tabulky Model kde Model.id_modelu = p.id_modelu.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak smaž záznam v tabulce Model kde Model.id_modelu = p.id_modelu.
END TRANS 5. Vypiš informace o stavu daného procesu.
6.4 Výpis modelu 1. Zobraz formulář Zobrazit seznam modelů. 2. Uživatel požádá zobrazit seznam modelů vyhovující kritériu. 3. Vybere seznam z tabulky Model podle kritéria. 4. Vypiš informace o stavu daného procesu.
7. Evidence recenze
7.1 Vytvoření recenze 1. Zobraz formulář Nová recenze. 2. Uživatel zadá id modelu, id zamestnance, perex, text, datum do p.id_modelu, p.id_zamestnance, p.perex, p.text, p.datum.
BEGIN TRANS 3. Vygeneruj nové id do p.id_recenze. 4. Přidej nový záznam do tabulky Recenze s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
7.2 Editace recenze 1. Zobraz formulář Změnit recenzi. 2. Uživatel vybere id recenze a provedené změny se uloží do p.id_recenze, p.id_modelu, p.id_zamestnance, p.perex, p.text, p.datum.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak změna dat v tabulce Recenze kde Recenze.id_recenze = p.id_recenze s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
7.3 Smazání recenze 1. Zobraz formulář Smazat recenzi. 2. Uživatel zadá id recenze do p.id_recenze. 3. Vybere seznam z tabulky Recenze kde Recenze.id_recenze = p.id_recenze.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak smaž záznam v tabulce Recenze kde Recenze.id_recenze = p.id_recenze.
END TRANS 5. Vypiš informace o stavu daného procesu.
7.4 Výpis recenze 1. Zobraz formulář Zobrazit seznam recenzí. 2. Uživatel požádá zobrazit seznam recenzí vyhovující kritériu. 3. Vybere seznam z tabulky Recenze podle kritéria. 4. Vypiš informace o stavu daného procesu.
8. Evidence rezervací
8.1 Vytvoření rezervace 1. Zobraz formulář Nová rezervace. 2. Uživatel zadá id auta, id odberatele, cas rezervace, poznamku do p.id_auta, p.id_odberatel, p.cas_rezervace, p.poznamka.
BEGIN TRANS 3. Vygeneruj nové id do p.id_rezervace. 4. Přidej nový záznam do tabulky Rezervace s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
8.2 Zrušení rezervace 1. Zobraz formulář Smazat rezervaci. 2. Uživatel zadá id rezervace do p.id_rezervace. 3. Vybere seznam z tabulky Rezervace kde Rezervace.id_rezervace = p.id_rezervace.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak smaž záznam v tabulce Rezervace kde Rezervace.id_rezervace = p.id_rezervace.
END TRANS 5. Vypiš informace o stavu daného procesu.
8.3 Výpis rezervací 1. Zobraz formulář Zobrazit seznam rezervací. 2. Uživatel požádá zobrazit seznam rezervací vyhovující kritériu. 3. Vybere seznam z tabulky Rezervace podle kritéria. 4. Vypiš informace o stavu daného procesu.
9. Evidence rolí
9.1 Přidání role 1. Zobraz formulář Nová role. 2. Uživatel zadá nazev, plat do p.nazev, p.plat.
BEGIN TRANS 3. Vygeneruj nové id do p.id_role. 4. Přidej nový záznam do tabulky Role s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
9.2 Editace role 1. Zobraz formulář Změnit roli. 2. Uživatel vybere id role a provedené změny se uloží do p.id_role, p.nazev, p.plat.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak změna dat v tabulce Role kde Role.id_role = p.id_role s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
9.3 Smazání role 1. Zobraz formulář Smazat roli. 2. Uživatel zadá id role do p.id_role. 3. Vybere seznam z tabulky Role kde Role.id_role = p.id_role.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak smaž záznam v tabulce Role kde Role.id_role = p.id_role.
END TRANS 5. Vypiš informace o stavu daného procesu.
9.4 Výpis rolí 1. Zobraz formulář Zobrazit seznam rolí. 2. Uživatel požádá zobrazit seznam rolí vyhovující kritériu. 3. Vybere seznam z tabulky Role podle kritéria. 4. Vypiš informace o stavu daného procesu.
10. Evidence smluv
10.1 Vytvoření smlouvy 1. Zobraz formulář Nová smlouva. 2. Uživatel zadá id auta, id dodavatele, id odberatele, id tarifu, id inzeratu, datum uzavreni, datum vyrizeni, prodejni cenu, procenta z prodeje do p.id_auta, p.id_dodavatel, p.id_odberatel, p.id_tarif, p.id_inzerat, p.datum_uzavreni, p.datum_vyrizeni, p.prodejni_cena, p.procenta_z_prodeje.
BEGIN TRANS 3. Vygeneruj nové id do p.id_smlouvy. 4. Přidej nový záznam do tabulky Smlouva s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
10.2 Editace smlouvy 1. Zobraz formulář Změnit smlouvu. 2. Uživatel vybere id smlouvy a provedené změny se uloží do p.id_smlouvy, p.id_auta, p.id_dodavatel, p.id_odberatel, p.id_tarif, p.id_inzerat, p.datum_uzavreni, p.datum_vyrizeni, p.prodejni_cena, p.procenta_z_prodeje.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak změna dat v tabulce Smlouva kde Smlouva.id_smlouvy = p.id_smlouvy s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
10.3 Storno smlouvy 1. Zobraz formulář Smazat smlouvu. 2. Uživatel zadá id smlouvy do p.id_smlouvy. 3. Vybere seznam z tabulky Smlouva kde Smlouva.id_smlouvy = p.id_smlouvy.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak smaž záznam v tabulce Smlouva kde Smlouva.id_smlouvy = p.id_smlouvy.
END TRANS 5. Vypiš informace o stavu daného procesu.
10.4 Výpis smluv 1. Zobraz formulář Zobrazit seznam smluv. 2. Uživatel požádá zobrazit seznam smluv vyhovující kritériu. 3. Vybere seznam z tabulky Smlouva podle kritéria. 4. Vypiš informace o stavu daného procesu.
11. Evidence tarifů
11.1 Vytvoření tarifu 1. Zobraz formulář Nový tarif. 2. Uživatel zadá cenu, dobu expirace do p.cena, p.doba_expirace.
BEGIN TRANS 3. Vygeneruj nové id do p.id_tarif. 4. Přidej nový záznam do tabulky Tarif s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
11.2 Editace tarifu 1. Zobraz formulář Změnit tarif. 2. Uživatel vybere id tarifu a provedené změny se uloží do p.id_tarif, p.cena, p.doba_expirace.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak změna dat v tabulce Tarif kde Tarif.id_tarif = p.id_tarif s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
11.3 Smazání tarifu 1. Zobraz formulář Smazat tarif. 2. Uživatel zadá id tarifu do p.id_tarif. 3. Vybere seznam z tabulky Tarif kde Tarif.id_tarif = p.id_tarif.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak smaž záznam v tabulce Tarif kde Tarif.id_tarif = p.id_tarif.
END TRANS 5. Vypiš informace o stavu daného procesu.
11.4 Výpis tarifů 1. Zobraz formulář Zobrazit seznam tarifů. 2. Uživatel požádá zobrazit seznam tarifů vyhovující kritériu. 3. Vybere seznam z tabulky Tarif podle kritéria. 4. Vypiš informace o stavu daného procesu.
12. Evidence zákazníků
12.1 Přidání zákazníka 1. Zobraz formulář Nový zákazník. 2. Uživatel zadá jmeno, prijmeni, mesto, ulice, psc, telefon, mail, dic, ico, heslo do p.jmeno, p.prijmeni, p.mesto, p.ulice, p.psc, p.telefon, p.mail, p.dic, p.ico, p.heslo.
BEGIN TRANS 3. Vygeneruj nové id do p.id_zakaznik. 4. Přidej nový záznam do tabulky Zakaznik s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
12.2 Editace zákazníka 1. Zobraz formulář Změnit zákazníka. 2. Uživatel vybere id zakaznika a provedené změny se uloží do p.id_zakaznika, p.jmeno, p.prijmeni, p.mesto, p.ulice, p.psc, p.telefon, p.mail, p.dic, p.ico, p.heslo.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak změna dat v tabulce Zakaznik kde Zakaznik.id_zakaznik = p.id_zakaznik s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
12.3 Smazání zákazníka 1. Zobraz formulář Smazat zákazníka. 2. Uživatel zadá id tarifu do p.id_zakaznik. 3. Vybere seznam z tabulky Zakaznik kde Zakaznik.id_zakaznik = p.id_zakaznik.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak smaž záznam v tabulce Zakaznik kde Zakaznik.id_zakaznik = p.id_zakaznik.
END TRANS 5. Vypiš informace o stavu daného procesu.
12.4 Výpis zákazníků 1. Zobraz formulář Zobrazit seznam zákazníků. 2. Uživatel požádá zobrazit seznam zákazníků vyhovující kritériu. 3. Vybere seznam z tabulky Zakaznik podle kritéria. 4. Vypiš informace o stavu daného procesu.
13. Evidence zaměstnaneců
13.1 Přidání zaměstnance 1. Zobraz formulář Nový zaměstnanec. 2. Uživatel zadá jmeno, roli, prijmeni, mesto, ulice, psc, telefon, mail, heslo do p.jmeno, p.role, p.prijmeni, p.mesto, p.ulice, p.psc, p.telefon, p.mail, p.heslo.
BEGIN TRANS 3. Vygeneruj nové id do p.id_zamestnance. 4. Přidej nový záznam do tabulky Zamestnanec s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
13.2 Editace zaměstnance 1. Zobraz formulář Změnit zaměstnance. 2. Uživatel vybere id zamestnance a provedené změny se uloží do p.id_zamestnance, p.jmeno, p.role, p.prijmeni, p.mesto, p.ulice, p.psc, p.telefon, p.mail, p.heslo.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak změna dat v tabulce Zamestnanec kde Zamestnanec.id_zamestnance = p.id_ zamestnance s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
13.3 Smazání zaměstnance 1. Zobraz formulář Smazat zaměstnance. 2. Uživatel zadá id zaměstnance do p.id_zamestnance. 3. Vybere seznam z tabulky Zamestnanec kde Zamestnanec.id_zamestnance = p.id_ zamestnance.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak smaž záznam v tabulce Zamestnanec kde Zamestnanec.id_zamestnance = p.id_ zamestnance.
END TRANS 5. Vypiš informace o stavu daného procesu.
13.4 Výpis zaměstnanců 1. Zobraz formulář Zobrazit seznam zaměstnanců. 2. Uživatel požádá zobrazit seznam zaměstnanců vyhovující kritériu. 3. Vybere seznam z tabulky Zamestnanec podle kritéria. 4. Vypiš informace o stavu daného procesu.
14. Evidence značek
14.1 Přidání značky 1. Zobraz formulář Nová značka. 2. Uživatel nazev do p.nazev.
BEGIN TRANS 3. Vygeneruj nové id do p.id_znacka. 4. Přidej nový záznam do tabulky Znacka s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
14.2 Editace značky 1. Zobraz formulář Změnit značku. 2. Uživatel vybere id značky a provedené změny se uloží do p.id_znacka, p.nazev.
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak změna dat v tabulce Znacka kde Znacka.id_znacka = p.id_ znacka s hodnotami v paměti.
END TRANS 5. Vypiš informace o stavu daného procesu.
14.3 Smazání značky 1. Zobraz formulář Smazat značku. 2. Uživatel zadá id značky do p.id_znacka. 3. Vybere seznam z tabulky Znacka kde Znacka.id_znacka = p.id_ znacka
BEGIN TRANS 4. Pokud nevybrán žadný záznam, pak krok 5. Naopak smaž záznam v tabulce Znacka kde Znacka.id_znacka = p.id_ znacka.
END TRANS 5. Vypiš informace o stavu daného procesu.
14.4 Výpis značek 1. Zobraz formulář Zobrazit seznam značek. 2. Uživatel požádá zobrazit seznam značek vyhovující kritériu. 3. Vybere seznam z tabulky Znacka podle kritéria. 4. Vypiš informace o stavu daného procesu.
2.3 Časová analýza 2.3.1 STD Inzerat
2.3.2 STD Rezervace
2.3.3 STD Smlouva
2.3.4 STD Faktura
2.3.5 STD Auto
2.4 Návrh uživatelského rozhraní 2.4.1 Úvodní obrazovka IS Autobazar
IS Autobazar Přihlášení do systému Uživatelské jméno:
Heslo:
Admin ***********
Registrace
Prodat auto
2.4.2 Vstupní formulář
Přihlásit
Koupit auto
2.4.3 Tisková sestava
Faktura číslo: 20060001 Odběratel:
Dodavatel:
Autobazar Eldorádo 1927
Milan Wrona Josefa Skupy 1715 Ostrava 708 00
Rychvald, 735 32 IČ: 696 63 963 neplátce DPH
Podnikatel zapsán v živ.rejstříku MÚ Mladá Boleslav
Platební podmínky: Forma úhrady Bankovní spojení:
Převodem
Číslo účtu: Variabilní symbol:
0800/765993331 2006000 1
Datum vystavení:
25.10.2009 -
Datum zdanitel. plnění
28.10.2009
Česká spořitelna Splatnost:
Fakturujeme vám:
20.11.2009
cena:
Škoda Octavia 1.6 Kombi
149 500,00 Kč
Celkem k úhradě: 2.4.4 Chybové hlášení Chyba!!! Nezadali jste povinný parametr: Značka Nezadali jste povinný parametr: Model
OK
149 500,00 Kč
3 Analýza datového skladu 3.1 Datový slovník Tabulka
Pořadí
Atribut
Dat. typ
Size
Key
Null
Index
Poznámka
Auto
1
id_auta
int
8
PK
N
A
auto inc
Auto
2
model
int
8
FK
N
N
Auto
3
id_barva
int
8
FK
N
N
Auto
4
rok_vyroby
int
4
-
N
N
Auto
5
id_karoserie
int
8
FK
N
N
Auto
6
obsah
int
4
-
N
N
Auto
7
palivo
enum
-
-
N
N
Auto
8
prevodovka
enum
-
-
N
N
auto/man
Auto
9
najeto
int
8
-
N
N
km
Auto
10
STK
date
-
-
N
N
Auto
11
emise
date
-
-
N
N
Auto
12
vybava
longtext
-
-
A
N
Model
1
id_model
int
8
PK
N
A
Model
2
id_znacka
int
8
FK
N
N
Model
3
id_typ
int
8
FK
N
N
Model
4
nazev
varchar
30
-
N
N
Znacka
1
id_znacka
int
8
PK
N
A
Znacka
2
nazev
varchar
30
-
N
N
Typ
1
id_typ
int
8
PK
N
A
Typ
2
nazev
varchar
30
-
N
N
Karoserie
1
id_karoserie
int
8
PK
N
A
Karoserie
2
nazev
varchar
30
-
N
N
Fotografie
1
id_foto
int
8
PK
N
A
ccm
auto inc
auto inc
auto inc
auto inc
auto inc
Fotografie
2
id_inzeratu
int
8
FK
N
N
Fotografie
3
url
varchar
60
-
N
N
Fotografie
4
alt
varchar
60
-
N
N
Inzerat
1
id_inzeratu
int
8
PK
N
A
Inzerat
2
id_smouvy
int
8
FK
N
N
Inzerat
3
perex
varchar
60
-
N
N
Inzerat
4
text
longtext
-
-
N
N
Inzerat
5
datum
datetime -
-
N
N
Inzerat
6
autorizace
char
-
-
N
N
Smlouva
1
id_smlouvy
int
8
PK
N
A
Smlouva
2
id_auta
int
8
FK
N
N
Smlouva
3
id_dodavatel
int
8
FK
N
N
Smlouva
4
id_odberatel
int
8
FK
A
N
Smlouva
5
id_tarif
int
8
FK
N
N
Smlouva
6
datum_uzavreni
date
-
-
N
N
Smlouva
7
datum_vyrizeni
int
8
-
A
N
Smlouva
8
prodejni_cena
int
8
-
N
N
Smlouva
9
procenta_z_prodeje
float
2,2
-
N
N
Smlouva
10
storno
boolean
-
-
N
N
Faktura
1
cislo_faktury
int
8
PK
N
A
Faktura
2
id_smlouvy
int
8
FK
N
N
Faktura
3
cena
int
8
-
N
N
Faktura
4
datum
date
-
-
N
N
Faktura
5
datum_zdan_plneni
date
-
-
N
N
Faktura
6
datum_splatnosti
date
-
-
N
N
Faktura
7
vyrizena
bool
-
-
N
N
auto inc
auto inc
Faktura
8
forma_uhrady
varchar
30
-
N
N
Faktura
9
bankovni_spojeni
varchar
30
-
N
N
Faktura
10
cislo_uctu
varchar
15
-
N
N
Faktura
11
variabilni_symbol
int
16
-
N
N
Faktura
12
text_faktury
longtext
-
-
N
N
Faktura
13
vystavil
int
8
-
N
N
Tarif
1
id_tarif
int
8
PK
N
A
Tarif
2
cena
int
8
-
N
N
Tarif
3
doba_expirace
int
-
-
N
N
počet dnů
Rezervace
1
id_rezervace
int
8
PK
N
A
auto inc
Rezervace
2
id_auta
int
8
FK
N
N
Rezervace
3
id_odberatel
int
8
FK
N
N
Rezervace
4
cas_rezervace
datetime -
-
N
N
Rezervace
5
poznamka
longtext
-
-
N
N
Recenze
1
id_recenze
int
8
PK
N
A
Recenze
2
id_model
int
8
FK
N
N
Recenze
3
id_zamestnanec
int
8
FK
N
N
Recenze
4
perex
varchar
60
-
N
N
Recenze
5
text
longtext
-
N
N
Recenze
6
datum
date
-
N
N
Zamestnanec 1
id_zamestnanec
int
8
PK
N
A
Zamestnanec 2
jmeno
varchar
30
-
N
N
Zamestnanec 3
prijmeni
varchar
30
-
Zamestnanec 4
role
int
8
FK
N
N
Zamestnanec 5
mesto
varchar
30
-
N
N
Zamestnanec 6
ulice
varchar
30
-
N
N
auto inc
auto inc
auto inc
Zamestnanec 7
psc
int
5
-
N
N
Zamestnanec 8
telefon
int
9
-
N
N
Zamestnanec 9
mail
varchar
60
-
N
N
Zamestnanec 10
heslo
varchar
32
-
N
N
MD5 hash
Zakaznik
1
id_zakaznik
int
8
PK
N
A
auto inc
Zakaznik
2
jmeno
varchar
30
-
N
N
Zakaznik
3
prijmeni
varchar
30
-
N
N
Zakaznik
4
mesto
varchar
30
-
N
N
Zakaznik
5
ulice
varchar
30
-
N
N
Zakaznik
6
psc
int
5
-
N
N
Zakaznik
7
telefon
int
9
-
N
N
Zakaznik
8
mail
varchar
60
-
N
N
Zakaznik
9
dic
varchar
60
-
N
N
Zakaznik
10
ico
varchar
60
-
N
N
Zakaznik
11
heslo
varchar
-
-
N
N
md5 hash
Barva
1
id_barvy
int
8
PK
N
A
auto inc
Barva
2
nazev
varchar
8
-
N
N
Role
1
id_role
int
8
PK
N
A
Role
2
nazev
varchar
30
-
N
N
auto inc
3.2 Výběr atributů pro datový sklad (Extrakce) Následující tabulka určuje, v rámci jednoho z kroků konceptuálního modelování datového skladu, které atributy se budou v našem datovém skladu uchovávat. Další kroky (fáze) modelování jsou vyjma tohoto (konceptuální) dále multidimenzionální, databázové a fyzické modelování. Je zřejmé, že struktura datového skladu je jiná než u zdrojové databáze.
Tabulka
Pořadí
Atribut
Použijeme v DS
dim/fakt/atr
Auto
1
id_auta
A, klíč
D
Auto
2
id_model
A, klíč
D
Auto
3
id_barva
A, klíč
D
Auto
4
rok_vyroby
A, atribut
A
Auto
5
id_karoserie
A, klíč
D
Auto
6
obsah
A, atribut
A
Auto
7
palivo
A, klíč
D
Auto
8
id_prevodovka
A, klíč
D
Auto
9
najeto
A
F
Auto
10
STK
N
-
Auto
11
emise
N
-
Auto
12
vybava
N
-
Model
1
id_model
A, klíč
D
Model
2
id_znacka
A, klíč
D
Model
3
id_typ
A, klíč
D
Model
4
nazev
A, atribut
A
Znacka
1
id_znacka
A, klíč
D
Znacka
2
nazev
A, atribut
A
Typ
1
id_typ
A, klíč
D
Typ
2
nazev
A, atribut
A
Karoserie
1
id_karoserie
A, klíč
D
Karoserie
2
nazev
A, atribut
A
Fotografie
1
id_foto
N
-
Fotografie
2
id_inzeratu
N
-
Fotografie
3
url
N
-
Fotografie
4
alt
N
-
Inzerat
1
id_inzeratu
N
-
Inzerat
2
id_smouvy
N
-
Inzerat
3
perex
N
-
Inzerat
4
text
N
-
Inzerat
5
datum
N
-
Inzerat
6
autorizace
N
-
Smlouva
1
id_smlouvy
A, klíč
D
Smlouva
2
id_auta
A, klíč
D
Smlouva
3
id_dodavatel
A, klíč
D
Smlouva
4
id_odberatel
A, klíč
D
Smlouva
5
id_tarif
A, klíč
D
Smlouva
6
datum_uzavreni
A, atribut
A
Smlouva
7
datum_vyrizeni
A, atribut
A
Smlouva
8
prodejni_cena
A
F
Smlouva
9
procenta_z_prodeje A, atribut
A
Smlouva
10
storno
A, atribut
A
Faktura
1
cislo_faktury
A, klíč
D
Faktura
2
id_smlouvy
A, klíč
D
Faktura
3
cena
A
F
Faktura
4
datum
A, atribut
A
Faktura
5
datum_zdan_plneni
N
-
Faktura
6
datum_splatnosti
N
-
Faktura
7
vyrizena
A, atribut
A
Faktura
8
id_uhrada
A, klíč
D
Faktura
9
bankovni_spojeni
N
-
Faktura
10
cislo_uctu
N
-
Faktura
11
variabilni_symbol
N
-
Faktura
12
text_faktury
N
-
Faktura
13
vystavil
A, klíč
D
Tarif
1
id_tarif
A, klíč
D
Tarif
2
cena
A
F
Tarif
3
doba_expirace
A, atribut
A
Rezervace
1
id_rezervace
A, klíč
D
Rezervace
2
id_auta
A, klíč
D
Rezervace
3
id_odberatel
A, klíč
D
Rezervace
4
cas_rezervace
A, atribut
A
Rezervace
5
poznamka
N
-
Recenze
1
id_recenze
A, klíč
D
Recenze
2
id_model
A, klíč
D
Recenze
3
id_zamestnanec
A, klíč
D
Recenze
4
perex
N
-
Recenze
5
text
N
-
Recenze
6
datum
A, atribut
A
Zamestnanec 1
id_zamestnanec
A, klíč
D
Zamestnanec 2
jmeno
A, popisný atribut
A
Zamestnanec 3
prijmeni
A, popisný atribut
A
Zamestnanec 4
id_role
A, klíč
D
Zamestnanec 5
mesto
A, atribut
A
Zamestnanec 6
ulice
A, atribut
A
Zamestnanec 7
psc
A, atribut
A
Zamestnanec 8
telefon
N
-
Zamestnanec 9
mail
N
-
Zamestnanec 10
heslo
N
-
Zakaznik
1
id_zakaznik
A, klíč
D
Zakaznik
2
jmeno
A, popisný atribut
A
Zakaznik
3
prijmeni
A, popisný atribut
A
Zakaznik
4
mesto
A, atribut
A
Zakaznik
5
ulice
A, atribut
A
Zakaznik
6
psc
A, atribut
A
Zakaznik
7
telefon
N
-
Zakaznik
8
mail
N
-
Zakaznik
9
dic
N
-
Zakaznik
10
ico
N
-
Zakaznik
11
heslo
N
-
Barva
1
id_barvy
A, klíč
D
Barva
2
nazev
A, atribut
A
Role
1
id_role
A, klíč
D
Role
2
nazev
A, atribut
A
Palivo
1
id_palivo
A, klíč
D
Palivo
2
nazev
A, atribut
A
Prevodovka
1
id_prevodovka
A, klíč
D
Prevodovka
2
nazev
A, atribut
A
3.3 ERD datového skladu
Palivo Typ
Model
Auto
Znacka
Barva Prevodovka
Karoserie D-Obdobi
Recenze
Model
Smlouva
Faktura
Zamestnanec
D-Obdobi
Uhrada
Zakaznik
Rezervace
Auto
Tarif
Smlouva
Role
Zamestnanec
D-Obdobi
D-Lokalita
Zakaznik
3.4 Datová pumpa ... Zamestnanec: role = id_role Auto: palivo = id_palivo (rozklad do nové tabulky Palivo) Auto:prevodovka = id_prevodovka (rozklad do nové tabulky Prevodovka) Faktura:uhrada = id_uhrada (rozklad do nové tabulky Uhrada) ... Uhrada (id_uhrada, nazev) Palivo (id_palivo, nazev) Prevodovka (id_prevodovka, nazev)
3.5 Fakty najeto z tabulky Auto - celkový počet najetých kilometrů v jednotkách km objektu auta Faktura:cena z tabulky Faktura - konečná cena za fakturu v Kč. Tarif:cena z tabulky Tarif - cena smluvního tarifu v Kč. prodejni_cena z tabulky Smlouva - smluvní cena v Kč. plat z tabulky zamestnanec - plat zaměstnance v Kč.
3.6 Dimenze D-Obdobi (den, týden, měsíc, kvartál, rok, den_v_tydnu, ...) D-Lokalita (stat, mesto, ulice, PSC, ...) Typ Barva Karoserie Znacka Tarif Smlouva Zamestnanec
Model Zakaznik Role Uhrada Prevodovka Palivo 3.6.1 F-Tabulka Auto
3.6.2 F-Tabulka smlouva
3.6.3 F-Tabulka model
3.6.4 F-Tabulka recenze
3.6.5 F-Tabulka faktura
3.6.6 F-Tabulka rezervace
3.6.7 F-Tabulka zakaznik
3.6.8 F-Tabulka zamestnanec
4 Návrh implementace 4.1 Indexová analýza V rámci indexové analýzy se pro každý atribut tabulky databáze řeší, zdali je vhodné ho indexovat či nikoliv. Zjistili jsme, že stačí indexovat pouze primární klíče všech tabulek, tak je řečeno v datové analýze.
4.2 Transakční analýza Označení transakcí je již zahrnuto v minispecifikacích ve funkční analýze.
4.3 Hardwarové požadavky Server by měl být dostatečně rychlý a výkonný pro provoz SQL Serveru a webového serveru pro ASP.NET aplikace. Samotná webová aplikace vyžaduje 13 MB volného místa na pevném disku, nicméně pro nahrávání fotografií bude zapotřebí řádově stovky megabajtů prostoru. Pro databázi bude do budoucna potřeba několik desítek megabajtů (v závislosti na množství publikovaného obsahu) volného místa. Uživateli postačuje průměrně výkonný počítač a připojení k internetu.
4.4 Softwarové požadavky Na straně serveru bude pro nasazení webové aplikace vyžadován databázový server Microsoft SQL Server 2005, dále pak Microsoft Internet Information Services ( verze 6 a vyšší ) a .NET Framework 3.5 SP1. Uživateli by měl stačit aktuální webový prohlížeč s povoleným Javascriptem a cookies.
4.5 Změny v návrhu databáze Pro správu uživatelů bude použita volně šiřitelná komponenta Altairis Web Security od Michala Valáška. Ta vyžaduje následující tabulky: Users (UserId, UserName, PasswordHash, PasswordSalt, Email, Comment, Enabled, DateCreated, DateLastLogin, DateLastActivity, DateLastPasswordChange) Roles (RoleName, Plat) UsersInRoles (HashId, UserName, RoleName) Dále se sjednotí tabulky Zamestnanec a Zakaznik do tabulky: OsobniUdaje ( IdOsoby, Jmeno, Prijmeni, Mesto, Ulice, PSC, Telefon, ICO, DICO ) Dále byly přidány dva atributy – Strorno (tabulka Faktura) a CasVyprseni (tabulka Rezervace).
4.5.1 ERD
4.6 Uživatelské rozhraní
Obrázek 1 - Přehled inzerátů
Obrázek 2 - Úvodní stránka
Obrázek 3 - Smlouva
Obrázek 4 - Konkrétní inzerát
5 Programátorská příručka 5.1 Vývojové prostředí IS Autobazar byl vyvíjen ve vývojovém prostředí Microsoft Visual Studio 2008 Professional nad platformou ASP.NET 3.5 . Veškerý kód je napsán v programovacím jazyce C#.
5.2 Řešení 5.2.1 Struktura Struktura aplikace je mírně upravena od struktury ve funkční analýze:
Evidence vozidel o Evidence modelů Evidence uživatelů
o Platební ohodnocení Evidence tarifů Evidence smluv o Evidence faktur Evidence rezervací Evidence recenzí Evidence inzerátů Správa číselníků o Barvy o Karosérie o Typy automobilů o Značky automobilů
Tato struktura se shoduje s fyzickou strukturou adresářů webové aplikace.
5.3 Evidence uživatelů Pro správu uživatelů a jejich rolí je použita volně šiřitelná komponenta Altairis Web Security od Michala Valáška. 5.3.1 Autentizace Autentizace je zajištěna standardní Membership technologií ASP.NET. 5.3.2 Autorizace Přístupová práva jsou řešena pomocí konfiguračních souborů web.config v jednotlivých adresářích.
5.4 Přístup k datům Jako datové úložiště byl zvolen Microsoft SQL Server 2005. Komunikace s tímto serverem probíhá pomocí technologie Entity Framework obsažené v .NET Framework 3.5 SP1. 5.4.1 Struktura databáze Kompletní struktura databáze je k dispozici v soubor Databáze.sql. 5.4.2 SQL dotazy Většina SQL dotazů je dynamicky generovaných pomocí Entity Framework. Výjimkou je správa platů, která:
Získává data z pohledu Platy Upravuje data pomocí uložené procedury PlatyUpdate Maže data pomocí uložené procedury PlatyDelete Vkládá data pomocí uložené procedury PlatyInsert
Všechny tyto skutečnosti Entity Framework provádí automaticky a z pohledu programátora pak není rozdíl mezi správou platů a zbytkem aplikace. 5.4.3 Transakce V Entity Framework se všechny změny přenáší do databáze v jednom kroku, čímž je volání metody SaveChanges. Zde se implicitně vytváří transakce, která zaobaluje všechny dotazy nutné k promítnutí změn na SQL server.
5.4.4 Prezentace dat Pro prezentaci dat z datové vrstvy (kterou tvoří Entity Framework ) je použita komponenta EntityDataSource. V některých případech je datová vrstva kontaktována přímo z kódu pomocí třídy AutobazarEntites.
5.5 Webové stránky Všechny stránky používají kombinaci aspx souborů s kódem na pozadí aspx.cs. Veškerý kód aplikace je obsažen v dll knihovně. 5.5.1 Navigace Navigace je řešena pomocí souboru Web.sitemap, ze kterého infrastruktura ASP.NET vytváří příslušná menu. V konfiguračním souboru web.config je nastavena hodnota vlastnosti securityTrimmingEnabled na true, díky čemuž se v menu zobrazí pouze ty položky, ke kterým má přihlášený uživatel přístup. 5.5.2 Tiskové sestavy Každou fakturu je možno exportovat do PDF souboru. Tato funkčnost je zajištěna třídou FakuraPDFGenerator, která interně využívá volně šiřitelné knihovny PDF Sharp. 5.5.3 Validace vstupních dat Veškerá vstupní data jsou validována pomocí komponent ASP.NET. Využívají jak validace na straně klienta, tak validace na straně serveru.