KIV/ZIS - semestrální práce Courseware -> Samostatné práce Každý si sám vybere téma, nehlásit. Dodržte termín! Kolikrát může být vrácena k přepracování? záleží na rozsahu vad a náladě cvičícího délka prezentace max. 5 minut 4-6 slajdů zaměřte se opravdu jen na nejdůležitější informace 1/30
KIV/ZIS - mikroúkol vytvořte tabulku evidencí závozu tankového piva datum, název piva, množství vytvořte dotaz, který vypíše množství zavezeného piva podle dní a názvu piva 2/30
KIV/ZIS - (ne)povinné hodnoty Co když nechci mít některé položky vyplněné? např. mám seznam lidí a jejich adres, ale některé adresy neznám Co tam potom je, když tam nic není? NULL 3/30
KIV/ZIS - NULL Co je to ten NULL? Co je to nic? Ukažte mi nic! Sáhněte si na nic! (Bokr) NULL je beztypová hodnota, která reprezentuje nevyplněnou položku. NULL není nula! nanoúkol - zkuste u některého sloupečku tabulky nastavit povinnost vyplnění a vytvořit řádek s vynecháním hodnoty 4/30
KIV/ZIS - text s nulovou délkou textový sloupeček může mít nastavenou povinnost vyplnění, ale může obsahovat prázdný text text s nulovou délkou je stále text, není to NULL 5/30
KIV/ZIS - index index slouží k urychlenému hledání nebo řazení př.: mám tabulku se 100 miliony záznamů a chci najít záznamy týkající se konkrétního datumu prohledat všechny záznamy trvá dlouho př.: mám tabulku se 100 miliony záznamů a chci vypsat prvních 1000 podle abecedy seřadit 100 mil. záznamů trvá věčnost 6/30
KIV/ZIS - kdy použít index u tabulek s málo záznamy (desítky) nemá index význam bude-li tabulka objemná a budu-li v ní hledat/budu-li záznamy řadit zapnout indexování u potřebných sloupců Nastavit index jen u skutečně potřebných sloupců! 7/30
KIV/ZIS - duplicity chci sloupeček, který bude obsahovat unikátní hodnoty např. evidence výrobků a jejich výrobní čísla chci, aby mi databáze nedovolila vložit duplicitní hodnotu nanoúkol - vyzkoušejte 8/30
KIV/ZIS - dotaz s výpočtem př.: mám tabulku sklad, která má sloupce pocet_kusu a cena_za_kus, a chci tabulku vypsat s extra sloupečkem, kde bude celková cena výrobků na skladě (pocet_kusu * cena_za_kus) 9/30
KIV/ZIS - dotaz s řazením a filtrováním př. opět sklad, chci vypsat jen položky s cenou mezi 10 a 13 a chci je vypsané podle množství od nejpočetnějších filtraci a řazení lze aplikovat i na vypočtené sloupečky 10/30
KIV/ZIS - řazení/filtrování vypočtených MS Access neumí indexovat vypočtené hodnoty př.: mám tabulku se 100 miliony záznamů a chci vypsat všechny, jejichž součin ceny a kusů je v nějakém rozmezí To je PROBLÉM! 11/30
KIV/ZIS - řazení čísel je-li sloupeček číselného typu, pak se není čemu divit řazení numerické 1, 2, 3,..., 10, 11, 12,... 20, 21,... je-li sloupeček textového typu a obsahuje čísla, pak se může člověk divit řazení alfanumerické 1, 10, 11, 12, 13,..., 19, 2, 20, 21,... 12/30
KIV/ZIS - návrh tabulek vícehodnotová položka MS Access umí vícehodnotové datové typy, ale v praxi jsou většinou nepoužitelné špatně strelec zasahy Pavel 4, 9, 2 Michal 1, 5, 7 správně strelec zasah1 zasah2 zasah3 Pavel 4 9 2 Michal 1 5 7 Toto ve skutečnosti také není ideální. 13/30
KIV/ZIS - návrh tabulek variabilní počet sloupců MS Access (a databáze obecně) neumí např. střelci mohou mít libovolné množství zásahů naivní řešení - vytvořit mnoho fixních předpřipravených sloupců - plýtvání místem, omezené množství špatně strelec z1 z2 z3 z4 z5 z6 z7 Martin 3 3 8 Franta 9 1 5 7 2 14/30
KIV/ZIS - návrh tabulek variabilní počet sloupců správně strelec Martin Franta poradi hodnota 1 3 2 3 3 8 1 9 2 1 3 5 4 7 5 2 Jak se vytvářejí vazby bude ukázáno později. 15/30
KIV/ZIS - návrh tabulek opakující se hodnoty plýtvání místem, jsou-li (především textové) hodnoty dlouhé Hromadné upravení - např. bude tabulka, kde bude sloupeček se jménem člověka a město, kde bydlí. Když se město přejmenuje, musí se upravit všechny příslušné záznamy - zbytečná práce. špatně správně jmeno mesto jmeno Martin Franta Alena Jana Praha Plzeň Plzeň Plzeň Martin Franta Alena Jana mesto Praha Plzeň 16/30
KIV/ZIS - domácí úkol nastudovat 3. normální formu (3NF) http://cs.wikipedia.org/wiki/t%c5%99et %C3%AD_norm%C3%A1ln%C3%AD_forma 17/30
KIV/ZIS - návrh tabulek vypočítaná položka sloupec, který se dá vytvořit výpočtem z ostatních položek v záznamu, by neměl být součástí tabulky výpočet se provede v dotazu špatně obdelnik sirka vyska obvod obsah malý 2 4 10 8 velký 30 15 90 450 18/30
KIV/ZIS - ERA model Entity - tabulka Relation - vztah mezi tabulkami Attribute - sloupeček ERA model je grafická reprezentace struktury databáze 19/30
KIV/ZIS - ERA model Chenova notace číslo název datum spl. počet faktura obsahuje položka odběratel cena poznámka 20/30
KIV/ZIS - Chenova notace Nemám rád Chenovu notaci! (Široký) nepřehledná problém pojmenování vazeb - směr pohledu faktura obsahuje položka nebo faktura je obsažena v položka????? 21/30
KIV/ZIS - Chenova notace Nepoužívejte Chenovu notaci! Ale letmo se jí naučte, kdyby se na to náhodou někdo ptal u zkoušky. 22/30
KIV/ZIS - ERA model lepší varianta faktura položka číslo datum spl. odběratel poznámka název počet cena s implementačními názvy faktury cislo datum_spl odberatel poznamka polozky nazev pocet cena 23/30
KIV/ZIS - kardinalita vazeb Kolik položek z tabulky A se váže na kolik položek z tabulky B? 3 typy 1:1 - na 1 položku z tabulky A připadá maximálně 1 položka z tabulky B, ta patří jen té jediné z A 1:N - na 1 položku z tabulky A připadá libovolné množství položek z tabulky B, na 1 položku z tabulky B připadá maximálně 1 položka z tabulky A N nepředstavuje žádné konkrétní číslo M:N - bez omezení množství vazeb v obou směrech 24/30
KIV/ZIS - kardinalita vazeb 1:1 používá se jen v případech, kdy jsou některé řádky řídké Př.: marketingová firma zakoupí tabulku s 1 milionem lidí a chce z nich 10000 lidí vybrat a nabídnout jim produkt. Firma chce vést záznamy o tom, kdy jim zatelefonovali a zda jim úspěšně produkt prodali (každého budou otravovat jen 1x). Do tabulky s lidmi přidám sloupečky datum_volani a prodano s počáteční hodnotou NULL (ještě nevolali a neví, jestli prodali). Tabulka bude obsahovat 99 % řádků bez hodnot - plýtvání místem. Lepší - vytvořím extra tabulku, kam budu ukládat jen hodnoty o volání a prodeji. používejte opatrně 25/30
KIV/ZIS - kardinalita vazeb, značení 1:1 zákazník 1 1 zatelefonování 1:N faktura 1 N položka M:N člověk M N autobus 26/30
KIV/ZIS - pojmenování vazeb pomůže lepšímu porozumění ER(A) modelu zákazník 1 1 kontaktování komu zatelefonování faktura 1 N obsahuje obsažena v položka člověk M jezdí v N vozí autobus 27/30
KIV/ZIS - mikroúkol doplňte vazby a jejich kardinality do modelu zaměstnanci používají služební auta kniha jízd kniha_jizd zamestnanci sluzebni_auta 28/30
KIV/ZIS - mikroúkol doplňte vazby a jejich kardinality do modelu zaměstnanci používají služební auta kniha jízd kniha_jizd N N 1 zamestnanci N 1 sluzebni_auta M 29/30
KIV/ZIS Děkuji za pozornost. 30/30