Univerzita Pardubice. Fakulta elektrotechniky a informatiky SEMESTRÁLNÍ PRÁCE PRO PŘEDMĚT IDAS2



Podobné dokumenty
Univerzita Pardubice. Fakulta elektrotechniky a informatiky SEMESTRÁLNÍ PRÁCE Z IWWW

Univerzita Pardubice. Fakulta elektrotechniky a informatiky

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

INFORMAČNÍ SYSTÉM PŮJČOVNY JÍZDNÍCH KOL

Rezervační systém Tvorba WWW stránek

Semestrální práce z DAS2 a WWW

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

VŠB FEI - Technická Univerzita Ostrava. DAIS - Projekt. Dopravní podnik. Jméno: Matěj Kotyz (KOT0177)

SQL - trigger, Databázové modelování

Databázové a informační systémy Informační systém prodejny nábytku. Jakub Kamrla, KAM087

Databázové systémy I

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Virtual private database. Antonín Steinhauser

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

IS Autopůjčovna VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA INFORMAČNÍ SYSTÉMY A DATOVÉ SKLADY. (semestrální projekt) ZS

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

Informační systém webhostingu

8.2 Používání a tvorba databází

Úvod do databázových systémů

Zadání. Seznam typů entit včetně jejich atributů, vyznačte klíče a cizí klíče Seznam typů vztahu určený svým názvem a entitami do něj vstupujícími

Úvod do databázových systémů

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA

Databázové systémy Cvičení 5.2

Semestrální práce. A0M33PIS Průmyslové informační systémy. Autoři: Název: Půjčovna nářadí. Tomáš Battěk Petr Gazdík Tomáš Levora

Text úlohy. Systémový katalog (DICTIONARY):

RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D. Katedra softwarového inženýrství Matematicko-Fyzikální fakulta Univerzita Karlova v Praze

PG 9.5 novinky ve vývoji aplikací

Databázové systémy Cvičení 5.3

Microsoft. Access. Nová databáze, návrh tabulky. Mgr. Jan Veverka Střední odborná škola sociální Evangelická akademie

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Internetová filmová databáze IFDB

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

Systém pro online rozhovory

Databázové systémy I

Uživatelská příručka

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id))

Fakulta elektrotechniky a informatiky Databázové systémy 2. Leden 2010 souhrn. Červené dobře (nejspíš), modré možná

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Základy relačních databází, jejich využití v programování webu

ISPOP 2019 MANUÁL PRO PRÁCI V REGISTRU ODBORNĚ ZPŮSOBILÝCH OSOB

Architektury databázových

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Zadání grafického designu Trh poptávek

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Virtual Private Database (VPD) Jaroslav Kotrč

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Kapitola 6: Omezení integrity. Omezení domény

SEMESTRÁLNÍ PRÁCE. z předmětu KIV/DB1

ISPOP 2019 MANUÁL PRO PRÁCI V REGISTRU ODBORNĚ ZPŮSOBILÝCH OSOB

Informační systém pro nemocnici

Operátory ROLLUP a CUBE

Úvod do databázových systémů

Program Půjčovna sportovních potřeb

Sázková kancelář Z pekla štěstí

Databázové systémy Cvičení 5

Základní přehled SQL příkazů

Datové modelování II

SERVICE ON LINE MANUÁL

Tabulka fotbalové ligy

Uživatelská příručka v0.99

Úvod do databázových systémů

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

DATABÁZE MS ACCESS 2010

Teorie zpracování dat

Anotace: Terminátory:

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Databáze I. Přednáška 7

KIV/ZIS cvičení 6. Tomáš Potužák

10. Architektura klient/server a třívrstvá architektura

10. Architektura klient/server a třívrstvá architektura

Databáze I. Přednáška 6

Novinky verze systému Spisové služby (SpS) e-spis LITE

IS pro firmu vyrábějící potisky triček

Byl vytvořen pro snadnou orientaci budoucích správců v systému. Čas, kdy byl uživatel naposledy aktivní.

Obsah. 1.1 Práce se záznamy Stránka Dnes Kontakt se zákazníkem... 5

