Autor | Zpráva | ||
---|---|---|---|
František Profil * |
#1 · Zasláno: 30. 10. 2007, 09:03:48
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 |
#2 · Zasláno: 30. 10. 2007, 09:23:38
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 |
#3 · Zasláno: 30. 10. 2007, 09:50:58
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 |
#4 · Zasláno: 30. 10. 2007, 09:52:25 · Upravil/a: ppw
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 * |
#5 · Zasláno: 30. 10. 2007, 10:37:14
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 |
#6 · Zasláno: 30. 10. 2007, 12:25:19
>>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 |
||
Časová prodleva: 18 let
|
0