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

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

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

RELAČNÍ DATABÁZOVÉ SYSTÉMY

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

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

Otázka č. 1 (bodů za otázku: 4)

Informační systémy ve zdravotnictví. 10. cvičení

Úvod do databázových systémů 3. cvičení

DBS Konceptuální modelování

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

6. SQL složitější dotazy, QBE

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

U koly na procvic ení jazyka T-SQL

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

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

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Databázové systémy I

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

Jazyk S Q L základy, příkazy pro práci s daty

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

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

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

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

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

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

6. blok část B Vnořené dotazy

Diagram výskytů a vztahů

Databázové systémy I

Metodika návrhu databáze

Řešené příklady STUDENT(RČ, JMÉNO, SPECIALIZACE) PŘEDMĚT(KÓD, NÁZEV, SYLLABUS, GARANT) ZÁPIS(RČ, KÓD, SEMESTR, ZNÁMKA)

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

Datové modelování II

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

Databázové systémy a SQL

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Databáze SQL SELECT. David Hoksza

Databáze. Logický model DB. David Hoksza

Kapitola 4: SQL. Základní struktura

Analýza a modelování dat. Helena Palovská

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

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

Modelový příklad Knihovna Vypracovaný příklad ze cvičení včetně komentářů k řešení

Obsah. SQL konstrukce select join Rekurze (rekurzivní with) Analytické funkce, group by Pivoting

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

KIV/ZIS - SELECT, opakování

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

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

Funkční schéma Datové schéma Integrita modelu s realitou

Konceptuální modelování. Pavel Tyl

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

Analýza a modelování dat 6. přednáška. Helena Palovská

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Jazyk SQL 2. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c M.Valenta, 2011 BI-DBS, ZS 2011/12

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

Materiál ke cvičením - SQL

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

2. Konceptuální model dat, E-R konceptuální model

Obsah přednášky. Databázové systémy RDBMS. Fáze návrhu RDBMS. Coddových 12 pravidel. Coddových 12 pravidel

Databáze 2013/2014. Konceptuální model DB. RNDr. David Hoksza, Ph.D.

Úvod do databázových systémů 6. cvičení

Databáze 2011/2012 SQL SELECT II. RNDr.David Hoksza, Ph.D.

Operátory ROLLUP a CUBE

Databázové systémy. Dotazovací jazyk SQL - II

Databázové patterny. RNDr. Ondřej Zýka

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

Návrh konceptuálního datového modelu Autopůjčovna. PB114 Datové modelování

Semestrální práce z DAS2 a WWW

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

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

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Objektové modelování BI-OMO 4. cvičení

DBS Transformace konceptuálního schématu na

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

Analýza dat a modelování. Přednáška 2

Informační systémy ve zdravotnictví. 8. cvičení

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

Databázové systémy Tomáš Skopal

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

Analýza a modelování dat 3. přednáška. Helena Palovská

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

J. Zendulka: Databázové systémy 4 Relační model dat 1

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

MS Access Dotazy SQL

- sloupcové integritní omezení

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

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

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

TEORIE ZPRACOVÁNÍ DAT Cvičení 8

DATA CUBE. Mgr. Jiří Helmich

Relace x vztah (relationship)

Databázové modelování. Analýza Návrh konceptuálního schématu

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

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

PG 9.5 novinky ve vývoji aplikací

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

DB1 cvičení 4 spojení tabulek a složitější dotazy

DBS Konceptuální modelování

C8 Relační databáze. 1. Datový model

Transkript:

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

Vytvořte model půjčovny dopravních prostředků. Zákazník si může půjčit kolo nebo auto na daný časový interval dle platného tarifu. Cena závisí na verzi tarifu, třídě auta/kola a době půjčení. je možné vrátit na kterékoliv pobočce. Při vrácení se evidují případná poškození, která se navazují na pojistky dopravních prostředků. ID Adresa Jedná se o systém jedné půjčovny, budeme tedy evidovat pouze pobočky. V zadání nejsou zmíněné specifické atributy, proto budeme uvažovat pouze běžné atributy jako jsou ID a Adresa. Dále budeme uvažovat dopravní prostředky, auta i kola budeme chápat jako instance obecné entity a odlišíme je atributem typ. V tomto případě atribut typ stačí, protože zadání se zabývá pouze evidencí půjčování a nevyžaduje specifické atributy pro auta a kola. Pokud by byly datové záznamy pro půjčování kol jiné než u aut, tak by bylo vhodnější vytvořit dvě entity. Poznámka nebyla použita ISA-hierarchie z důvodu snadnějšího následného převodu do Relačního modelu. Nad rámec zadání ještě evidujeme vztah mezi pobočkou a dopravním prostředkem. Tento vztah říká, na které pobočce je aktuálně kolo skladováno. Nula v dolní hranici intervalu kardinality vztahu u dopravního prostředku znamená, že dopravní může být půjčený, 1 v horní hranici znamená, že je skladovaný na maximálně jedné pobočce. Na pobočce může být dopravních prostředků (v zadání není shora omezeno). 2

Vytvořte model půjčovny dopravních prostředků. Zákazník si může půjčit kolo nebo auto na daný časový interval dle platného tarifu. Cena závisí na verzi tarifu, třídě auta/kola a době půjčení. je možné vrátit na kterékoliv pobočce. Při vrácení se evidují případná poškození, která se navazují na pojistky dopravních prostředků. RČ Jméno Příjmení ID Adresa Cena Zapůjčení Objednává Zákazník JeZapůjčeno Klíčovou entitou v příkladu je entita Zapůjčení, která slouží pro evidenci půjčování dopravního prostředku zákazníkovi. Ačkoliv by si zákazník mohl půjčit najednou více dopravních prostředků, budeme entitou Zapůjčení modelovat vypůjčení jednoho dopravního prostředku jedním zákazníkem. Toho dosáhneme vstupem s kardinalitou do vztahu s entitou Zákazník a Prostředek. Zapůjčení více prostředků najednou pak znamená vytvořit více zapůjčení. Nevýhody potenciální opakování stejného DatumOd, datumdo ve více záznamech. Výhody rozepsání položek, větší flexibilita (jiné časy návrácení), o jednu vazební tabulku méně (viz. převod do RM). 3

Vytvořte model půjčovny dopravních prostředků. Zákazník si může půjčit kolo nebo auto na daný časový interval dle platného tarifu. Cena závisí na verzi tarifu, třídě auta/kola a době půjčení. je možné vrátit na kterékoliv pobočce. Při vrácení se evidují případná poškození, která se navazují na pojistky dopravních prostředků. ID Adresa VrácenoNa PůjčenoZ Cena Zákazník Zapůjčení Objednává RČ Jméno Příjmení JeZapůjčeno Informaci o tom, ze které pobočky je půjčen a na kterou je pak vrácen zachycují vztahy PůjčenoZ a VrácenoNa. Do těchto vztahů jde entita Zapůjčení s kardinalitou 0/, kde nula říká, že v době půjčení není ještě jasné, kam se kolo vrátí. Tato hodnota je při vrácení kola na jinou pobočku dodatečně nastavena. má v těchto vztazích kardinalitu. Dále je potřeba aktualizovat vztah. V tomto modelu by bylo vhodné dodatečně specifikovat integritní omezení, které říká, že je možné půjčit z pobočky pouze tehdy, pokud je na pobočce skladován. 4

Vytvořte model půjčovny dopravních prostředků. Zákazník si může půjčit kolo nebo auto na daný časový interval dle platného tarifu. Cena závisí na verzi tarifu, třídě auta/kola a době půjčení. je možné vrátit na kterékoliv pobočce. Při vrácení se evidují případná poškození, která se navazují na pojistky dopravních prostředků. ID Adresa VrácenoNa PůjčenoZ Cena Zákazník Zapůjčení Objednává RČ Jméno Příjmení JeZapůjčeno UrčujeCenu Verze Typ Třída PoložkaTarifu CenaZaDen Závislost ceny na tarifu, typu a třídě prostředku budeme modelovat pomocí entity Položka Tarifu, kterou si můžeme představit jako číselník, který v dané verzi určuje cenu za den půjčení. Pro zjednodušení uvažujeme jednoduchou linární závislost CenyZaDen na času půjčení. Atribut Cena u Zapůjčení se pak spočítá dynamicky jako počet dnů krát příslušná CenaZaDen. 5