Pomůcka/manuál pro redakční systém verze 1.0

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ SPOLEČNOST DECADIC PROJEKT FRAMETRIX

Manuál k systému RS4S. verze 1.2

Jak použít dárkový voucher

Kód v databázi. RNDr. Ondřej Zýka

NÁVOD PRO SPRÁVU ODDÍLŮ NA WEBU ČHS

Databáze I. Přednáška 4

Databázové a informační systémy. Dokumentace k projektu. Učební sklad

Úvod do databázových systémů

Popis aplikace Portál práce pro oblast bezpečnostních služeb

Administrace Oracle. Práva a role, audit

Modul msender message Sender. Nápověda

Uživatelský manuál.

Jak se registrovat. Diagnostika Siemens online. V pravé straně obrazovky klikněte na Registrace

Uživatelská příručka. FORMULÁŘE (propojení s ISVZ-US)

Příručka pro editaci kontaktů na eagri

Databázové systémy a SQL

Uživatelská dokumentace

Databázové systémy. Cvičení 6: SQL

Audit DB. Referát. Vypracoval: Zdeněk Doležal MFF UK Praha 11/5/06

Transkript:

Univerzita Pardubice Fakulta elektrotechniky a informatiky SEMESTRÁLNÍ PRÁCE PRO PŘEDMĚT IDAS2 Jan Bartocha 2012 / 2013

IT 1. Základní charakteristika Téma mé semestrální práce se zaměřuje na vypůjčování vozidel na internetu. Firma nabízí zákazníkům vozidla nižší, nižší střední a střední třídy. Jelikož se firma zaměřuje pouze neživnostenské osoby je umožněno zákazníkovi půjčit pouze jedno auto na jednu objednávku. K objednávkám jsou nabízeny také specifické služby jako jsou úrazové pojištění, pojištění proti živelným pohromám, krádeži, atd... U všech slev si při vytvoření může uživatel (zaměstnanec nebo administrátor) vybrat, jestli se bude jednat o jednorázovou slevu, tj. Sleva se aplikuje pouze jednou nehledě na počet dní, kdy bude mít zákazník vypůjčené auto se slevou, nebo zda bude sleva započítaná na každý den objednávky. Sleva může být buď specifikována konkrétní hodnotou, nebo může být vyjádřena procentuálně. Stránky umožňují zaměstnancům vytvářet slevy na jednotlivé typy vozidel, konkrétní vozidla nebo služby. Zaměstnanec nejprve vytvoří slevu a později jí může přiřadit ke specifické entitě (vozidlo, typ vozidla, služba). Stránka rozeznává 4 typy uživatelských přístupů : neregistrovaný uživatel může si prohlížet základní nabídku firmy, slev, vozidel, chystaných akcí, odebírání novinek, atd... registrovaný zákazník stejné jako neregistrovaný zákazník, ale může si také vytvořit výpůjčku na vozidlo od firmy. zaměstnanec přístup do zaměstnanecké sekce. Kontroluje stav vozidel po navrácení vozidel od zákazníků a případně vyřizuje způsobené škody. administrátor má všechna práva výše zmíněných a také může registrovat zákazníky. Aplikace je určena pro malé firmy bez poboček se zaměřením pouze na běžnou klientelu ( nenabízí své služby firmám ).

2. Fyzický model

3. Use case diagram

4. Popis jednotlivých tabulek 1. Adresy Tabulka obsahuje adresační údaje uživatele. ID_adresa : používá sekvenci ID_adresa_inc (inkremetuje po každé m vložení o jedničku) Mesto : název města kde uživatel bydlí PSC : PSC daného města. Tato hodnota není kontrolována Ulice : Cislo popisne : očekáváme vstup jednoduchého čísla nebo čísla s lomítkem (např. 13 nebo 200/12) 2. Uzivatele

