# [zk]6.6.2006 aneb pokusní králíci

<{ForumPost(poster="gASK", timestamp=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.
<{/ForumPost}>

<{ForumPost(poster="MIKI", timestamp=2006-06-06 15:40:17)}>
:roll:   
Tak to si asi robia srandu! :?
<{/ForumPost}>

<{ForumPost(poster="qk", timestamp=2006-06-06 16:14:17)}>
pismeka pry bude do tydne v sisu  
u transakce minimum je 20!
<{/ForumPost}>

<{ForumPost(poster="Necroman", timestamp=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 :(
<{/ForumPost}>

<{ForumPost(poster="gASK", timestamp=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.
<{/ForumPost}>

<{ForumPost(poster="qk", timestamp=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:
<{/ForumPost}>

<{ForumPost(poster="qk", timestamp=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


<{/ForumPost}>

<{ForumPost(poster="twoflower", timestamp=2006-06-06 16:28:50)}>
Byl jsem...zaskocen. Nejspis to nemam, ale bylo by super, kdyby to opravili driv nez za tyden :-/
<{/ForumPost}>

<{ForumPost(poster="Trupik", timestamp=2006-06-06 16:36:02)}>
Fakt žádná sláva.   
  
Tak fotku davam pryc, kdyztak na zadani na skopalovy stranky
<{/ForumPost}>

<{ForumPost(poster="qk", timestamp=2006-06-06 16:44:24)}>
jo je ten rozvrh zotavitelny nebo ne??? a jak ma pripadne vypadat aby byl zotavitelny?
<{/ForumPost}>

<{ForumPost(poster="zapo", timestamp=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](http://urtax.ms.mff.cuni.cz/~skopal/DBI025.htm)
<{/ForumPost}>

<{ForumPost(poster="twoflower", timestamp=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.
<{/ForumPost}>

<{ForumPost(poster="luk", timestamp=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 :(
<{/ForumPost}>

<{ForumPost(poster="qwyxyo", timestamp=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...
<{/ForumPost}>

<{ForumPost(poster="jj0uDa", timestamp=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.
<{/ForumPost}>

<{ForumPost(poster="Leli", timestamp=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.
<{/ForumPost}>

<{ForumPost(poster="Angel", timestamp=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.
<{/ForumPost}>

<{ForumPost(poster="qk", timestamp=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)
<{/ForumPost}>

<{ForumPost(poster="Lada", timestamp=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... ;)
<{/ForumPost}>

<{ForumPost(poster="Eubie", timestamp=2006-06-07 18:03:01)}>
Už má někdo símvás výsledek zapsanej v SISu?
<{/ForumPost}>

<{ForumPost(poster="gASK", timestamp=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ěť...
<{/ForumPost}>

<{ForumPost(poster="Hugo", timestamp=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..
<{/ForumPost}>

<{ForumPost(poster="Almer", timestamp=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:))
<{/ForumPost}>

<{ForumPost(poster="hippies", timestamp=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;)
<{/ForumPost}>

<{ForumPost(poster="gASK", timestamp=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:
<{/ForumPost}>

<{ForumPost(poster="hippies", timestamp=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.
<{/ForumPost}>

<{ForumPost(poster="gASK", timestamp=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 ...
<{/ForumPost}>

<{ForumPost(poster="hippies", timestamp=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.
<{/ForumPost}>

<{ForumPost(poster="gASK", timestamp=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:
<{/ForumPost}>

<{ForumPost(poster="Dan", timestamp=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 ..
<{/ForumPost}>

<{ForumPost(poster="hippies", timestamp=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


<{/ForumPost}>

<{ForumPost(poster="gASK", timestamp=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))
    


<{/ForumPost}>

<{ForumPost(poster="hippies", timestamp=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;
    


<{/ForumPost}>

<{ForumPost(poster="qwyxyo", timestamp=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...
<{/ForumPost}>

<{ForumPost(poster="Hugo", timestamp=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.:))
<{/ForumPost}>

<{ForumPost(poster="dr.Bik", timestamp=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 :?
<{/ForumPost}>

<{ForumPost(poster="dr.Bik", timestamp=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  :)
<{/ForumPost}>

<{ForumPost(poster="Hugo", timestamp=2006-06-09 01:25:03)}>
ja nevim, jak vam, ale mne se zveda databazovy kybl..:)
<{/ForumPost}>

<{ForumPost(poster="gASK", timestamp=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:
<{/ForumPost}>

<{ForumPost(poster="qk", timestamp=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:
<{/ForumPost}>

<{ForumPost(poster="Leli", timestamp=2006-06-10 09:31:29)}>
potvrzuju, mam v SISu uz taky zapsanou znamku.
<{/ForumPost}>

<{ForumPost(poster="Eubie", timestamp=2006-06-10 09:33:23)}>
Taky hlásim, jedna jedna jedna:) A já se bál, že mě vyrazej.
<{/ForumPost}>

<{ForumPost(poster="Dan", timestamp=2006-06-10 10:10:43)}>
Nakoniec to dopadlo v pohode :) tie dve hodinky ucenia rano pred skuskou stali za to ;-)
<{/ForumPost}>

<{ForumPost(poster="gASK", timestamp=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:
<{/ForumPost}>

<{ForumPost(poster="Eubie", timestamp=2006-06-10 10:38:25)}>
Já sem byl B.
<{/ForumPost}>

<{ForumPost(poster="gASK", timestamp=2006-06-10 10:43:10)}>

 > Eubie wrote:Já sem byl B.

Hm. Já též. Budu pravidelně kontrolovat... :wink:
<{/ForumPost}>

<{ForumPost(poster="qk", timestamp=2006-06-10 10:45:16)}>
taky B
<{/ForumPost}>

<{ForumPost(poster="LuKu", timestamp=2006-06-10 11:17:14)}>
Já jsem byla taky B a v SISu zatím nic :(
<{/ForumPost}>

<{ForumPost(poster="Dan", timestamp=2006-06-10 11:18:50)}>
ja som bo tiezl B a mam vysledok ...
<{/ForumPost}>

<{ForumPost(poster="Che", timestamp=2006-06-10 11:20:15)}>
A a zatím nic... :?
<{/ForumPost}>

<{ForumPost(poster="qwyxyo", timestamp=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
<{/ForumPost}>

<{ForumPost(poster="gASK", timestamp=2006-06-10 11:25:29)}>
Asi to tam Skopal píše jak to opravuje...  
  
Za 2 :twisted:   
  
Let the party begin!
<{/ForumPost}>

<{ForumPost(poster="twoflower", timestamp=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:
<{/ForumPost}>

<{ForumPost(poster="qk", timestamp=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:
<{/ForumPost}>

<{ForumPost(poster="LuKu", timestamp=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 :)
<{/ForumPost}>

<{ForumPost(poster="Necroman", timestamp=2006-06-10 12:10:40)}>
Databaze za 3... jaj, jde se slavit  :lol:   
Btw. byl jsem A
<{/ForumPost}>

<{ForumPost(poster="Dawe", timestamp=2006-06-10 15:40:45)}>
Hmmm... a já zase nic :-( Tak  to už se ai nedočkám :-(
<{/ForumPost}>

<{ForumPost(poster="OjciPojci", timestamp=2006-06-10 15:51:35)}>
ani ja tam este nic nemam..... ale kym nebude 4 v SISe tak (mala) nadej zije...  :)
<{/ForumPost}>

<{ForumPost(poster="macbeth", timestamp=2006-06-10 17:36:59)}>
tak napiste aspon ake ste vymysleli ER schemy, nech sa aj my potesime :)
<{/ForumPost}>

<{ForumPost(poster="laliebijard", timestamp=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.
<{/ForumPost}>

<{ForumPost(poster="Eubie", timestamp=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.
<{/ForumPost}>

<{ForumPost(poster="gASK", timestamp=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:
<{/ForumPost}>

<{ForumPost(poster="OjciPojci", timestamp=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]
<{/ForumPost}>

<{ForumPost(poster="Angel", timestamp=2006-06-12 13:09:19)}>
Letosni zkouskove je cele ve znameni cekani... takze si zvykej ;-).
<{/ForumPost}>

<{ForumPost(poster="Hugo", timestamp=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.. :)
<{/ForumPost}>

<{ForumPost(poster="Maca", timestamp=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   :)
<{/ForumPost}>

<{ForumPost(poster="jj0uDa", timestamp=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 :)
<{/ForumPost}>

<{ForumPost(poster="OjciPojci", timestamp=2006-06-12 18:24:11)}>
Hura, aj to uz mam tam :) a tiez pozitiv :)
<{/ForumPost}>

<{ForumPost(poster="Angel", timestamp=2006-06-12 19:00:33)}>
Ja uz ji tam mam taky, negativni, ale ja to cekal, takze je me to fuk :).
<{/ForumPost}>

<{ForumPost(poster="Dawe", timestamp=2006-06-12 20:10:31)}>
NO já čekal 4 a mám dva supeeeeeeerrrrrr!!!!! Tak se mi zase jednou něco zadařilo :-)
<{/ForumPost}>

<{ForumPost(poster="Maca", timestamp=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...
<{/ForumPost}>

<{ForumPost(poster="Tuetschek", timestamp=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
    


<{/ForumPost}>

<{ForumPost(poster="Tuetschek", timestamp=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);

<{/ForumPost}>

<{ForumPost(poster="dr.Bik", timestamp=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 :) )
<{/ForumPost}>

<{ForumPost(poster="lukumo", timestamp=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 :)
<{/ForumPost}>

<{ForumPost(poster="Hugo", timestamp=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..
<{/ForumPost}>

<{ForumPost(poster="bilbo", timestamp=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?
<{/ForumPost}>

<{ForumPost(poster="macbeth", timestamp=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?
<{/ForumPost}>

<{ForumPost(poster="Dawe", timestamp=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í.
<{/ForumPost}>

<{ForumPost(poster="bilbo", timestamp=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](http://www.dis.uniroma1.it/~catarci/DBslides/Mod6L1LT/sld017.htm)
<{/ForumPost}>

<{ForumPost(poster="qwertie", timestamp=2006-06-13 09:22:11)}>
Ahoj, nechteli byste sem nekdo naznacit ty ER, pripadne napsat co vsechno v nich vyzadoval? dik...
<{/ForumPost}>

<{ForumPost(poster="macbeth", timestamp=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

 :?
<{/ForumPost}>

<{ForumPost(poster="gASK", timestamp=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:*

- *![schema](/NDBI025/Zkou%C5%A1ka%202006-06-06/schema.bmp)*

<{/ForumPost}>

<{ForumPost(poster="qwertie", timestamp=2006-06-13 09:44:45)}>
diky moc tisicekrat...
<{/ForumPost}>

<{ForumPost(poster="Tuetschek", timestamp=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?  :?
<{/ForumPost}>

<{ForumPost(poster="Trupik", timestamp=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.
<{/ForumPost}>

<{ForumPost(poster="gASK", timestamp=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".
<{/ForumPost}>

<{ForumPost(poster="macbeth", timestamp=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...
<{/ForumPost}>

<{ForumPost(poster="Trupik", timestamp=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...
<{/ForumPost}>

<{ForumPost(poster="gASK", timestamp=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:
<{/ForumPost}>

<{ForumPost(poster="bilbo", timestamp=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.
<{/ForumPost}>

<{ForumPost(poster="Dawe", timestamp=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čí.
<{/ForumPost}>

