[zk]6.6.2006 aneb pokusní králíci

gASK at 2006-06-06 15:28:04

Zdravím.

Tak jsem právě vylezl ze zkoušky.

Varianta B (tuším):

1-1: DPP má autobusy, tramvaje, lanovky a metro. Každé jezdí na nějaké lince. Má řidiče, revizory, černé pasažéry....prostě hegeš zadání. Navrhněte ER diagram s přihlédnutím k dotazům ve dvojce a k reálnému světu či tak něco.

1-2: Převěďte na tabulky (klasika)
25 bodů, minimum 10

2-1: Pro každý typ vozidel najděte vozidlo, které najelo nejvíce km za den (i s tím daným dnem).

2-2: Najděte všechny černé pasažéry, kteří byli chyceni alespoň dvakrát za jeden den (nějaký den) a navíc je jejich celková dlužná částka větší než průměrná dlužná částka všech černých pasažérů.
25 bodů, minimum 10

3-1: Nějaké schéma, zjistit, je-li konfliktově uspořádatelné, nakreslit jeho konfliktový graf či jak se to jmenuje, určite jestli je zotavitelné, případně upravit.

3-2: Vytvořit 3 transakce nad objekty A, B, C, D. Udělat S2PL rozvrh, který vede k deadlocku a nakreslit graf uváznutí.
40 bodů, minimum (15 nebo 20)

4-1: Proč se používá načítání po stránkách a ne třeba po bajtech?
4-2: Srovnejte shlukovaný index oproti neshlukovanému nebo tak něco.

Stupnice 60-75 bodů za 3, 75-90 za 2, 90-100 za 1. Navíc ještě minimálně (minimum) bodů v každé z prvních tří otázek. Na písmeku je 90 minut času.

Výsledky nevím kdy budou, zapomněl jsem se optat.

Dnes je info ode mne sporadické, písmeka mne vyloženě znechutila.....mno, uvidíme.

MIKI at 2006-06-06 15:40:17

:roll:
Tak to si asi robia srandu! :?

qk at 2006-06-06 16:14:17

pismeka pry bude do tydne v sisu
u transakce minimum je 20!

Necroman at 2006-06-06 16:15:56

MIKI wrote::roll:
Tak to si asi robia srandu! :? kdepak, je to jeste horsi... :x

ad otazka 2.1:
ja to pochopil jen jako jen najit od kazdeho typu d. prostredku rekord v historii vsech dnu a ten rekord v poctu najetych km za jeden den vypsat, ne primo ten den a vozidlo :?:
myslim, ze to je fuk, tak jako tak to asi nemam :(

gASK at 2006-06-06 16:23:43

Necroman wrote:

MIKI wrote::roll:
Tak to si asi robia srandu! :? kdepak, je to jeste horsi... :x

ad otazka 2.1:
ja to pochopil jen jako jen najit od kazdeho typu d. prostredku rekord v historii vsech dnu a ten rekord v poctu najetych km za jeden den vypsat, ne primo ten den a vozidlo :?:
myslim, ze to je fuk, tak jako tak to asi nemam :(

To je jedno jestli vyopisuješ jen rekord, nebo i vozidlo...jen o SELECT víc, no.

qk at 2006-06-06 16:23:46

jinak moje dojmy
na to ze sem se ucil jen rano pred zkouskou to slo celkem od ruky
chce si to poradne rozmyslet to ER s ohledem na 2, protoze na ty tabulky z jednicky pokladas dotazy, takze kdyz se dobre zvoli, tak ty dotazy jdou udelat jednoduse. (navic tam nebyly nutny nejaky normalni formy, takze se daly i ruzny prasarny) + hint, pri dobrym 1a bylo snadny prevest na 1b...navic u 1b musely byt u funkcni zavislosti, takze sem u kazdy relace(?-to s tema atributama) dal id na kterym ostatni atributy zavisely (a zadny dedicnosti a podobny kokotiny co se slozite prevadi).
transakce se chce fakt poradne naucit, tady citim dost mezery :( (navic kdyz je pulka povinna)

jinak ta jednicka je dost rozsahla ( aspon u mne) mel sem po prevodu asi 9-10 tabulek, cely zadani bylo ze jsou dopravni prostredky (metro, bus atd..) maji minimalne svoji linku (A, 120 atd..) pak jsou zamestnanci, kde ridici umi ridit pouze jeden prostredek (tramvajaci atd.) a revizori, kteri revizuji vsude. a jeste je dam databaze cernych pasazeru(tady si vsimnete ze skoro neni specifikovane jak, tyka se toho druhe SQL, takze pri sikovny strukture to bylo celkem jednoduchy napsat SQL). A dale je v databazi mapa zastavek a linek ktery ji obsluhujou.

no to je asi vse, doufam ze sem to aspon za tri dal, protoze ten opruz uz nechci znova zkouset.

jinak hlidani nebylo tak prisny :wink:

qk at 2006-06-06 16:28:33

Necroman wrote:

MIKI wrote::roll:
Tak to si asi robia srandu! :? kdepak, je to jeste horsi... :x

ad otazka 2.1:
ja to pochopil jen jako jen najit od kazdeho typu d. prostredku rekord v historii vsech dnu a ten rekord v poctu najetych km za jeden den vypsat, ne primo ten den a vozidlo :?:
myslim, ze to je fuk, tak jako tak to asi nemam :(

no pritom pri dobre zvoleny strukture to bylo celkem v pohode tenhle dotaz. stacilo si udelat tabulku najeto/den(id_vozidla, den, km) a vozidla (id_vozidla, typ,...).
a pak

SELECT typ,MAX(km) from najeto/den NATURAL JOIN vozidlo GROUP BY typ
twoflower at 2006-06-06 16:28:50

Byl jsem...zaskocen. Nejspis to nemam, ale bylo by super, kdyby to opravili driv nez za tyden :-/

Trupik at 2006-06-06 16:36:02

Fakt žádná sláva.

Tak fotku davam pryc, kdyztak na zadani na skopalovy stranky

qk at 2006-06-06 16:44:24

jo je ten rozvrh zotavitelny nebo ne??? a jak ma pripadne vypadat aby byl zotavitelny?

zapo at 2006-06-06 16:45:50

inak Skopal dal zadania na svoj web, takze tam je A aj B pekne presne :)
http://urtax.ms.mff.cuni.cz/~skopal/DBI025.htm

twoflower at 2006-06-06 16:54:31

qk wrote:jo je ten rozvrh zotavitelny nebo ne??? a jak ma pripadne vypadat aby byl zotavitelny?

Ehm, mne vyslo, ze zotavitelny je...ale proti kaskadovemu ruseni transakci imho zabezpecen nebyl.

luk at 2006-06-06 16:55:19

qk wrote:jo je ten rozvrh zotavitelny nebo ne??? a jak ma pripadne vypadat aby byl zotavitelny?

Já bych řekl, že je, anžto tam snad nebyla transakce, která by se commitovala dřív, než jiná, od keré četla svá data...Lépe řečeno, nevyskytla se tam situace, že Ti čte data zapsaná Tj a commituje se dřív, než Tj (alespoň, jestli jsi mluvil o variantě B)
Jinak jsem taky zvědavý, jak to dopadne...Od Skopala jsem čekal něco lehčího :(

qwyxyo at 2006-06-06 17:14:18

Tak tato pisomka ma poriadne zaskocila. Predsa to chcelo len trocha viac pripravy. Najhorsie je, ze mnozstvo zadani si kazdy moze vylozit po svojom a ulohy su na sebe zavisle. Skopal do dokopal... Casovo som to vobec nestihal (4. som ledva precital). FUJ. Nechutne. Dufam, ze znizi hranicu a nejakym zazrakom sa tam vtrepem:D Toto opakovat by ma asi dorazilo...

jj0uDa at 2006-06-06 22:07:37

Tahle zkouska me privadi k zavazny otazce... Opravdu jsem vybral spravnou skolu? Nebo jsem jen natrefil na opravdovyho .......???? Smysl tohodle predmetu (resp. jeho prinos) je ekvivalentni optimistickymu rozvrhovani peti transakci zapisujicich do stejnejch dat (grrrr grrrrrrrr). Doufam, ze jsem to napsal, uz to fakt nechci videt.

Leli at 2006-06-06 22:56:55

Jenom bych chtel upozornit ty, co stejne jako ja moc neposlouchali pri zadani. Jestlize mate jakykoliv priklad na mene nez MIN bodu, tak jste automaticky nenapsali celou pisemku. Puvodne jsem si myslel, ze za priklad napsany na mene nez MIN bodu dostanu 0 z prikladu, ale tak to neni.

Angel at 2006-06-07 10:12:22

Sak tohle kriterium me trosicku zaskocilo, na priste se uz budu muset naucit i ty transakce.

Jinak, jak tu nekdo pise o nejaky uzitecnosti, tak si naopak myslim, ze tenhle predmet je uplne skvelej, co se tyce jeho prinostu a vidim v nem asi tak 200x vic uzitecnosti nez nejaka kombinatorika a grafy.

qk at 2006-06-07 10:32:12

Angel wrote:Sak tohle kriterium me trosicku zaskocilo, na priste se uz budu muset naucit i ty transakce.

Jinak, jak tu nekdo pise o nejaky uzitecnosti, tak si naopak myslim, ze tenhle predmet je uplne skvelej, co se tyce jeho prinostu a vidim v nem asi tak 200x vic uzitecnosti nez nejaka kombinatorika a grafy.

no to nevim, jedinej prinos vidim pro ty co neznaly SQL, tak se o nem trosku nauci, a ER model a jeho prevod do tabulek, coz se pouziva (i kdyz spis to generuji nejake nastroje)....zbytek vidim jen pro ty co budou programovat databazovej stroj, tak maj nepatrnou predstavu co se asi ve stroji pouziva, ale programator-uzivatel databaze vubec nezajimaji kalkuly, algebry, transakce (maximalne kterej typ tabulky je podporuje a kterej ne) a fyzicky ulozeni na disku

zatimco na kombagre se clovek vic nauci myslet urcitym zpusobem, coz dost pomuze pri vymysleni efektivniho algoritmu pro velky data (v praxi treba PP se casto hleda, tvorici fce se pouzivaji pro matematicky funkce, minimalni tok ke vsemu moznymu, ten aproximacni algoritmus pro obchodniho cestujiciho nebo ta aplikace pro konvexni polygony se hodi pri grafice)

Lada at 2006-06-07 10:53:28

nerikam nic o tom, ze kombagra byla zbytecna (a nemyslim si to) ale osobne pro me databaze byly docela velky prinos - z SQL jsem umel jen par zakladu a musim rict ze tenhle predmet mi docela dost "rozsiril obzory" v tom co vsechno sql umi... ;)

Eubie at 2006-06-07 18:03:01

Už má někdo símvás výsledek zapsanej v SISu?

gASK at 2006-06-07 18:10:14

Eubie wrote:Už má někdo símvás výsledek zapsanej v SISu?

Ne. Nikde nic a ticho po pěšině. Až ho tam někdo budete mít, hned dejte věděť...

Hugo at 2006-06-07 19:11:08

vzhledem k tomu, ze se dnes psal i zapocet, si asi bohuzel pockame..

Ale rikal do nedele, tak snad..

Almer at 2006-06-08 12:01:48

gASK wrote:

Eubie wrote:Už má někdo símvás výsledek zapsanej v SISu?

Ne. Nikde nic a ticho po pěšině. Až ho tam někdo budete mít, hned dejte věděť...

To by musel fungovat:))

hippies at 2006-06-08 14:21:04

gASK wrote:

Necroman wrote:

MIKI wrote::roll:
Tak to si asi robia srandu! :? kdepak, je to jeste horsi... :x

ad otazka 2.1:
ja to pochopil jen jako jen najit od kazdeho typu d. prostredku rekord v historii vsech dnu a ten rekord v poctu najetych km za jeden den vypsat, ne primo ten den a vozidlo :?:
myslim, ze to je fuk, tak jako tak to asi nemam :(

To je jedno jestli vyopisuješ jen rekord, nebo i vozidlo...jen o SELECT víc, no.

Celé to musí být na jeden SELECT, ale JOIN by to vyřešil;)

gASK at 2006-06-08 16:16:56

hippies wrote:

gASK wrote:

Necroman wrote:kdepak, je to jeste horsi... :x

ad otazka 2.1:
ja to pochopil jen jako jen najit od kazdeho typu d. prostredku rekord v historii vsech dnu a ten rekord v poctu najetych km za jeden den vypsat, ne primo ten den a vozidlo :?:
myslim, ze to je fuk, tak jako tak to asi nemam :(

To je jedno jestli vyopisuješ jen rekord, nebo i vozidlo...jen o SELECT víc, no.

Celé to musí být na jeden SELECT, ale JOIN by to vyřešil;)

Myslel jsem tím "vnořenej" select. :twisted:

Mno, to nebudeme řešit, to za nás vyřeší výsledky... :wink:

hippies at 2006-06-08 17:01:27

gASK wrote:

hippies wrote:

gASK wrote:

To je jedno jestli vyopisuješ jen rekord, nebo i vozidlo...jen o SELECT víc, no.

Celé to musí být na jeden SELECT, ale JOIN by to vyřešil;)

Myslel jsem tím "vnořenej" select. :twisted:

Mno, to nebudeme řešit, to za nás vyřeší výsledky... :wink:

Však samozřejmě, speciálně sem se na to ptal a chtěli aby v celim dotazu bylo slovo SELECT prave jednou.

gASK at 2006-06-08 19:46:18

hippies wrote:

gASK wrote:

hippies wrote:

Celé to musí být na jeden SELECT, ale JOIN by to vyřešil;)

Myslel jsem tím "vnořenej" select. :twisted:

Mno, to nebudeme řešit, to za nás vyřeší výsledky... :wink:

Však samozřejmě, speciálně sem se na to ptal a chtěli aby v celim dotazu bylo slovo SELECT prave jednou.

Já to tam používal např vnořenej select na zjištění maxima/průměru.... :evil:

Jestli mi to kvůli tomu nevezmou, tak to je pěkně na ...

hippies at 2006-06-08 22:10:46

gASK wrote:

hippies wrote:

gASK wrote:

Myslel jsem tím "vnořenej" select. :twisted:

Mno, to nebudeme řešit, to za nás vyřeší výsledky... :wink:

Však samozřejmě, speciálně sem se na to ptal a chtěli aby v celim dotazu bylo slovo SELECT prave jednou.

Já to tam používal např vnořenej select na zjištění maxima/průměru.... :evil:

Jestli mi to kvůli tomu nevezmou, tak to je pěkně na ...

Řikal něco jako že za to strhne jen nějaký body, což zas naštvalo mě, protože sem se to snažil rovnou vymyslet celý a nemám, kdežto jinak bych to dal dohromady alespoň nějak, .. mno poučení pro příště, páč moc nedoufám.

gASK at 2006-06-08 22:20:10

hippies wrote:Řikal něco jako že za to strhne jen nějaký body, což zas naštvalo mě, protože sem se to snažil rovnou vymyslet celý a nemám, kdežto jinak bych to dal dohromady alespoň nějak, .. mno poučení pro příště, páč moc nedoufám.

Podle mne je to blbost.

Třeba u těch pokut se bez vnořenýho dotazu neobejdu:

SELECT jmeno FROM tabulka WHERE pokuta > ( SELECT AVG(pokuta) FROM tabulka )

Jak to udělam bez toho vnitřního SELECTu? He? Už s tím otravuju asi 10 lidí a nikdo neví....a to nejsou žádný lamy :twisted:

Dan at 2006-06-08 22:29:58

Jasne ze je to kravina bez vnorenyx selectu .. a keby to xcel bez nix tak to mal napisat do zadania ..

hippies at 2006-06-08 22:34:42

Dan wrote:Jasne ze je to kravina bez vnorenyx selectu .. a keby to xcel bez nix tak to mal napisat do zadania ..

taky to tam napsal, bylo tam jasně na jeden select.

bez vnoření je to takhle nějak, myslim:

SELECT a.jmeno, avg(b.pokuta) as c FROM tabulka as a, tabulka as b WHERE pokuta > c
gASK at 2006-06-08 23:03:15

hippies wrote:

Dan wrote:Jasne ze je to kravina bez vnorenyx selectu .. a keby to xcel bez nix tak to mal napisat do zadania ..

taky to tam napsal, bylo tam jasně na jeden select.

bez vnoření je to takhle nějak, myslim:

SELECT a.jmeno, avg(b.pokuta) as c FROM tabulka as a, tabulka as b WHERE pokuta > c

Chytré. Sakra chytré. :lol: Ale že by to s náma procvičili na cvičeních, to ne. Člověk si to má vycucat z prstu....

Jinak to zadání bylo skutečně dvojznačné - já to taky pochopil, jako že to má bejt jeden SELECT, kam už si můžu vnořovat co chci. Jestli to nedám, tak se ještě půjdu hádat :twisted: Kdo půjde se mnou?

EDIT: Právě odzkoušeno na MS SQL. Píše to, že nezná c....ergo to nejde....ale jde to takto:

SELECT     T1.id, T1.jmeno
FROM pokuty AS T1 CROSS JOIN pokuty AS T2
GROUP BY T1.id, T1.jmeno
HAVING      (AVG(T1.pokuta) > AVG(T2.pokuta))
hippies at 2006-06-08 23:23:31

gASK wrote:

hippies wrote: SELECT a.jmeno, avg(b.pokuta) as c FROM tabulka as a, tabulka as b WHERE pokuta > c

Chytré. Sakra chytré. :lol: Ale že by to s náma procvičili na cvičeních, to ne. Člověk si to má vycucat z prstu....

Jinak to zadání bylo skutečně dvojznačné - já to taky pochopil, jako že to má bejt jeden SELECT, kam už si můžu vnořovat co chci. Jestli to nedám, tak se ještě půjdu hádat :twisted: Kdo půjde se mnou?

EDIT: Právě odzkoušeno na MS SQL. Píše to, že nezná c....ergo to nejde....ale jde to takto:

SELECT     T1.id, T1.jmeno
FROM pokuty AS T1 CROSS JOIN pokuty AS T2
GROUP BY T1.id, T1.jmeno
HAVING      (AVG(T1.pokuta) > AVG(T2.pokuta))

Děkuju, i když to teda prej nechodí, ale podle mě by mělo, ostatně na slidech je tohle.

SELECT Lety.Společnost, SUM(Lety.Počet_cestujících), MIN(Q1. CelkováKapacita)
FROM Lety, (SELECT SUM(Kapacita) AS CelkováKapacita, Společnost  FROM Letadla GROUP BY Společnost) AS Q1WHERE Q1.Společnost = Lety.SpolečnostGROUP BY Lety.Společnost;
qwyxyo at 2006-06-08 23:52:31

hippies wrote:

gASK wrote:

Necroman wrote:kdepak, je to jeste horsi... :x

ad otazka 2.1:
ja to pochopil jen jako jen najit od kazdeho typu d. prostredku rekord v historii vsech dnu a ten rekord v poctu najetych km za jeden den vypsat, ne primo ten den a vozidlo :?:
myslim, ze to je fuk, tak jako tak to asi nemam :(

To je jedno jestli vyopisuješ jen rekord, nebo i vozidlo...jen o SELECT víc, no.

Celé to musí být na jeden SELECT, ale JOIN by to vyřešil;)

To, ze to musi byt na jeden select som pochopil tak, ze to mam robit bez vytvarania pohledov <=> nerozbijat na mensie casti. Akosi mi nedoslo, ze v celom dotaze ma byt PRAVE JEDEN SELECT :( Clovek je rad, ze aspon nieco mozno ma a nakoniec zisti, ze to mozno tak vobec nema. Snad sa Skopal poucil z prvopisomkovych chyb a prizmuri oci pri hodnoteni...

Hugo at 2006-06-09 00:56:39

Kdyz jsem se ptal Skopala po pisemce, jak bude znamkovat SQL dotazy, rikal, ze to nebude chyba a cely dotaz v cudu, ale, ze bude uznavat i vnorene poddotazy (chapu jako podselecty) a podobne - vzapeti se rozesmal pri pohledu na variantu A, ze kdyby to znamkoval chyba, priklad spatne, by asi s tim potrebnym minimem bodu moc lidi ty SQL dotazy nenapsalo:)
Na jeden Select chapu, ze muzou byt vnorene poddotazy, ale mozna nemuze byt Select... except Select... nebo neco takoveho, kdovi..
Minimalne kdyz se podivate na 2. SQL dotaz varianty A, tam bych ty tabulky asi musel udelat hodne rafinovane, abych to na jeden Select bez vnoreni zvladnul.:))

dr.Bik at 2006-06-09 00:58:43

Opravdu to jde bez vnorenejch SELECTu (dokonce MySQL az do verze snad 4.1 to vubec neumelo s tim, ze vsechno jde vyresit pomoci JOINu).

Na MySQL 5.0 funguje treba tohle (odzkouseno)

SELECT pasazeri.JMENO, pasazeri.POKUTA FROM pasazeri CROSS JOIN pasazeri AS pasazeri2 GROUP BY pasazeri.JMENO HAVING AVG(pasazeri.POKUTA) > AVG(pasazeri2.POKUTA);

Ja vam nevim, ale s tema vnorenejma selectama mi to prijde ponekud lidstejsi. Joiny jsou naprosto necitelny, kdyz to ma bejt neco slozitejsiho. Nejak mi nejde do hlavy, jak to bude opravovat...

No, abych joinum nekrivdil, treba jsou rychejsi, fakt nevim...

Jiste je jedno, pokud bude dalsi pisemka v tomto duchu, tak nevim, nevim :?

dr.Bik at 2006-06-09 01:19:31

Jinak, ten druhej SELECT z Acka. Taky to jde bez SELECTu, ale nechtejte vedet, jaka je to patlanina. Matlal jsem to 2 hodiny (a to jeste u pocitace s MySQL).

No, pokud ma varovani berete na lehkou vahu, tady je ten hnus

SELECT DISTINCT skolitel.JMENO FROM skolitel LEFT JOIN kurz ON kurz.RCS=skolitel.RCS LEFT JOIN jizda ON jizda.CK=kurz.CK LEFT JOIN vozidlo ON vozidlo.VCM=jizda.VCM LEFT JOIN vozidlo AS vozidlo2 ON vozidlo2.SKUPINA=vozidlo.SKUPINA GROUP BY skolitel.JMENO, kurz.SKUPINA HAVING AVG(vozidlo.STARI)>AVG(vozidlo2.STARI);

To s tim prave jednim SELECTem by radeji mela byt kachna :)

Hugo at 2006-06-09 01:25:03

ja nevim, jak vam, ale mne se zveda databazovy kybl..:)

gASK at 2006-06-09 10:13:29

dr.Bik wrote:

SELECT pasazeri.JMENO, pasazeri.POKUTA FROM pasazeri CROSS JOIN pasazeri AS pasazeri2 GROUP BY pasazeri.JMENO HAVING AVG(pasazeri.POKUTA) > AVG(pasazeri2.POKUTA);

Ja vam nevim, ale s tema vnorenejma selectama mi to prijde ponekud lidstejsi. Joiny jsou naprosto necitelny, kdyz to ma bejt neco slozitejsiho. Nejak mi nejde do hlavy, jak to bude opravovat...

No, abych joinum nekrivdil, treba jsou rychejsi, fakt nevim...

Jen jin klidně ukřivď.....nejsou.. :twisted:

Přesně totéž mi poslal i můj "SQL guru", co jsem se ho ptal na radu (nutno říct že asi po dvou hodinách přemýšlení) se slovy, že je to prasárna s hroznou složitosti (přeci jen přenásobuješ celou tabulku samu sebou), že on by to udělal na dva selecty a měl by to dřív a rychlejší....uvidíme, jak moc bude Skopal přísnej při opravě těch selectů.... :wink:

qk at 2006-06-10 09:30:04

JSOU VYSLEDKY!!!!
ja mam za 3 a sem rad, ze tenhle opruz uz nebudu absolvovat...zajimavy mam skore zkousek 3 zkousky 3x trojka :lol:

Leli at 2006-06-10 09:31:29

potvrzuju, mam v SISu uz taky zapsanou znamku.

Eubie at 2006-06-10 09:33:23

Taky hlásim, jedna jedna jedna:) A já se bál, že mě vyrazej.

Dan at 2006-06-10 10:10:43

Nakoniec to dopadlo v pohode :) tie dve hodinky ucenia rano pred skuskou stali za to ;-)

gASK at 2006-06-10 10:25:45

Nepotvrzuju - já nemám v SISu ještě nic, asi je teprve první várka nebo varianta A.

Jakou jste vy, úspěšní, měli variantu? :wink:

Eubie at 2006-06-10 10:38:25

Já sem byl B.

gASK at 2006-06-10 10:43:10

Eubie wrote:Já sem byl B.

Hm. Já též. Budu pravidelně kontrolovat... :wink:

qk at 2006-06-10 10:45:16

taky B

LuKu at 2006-06-10 11:17:14

Já jsem byla taky B a v SISu zatím nic :(

Dan at 2006-06-10 11:18:50

ja som bo tiezl B a mam vysledok ...

Che at 2006-06-10 11:20:15

A a zatím nic... :?

qwyxyo at 2006-06-10 11:21:03

Tiez som bol B a mam za 2 :) Super znamka potom, co som ocakaval. Oh happy day... Dufam, ze sa vsetci dnes takto potesia :D

gASK at 2006-06-10 11:25:29

Asi to tam Skopal píše jak to opravuje...

Za 2 :twisted:

Let the party begin!

twoflower at 2006-06-10 11:29:36

Rano kouknu do SISu, ctyrka :-( Tak hned pisu Skopalovi, jestli se muzu mrknout na chyby, ktere jsem tam napachal a on vzapeti odpovi, ze to byl preklep a mam za tri, huraaaaaaaaaaaa!!! :twisted:

qk at 2006-06-10 11:33:16

twoflower wrote:Rano kouknu do SISu, ctyrka :-( Tak hned pisu Skopalovi, jestli se muzu mrknout na chyby, ktere jsem tam napachal a on vzapeti odpovi, ze to byl preklep a mam za tri, huraaaaaaaaaaaa!!! :twisted:

si ho vystrasil ze se s nim budes hadat :lol:

LuKu at 2006-06-10 11:34:12

Já už mám taky výsledek. Za jedna! :D To je dneska už druhá skvělá zpráva, a to jsem vstávala před hodinou. Doufám, že to tak půjde dál :)

Necroman at 2006-06-10 12:10:40

Databaze za 3... jaj, jde se slavit :lol:
Btw. byl jsem A

Dawe at 2006-06-10 15:40:45

Hmmm... a já zase nic :-( Tak to už se ai nedočkám :-(

OjciPojci at 2006-06-10 15:51:35

ani ja tam este nic nemam..... ale kym nebude 4 v SISe tak (mala) nadej zije... :)

macbeth at 2006-06-10 17:36:59

tak napiste aspon ake ste vymysleli ER schemy, nech sa aj my potesime :)

laliebijard at 2006-06-11 12:41:24

Co je to za logiku? Naco sme brali nested queries, ked to v skuske "zakazu" pouzivat?

Ved proste bez toho sa pri zlozitejsich dotazov neda zaobist, aby to bolo citatelne a upravovat schemu kvoli potrebam dotazovania bez vnorenych dotazov mi nepride ako problem z praxe a na tu by nas prave mala tato skola pripravovat.

Eubie at 2006-06-11 12:54:01

Nevim, odkud se vzalo, že jsme nemohli používat vnořený dotazy, já je použil a místo "jeden select na dotaz" jsem napsal svojí B2.1 jaký čtyři jednoduché selecty spojené unionem, B2.2 jsem napsal jako megahnusnej dotaz se třema vnořenýma selectama a mám za jedna.

gASK at 2006-06-11 13:43:49

hippies wrote:Však samozřejmě, speciálně sem se na to ptal a chtěli aby v celim dotazu bylo slovo SELECT prave jednou.

Tady se ta fáma vzala.

:twisted:

Tak co? Ukamenujem ho nebo jak? :lol:

OjciPojci at 2006-06-11 16:03:20

Neviete dokedy maju byt nejake konecne vysledky - tj zoznam ludi ktori nespravili alebo aspon zapisane stvorky v SISe???
Uz ma to cakanie pomaly prestava bavit a rad by som sa dozvedel vysledok... :twisted: ...lubovolny :)
[/i]

Angel at 2006-06-12 13:09:19

Letosni zkouskove je cele ve znameni cekani... takze si zvykej ;-).

Hugo at 2006-06-12 14:39:19

tenhle semestr je to fakt na padnuti (take stale cekam na databaze), jakoby by byl primarni cil tohoto semestru naucit zaky trpelivosti. A to jeste nebyla zkouska z logiky.. :)

Maca at 2006-06-12 15:23:04

Hm, take cekam :( Dokonce jsem vcera napsal Skopalovi, ale jeste se neozval :cry: Jen tak mimochodem, uz nekdo dostal do SISu 4ku? Zacinam totiz mit takove neblahe tuseni... ale co, nadeje umira posledni :)

jj0uDa at 2006-06-12 18:07:24

Tak jen, ze opravovani pokracuje, tedka se mi objevila znamka. Takze v klidu, urcite se dockate. A doufam, ze pozitivniho vysledku, jako ja :)

OjciPojci at 2006-06-12 18:24:11

Hura, aj to uz mam tam :) a tiez pozitiv :)

Angel at 2006-06-12 19:00:33

Ja uz ji tam mam taky, negativni, ale ja to cekal, takze je me to fuk :).

Dawe at 2006-06-12 20:10:31

NO já čekal 4 a mám dva supeeeeeeerrrrrr!!!!! Tak se mi zase jednou něco zadařilo :-)

Maca at 2006-06-12 20:35:27

Uf, nejdřív 3 góly Američanům a teď ještě 3 z DB :D Skoro to vypadá, že si zapisující vzal notebook k televizi ;)

A já už chtěl jít zítra na druhý termín...

Tuetschek at 2006-06-12 22:31:04

Zkousel jsem uplacat ty SQL dotazy,
muzete mi to nekdo pls zkritizovat? :roll: :?:

A)

CREATE TABLE autoskola( rč INT, jm VARCHAR(20), vek INT, skupina INT, najeto INT );

SELECT as1.rč, MIN(as1.jm) FROM autoskola AS as1, autoskola AS as2 WHERE as1.vek > 30 GROUP BY
as1.rč, as1.skupina HAVING ( MIN( as1.najeto ) > AVG( as2.najeto ) );


CREATE TABLE vozidlo( idv INT, typ VARCHAR( 20 ), stari INT );
CREATE TABLE cvicjizda( idv INT, ids INT, idz INT, cas DATETIME );

SELECT cv.ids FROM cvicjizda AS cv, vozidlo AS v1, vozidlo AS v2 
WHERE cv.idv = v1.idv 
GROUP BY cv.ids
HAVING AVG( v1.stari ) > AVG( v2.stari );

B)

CREATE TABLE sluzba( den DATETIME, vozid INT, ridid INT, km INT );
CREATE TABLE ridic( jm VARCHAR(20), druh INT, rc INT );
CREATE TABLE vuz( vozid INT, druh INT, linkaid INT );
CREATE TABLE zastavka( linkaid INT, zastnazev VARCHAR(20) );
CREATE TABLE revizor( rc INT, jm VARCHAR(20) );
CREATE TABLE cerny_pasazer( rc INT, jm VARCHAR(20), celk_dluh INT );
CREATE TABLE pokuta( pokutid INT, revizrc INT, cprc INT, den DATETIME );

SELECT v.druh, MAX( sl.km ) FROM sluzba AS sl, vuz AS v
WHERE sl.vozid = v.vozid 
GROUP BY v.druh

SELECT cerny1.rc FROM cerny_pasazer AS cerny1, cerny_pasazer AS cerny2, pokuta AS p1, pokuta AS p2
WHERE p1.pokutid <> p2.pokutid AND p1.den = p2.den AND p1.cprc = p2.cprc AND cerny1.rc = p1.cprc
GROUP BY cerny1.rc
HAVING MIN( cerny1.celk_dluh ) > AVG( cerny2.celk_dluh ) -- slo by snad i s group by celk_dluh a bez MIN
Tuetschek at 2006-06-12 22:33:46

Jeste jeden blbej dotaz ... byl by tady rozdil kdyby tu byly
jiny nez LEFT JOINy? (OUTER, INNER, RIGHT)?

dr.Bik wrote: No, pokud ma varovani berete na lehkou vahu, tady je ten hnus

SELECT DISTINCT skolitel.JMENO FROM skolitel LEFT JOIN kurz ON kurz.RCS=skolitel.RCS LEFT JOIN jizda ON jizda.CK=kurz.CK LEFT JOIN vozidlo ON vozidlo.VCM=jizda.VCM LEFT JOIN vozidlo AS vozidlo2 ON vozidlo2.SKUPINA=vozidlo.SKUPINA GROUP BY skolitel.JMENO, kurz.SKUPINA HAVING AVG(vozidlo.STARI)>AVG(vozidlo2.STARI);
dr.Bik at 2006-06-12 23:57:15

Tuetschek wrote:Jeste jeden blbej dotaz ... byl by tady rozdil kdyby tu byly
jiny nez LEFT JOINy? (OUTER, INNER, RIGHT)?

dr.Bik wrote: No, pokud ma varovani berete na lehkou vahu, tady je ten hnus

SELECT DISTINCT skolitel.JMENO FROM skolitel LEFT JOIN kurz ON kurz.RCS=skolitel.RCS LEFT JOIN jizda ON jizda.CK=kurz.CK LEFT JOIN vozidlo ON vozidlo.VCM=jizda.VCM LEFT JOIN vozidlo AS vozidlo2 ON vozidlo2.SKUPINA=vozidlo.SKUPINA GROUP BY skolitel.JMENO, kurz.SKUPINA HAVING AVG(vozidlo.STARI)>AVG(vozidlo2.STARI);

Hmm, ja se pokusim, ale sam v tech druzich joinu nejsem zrovna kovanej. To, jakej join tam napises, potom ovlivnuje zpusob, jakym se bude postupovat v pripade, ze pro nejaky radek z jedny tabulky se nenajde takovej radek z druhy, aby platila podminka ON ... (pripad LEFT(a symetricky RIGHT) pouzivam, pac vim, ze se v pripade nenalezeni spojeni 2 radku doplni zbytek hodnotama NULL)

Opravte me nekdo, pokud se mylim (v tom pripade do zitrejsi zkousky :) )

lukumo at 2006-06-13 00:25:52

Tuetschek wrote:Zkousel jsem uplacat ty SQL dotazy,
muzete mi to nekdo pls zkritizovat? :roll: :?:

A)

CREATE TABLE autoskola( rč INT, jm VARCHAR(20), vek INT, skupina INT, najeto INT );

SELECT as1.rč, MIN(as1.jm) FROM autoskola AS as1, autoskola AS as2 WHERE as1.vek > 30 GROUP BY
as1.rč, as1.skupina HAVING ( MIN( as1.najeto ) > AVG( as2.najeto ) );


CREATE TABLE vozidlo( idv INT, typ VARCHAR( 20 ), stari INT );
CREATE TABLE cvicjizda( idv INT, ids INT, idz INT, cas DATETIME );

SELECT cv.ids FROM cvicjizda AS cv, vozidlo AS v1, vozidlo AS v2 
WHERE cv.idv = v1.idv 
GROUP BY cv.ids
HAVING AVG( v1.stari ) > AVG( v2.stari );

No u toho A1 mi nejak nesedi to grupovani. Nestacilo by neco jako:

SELECT as1.rc,as1.skupina FROM autoskola as a1 WHERE as1.vek > 30 AND
as1.najeto > (SELECT AVG(as2.najeto) FROM autoskola as as2 WHERE as1.skupina = as2.skupina)

(Pokud to chapu dobre a v te tabulce je klicem (rc,skupina) ... osoba muze navstevovat vice kurzu.)

K A2 uz nemam silu zkoumat logiku toho zapisu (tudiz nic netvrdim o spravnosti), ale ja bych na to sel asi takhle:
(chybi mi tam tabulka pro skolitele)

SELECT skolitele.rc FROM skolitele,cvicjizdy,vozidlo as v1 WHERE skolitele.rc = cvicjizdy.ids AND cvicjizdy.idv = vozidlo.idv
GROUP BY skolitele.rc HAVING AVG(v1.stari) > (SELECT AVG(stari) FROM vozidla)

-- tedy nejprve ke kazdemu skoliteli prilepim jeho jizdy a ke kazde jizde si pridam informace o vozidlu,
se kterym se jizda udala. Potom udelam "superradek" pro skolitele a udelam prumer stari vozidel, se kterymi
jezdil a porovnam to s prumernym vekem vsech vozidel ...

dobrou noc :)

Hugo at 2006-06-13 00:40:15

Mne v jedne hospode prisel mail, zmena studijnich vysledku a v jinem "hudebnim klubu" jsem dostal k netu a parada, hned se to rozjelo...:o)

Tuetschek: V pisemce bylo explicitne recene, ze nemas pouzivat Create table a spol. Uzivat jen relacni zapis..

bilbo at 2006-06-13 08:47:15

Ahoj,
prave som narazil na 22. slajd z prednasky 09.ppt. Je tam napisane, ze uzly precedencneho grafu su tvorene len potvrdenymi transakciami.
V pisomke B skupiny mi vysiel graf s cyklom, ked som zahrnul aj abortovanu transakciu T1, ale ked si ten graf nakreslim len s potvrdenymi transakciami, tak tam ziadny cyklus nevznika.
Neviete, ako to ma byt spravne?

macbeth at 2006-06-13 08:55:21

bilbo wrote:Ahoj,
prave som narazil na 22. slajd z prednasky 09.ppt. Je tam napisane, ze uzly precedencneho grafu su tvorene len potvrdenymi transakciami.
V pisomke B skupiny mi vysiel graf s cyklom, ked som zahrnul aj abortovanu transakciu T1, ale ked si ten graf nakreslim len s potvrdenymi transakciami, tak tam ziadny cyklus nevznika.
Neviete, ako to ma byt spravne?

Ja som si to tiez vsimol, a myslim, ze Skopal tam ma tucne napisane, ze sa zakresluju len ukoncene transakcie, tak by som hadal, ze nezakreslovat...

Ako ste to riesili vy, co ste boli na pisomke?

Dawe at 2006-06-13 09:10:41

No já to tam psal skoro určitě všechno, to ale samozřejmě neznamená, že jsem to měl dobře. Jenže to těžko někdo zjistí, jak to mělo být, když už písemku nikdo asi neuvidí.

bilbo at 2006-06-13 09:10:43

Takze odpoved na moju otazku by mala byt, ze do precedencneho grafu sa kreslia len commitovane transakcie.
http://www.dis.uniroma1.it/~catarci/DBs ... sld017.htm

qwertie at 2006-06-13 09:22:11

Ahoj, nechteli byste sem nekdo naznacit ty ER, pripadne napsat co vsechno v nich vyzadoval? dik...

macbeth at 2006-06-13 09:27:12

ja som nasiel aj slajdy s tymto:

for each transaction Ti participating in schedule S create a node labelled Ti in the precedence graph

:?

gASK at 2006-06-13 09:41:54

qwertie wrote:Ahoj, nechteli byste sem nekdo naznacit ty ER, pripadne napsat co vsechno v nich vyzadoval? dik...

Mno, tak tady jsem ráno nakreslil jak vypadal můj. Nevím, jestli je nejlepší, nevím, jestli prošel....každopádně mám za dva, to jediné vím. :twisted:

Attachments:

qwertie at 2006-06-13 09:44:45

diky moc tisicekrat...

Tuetschek at 2006-06-13 10:39:39

bilbo wrote:Ahoj,
prave som narazil na 22. slajd z prednasky 09.ppt. Je tam napisane, ze uzly precedencneho grafu su tvorene len potvrdenymi transakciami.
V pisomke B skupiny mi vysiel graf s cyklom, ked som zahrnul aj abortovanu transakciu T1, ale ked si ten graf nakreslim len s potvrdenymi transakciami, tak tam ziadny cyklus nevznika.
Neviete, ako to ma byt spravne?

Diky za ten link, hadal bych ale ze v tomhle pripade i kdyz kreslis jen commitovane transakce tak ti vznikne cyklus:

T3 --> T2 WW (A)
T2 --> T4 RW (C)
T4 --> T3 RW (B)

Nebo kecam a kdyz T1 mezitim do A zapise tak se tim konflikt zrusi? :?

Trupik at 2006-06-13 11:30:32

Mno, tak tady jsem ráno nakreslil jak vypadal můj. Nevím, jestli je nejlepší, nevím, jestli prošel....každopádně mám za dva, to jediné vím. :twisted:

V druhém dotaze se mají vypsat pasažéři, kteří byli chyceni 2x za den, takže v relaci chytil musí být i datum chycení. Dál se mi moc nelíbí atribut dluh u pasažéra - po převedení na tabulky by to asi vypadalo tak, že revizor, černý pasažér a chytil budou tři tabulky a při zanesení nového "chycení" - tedy záznamu do tabulky chytil se bude muset aktualizovat atribut dluh u černého pasažéra - a to je aktualizační anomálie - při aktualizaci dat u jedné entity se musí aktualizovat data u ostatních entit. Takže bych atribut dluh zrušil a ke vztahu chytil přidal atributy datum, pokuta, zaplaceno (ano/ne). Celkový dluh by se pak zjišťoval součtem všech pokut daného pasažéra, které nejsou zaplacené.

A ještě mi IMHO přijde zbytečné dělat jednoho předka osoba pro černé pasažéry, revizory a řidiče. Černý pasažér totiž nemá s ostatními nic společného. Revizor a řidič by mohli mít společného předka třeba Zaměstnanec - ten by mohl mít kromě RČ také atribut mzda (tu tvůj řidič nemá) a případné další atributy.

gASK at 2006-06-13 11:47:10

Trupik wrote: V druhém dotaze se mají vypsat pasažéři, kteří byli chyceni 2x za den, takže v relaci chytil musí být i datum chycení.

Zapomněl jsem to tam dodat, samozřejmě že tam bylo datum a čas. Tak si představte, že to tam je. :twisted:

Trupik wrote:Dál se mi moc nelíbí atribut dluh u pasažéra - po převedení na tabulky by to asi vypadalo tak, že revizor, černý pasažér a chytil budou tři tabulky a při zanesení nového "chycení" - tedy záznamu do tabulky chytil se bude muset aktualizovat atribut dluh u černého pasažéra - a to je aktualizační anomálie - při aktualizaci dat u jedné entity se musí aktualizovat data u ostatních entit. Takže bych atribut dluh zrušil a ke vztahu chytil přidal atributy datum, pokuta, zaplaceno (ano/ne). Celkový dluh by se pak zjišťoval součtem všech pokut daného pasažéra, které nejsou zaplacené.

To mne nenapadlo - ta část zaplaceno (ano/ne). Máš pravdu, to je jednoznačně lepší řešení.

Trupik wrote:A ještě mi IMHO přijde zbytečné dělat jednoho předka osoba pro černé pasažéry, revizory a řidiče. Černý pasažér totiž nemá s ostatními nic společného. Revizor a řidič by mohli mít společného předka třeba Zaměstnanec - ten by mohl mít kromě RČ také atribut mzda (tu tvůj řidič nemá) a případné další atributy.

Podle mne to zbytečné není - můžeš tam mít uvedeny další údaje - číslo OP, jméno, bydliště atd, což budeš asi potřebovat jak u svých zaměstanců, tak u dlužníků, ne? - jasně, že pak se hodí rozšířit ji u zaměstanců o další údaje. Ty jsem tam pochopitelně nepsal, já tam psal jen ty, co se hodí pak v SQL dotazování + nějaké další jako "příklady".

macbeth at 2006-06-13 11:53:23

Trupik wrote: Dál se mi moc nelíbí atribut dluh u pasažéra...

...ten je tam podla mna velmi prijemny vzhladom na priklad 2.2, ale z db hladiska je ozaj nedobry...

Trupik at 2006-06-13 11:55:16

Podle mne to zbytečné není - můžeš tam mít uvedeny další údaje - číslo OP, jméno, bydliště atd, což budeš asi potřebovat jak u svých zaměstanců, tak u dlužníků, ne? - jasně, že pak se hodí rozšířit ji u zaměstanců o další údaje. Ty jsem tam pochopitelně nepsal, já tam psal jen ty, co se hodí pak v SQL dotazování + nějaké další jako "příklady".

Jo, to platí v E-R ale při převodu na relace se stejně musí ISA hierarchie eliminovat...

gASK at 2006-06-13 11:58:28

Trupik wrote:Jo, to platí v E-R ale při převodu na relace se stejně musí ISA hierarchie eliminovat...

Mno to je jasný :wink:

Ale ten ER diagram to zjednodušší a to je její účel. Taky je tam proto, abych ukázal, že ji umím použít, no ne? :twisted:

bilbo at 2006-06-13 12:28:22

Tuetschek wrote:

bilbo wrote:Ahoj,
prave som narazil na 22. slajd z prednasky 09.ppt. Je tam napisane, ze uzly precedencneho grafu su tvorene len potvrdenymi transakciami.
V pisomke B skupiny mi vysiel graf s cyklom, ked som zahrnul aj abortovanu transakciu T1, ale ked si ten graf nakreslim len s potvrdenymi transakciami, tak tam ziadny cyklus nevznika.
Neviete, ako to ma byt spravne?

Diky za ten link, hadal bych ale ze v tomhle pripade i kdyz kreslis jen commitovane transakce tak ti vznikne cyklus:

T3 --> T2 WW (A)
T2 --> T4 RW (C)
T4 --> T3 RW (B)

Nebo kecam a kdyz T1 mezitim do A zapise tak se tim konflikt zrusi? :?

Ano, mas pravdu, ja som si to vobec nevsimol. Ospravedlnujem sa za pripadne zmatenie.

Dawe at 2006-06-13 12:37:03

Radím jen všem, aby si důkladně přečetly dotazy v 2) příkladě a pak řešily diagram.Já jsem to jen tak prolít, pak jsem nakreslil diagram, a vznikaly mi tam pak vztahový tabulky se 4 přípojema a tak. Což asi není nejlepší. No ale zase se na to dobře píšou ty dotazy, všechno se spojí a pak se vybere co je potřeba. Mám 2, a ten diagram jsem měl fakt strašnej, ale neměl jsem moc času řešit aby byl hezčí.