Semestrální práce z DBS
Skupina jezdců na kole
Autor: Marek Handl (handlm1)
Kontakt: mean.marine@seznam.cz
Cvičení: středa 11:00
Poslední změna: 11.1.2006
Prohlášení: "Zde předkládanou práci jsem vytvořil samostatně s využitím zdrojů uvedených v závěru práce."
I. ANALYTICKÁ ČÁST
a) POPIS
Systém je určen převážně pro menší, spíše uzavřenou, skupinu uživatelů - jezdců na kole - a slouží pro sdílení informací o jezdcích, závodech,
komponentech a obchodech.
Základem je seznam jezdců, u kterých se ukládá jejich jméno, příjmení, přezdívka, e-mail a z důvodů jednoznačné identifikace i ID_jezdce.
Existuje několik jezdeckých disciplín a každý jezdec má alespoň jednu oblíbenou. Ve většině disciplín se jezdí závody, kterých se jezdci mohou
zúčastnit. Jelikož se ve stejné oblasti někdy jezdí různé disciplíny, je pro popis oblasti vytvořen seznam lokací.
Další částí je seznam komponent - na výběr jsou 3 komponenty - rám, vidlice, plášť. Každý komponent je určen trojicí: výrobce, model, rok_výroby.
Komponent má poté další vlastnosti, které zavisejí na druhu komponentu (např. zdvih u vidlice). Jezdec může ke konkrétnímu komponentu napsat svou
zkušenost, a to zadáním hodnot poměr_cena_výkon, celkové_hodnocení a případně slovním_hodnocením. Mezi jezdcem a komponentem může být navázán vztah
vyjadřující skutečnost, že jezdec v současnosti daný komponent využívá (má ho na svém kole).
Posledním základním seznamem je seznam obchodů s cyklistickými potřebami. Obchod je identifikován svým názvem, povinným parametrem je adresa a jako nepovinný parametr je
přidán odkaz na případné www-stránky. Jezdec může napsat hodnocení obchodu, kde ohodnotí sortiment, ceny, přívětivost a může napsat i slovní_ohodnocení.
V systému je ještě seznam nákupu. Každý nákup je identifikován čtveřicí - datum, komponent, jezdec, obchod - a dalším parametrem je cena.
b) E-R SCHÉMA
Popis smyček:
Jezdec-Dispciplina-Zavod: Jezdec má oblíbené dispciplíny, ale může se zúčastnit i závodů v disciplínách, které nepatří mezi jeho oblíbené.
Jezdec-Komponent-Nakup: Jezdec může používat i komponenty u kterých nezaznamenal jejich nákup. Tato možnost je tu například proto, že při koupi celého
kola nelze rozlišit cenu jednotlivých komponentů. Stejně tak je možné, že jezdec komponent zakoupil, ale již nepoužívá (např. ho prodal).
Jezdec-Komponent-Zkusenost: Důvodem této smyčky je opět skutečnost, že vztah pouziva reprezentuje současný stav, zatímco zkusenost vyjadřuje to,
že daný jezdec daný komponent někdy používal.
Zkusenost-Komponent-Nakup: Odůvodnění je stejné jako u předchozí smyčky.
Jezdec-Hodnoceni-Obchod-Nakup: Jezdec může napsat Hodnoceni Obchodu i když neprovedl ještě žádný Nakup. V reálné situaci to může být způsobeno
například tím, že koupil věc, která se do naší databáze nezaznamenává, či se byl v Obchode jen podívat.
c) UŽIVATELSKÉ ROLE
- > Běžný uživatel <
- má právo pouze číst informace
- > Jezdec <
-
osoba, která je zapsaná v seznamu jezdců
má práva Běžného uživatele a navíc práva připisovat hodnocení obchodu, zkušenosti s komponentem a zaznamenat informaci o nákupu
- > Jezdec s rozšířenými právy <
-
osoba, která je zapsaná v seznamu jezdců
má práva Jezdce a navíc práva přidávat nové závody, lokace, obchody a komponenty
- > Administrátor <
-
má neomezená práva, mimo jiné právo přidávat jezdce a disciplíny
d) SCÉNÁŘE
- Přidání jezdce - prosté vyplnění atributů jezdce. Musí se zvolit alespoň jedna oblíbená disciplína. (fce zapisuje do tabulek jezdec a ma_rad)
- Přidání disciplíny - prosté vyplnění atributů disciplíny.
- Přidání komponenty - zvolí se z nabídky o jaký druh komponenty jde, vyplní se atributy daného druhu. (fce zapíše jak do tabulky komponent tak do tabulky vybraného druhu)
- Přidání obchodu - prosté vyplnění atributů obchodu.
- Přidání lokace - prosté vyplnění atributů lokace.
- Přidání závodu - z nabídky se zvolí o jakou disciplínu se jedná a v jaké lokaci se závod koná, vyplní se atributy závodu.
- Přidání nákupu - z nabídky se zvolí konkrétní komponent, kdo provedl nákup a v jakém obchodě, vyplní se ostatní atributy nákupu.
- Přidání zkušenosti - z nabídky se zvolí konkrétní komponent a kdo hodnotí, vyplní se ostatní atributy zkušenosti.
- Přidání hodnocení - z nabídky se zvolí o jaký obchod se jedná a kdo hodnotí, vyplní se ostatní atributy hodnocení.
- Změna svého profilu - jezdec si změní svůj e-mail, oblíbené disciplíny a účast v závodech. (fce kontroluje, že jezdec má vždy alespoň jednu oblíbenou disciplínu)
- Vypsání seznamu budoucích závodů - fce podle aktuálního data vypíše informace o budoucích závodech.
- Vypsání informací o jezdci - fce vypíše osobní informace o jezdci, jeho oblíbené disciplíny, jaké komponenty využíval, jakých se účastnil závodů.
- Vypsání informací o obchodě - fce vypíše informace o obchodu, vypočte a zobrazí průměrné známky v jednotlivých položkách hodnocení a zobrazí tato hodnocení.
- Vypsání informací o komponentu - fce vypíše informace o komponentu, vypočte a zobrazí průměrné známky ze zkušeností, které s nimi jezdci měli, zobrazí tyto zkušenosti, vypočte průměrnou cenu a zobrazí informace o tom, kdy, kdo, kde a za kolik tento komponent koupil.
II. SQL část
a) VYTVOŘENÍ A NAPLNĚNÍ TABULEK
SQL skripty potřebné k vytvoření tabulek datáze a jejich naplnění daty:
b) DOTAZY
Ve své práci jsem se rozhodl neuvádět položku "v přirozeném jazyku formulované očekávání jakou podobu bude mít odezva", jelikož toto očekávání lze jednoduše vytušit z formulace dotazu.
U prvních 15 dotazů je vedle přepisu do SQL uveden i zápis v relační algebře.
č. dotazu |
kategorie |
formulovaný dotaz |
SQL a výsledek |
1 |
A |
Jména a příjmení všech registrovaných jezdců. |
tady |
2 |
A |
Názvy a adresy obchodů, které se nacházejí v Praze. |
tady |
3 |
B, F |
Jména a příjmení všech jezdců, kteří mají jako svou oblíbenou disciplínu sjezd (DH). |
tady |
4 |
C |
Jména a příjmení jezdců, kteří se ještě nezúčastnili žádného závodu. |
tady |
5 |
B, D, N |
Názvy obchodů, která mají u všech hodnocení cen známku lepší než 3. |
tady |
6 |
C, E, F |
Seznam plášťů (výrobce, model, rok), u nichž žádná napsaná zkušenost neobsahuje u hodnocení poměru cena-výkon známku horší než 2. |
tady |
7 |
B, F |
Seznam modelů vidlic (výrobce, model), u nichž je napsáno alespoň jedna zkušenost se známkou 1. |
tady |
8 |
F, P |
Kdyby se každý jezdec účastnil každého závodu, kolik by bylo takovýchto účastí. |
tady |
9 |
B, F, G, I, J |
Adresy a názvy obchodů, kde nakoupil jezdec s přezdívkou Bandy. |
tady |
10 |
C, M, N |
Názvy obchodů, kde nebyla ještě provedena koupě ani nebyl obchod hodnocen. |
tady |
11 |
B, O |
Názvy obchodů, kde byla provedena koupě i byl hodnocen. |
tady |
12 |
B, F |
Seznam komponentů (výrobce, model, rok), které nakoupili jezdci, kteří mají 4X jako svou oblíbenou disciplínu. |
tady |
13 |
B, G, H, I |
Názvy a případně www adresy obchodů, kde provedl jezdec s přezdívkou Mareen alespoň jeden nákup. |
tady |
14 |
B, F |
Výrobce, model a zdvih vidlic, které byly nakoupeny v obchodech, ke kterým existuje alespoň jedno hodnocení. |
tady |
15 |
F |
Názvy obchodů, pro něž byla napsána hodnocení se známkou u cen lepší než 3. |
tady |
16 |
G, H, K, P, R |
Seznam názvů obchodů s částkama v nich utracených za nákupy. |
tady |
17 |
F, J, L, P, Q, R |
Seznam názvů obchodů s částkama v nich utracených za nákupy. |
tady |
18 |
F, L, P, Q, R |
Seznam názvů obchodů s částkama v nich utracených za nákupy. |
tady |
19 |
F, L, P, Q |
Seznam názvů obchodů s počtem nákupů v nich provedených. |
tady |
20 |
F, L, P, Q |
Seznam přezdívek jezdců s počtem závodů, kterých se účastnil. Seřadit sestupně podle účastí. |
tady |
21 |
F, L |
Ke každému nákupu přiřadit všechna hodnocení vztahující se k obchodu, kde byl nákup proveden. Zobrazit i nákupy v obchodech, které nebyly hodnoceny a hodnocení obchodů, kde nebyl ještě proveden nákup. |
tady |
22 |
B, G, H, I, P, Q |
Název obchodu, příp. seznam názvů obchodů, kde se provedlo nejvíce nákupů. Uvést i počet nákupů. |
tady |
23 |
F, Q, S |
Seznam jezdců (jméno, příjmení) s počtem účastí na závodech. Zobrazit pouze jezdce, kteří se účastnili více jak jednoho závodu. |
tady |
24 |
B, F |
Názvy obchodů, kde byla provedena koupě i byl hodnocen. (Dotaz č. 11) |
tady |
25 |
F, G, H, I |
Názvy a případně www adresy obchodů, kde provedl jezdec s přezdívkou Mareen alespoň jeden nákup. (Dotaz č. 13) |
tady |
26 |
F, P |
Kdyby se každý jezdec účastnil každého závodu, kolik by bylo takovýchto účastí. (Dotaz č. 8) |
tady |
27 |
F |
Velikosti rámu, které používají jezdci, kteří se někdy zúčastnili závodů ve 4X. |
tady |
28 |
B, I |
Jména a příjmení všech jezdců, kteří mají jako svou oblíbenou disciplínu sjezd (DH). (Dotaz č. 3) |
tady |
29 |
B, G, I |
Seznam modelů vidlic (výrobce, model), u nichž je napsáno alespoň jedna zkušenost se známkou 1. (Dotaz č. 7) |
tady |
30 |
C, G, I |
Názvy obchodů, kde nebyla ještě provedena koupě ani nebyl obchod hodnocen. (Dotaz č. 10) |
tady |
c) SHRNUTÍ
III. ZÁVĚR
K vytvoření schématu jsem používal program ERM, který neposkytuje dostatek uživatelského komfortu, a proto se i trochu protáhl potřebný pracovní čas.
Podle zadání jsme měli využít v dotazech všechny druhy spojení podle SQL99, ale školní server nezná již spojení typu "UNION JOIN", který patří
již do SQL92. Proto jsem tento bod zadání nemohl splnit. Výsledek dávky jsem odebral z webového iSQL*Plus, jelikož aplikace SQL*Plus i se zapnutým
a nastaveným spoolingem do vybraného souboru nic nazapisovala. V ostatních oblastech práce jsem nezaznamenal významnější problém a odpovědi na dotazy
vrácené databázovým strojem odpovídaly očekávání.
POUŽITÉ ZDROJE