Tabulka obsahuje údaje o registrovaných zákaznících(kontaktní údaje, email, přihlašovací údaje a práva). Uživatel může mít více adres. Při objednávce si zvolí adresu na kterou mu mají být po zaplacení poslány fakturační údaje a případné další dokumenty. Nad touto tabulkou je vytvořen index Prijmeni_index pro rychlejší vyhledávání podle příjmení. ID_uzivatele : používá sekvenci ID_uzivatele_inc (inkremetuje po každé m vložení o jedničku). email : email uživatele, na který mu budou odesílány údaje o objednávka, novinky, atd... jmeno : prijmeni : uziv_jmeno : jinak taky login. Jedná se o atribut, který uživatel potřebuje pro přihlášení na svůj učet. Heslo : Obsahuje zakryptované heslo uživatele. Nutné pro přihlášení do systému. rodne_cislo : opravneni : Uživatel může nabívat různých oprávnění. Jsou očekávany vstupy 111, 331 nebo 767. datum_narozeni : telefon : Pro kontaktní údaje k uživateli. 3. Barvy Tabulka do které ukládáme názvy barev pro vozidla. ID_barvy : primární klíč tabulky. Používá sekvenci ID_barvy_inc ( opět inkrementace o jedničku při každém vkládání). nazev : slovní pojmenování pro název barvy. 4. Znacky

Slovní popis pro id značky přes neidentifikující relaci s tabulkou Typy_aut ID_znacky : Primární klíč tabulky. Obsahuje sekvenci ID_znacky_inc. nazev_znacky : Slovní pojmenování pro název značky (Ford, Peugot, atd...) 5. Typy_aut Tabulka slouží k ukládání jednotlivých typů aut dané značky a také obsahuje cenu za kterou se budou tyto typy aut nabízet na den. ID_auta : Primární klíč tabulky. Obsahuje sekvenci ID_znacky_inc. nazev_auta : Slovní pojmenování pro název značky (Ford, Peugot, atd...). cena_na_den : Půjčovní cena auta daného typu na den ( bez jakýchkoliv slev ). ID_znacky : cizí klíč pro propojení s tabulkou Znacky. 6. Vozidla

Tabulka obsahuje informace o konkrétních vozidlech, které se přes tuto aplikaci budou nabízet. ID_vozidla : Primární klíč tabulky. Využívá sekvence ID_vozidla_inc. Seriove_cislo : Sériové číslo vozidla. Může obsahovat libovolné znaky a může být libovolné délky najeto : Stav o najetých kilometrech u vozidla. doba_zaruky : Délka záruky od zakoupení vozidla. zakoupeno : Datum, odkdy se počítá záruka. Jinak řečeno se jedná o datum kdy bylo auto zakoupeno jako nové. ID_auta : cizí klíč tabulky. Pro spojení s tabulkou Typy_aut. ID_barvy : cizí klíč tabulky. Pro spojení s tabulkou Barvy. ID_stavu : cizí klíč tabulky. Pro spojení s tabulkou Stavy_aut. 7. Stavy_vozidel Tabulka pro popis stavu vozidel. ID_stavu : Primární klíč tabulky. Na tento atribut je použita sekvence ID_stavu_inc. popis : Pro ukládání podrobných informací o vadách na vozidle, které byly opraveny a případných dalších informací. stav : Informace pro zařazení vozidla do těchto skupin : OK : auto je možné půjčovat. UPRAVA : na auto se něco provádí ( krom oprav ). OPRAVA : auto je v opravě. PUJCENO : auto je pro daný termín vypůjčeno.

8. Stavy_aut Tabulka která vznikla vazbou M:N. Obsahuje nepovinný atribut ID_vypujcky, který případně spojuje tabulku s tabulkou Vypujcky. Slouží hlavně k ukládání historie úprav, oprav, výpůjček, atd... nad konkrétním vozidlem. ID_stavu : ID_vozidla : odkdy : Datum, kdy daný stav nastane. Dokdy : Datum, kdy daný stav skončil, popřípadě určitě skončí. ID_vypujcky : Atribut je nepovinný protože se ne vždy může vztahovat k výpůjčce. 9. Vypujcky

