Autor Zpráva
Forseti
Profil
No nevím jak bych to přesně popsal tak uvedu rovnou příklad:

1. mám chovatele, kteří chovají různé druhy papoušků
2. mám různé druhy papoušků, přičemž jeden druh papouška může chovat více chovatelů

no a můj problém je, že jaksi nevím jak sestavit tabulky. U klasických relací 1:1 a 1:N bych si věděl rady, ale u N:N mě nějak nenapadá jak na to (a asi to taky není moc dobrý nápad dělat něco takového). Leda udělat tabulku s chovateli a pro každého chovatele udělat tabulku s papoušky a svázat to, ale to je podle mě celkem nesmyslné.

V budoucnu by mělo být možné vyhledávání kdo chová určitý druh papouška a co chový který chovatel. proto nechci dávat papoušky u chovatelů do pole.

Uvažoval jsem nějak takhle:

tabulka chovatele:

id
jmeno
id_papouska
...


tabulka papousci:

id
rod
druh
...


ale to by podle mě neřešilo moji situaci, nebo jo??? Teď mě tak napadlo tam vkládat další řádky a měnit jenom id_papouska, nebo udělat další tabulku jenom na přiřazení chovatele k papouškovi
id id_chovatele id_papouska
1  1                   1
2  1                   2
3  1                   3
4  2                   1
5  2                   5
...



PS: s databázemi začínám
Kajman_
Profil *
Ano, většinou se to řeší zmíněnou třetí tabulkou. Často se ve třetí tabulce nepoužívá id řádku, ale jako primární klíč slouží kombinace obouch id. Jen v případě, že chcete mít nějak informaci o opřesném jednom papouškovi (datum narození, pohlaví, barva) tak se takové id hodí. Jinak by stačilo přidat sloupeček s počtem kusů tědlech papoušků daného chovatele.
Apacuka
Profil
mam to nejak podobne, akorat ne s papouskama :)

chovatele - id, jmeno
papousci - id, rod, druh, chovatel_id

// co chova ktery chovatel
$result = mysql_query("SELECT * FROM papousci LEFT JOIN chovatele ON chovatele.id = papousci.chovatel_id WHERE chovatel_id");
while ($row = mysql_fetch_array($result)) {
echo "$row["jmeno"] - $row["druh"]";
}
Forseti
Profil
děkuju, ta třetí tabulka bude asi ideální i s tím zmíněným počtem papoušků
Toto téma je uzamčeno. Odpověď nelze zaslat.