Vytvořte model půjčovny dopravních prostředků. Zákazník si může půjčit kolo nebo auto na daný časový interval dle platného tarifu. Cena závisí na verzi tarifu, třídě auta/kola a době půjčení. je možné vrátit na kterékoliv pobočce. Při vrácení se evidují případná poškození, která se navazují na pojistky dopravních prostředků. ID Adresa VrácenoNa PůjčenoZ Cena Zákazník Zapůjčení Objednává RČ Jméno Příjmení JeZapůjčeno UrčujeCenu Verze Typ Třída PoložkaTarifu CenaZaDen Dále bude potřeba specifikovat integritní omezení, které bude hlídat, že Typ a Třída z Položky Tarifu a ho Prostředku jsou u daného Zapůjčení stejné. Při tvorbě verze tarifu by měly vzniknout položky pro všechny Typy a Třídy půjčovaných prostředků. Jejich existenci by mělo kontrolovat další integritní omezení. 6

Vytvořte model půjčovny dopravních prostředků. Zákazník si může půjčit kolo nebo auto na daný časový interval dle platného tarifu. Cena závisí na verzi tarifu, třídě auta/kola a době půjčení. je možné vrátit na kterékoliv pobočce. Při vrácení se evidují případná poškození, která se navazují na pojistky dopravních prostředků. Na závěr doplníme evidenci Poškození, kdy u každého zapůjčení může být až poškození. Každé poškození VrácenoNa je pak navázáno až na jednu platnou smlouvu o pojištění ID Adresa (nula v případě, že nebyl pojištěn ID DatumOd nutné DatumDo hlídat integritním omezením). Neuvažujeme situaci, kdy by se jedno poškození proplácelo Cena z více smluv. Objednává PůjčenoZ Zapůjčení RČ Jméno Zákazník Příjmení DošloK ID Popis JeZapůjčeno JePojištěn UrčujeCenu Verze Typ Třída CenaZaDen PoložkaTarifu TextSmlouvy Pojištění Poškození NavázánoNa 7

Vytvořte model půjčovny dopravních prostředků. Zákazník si může půjčit kolo nebo auto na daný časový interval dle platného tarifu. Cena závisí na verzi tarifu, třídě auta/kola a době půjčení. je možné vrátit na kterékoliv pobočce. Při vrácení se evidují případná poškození, která se navazují na pojistky dopravních prostředků. Mezi Pojištěním a m Prostředkem je obecný vztah N:M, který říká, že je možné pojistit více prostředků VrácenoNa najednou a že jeden může být pojištěn vícekrát. ID Adresa Naopak není možné, aby byl jeden dopravní ID DatumOd DatumDo s jedním pojištěním ve vztahu vícekrát. Cena Objednává PůjčenoZ Zapůjčení RČ Jméno Zákazník Příjmení DošloK ID Popis JeZapůjčeno JePojištěn UrčujeCenu Verze Typ Třída CenaZaDen PoložkaTarifu TextSmlouvy Pojištění Poškození NavázánoNa 8

Vytvořte model půjčovny dopravních prostředků. Zákazník si může půjčit kolo nebo auto na daný časový interval dle platného tarifu. Cena závisí na verzi tarifu, třídě auta/kola a době půjčení. je možné vrátit na kterékoliv pobočce. Při vrácení se evidují případná poškození, která se navazují na pojistky dopravních prostředků. ID Adresa VrácenoNa PůjčenoZ Cena Zapůjčení Objednává RČ Jméno Zákazník Příjmení DošloK ID Popis JeZapůjčeno UrčujeCenu Verze Typ Třída PoložkaTarifu CenaZaDen Poškození JePojištěn TextSmlouvy Pojištění NavázánoNa 9

(ID, Adresa), Prostředek(ID, Typ, Třída, ID), Zákazník(RČ, Jméno, Příjmení) PoložkaTarifu(Verze, Typ, Třída, CenaZaDen), Poškození(ID, Popis, DošloKID, NavázánoNaID) Zapůjčení(ID, DatumOd, DatumDo, Cena, JeZapůjčenoID, ObjednáváRČ, PůjčenoZID, VrácenoNaID, Verze, Typ, Třída) Pojištění(ID, DatumOd, DatumDo, TextSml.), JePojištěn(DPID, PojID) ID Adresa VrácenoNa PůjčenoZ Cena Zapůjčení Objednává RČ Jméno Zákazník Příjmení DošloK ID Popis JeZapůjčeno UrčujeCenu Verze Typ Třída PoložkaTarifu CenaZaDen Poškození JePojištěn TextSmlouvy Pojištění NavázánoNa 10

Pokud je vztah typu :, tak je také možné vytvořit namísto atributu vazební tabulku. Tato vazební tabulka se vyplatí v případech, kdy ke vztahu dochází pouze velice vzácně. V našem příkladě je výhodnější pro modelování vztahu použí atribut. VrácenoNa kolo bude nakonec vždy někam vráceno, NavázánoNa předpokládáme většinou pojištěné prostředky, hodnota se v čase mění, ale je neustále k dispozici u prostředku. ID Adresa VrácenoNa PůjčenoZ Cena Zapůjčení Objednává RČ Jméno Zákazník Příjmení DošloK ID Popis JeZapůjčeno UrčujeCenu Verze Typ Třída PoložkaTarifu CenaZaDen Poškození JePojištěn TextSmlouvy Pojištění NavázánoNa 11

(ID, Adresa), Prostředek(ID, Typ, Třída, ID), Zákazník(RČ, Jméno, Příjmení) PoložkaTarifu(Verze, Typ, Třída, CenaZaDen), Poškození(ID, Popis, DošloKID, NavázánoNaID) Zapůjčení(ID, DatumOd, DatumDo, Cena, JeZapůjčenoID, ObjednáváRČ, PůjčenoZID, VrácenoNaID, Verze, Typ, Třída) Pojištění(ID, DatumOd, DatumDo, TextSml.), JePojištěn(DPID, PojID) Jména zákazníků, kteří si půjčili dopravní od 1.1.2016 do 3.1.2016?? Pomocí vnitřního spojení SELECT Jméno FROM Zákazník INNER JOIN Zapůjčení ON (RČ = ObjednáváRČ) WHERE DatumOd = 1.1.2016 AND datumdo = 3.1.2016 Pomocí vnořeného selektu SELECT Jméno FROM Zákazník WHERE RČ IN (SELECT ObjednáváRČ FROM Zapůjčení WHERE DatumOd = 1.1.2016 AND datumdo = 3.1.2016 ) 12

(ID, Adresa), Prostředek(ID, Typ, Třída, ID), Zákazník(RČ, Jméno, Příjmení) PoložkaTarifu(Verze, Typ, Třída, CenaZaDen), Poškození(ID, Popis, DošloKID, NavázánoNaID) Zapůjčení(ID, DatumOd, DatumDo, Cena, JeZapůjčenoID, ObjednáváRČ, PůjčenoZID, VrácenoNaID, Verze, Typ, Třída) Pojištění(ID, DatumOd, DatumDo, TextSml.), JePojištěn(DPID, PojID) Jména zákazníků, kteří si nepůjčili dopravní?? Pomocí levého vnějšího spojení SELECT Jméno FROM Zákazník LEFT OUTER JOIN Zapůjčení ON (RČ = ObjednáváRČ) WHERE ID IS NULL Pomocí vnořeného selektu SELECT Jméno FROM Zákazník WHERE RČ NOT IN (SELECT ObjednáváRČ FROM Zapůjčení) 13

(ID, Adresa), Prostředek(ID, Typ, Třída, ID), Zákazník(RČ, Jméno, Příjmení) PoložkaTarifu(Verze, Typ, Třída, CenaZaDen), Poškození(ID, Popis, DošloKID, NavázánoNaID) Zapůjčení(ID, DatumOd, DatumDo, Cena, JeZapůjčenoID, ObjednáváRČ, PůjčenoZID, VrácenoNaID, Verze, Typ, Třída) Pojištění(ID, DatumOd, DatumDo, TextSml.), JePojištěn(DPID, PojID) Jména zákazníků, kteří si nepůjčili dopravní od 1.1.2016 do 3.1.2016?? Pomocí levého vnějšího spojení SELECT Jméno FROM Zákazník LEFT OUTER JOIN Zapůjčení ON (RČ = ObjednáváRČ) WHERE DatumOd!= 1.1.2016 OR datumdo!= 3.1.2016 OR ID IS NULL Pomocí vnořeného selektu SELECT Jméno FROM Zákazník WHERE RČ NOT IN (SELECT ObjednáváRČ FROM Zapůjčení WHERE DatumOd = 1.1.2016 AND datumdo = 3.1.2016 ) 14