Tabulka pro ukládání informacích o vytvořených objednávkách od uživatelů. Mimo jiné jsou v ní také informace o jednotlivých škodách, celkové ceně, způsobených škodách během vypůjčení a požadovaném odškodnění. ID_vypujcky : Primární klíč tabulky. Pro inkrementaci je použita sekvence ID_vypujcky_inc. cena_vypujcky : Celková cena za výpůjčku(včetně slev, ceny služby a ceny_auta) datum_vypujceni : Datum, kdy byla objednávka vytvořena. cena_na_auto : Cena půjčovaného vozidla na jeden den během vytvoření objednávky pro vybraný časový interval. odkdy : Datum odkdy má být auto vypůjčeno. pocet_dni : Délka objednávky ve dnech. zaplaceno : Může nabývat dvou stavů : 0 : nezaplaceno 1 : zaplaceno Zda byla uhrazena částka. ( v případě, kdy uživatel navrátí auto poničené se tato hodnota nastavuje na 0). vraceno : Informace, zda bylo auto vráceno. popis_skody : Vyplňuje se pouze v případě že nastala škoda. Logicky po navrácení vozidla a odhalení nové vady. doplatek : Částka, která bude po uživateli vyžadována za způsobenou škodu. 10. Vybaveni Tabulka obsahuje specifické označení vybavení v konkrétním vozidle. ID_vybaveni : primární klíč tabulky. Je na něj aplikovaná sekvence ID_vybaveni_inc. nazev_vybaveni : Označení pro dané zařízení pod kterým bude evidováno.

11. Vybaveni_auta ID_vybaveni : ID_vozidla : specificke_oznaceni : obsahuje seriove cislo vybaveni. 12. Sluzby Služby, které budou firmou nabízeny. ID_sluzby : Primarni klic. Pouziva sekvenci ID_sluzby_inc nazev : Hlavni popisek pro název služby. cena : Cena, za kterou bude služba nabízena. Jednorazova : nad tímto atributem je Check Constraint sluzby_jednorazova_cc, který dohlíží aby bylo možné uložit pouze stavy 0 a 1. 0 cena je pro 1 den 1 - cena je pro celou dobu výpůjčky vozidla, ke kterému je služba vybraná. popis : Detailní popis služby.

13. Stavy_vozidel Tabulka vzniká pro každou službu při každé výpůjčce. ID_sluzby : ID_vypujcky : cena_sluzby : Cena služby pro čas kdy si uživatel zařizoval objednávku. 14. Slevy Tabulka pro vytváření chystaných slev. Tyto slevy se budou spojovat pomocí vazeb M:N k tabulkám vozidel, služeb, a typech_aut. Nad touto tabulkou pracuje Check constraint který vyžaduje vyplnění buď sleva_procent nebo sleva_kc. ID_slevy : Primarni klic. Pouziva sekvenci ID_sluzby_inc nazev : Název slevy. Bude se zobrazovat jako titulek. jednorazova : nad tímto atributem je Check Constraint slevy_jednorazova_cc, který dohlíží aby bylo možné uložit pouze stavy 0 a 1. 0 cena je pro 1 den 1 - cena je pro celou dobu výpůjčky vozidla, ke kterému je služba vybraná. sleva_procent : Udává procentuální hodnotu pro slevu. V případě, že tento atribut

není vyplněn je očekáváno vyplnění slevy na sleva_kc. sleva_kc : Udává hodnotu o kterou bude daný element slevněn. V případě, že tento atribut není vyplněn je očekáváno vyplnění slevy na sleva_procent. 15. Slevy_sluzby Obsahuje časový interval, ve kterém se sleva bude na danou službu aplikovat. Řádek tabulky vzniká až po vytvoření dané služby a slevy spojením. Nad tabulkou je Check Constraint slevy_sluzby_od_do_cc který zajišťuje že dokdy bude v čase později než odkdy. ID_slevy : ID_sluzby : odkdy_sluzby : Odkdy daná sleva na službu platí. dokdy_sluzby : Dokdy daná sleva na službu platí. popis : Detailní popis služby. Je zobrazován uživatelům jako obsah článku. 16. Slevy_typy_aut Tabulka se chová stejně jako tabulka Slevy_sluzby akorát se vztahuje k typy_aut. Nad tabulkou je Check Constraint slevy_typy_aut_od_do_cc který zajišťuje že dokdy bude v čase později než odkdy. ID_auta : ID_slevy :

