K čemu přesně slouží definice relací v relační databázi, když při SQL dotazu je třeba znovu definovat vztahy mezi cizím klíčem a navázanou tabulkou?
Co brání tomu, abych mohl vyžádat z databáze jednoduchým příkazem (mám na mysli bez explicitního spojování JOINem) obsah tabulky a databázový program by mi automaticky doplnil místo cizích klíčů obsahy navázaného sloupce z jiné tabulky, když informaci o vztahu mezi klíčem a sloupcem už databáze má, (nebo mít může)?
Je mi jasné, že DB může potřebovat implicitní definici relací pro vnitřní optimalizace a případně pro vymezení "drah", ve kterých se mohou pohybovat SQL dotazy, ale existují i jiné důvody?
1) relace mezi tabulkami slouzi kvuli omezenim... napriklad ze "nelze vlozit do tabulky 1 neco, co nema nejakou zavislost v tabulce 2", pak jde delat i updaty/mazani pres vse, co na tom zavisi - smaze se napriklad nejaka radka a dalsi tabulky by pak mely neexistujici ID -> bud se nastavi na NULL nebo se to smaze vse
2) casto se nesnazis spojovat jen pres klice.. pak by sis stezoval ze to bere neco co nechces a tak...
(mimochodem v mysql je napriklad natural join a ten pospojuje tusim podle indexu ... pravdepodobne se stejnym jmenem sloupce--- ted si nepamatuju)
Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
#3KIIV
Děkuji :) já věděl že je ta úvaha hloupá. Také jsem ji skládal v časnou raní hodinu.
1) Tady jsem zapoměl na nutnost udržení integrity Databáze při vkládání a mazání. Díky za připomenutí... :)
2) Ano. Natural Join je to, co bych potřeboval. Bohužel se mi však nepodařilo najít adekvátní náhradu za natural join pro MS SQL. Existuje způsob, jak to obejít?
Este jeden dovod na ukladanie definicii relacii je ze nie vzdy pracujes s DB ktoru si vyrobil alebo ku ktorej mas dokumentaciu. To sa potom vztahy a zavislosti mozu dost obtiazne dohladavat. Notoricky hnusne su v tomto dymamicky aplikaciou generovane databazy.