DS
Z OI wiki
(→Zkouška 15.5.2012) |
(→Studijní materiály) |
||
Řádka 20: | Řádka 20: | ||
[https://cw.felk.cvut.cz/doku.php/courses/a4b33ds/start Stránka předmětu na CourseWare] | [https://cw.felk.cvut.cz/doku.php/courses/a4b33ds/start Stránka předmětu na CourseWare] | ||
- | + | [http://uloz.to/xLHxx42/ds-merged-pdf prednaskove slidy spojene do jednoho pdf] | |
<br /> | <br /> | ||
Verze z 21. 5. 2012, 22:05
|
|
Info o předmětu
- Přednášející: Doc. Ing. Zdeněk Kouba, CSc.; Ing. Kamil Matoušek, Ph.D.
- Cvičící: Ing. Petr Křemen; Ing. Lenka Nováková, Ph.D.; Ing. Marek Šmíd
Pravidla předmětu
Pravidla předmětu na hlavní stránce předmětu
Studijní materiály
Stránka předmětu na CourseWare
prednaskove slidy spojene do jednoho pdf
Zkoušky
Zkouška 26.5.2011
1. [30b] Namalovat konceptuální a logický model databáze zadané slovně. Pozor na to, že v logickém modelu nejsou notace, ale šípky viz přednášky. Slo o e-shop (zakaznik, objednavka, zasilka, dodaci list, reklamace), mohlo se to zdat tezky, ale nakonec to slo udelat se 6-7 entitama a asi 5 vazebnima tabulkama (vztah N:M).
2. [30b] Zadané 3 tabulky, napište SELECT. Pozor, šlo o dost "pěknej" SELECT, kde bylo potřeba použít UNION a GROUP BY pro 3 tabulky.
- -nemusel se pouzit UNION, stacilo tabulky JOINout (Ondra J.)
3. [15b] Zadanej JPA model dvou entit s OneToMany vztahem. Úkolem bylo namalovat logickej model. Pozor, bylo potřeba namalovat také vazební tabulku (anotace JoinColums v JPA). Byl to presne slajd 36 v prvni prednasce o JPA.
Opravovalo se to za jízdy. Takže jste si sebrali písemku a on ji před vámi opravil. Stíhal tak 8 lidí za hodinu. Bodování moc nebylo, spíš styl "Tohle se mi nelíbí.. tohle je dost špatné. No tak vám dám.. polovinu bodů". (Za předpokladu, že máte dost bodů ze cvičení.)
Podle mého názoru tuto zkoušku není problém dát. Avšak zda budete spokojeni se známkou je jiná věc.
Honza
doplneno --Ondra "Kofolák" Jelínek 26. 5. 2011, 15:31 (UTC)
Zkouška 9.6.2011
1. Opět konceptuální model, tentokrát letiště.
2. Select z tabulek:
OSOBA(*rc, id_porodnice, datum_narozeni, jmeno, prijmeni) PORODNICE(*id_porodnice, id_mesta) MESTO(*id_mesta, id_kraje) KRAJ(*id_kraje) HEJTMAN(rc, id_kraje, datum_od, datum_do)
Udělat žebříček hatemanů podle toho, kolik se za jejich funkční období (HEJTMAN.datum_od - HEJTMAN.datum_do) narodilo osob. Hateman může být zvolen vícekrát (jiné období, i jiné kraje), součet jde přes všechna období působení jednoho hatemana. Do hitparády nezahrnovat ty hatemany, kteří mají na kontě méně než 1000 děcek.
3. JPA - Zadaná obousměrná anotace ManyToMany, ale špatně. Mělo se opravit. Na obou stranách nebyly vázané entity v kolekcích:
Entita1 data1; --> Collection<Entita1> data1;
a na inversní straně bylo potřeba doplnit zdroj
@ManyToMany --> @ManyToMany(mappedBy="data1")
a potom k tomu nakreslit logický model
--Milicmar 9. 6. 2011, 15:27 (UTC)
Zkouška 15.5.2012
1. (20 b) Rekurzivní vztah. Byla zadána tabulka jako konceptuální schéma, vypadalo to cca takhle: (Není náhodou tohle logické schéma? - to je se šipkama)
---------- V | ------------ | Ma matku | Osoba |------| ------------ | rodne_c | | jmeno | | prijmeni | ------------
Úkolem bylo z toho udělat schéma logické. V podstatě se akorát k atributům doplnil cizí klíč "rodne_c_matky" a atribut "rodne_c" označit jako primární klíč. Pozor musí být nullovatelné, jinak by do tabulky nešlo vůbec vložit první záznam.
Dál se měl napsat SELECT co vybere jména a příjmení matek, které mají tři a více dětí. Dělalo se to tak, že se najoinovala ta samá tabulka, musela se aliasovat, s tím že ON bylo potom dite.rodne_c_matky=osoba.rodne_c a tohle se sgrupovalo podle rodne_c_matky a přes HAVING se z toho vybraly jen ty matky co mají dost dětí.
SELECT matka.jmeno, matka.prijmeni, COUNT(*) AS pocet_deti FROM osoba AS matka JOIN osoba AS dite ON (matka.rc = dite.rc_matky) GROUP BY matka.rc, matka.jmeno, matka.prijmeni HAVING COUNT(*)>=3
2.) (30 b) Úkolem bylo nakreslit konceptuální schéma pro informační systém sítě multikin. Evidovaly se zvlášť kina, sály, řady, sedačky, lístky, rezervace... Docela
náročné z toho pohledu aby se něco nepřehlídlo, jinak principiálně pohoda. Nebylo nutné vymýšlet žádné atributy, stačilo mít dobře dekomponované věci na entity
a hlavně dobře relace. M:N se nerozkládala, notaci jsem použil klasicky Crowe's Foot a byl s tím spokojený.
3.) (15 b) Příklad na JPA. Byla zadána notace v UML a měl se napsat JAVA kód s anotacema. Příklad zcela převzatý přednášek:
4.) (10 b) Vysvětlit, co to znamená "dirty read" -> viz přednášky o transakcích.
Zkouška celkem pohodová, ale Koubovo bodování je dost na nic. Když se mu to líbí, tak vám body dá i když tam je chybka (jestli si jí všimne je druhá věc..), když se mu to nelíbí, strhává hodně... Měl jsem detailní chybu v tom SELECTu a nedal mi za něj ani bod, i když jsem mu řekl že jsem se spletl a že vím jak to udělat. Neukecáte ho a pokud budete vyloženě chtít ústní o body, připravte se, že se pěkně zapotíte i kdyby to bylo o bod jen jeden.