odkdy_typy_aut : Odkdy daná sleva na vybraný typ aut platí. dokdy_typy_aut : dokdy daná sleva na vybraný typ aut platí. popis : Detailní popis služby. Je zobrazován uživatelům jako obsah článku. 17. Slevy_vozidla Tabulka se chová stejně jako tabulka Slevy_sluzby akorát se vztahuje k typy_aut. Nad tabulkou je Check Constraint slevy_vozidla_od_do_cc který zajišťuje že dokdy bude v čase později než odkdy. ID_slevy : ID_vozidla : odkdy_vozidla : Odkdy daná sleva na vybrané vozidlo platí. dokdy_vozidla : Odkdy daná sleva na vybrané vozidlo platí. popis : Detailní popis služby. Je zobrazován uživatelům jako obsah článku. 5. Pohledy, procedury, funkce a triggery 1. Funnkce pro zjištění půjčení vozidla v daném intervalu CREATE OR REPLACE FUNCTION je_volny(idcko NUMBER, od DATE, do DATE) RETURN VARCHAR2 AS vysl VARCHAR2(10) DEFAULT 'NE'; --cursors CURSOR hledej_kolizi(id NUMBER, odk DATE, dok DATE) IS SELECT id_vozidla FROM vozidla JOIN Stavy_aut ON vozidla.id_vozidla = Stavy_aut.ID_vozidla WHERE ((od BETWEEN stavy_aut.odkdy AND Stavy_aut.dokdy) OR (do BETWEEN stavy_aut.odkdy AND Stavy_aut.dokdy) OR (od > stavy_aut.odkdy AND do < dokdy)

OR (od < stavy_aut.odkdy AND do > dokdy)) AND Vozidla.id_vozidla = id; BEGIN FOR res IN hledej_kolizi(idcko, od, do) LOOP vysl := 'ANO'; END LOOP; return vysl; END je_volny; Funkce zjistí zda dané auto ve zvoleném časovém intervalu je zarezervované. Vrácí 'ANO' v případě že auto zarezervované je, jinak vrací 'NE'. 2. procedura pro výpis vozidel ve zvoleném stavu CREATE OR REPLACE PROCEDURE volna_auta(stav VARCHAR2) CURSOR vyhledej_auta_stavu(st VARCHAR2) IS SELECT id_vozidla FROM Vozidla JOIN Stavy_vozidel ON Vozidla.ID_stavu = Stavy_vozidel.ID_stavu WHERE Stavy_vozidel.stav = st; CURSOR vypis_vsechna_auta IS SELECT id_vozidla FROM Vozidla; BEGIN CASE WHEN stav = 'OK' THEN FOR vysl IN vypis_vsechna_auta LOOP IF hledej_kolizi(vysl.id_vozidla, sysdate, sysdate) = 'NE' THEN dbms_output.put_line(vysl.id_vozidla); END IF; END LOOP; WHEN stav = 'OPRAVA' THEN FOR vysl IN vyhledej_auta_stavu(stav) LOOP dbms_output.put_line(vysl.id_vozidla); END LOOP; WHEN stav = 'UPRAVA' THEN FOR vysl IN vyhledej_auta_stavu(stav) LOOP dbms_output.put_line(vysl.id_vozidla); END LOOP; WHEN stav = 'PUJCENO' THEN FOR vysl IN vypis_vsechna_auta LOOP IF hledej_kolizi(vysl.id_vozidla, sysdate, sysdate) = 'ANO' THEN dbms_output.put_line(vysl.id_vozidla); END IF; END LOOP; ELSE RAISE_APPLICATION_ERROR(-20118, 'Neplatný stav vozidla!'); END CASE;