(ID, Adresa), Prostředek(ID, Typ, Třída, ID), Zákazník(RČ, Jméno, Příjmení) PoložkaTarifu(Verze, Typ, Třída, CenaZaDen), Poškození(ID, Popis, DošloKID, NavázánoNaID) Zapůjčení(ID, DatumOd, DatumDo, Cena, JeZapůjčenoID, ObjednáváRČ, PůjčenoZID, VrácenoNaID, Verze, Typ, Třída) Pojištění(ID, DatumOd, DatumDo, TextSml.), JePojištěn(DPID, PojID) Data zapůjčení a skutečná cena za den?? SELECT *, Cena / (1 + DAY(DatumDo) DAY(DatumOd)) AS CenaZaDen FROM Zapůjčení Zapůjčení, kde skutečná cena za den neodpovídá příslušné položce tarifu?? SELECT *, Cena / (1 + DAY(DatumDo) DAY(DatumOd)) AS CenaZaDen FROM Zapůjčení Z WHERE CenaZaDen NOT IN (SELECT CenaZaDen FROM PoložkaTarifu PT WHERE Z.Verze = PT.Verze AND Z.Typ = PT.Typ AND Z.Třída = PT.Třída) 15

(ID, Adresa), Prostředek(ID, Typ, Třída, ID), Zákazník(RČ, Jméno, Příjmení) PoložkaTarifu(Verze, Typ, Třída, CenaZaDen), Poškození(ID, Popis, DošloKID, NavázánoNaID) Zapůjčení(ID, DatumOd, DatumDo, Cena, JeZapůjčenoID, ObjednáváRČ, PůjčenoZID, VrácenoNaID, Verze, Typ, Třída) Pojištění(ID, DatumOd, DatumDo, TextSml.), JePojištěn(DPID, PojID) Nevyužitý tarif?? SELECT * FROM PoložkaTarifu PT WHERE NOT EXISTS (SELECT ID FROM Zapůjčení Z WHERE Z.Verze = PT.Verze AND Z.Typ = PT.Typ AND Z.Třída = PT.Třída) Kolik je verzí tarifů pro daný typ a třídu?? Jaká je průměrná cena za den pro daný typ a třídu?? SELECT Typ, Třída, Count(*) FROM PoložkaTarifu GROUP BY Typ, Třída SELECT Typ, Třída, Avg(CenaZaDen) FROM PoložkaTarifu GROUP BY Typ, Třída 16

(ID, Adresa), Prostředek(ID, Typ, Třída, ID), Zákazník(RČ, Jméno, Příjmení) PoložkaTarifu(Verze, Typ, Třída, CenaZaDen), Poškození(ID, Popis, DošloKID, NavázánoNaID) Zapůjčení(ID, DatumOd, DatumDo, Cena, JeZapůjčenoID, ObjednáváRČ, PůjčenoZID, VrácenoNaID, Verze, Typ, Třída) Pojištění(ID, DatumOd, DatumDo, TextSml.), JePojištěn(DPID, PojID) Které prostředky byly vráceny na stejnou pobočku, ze které byly půjčeny?? SELECT * FROM Prostředek WHERE ID IN (SELECT JeZapůjčenoID FROM Zapůjčení WHERE PůjčenoZID = VrácenoNaID) Adresa půjčení a adresa vrácení všech zapůjčených prostředků?? SELECT P1.Adresa AS AdresaPujceni, P2.Adresa AS AdresaVraceni FROM P1 INNER JOIN Zapůjčení Z ON (P1.ID = Z. PůjčenoZID) INNER JOIN P2 ON (P2.ID = Z. VrácenoNaID) 17

(ID, Adresa), Prostředek(ID, Typ, Třída, ID), Zákazník(RČ, Jméno, Příjmení) PoložkaTarifu(Verze, Typ, Třída, CenaZaDen), Poškození(ID, Popis, DošloKID, NavázánoNaID) Zapůjčení(ID, DatumOd, DatumDo, Cena, JeZapůjčenoID, ObjednáváRČ, PůjčenoZID, VrácenoNaID, Verze, Typ, Třída) Pojištění(ID, DatumOd, DatumDo, TextSml.), JePojištěn(DPID, PojID) Položky tarifu s nejvyšší cenou za den?? SELECT * FROM PoložkaTarifu WHERE CenaZaDen = (SELECT Max(CenaZaDen) FROM PoložkaTarifu ) ID nejčastěji zapůjčených dopravních prostředků?? SELECT JeZapůjčenoID FROM Zapůjčení GROUP BY JeZapůjčenoID HAVING Count(*) >= ALL (SELECT Count(*) FROM Zapůjčení GROUP BY JeZapůjčenoID) 18