
MS Access - problém s propojením tabulek
Zdravím
Nefunguje mi relace mezi tabulkami.
Hodím sem obrázek:
jzk
Snad z něj pochopíte, o co mi jde.
Žánr, stanice i země původu mají datový typ Short Text.
U jednotlivých stanic se mi vytvoří takové malé +, ale ho když chci rozkliknout, hodí mi to tento error:
jz9
Prosím, může mi někdo poradit, co dělám špatně?
Ten datový typ musí být stejný jako u ID v těch dalších tabulkách. Je tam taky Short Text?
Píše to problémy s výrazem. Zkontroluj si:
1. typ pole ID u tabulky Žánr
2. propojení seriály-žánr, zda je opravdu ID - ID
3. zda máš správně naplněnu tabulku Žánr - opravdu tam existují všechna ID, která jsou v tabulce seriály?
Doporučení:
1. vyhni se diakritice a mezerám v názvům tabulek a polí, i když to Acceess (i jiné databáze) umožňuje, nedělá se to. Pak musíš jako magor pořád zavírat vše do hranatých závorek a některé věci ti nemusí fungovat.
2. pro ID se obvykle používá nějaký z rodiny typů INTEGER. Důvod? Je to mnohem rychlejší. Porovnávání čísel je vždy rychlejší než porovnávání textu.
Připomínka k návrhu:
Počítáš s tím, že jeden film je pouze jeden žánr, ale to tak zhruba v 50% případů neplatí. Romantický thriller, Detektivní horor atd.
Standardně se to dělá tak, že se vytvoří tabulka žánrů + tabulka vazeb, která umožní na jeden záznam v tabulce pořadů navázat několik žánrů. Pokud to dělaáš jako nějaký jednoduchý školní projekt, pak to neřeš.
Mohl by jsi mi načrtnout jednoduché schéma propojení?
Nová tabulka ZanrVazba (IDPoradu, IDZanru)
vazby
porady.ID -> ZanrVazba.IDPoradu
Zanr.ID -> ZanrVazba.IDZanru
To ti umozni mit navazanych vice zanru na jeden porad.
Ty to mas porady.Zanr -> zanr.id, coz ti umozni jen jeden zanr pro porad.
Pole, ktera slouzi pro propojovani bys mel v tabulce poradu pojmenovavat, by bylo jasne, ze jde o propojeni (ID). Napr. IDZanru, IDStanice, IDZemePuvodu. Kdyz tam napises [zeme puvodu], tak to vypada, ze tam je skutecne zeme a ne vazba na dalsi tabulku. Ale to nema na funkcnost vliv, je to jen pro prehlednost.