END volna_auta; Procedura vypíše ID všech vozidel které jsou momentálně ve zvoleném stavu( stavy jsou : OK, PUJCENO, OPRAVA, UPRAVA). 3. Trigger nad tabulkou uživatel pro validaci vstupů CREATE OR REPLACE TRIGGER Uzivatele_trigger_validace BEFORE INSERT OR UPDATE ON Uzivatele FOR EACH ROW DECLARE vek NUMBER; BEGIN IF ((sysdate - :old.datum_narozeni)/365.25) < 18 THEN raise_application_error (-20100,'Osoba je mladší 18 let!'); END IF; IF NOT REGEXP_LIKE(:new.telefon, '(^[0-9]{9,})') THEN raise_application_error (-20101,'Telefonní číslo je špatně!'); END IF; IF NOT REGEXP_LIKE(:new.email, '^[a-za-z0-9\_\.\-]+@[a-za-z0-9\_\.\-]+\.[a-za-z0-9] {2,3}$') THEN raise_application_error (-20102,'Email je špatně!'); END IF; IF NOT REGEXP_LIKE(:new.rodne_cislo, '^[0-9]{10}$') THEN raise_application_error (-20102,'Rodne číslo je špatně!'); END IF; END; Jedná se o trigger, který kontroluje vstup pro atributy datum_narození, telefon, email a rodné číslo. Jedná se o jednoduchou kontrolu, která neřeší korektnost vstupů na 100%! 6. Přehled databázových dotazů 1. Výpis všech aktuálně nabízených slev SELECT nazev, slevy_typy_aut.popis, FROM Slevy JOIN Slevy_typy_aut ON Slevy.ID_slevy = Slevy_typy_aut.ID_slevy WHERE sysdate BETWEEN Slevy_typy_aut.odkdy_typy_aut AND Slevy_typy_aut.dokdy_typy_aut UNION ALL SELECT nazev, Slevy_sluzby.popis,

FROM Slevy JOIN Slevy_sluzby ON Slevy.ID_slevy = Slevy_sluzby.ID_slevy WHERE sysdate BETWEEN Slevy_sluzby.odkdy_sluzby AND Slevy_sluzby.dokdy_sluzby UNION ALL SELECT nazev, Slevy_vozidla.popis, FROM Slevy JOIN Slevy_vozidla ON Slevy.ID_slevy = Slevy_vozidla.ID_slevy WHERE sysdate BETWEEN Slevy_vozidla.odkdy_vozidla AND Slevy_vozidla.dokdy_vozidla; Dotaz vypíše všechny slevy, které jsou aktuálně nabízeny. 2. Výpis všech nezaplacených položek objednávek daného uživatele SELECT id_vypujky, datum_vypujceni, odkdy, pocet_dni, nvl2(doplatek,'nezaplaceno za skodu : ' doplatek, 'není') AS 'DOPLATEK ZA ŠKODU' FROM Vypujcky; Dotaz vypíše všechny uživatele co si objednali výpůjčku a dosud nezaplatili a výpůjčku, kde způsobili škodu a za danou škodu ještě nezaplatili. 3. Výpis všech vozidel, které jsou nabízeny k vypůjčení SELECT id_vozidla, nazev_auta, nazev_znacky, Barvy.nazev FROM Vozidla JOIN Typy_aut ON Vozidla.id_vozidla = Typy_aut.id_vozidla JOIN Znacky ON Typy_aut.id_znacky = Znacky.id_znacky JOIN Barvy ON Vozidla.id_barvy = Barvy.id_barvy JOIN Stavy_vozidel ON Vozidla.id_stavu = Stavy_vozidel.id_stavu WHERE stav = 'OK'; Výpis všech vozidel, které jsou v půjčitelném stavu. Jinak řečeno na nich není závada, událost, kvůli které by vozidlo nemohlo být vypůjčeno.

7. Závěr a návrh na vylepšení Při zpracování této práce jsem se snažil podat vyčerpávající informace o mém databázovém modelu. Nicméně z hlediska délky některých částí jsem se rozhodl uvést pouze pár hlavních příkladů, dotazů, nebo omezení, protože uvedení všech by zabralo mnohem více stránek. Jak již bylo řečeno v charakteristice tato aplikace není tvořena pro větší zakázky. Jednorázové výpůjčky více vozidel firmám by byly výrazným zvýšením zisků pro firmu, která danou databázovou aplikaci využívá a proto by bylo dobré do budoucna rozšířit funkcionalitu modelu, aby byla schopna zpracovávat tyto požadavky a výrazně zlepšila vyhlídky firmy do budoucnosti.