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

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


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