Autor Zpráva
František
Profil *
Ahoj, rozhodl jsem se na svém webu vytvořit klasickou tipovačku na zápasy 1. ligy. Navrhl jsem databázi se snahou vyhnout se duplikacím dat. Zde je mé schéma databáze: Schéma db

Tento návrh jsem dělal v Case studiu (Toad Data Modeler). Tabulka tip_zapas je vazební tabulkou a je tvořena 4 cizími klíči, a protože je sama dále ve ztahu 1:N s tabulkou tip_vysledky_zapasu a M:N s tabulkou tip_tipujici, tak se její 4 klíče dostávají do dalších tabulek.

Moje otázka zní: Je regulérní naddimenzovat tuto tabulku nějakým primárním klíčem id_zapas a ten poté vkládat do ostatních tabulek namísto těch 4 cizích klíčů?

Např. v tabulce tip_tipy by tak místo 5 cizích klíčů byly jen dva: id_tipujici a právě onen id_zapas a ušetřilo by se tím místo v db.
Mastodont
Profil
Určitě ano. kromě toho nevím, proč máš v tip_zapas i id_sezony, když neukazuje do sousední tabulky. Stačí id_kola.
ppw
Profil
case studio má 2 typy vazeb - zjednudušeně čárkovaná a plná. když použiješ plnou, tak PK z jedné tab. se ti ukáže jako PFK v druhé tab. Zkus si ten samý návrh udělat s těma "čárkovanýma" vazbama (snad se tomu říká nonidentifiying) a dopadne to úplně jinak:

tip_zapas
-----------
id_zapas (PK)
id_tymu_domaci (FK)
id_tymu_hoste (FK)
id_kola (FK)
goly_domaci
goly_hostu

tip_tipy
-------------
id_tipu (PK)
id_tipujici (FK)
tip_goly_domaci
tip_goly_hoste

zbytek tabulek asi OK

tip_vysledky_zapasu - nechapu vyznam tabulky, v poho se to da obsah hodit do tip_zapas. Jo a fotbalu vubec nerozumim, takze to ber s rezervou:-)
ppw
Profil
kua, v "tip_tipy" sem zapomnel na id_zapas (FK):

tip_tipy
-------------
id_tipu (PK)
id_tipujici (FK)
id_zapas (FK)
tip_goly_domaci
tip_goly_hoste
František
Profil *
ppw: Díky!!! S tou Non-identifying vazbou je to přesně ono.

Ta tabulka tip_vysledky_zapasu by se opravdu dala v pohodě strčit do tabulky tip_zapas a možná to tak i udělám. Tohle mi přišlo jen o trochu přehlednější.

Mastodont: s tím zbytečným id_sezony šlo o to, že s tou vazbou, kterou jsem používal se automaticky stávaly všechny primární klíče rodičů, primárními cizími klíči v ostatních tabulkách, se kterými byly spojeny.

Mám ještě jednu otázku:
Tabulka tip_tymy je 2x spojena s tabulkou tip_zapas. 1 zápas 2 týmy to dá rozum. Samozřejmě že změním v tabulce tip_zapas jmena sloupcu na id_tymu_domaci a id_tymu_hoste. Když dám ovšem generovat script, tak stejně bere oba atributy jako stejné a píše tento error- Identical attribute name.

Rád bych se zeptal, jak se toto řeší?
ppw
Profil
>>Mám ještě jednu otázku:
>>Když dám ovšem generovat script, tak stejně bere oba atributy jako stejné a píše tento error- Identical attribute name.

tak to nepodadím, já sem na to nikdy nepřišel (teď už s Case Studio nedělám). vždycky sem si to manuálně musel upravit v generovaném sql skriptu. u každého sloupečku ale můžeš zadat 2 názvy (už nevím přesně, jak se jmenuje ten druhý...) pak by snad stačilo upravit šablonu pro export, aby se použil 2.název místo názvu sloupce... V helpu by to mohlo být popsáno líp

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:

0