|
![]() | Vztah 1:N | ![]() | RelaΦn∞ propojenΘ tabulky |
Pro vyjßd°enφ tohoto vztahu pomocφ nßstroj∙ relaΦnφ algebry pot°ebujeme krom∞ tabulek TA
a TB
jeÜt∞ t°etφ spojovacφ tabulku, kterou nazveme TSPOJ
. TSPOJ
musφ obsahovat nejmΘn∞ dva sloupce SPOJA
a SPOJB
. SPOJA
je stejnΘho typu jako sloupec A
, SPOJB
jako B
. Dva zßznamy v tabulkßch TA
a TB
jsou propojeny prßv∞ tehdy, pokud existuje zßznam v tabulce TSPOJ
takov², ₧e A=SPOJA
a zßrove≥ B=SPOJB
.
Vytvß°enφ a ruÜenφ vazeb
Vazby mezi zßznamy v TA
a TB
se vytvß°ejφ tak, ₧e se do tabulky TSPOJ
vklßdajφ novΘ zßznamy, a ruÜφ se tak, ₧e se v TSPOJ
ruÜφ zßznamy. Na rozdφl od vztahu 1:N se tedy p°i vytvß°enφ a ruÜenφ vazeb nep°episujφ ·daje v TA
nebo TB
.
Na vazby mezi zßznamy lze hled∞t bu∩ globßln∞, anebo od jednΘ tabulky sm∞rem k druhΘ. Formulß°e od TA
k TB
a od TB
k TA
jsou zcela symetrickΘ, proto je nebudeme popisovat zvlßÜ¥.
Spojenφ tabulek
Pomocφ dotazu SELECT * FROM TA, TSPOJ, TB WHERE TA.A=TSPOJ.SPOJA and TSPOJ.SPOJB=TB.B
lze zφskat celkov² p°ehled o vÜech vazbßch mezi zßznamy. V formulß°i do odpov∞di na tento dotaz:
Formulß° od jednΘ tabulky k druhΘ
P°i pohledu od jednΘ tabulky k druhΘ vidφme v hlavnφm formulß°i zßznamy z jednΘ tabulky a ka₧d² z t∞chto zßznam∙ mß v subformulß°i p°ipojenΘ zßznamy z druhΘ tabulky. Situace vypadß podobn∞, jako p°i vazb∞ 1:N, avÜak pro r∙znΘ zßznamy hlavnφho formulß°e se v subformulß°φch mohou opakovat stejnΘ zßznamy.
Realizace subformulß°e je pon∞kud slo₧it∞jÜφ, ne₧ v p°φpad∞ 1:N. Subformulß° toti₧ vede do spojenφ dvou tabulek. P°edpoklßdejme, ₧e hlavnφ formulß° vede do TA
. Pak vytvo°φte dotaz SELECT * FROM TSPOJ, TB WHERE TSPOJ.SPOJB=TB.B
a subformulß° vytvo°φte nad tφmto dotazem. P°i navrhovßnφ hlavnφho formulß°e v popisu slo₧ky Subpohled zadßte jako propojovacφ hodnotu sloupec A
a jako v²b∞rovou podmφnku sloupec TSPOJ.SPOJA
resp. v²raz TSPOJ.SPOJA=%
.
RelaΦnφ formulß° pro editaci vazeb
Do subformulß°e nelze vklßdat zßznamy ani ruÜit je, lze ovÜem p°episovat hodnoty v zßznamech. Editace propojenφ mezi zßznamy z TA
a TB
se d∞je pomocφ specißlnφho relaΦnφho formulß°e, kter² otev°ete stiskem tlaΦφtka. V tomto relaΦnφm formulß°i jsou zatr₧enΘ ty zßznamy, kterΘ jsou p°ipojeny k vybranΘmu zßznamu v hlavnφm formulß°i (tj. ty, kterΘ vidφte v subformulß°i). Kliknutφm na oznaΦovacφ tlaΦφtka (nebo stiskem klßvesy F8) m∙₧ete vytvß°et a ruÜit vazby. Lze zde takΘ vklßdat zßznamy do TB
a ruÜit je. Na rozdφl od relaΦnφho formulß°e p°i vazb∞ 1:N zde m∙₧e b²t souΦasn∞ zatr₧en vφce ne₧ jeden zßznam.
P°i zadßvßnφ parametr∙ akce, kterou se otevφrß relaΦnφ formulß°, je nutno vyplnit dv∞ relace: jmΘno relace od TA
k TSPOJ
a jmΘno relace od TSPOJ
k TB
.
DalÜφ sloupce spojenφ
Tabulka TSPOJ
m∙₧e mφt i dalÜφ sloupce, kterΘ dopl≥ujφ informace o vazb∞ mezi TA
a TB
. Tyto sloupce lze editovat v subformulß°i. Nap°φklad pokud TA
je tabulka pacient∙, TB
tabulka lΘk∙ a tabulka TSPOJ
vyjad°uje vztah "pacientu byl p°edepsßn lΘk", pak dalÜφ sloupec tabulky TSPOJ
m∙₧e obsahovat datum p°edepsßnφ a poΦet p°edepsan²ch balenφ.
Pozor: Propojovßnφ relaΦnφm formulß°em se nehodφ pro p°φpad, kdy mezi zßznamy z TA
a TB
lze vytvß°et multivazby (vφcenßsobnΘ vazby - jeden pacient dostal tent²₧ lΘk vφcekrßt). Stiskem propojovacφho tlaΦφtka v relaΦnφm formulß°i by se nedala vytvo°it druhß a dalÜφ vazba ani zruÜit jedna z mnoha vazeb. Zobrazenφ p°ipojen²ch zßznam∙ v subformulß°i vÜak funguje i v tomto p°φpad∞: zßznamy vφcenßsobn∞ p°ipojenΘ se zobrazφ vφcekrßt, poka₧dΘ s jin²mi hodnotami dodateΦn²ch sloupc∙ z TSPOJ
.
RelaΦnφ formulß° nelze otev°φt na fiktivnφm zßznamu v hlavnφm formulß°i. Propojovßnφm na fiktivnφm zßznamu by toti₧ doÜlo k poruÜenφ referenΦnφ integrity databßze.
![]() | Vztah 1:N | ![]() | RelaΦn∞ propojenΘ tabulky |