Autor Zpráva
unlucky
Profil
Drive jsem ve skole resil priklad, kdy ucitel mohl ucit ve vice tridach, max 6. Udelal jsem tedy 2 tabulky

Ucitel

idUcitele jmeno vyuka1, vyuka2...vyuka8
1 martin 2 3 ... 9
2 ivana  3 4 ... 7

Tridy
idTridy nazev
2 fsdf
3 45
4 fds

Uz je to celkem dlouho a na tenhle priklad jsem zapomnel, tak se chci zeptat, zda je to spravne. A jak vybrat ucitele a zobrazit nazvy trid?
jenikkozak
Profil
unlucky:
Lepší by byly tři tabulky - učitelé, třídy a výuka, která by obsahovala id učitele a id třídy.
Someone
Profil
unlucky:
Toto je samozřejmě špatný návrh. V tomto případě se již nejedná o 1:N ale o M:N, kde správným řešením je třetí tabulka, která bude obsahovat id učitele a id třídy ve které učí (viz. [#2] jenikkozak).

Návrh poté vypadá asi takto

    učitelé
ID | JMENO
 1 |  Novák
 2 | Smetana

    třídy
ID | NAZEV
 1 | prima
 2 | sekunda
 3 | tercie

    výuka
ID_UCITELE | ID_TRIDY
      1                   2        // tento záznam značí, že učitel Novák učí ve třídě sekunda
      1                   3       // Novák v tercii
      2                   1       // Smetaan v primě
unlucky
Profil
a jak by vypadal dotaz, kde bych zobrazil ucitele + vsechny jeho tridy?
Kajman
Profil
SELECT u.*,
       t.nazev trida
FROM   uzitele u
       JOIN vyuka v
         ON u.id = v.id_ucitele
       JOIN tridy t
         ON v.id_tridy = t.id
WHERE  u.id = 1

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: