K čemu přesně slouží definice relací v DB? – MS SQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

K čemu přesně slouží definice relací v DB? – MS SQL – Fórum – Programujte.comK čemu přesně slouží definice relací v DB? – MS SQL – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
certeon0
Newbie
20. 6. 2012   #1
-
0
-

Zdravím.

Mám pár hloupých otázek...

  1. 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?
  2. 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)?
  3. 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?

Díky za odpovědi.

Nahlásit jako SPAM
IP: 109.71.213.–
certeon0
Newbie
20. 6. 2012   #2
-
0
-

#1 certeon
Vím, že otázku 2 bych mohl řešit uloženou procedurou, nebo Views, ale na to se neptám. :)

Nahlásit jako SPAM
IP: 109.71.213.–
KIIV
~ Moderátor
+43
God of flame
20. 6. 2012   #3
-
+1
-
Zajímavé

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...
certeon0
Newbie
20. 6. 2012   #4
-
0
-

#3 KIIV
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?

Zde: http://database.blogs.webucator.com/2010/03/31/why-sql-server-doesnt-support-natural-join-syntax/

 jsem našel toto "řešení" s INNER JOIN:

SELECT c.CustomerID, S.TotalAmount
FROM Customers c
INNER JOIN Sales s
ON c.CustomerID = S.CustomerID

které však pořád vyžaduje opětovnou definici ON c.CustomerID = S.CustomerID

Jde to nějak vyřešit, aby toto spojování nebylo vyžadované v dotazu?

Díky

Nahlásit jako SPAM
IP: 109.71.213.–
Sipi
~ Anonymní uživatel
19 příspěvků
20. 6. 2012   #5
-
0
-

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.

Nahlásit jako SPAM
IP: 144.36.194.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý