Vienas iš gero duomenų bazės dizaino tikslų yra pašalinti duomenų perteklumą (duomenų dublikatus). Šiam tikslui pasiekti, padalykite duomenis į daugelį tema pagrįstų lentelių, kad kiekvienas faktas būtų nurodomas tik vieną kartą. Tada pateiksite „Access“ būdą vėl sujungti padalytą informaciją – tai padarysite į susijusias lenteles įdėdami bendruosius laukus. Jei norite atlikti šį veiksmą teisingai, būtina suprasti ryšius tarp lentelių, tada nurodyti tuos ryšius duomenų bazėje.
Šiame straipsnyje
Įžanga
Sukūrę lentelę kiekvienai duomenų bazės temai, turite suteikti „Access“ būdą, kaip prireikus vėl sujungti informaciją. Norėdami tai atlikti, į susijusias lenteles turite įtraukti bendrųjų laukų ir nurodyti lenteles siejančius ryšius. Tada galėsite kurti užklausas, formas ir ataskaitas, kuriose bus iš karto rodoma keliose lentelėse pateikta informacija. Pvz., į čia pateiktą formą įtraukta iš kelių lentelių nuskaityta informacija.
1. Informacija į šią formą perkelta iš lentelės Klientai...
2. ...lentelės Užsakymai...
3. ...lentelės Produktai...
4. ...ir lentelės Užsakymo išsami informacija.
Lauke Išrašyti sąskaitą pateiktas kliento pavadinimas nuskaitytas iš lentelės Klientai, Užsakymo ID ir Užsakymo data reikšmės perkeltos iš lentelės Užsakymai, Produktas reikšmė perkelta iš lentelės Produktai, o Vieneto kaina ir Kiekis reikšmės perkeltos iš lentelės Užsakymo išsami informacija. Siekiant, kad iš kiekvienos lentelės į formą būtų perkelta informacija, šios lentelės yra įvairiausiais būdais viena su kita susietos.
Pateiktas pavyzdys, kai lentelių laukai turi būti suderinti taip, kad juose būtų rodoma to paties užsakymo informacija. Taip suderinti pavyksta naudojant lentelių ryšius. Lentelių ryšys sugretina rakto laukuose (dažnai tuose, kuriems abiejose lentelėse suteiktas toks pat pavadinimas) pateiktus duomenis. Dažniausiai šie atitinkantys laukai yra vienos lentelės pirminis raktas, pateikiantis kiekvieno įrašo unikalų identifikatorių, ir kitos lentelės išorinis raktas. Pvz., jei darbuotojus reikia susieti su užsakymais, už kuriuos jie yra atsakingi, galima sukurti ryšį tarp lentelių Darbuotojai ir Užsakymai laukių Darbuotojo ID.
1. Darbuotojo ID rodomas abiejose lentelėse – kaip pirminis raktas...
2. ...kaip išorinis raktas.
Lentelių ryšių tipai
„Access“ yra trijų tipų lentelių ryšiai.
-
Ryšys „vienas su daugeliu“
Kaip pavyzdį panaudokime užsakymų sekimo duomenų bazę, kurioje yra lentelės Klientai ir Užsakymai. Klientas gali pateikti bet kokį skaičių užsakymų. Vadinasi, lentelėje Užsakymai gali būti pateikta po keletą kiekvieno lentelėje Klientai nurodyto kliento užsakymų. Ryšys tarp lentelių Klientai ir Užsakymai yra „vienas su daugeliu“.
Norėdami, kad ryšys „vienas su daugeliu“ būtų įtrauktas į duomenų bazės struktūrą, pirminį raktą, esantį ryšio pusėje „vienas“, įtraukite į lentelės ryšio pusę „daugelis“ kaip papildomą lauką arba laukus. Šiuo atveju įtraukiamas naujas laukas – ID laukas iš lentelės Klientai – į lentelę Užsakymai, ir pavadinamas Kliento ID. „Access“ tada gali naudoti lentelės Užsakymai kliento ID, kad rastų tinkamą kiekvieno užsakymo klientą.
-
Ryšys „daugelis su daugeliu“
Dabar pažvelkime į ryšį tarp lentelės Produktai ir Užsakymai. Į vieną užsakymą gali būti įtrauktas daugiau nei vienas produktas. Kita vertus, vienas produktas gali būti nurodytas keliuose užsakymuose. Todėl lentelėje Produktai gali būti pateikta po kelis kiekvieną lentelės Užsakymai įrašą atitinkančius įrašus. Be to, lentelėje Užsakymai gali būti pateikta po kelis kiekvieną lentelės Produktai įrašą atitinkančius įrašus. Toks ryšys vadinamas „daugelis su daugeliu“. Nepamirškite, kad nustatant lentelių ryšį „daugelis su daugeliu“, svarbu atsižvelgti į abi ryšiu siejamas puses.
Norėdami perteikti ryšį „daugelis su daugeliu“ turite sukurti trečią lentelę (dažnai vadinamą jungiamąja lentele), kurioje ryšys „daugelis su daugeliu“ būtų padalytas į du ryšius „vienas su daugeliu“. Į trečią lentelę turite įterpti pirminį raktą iš abiejų lentelių. Tada trečioje lentelėje bus užfiksuotas kiekvienas kartas arba atvejis, kai nustatomas ryšys. Pvz., lentelių Užsakymai ir Produktai ryšys yra „daugelis su daugeliu“, apibrėžiamas sukuriant du ryšius „vienas su daugeliu“ su lentele Užsakymo išsami informacija. Viename užsakyme gali būti nurodyti keli produktai, o kiekvienas produktas gali būti nurodytas keliuose užsakymuose.
-
Ryšys „vienas su vienu“
Jei ryšio tipas yra „vienas su vienu“, vadinasi, kiekvieną pirmosios lentelės įrašą gali atitikti tik vienas antrosios lentelės įrašas, o kiekvieną antrosios lentelės įrašą gali atitikti tik vienas pirmosios lentelės įrašas. Šis ryšys nėra įprastas, nes dažniausiai tokiu būdu susijusi informacija saugoma toje pačioje lentelėje. Ryšį „vienas su vienu“ galite naudoti norėdami padalyti iš daug laukų sudarytą lentelę, atskirti norimą apsaugoti lentelės dalį arba saugoti informaciją, kuri taikoma tik antriniam pagrindinės lentelės rinkiniui. Nustatant šį ryšį, būtina užtikrinti, kad abiejose lentelėse bus bendrinami tie patys laukai.
Kodėl reikia kurti lentelių ryšius
Lentelių ryšius galite kurti naudodami langą Ryšiai (detalusis būdas) arba vilkdami laukus iš srities Laukų sąrašas. „Access“ naudoja lentelių ryšius, kad nuspręstų, kaip sujungti lenteles, kai jas reikia naudoti duomenų bazės objekte. Yra keletas priežasčių, kodėl prieš kuriant kitus duomenų basės objektus, pvz., formas, užklausas ir ataskaitas, reikia sukurti lentelių ryšius.
-
Lentelių ryšiai nurodo užklausų dizainą
Norint naudoti daugiau nei vienos lentelės įrašus, dažnai tenka sukurti lenteles sujungiančią užklausą. Pirmosios lentelės pirminio rakto laukų reikšmes užklausa sugretina su antrosios lentelės išorinių raktų laukais. Pvz., norėdami gauti eilutes, kuriose išvardyti visi kiekvieno kliento užsakymai, turite sukurti užklausą, jungiančią lenteles Klientai ir Užsakymai pagal lauką Kliento ID. Lange Ryšiai galite rankiniu būdu nurodyti norimus jungti laukus. Tačiau, jei tarp lentelių jau nustatytas ryšys, „Access“ suteikia numatytąjį sujungimą, pagrįstą esamu lentelių ryšiu. Be to, jei naudojate vieną iš užklausų vediklius, „Access“ naudoja informaciją, kurią surenka iš jūsų nustatytų lentelių ryšių, kad pateiktų jums pagrįstus pasirinkimus ir iš anksto įvestų ypatybių parametrus su atitinkamomis numatytosiomis reikšmėmis.
-
Lentelių ryšiai nurodo formų ir ataskaitų dizainą
Kuriant formą arba ataskaitą, „Access“ naudoja informaciją, kurią surenka iš jūsų nustatytų lentelių ryšių, kad pateiktų jums pagrįstus pasirinkimus ir iš anksto įvestų ypatybių parametrus su atitinkamomis numatytosiomis reikšmėmis.
-
Ryšiai yra platforma, kurią galėsite naudoti kaip pagrindą įgalindami nuorodų vientisumą, padedantį išvengti vienišųjų narių įrašų duomenų bazėje. Vienišojo nario įrašas nurodo kitą įrašą, kurio nėra, pvz., užsakymo įrašas, nurodantis nesamą kliento įrašą.
Kurdami duomenų bazę, informaciją suskirstote į lenteles, kurių kiekviena turi pirminį raktą. Tada į susijusias lenteles įtraukiate išorinių raktų, nurodančių tuos pirminius raktus. Šios išorinių ir pirminių raktų poros yra lentelių ryšių ir kelių lentelių užklausų pagrindas. Svarbu, kad šios išorinių ir pirminių raktų nuorodos būtų sinchronizuotos. Nuorodų vientisumas, priklausomas nuo lentelių ryšių, padeda užtikrinti nuorodų sinchronizaciją.
Supratimas, kas yra nuorodų vientisumas
Kurdami duomenų bazę, jos informaciją dalijate į daugelį temomis pagrįstų lentelių, kad būtų sumažintas duomenų perteklumas. Tada suteiksite „Access“ būdą vėl sujungti duomenis, įdėdami bendruosius laukus į susijusias lenteles. Pvz., norėdami nurodyti ryšį „vienas su daugeliu“, lentelės, kurioje yra „vienas“ elementas, pirminį raktą kaip papildomą lauką įtraukiate į lentelę, kurioje yra „daugelis“ elementų. Norėdami vėl sujungti duomenis, „Access“ paima reikšmę lentelėje "daugelis" ir ieško atitinkamos reikšmės lentelėje "vienas". Taip lentelės, kurioje yra „daugelis“ elementų, reikšmės nurodo atitinkamas lentelės, kurioje yra „vienas“ elementas, reikšmes.
Tarkim, tarp lentelių Siuntėjai ir Užsakymai yra ryšys „vienas su daugeliu“ ir jūs norite panaikinti elementą Siuntėjas. Jei lentelėje Užsakymai nurodyta norimo naikinti siuntėjo užsakymų, panaikinus elemento Siuntėjas įrašą tie užsakymai taps vienišaisiais nariais. Lentelėje Užsakymai siuntėjo ID išliks, bet šis ID nebegalios, nes nebebus jo nurodomo įrašo.
Nuorodų vientisumo tikslas yra panaikinti vienišųjų narių sukūrimo galimybę ir užtikrinti nuorodų sinchronizaciją, kad pavyktų išvengti tokių hipotetinių situacijų.
Nuorodų vientisumas įgalinamas kuriant lentelių ryšį. Įgalinus „Access“ atmes visas operacijas, kurios pažeidžia to lentelių ryšio nuorodų vientisumą. Tai reiškia, „Access“ atmes abu naujinimus, kurie pakeičia tikslinę nuorodą, ir naikinimus, kurie pašalina tikslinę nuorodą. Gali būti, kad turite visiškai tinkamą poreikį pakeisti pirminį siuntėjo, kurio užsakymų lentelėje yra užsakymai, raktą. Tokiais atvejais jums tikrai reikia, kad „Access“ automatiškai atnaujinti visas eilutes, kurios gali būti vienos operacijos metu. Tokiu būdu „Access“ užtikrina, kad naujinimas būtų baigtas iki galo, kad jūsų duomenų bazė nebūtų nenuosekli, kai kurios eilutės atnaujintos, o kai kurios ne. Dėl šios priežasties „Access“ palaiko parinktį Susijusius laukus naujinti pakopomis . Kai įgalinate nuorodų vientisumą ir pasirenkate parinktį Susijusius laukus naujinti pakopomis , o tada atnaujinate pirminį raktą, „Access“ automatiškai atnaujina visus pirminį raktą nurodančius laukus.
Taip pat gali būti, kad teks panaikinti eilutę ir visus susijusius įrašus, pvz., įrašą Siuntėjas ir visus su tuo siuntėju susijusius įrašus. Dėl šios priežasties „Access“ palaiko parinktį Susijusius įrašus naikinti pakopomis . Kai įgalinate nuorodų vientisumą ir pasirenkate parinktį Susijusius įrašus naikinti pakopomis , tada panaikinate įrašą ryšio pirminio rakto pusėje, „Access“ automatiškai panaikins visus įrašus, kurie nurodo pirminį raktą.
Lentelių ryšių peržiūra
Norėdami peržiūrėti lentelių ryšius, skirtuke Duomenų bazės įrankiai spustelėkite Ryšiai. Atidaromas langas Ryšiai, kuriame rodomi visi esami ryšiai. Jei jokie lentelių ryšiai neapibrėžti ir langą Ryšiai atidarote pirmą kartą, „Access“ paragins įtraukti lentelę arba užklausą į langą.
Lango Ryšiai atidarymas
-
Spustelėkite Failas, atidaryti, tada pažymėkite ir atidarykite duomenų bazę.
-
Skirtuko Duomenų bazės įrankiai grupėje Ryšiai spustelėkite Ryšiai.
-
Skirtuko Ryšių dizainas grupėje Ryšiai spustelėkite Visi ryšiai.Rodomi visi apibrėžti duomenų bazės ryšiai. Nepamirškite, kad paslėptos lentelės (lentelės, kurių dialogo lange Ypatybės pažymėtas žymės langelis Paslėptas) ir jų ryšiai nerodomi, jei dialogo lange Naršymo parinktys nepažymėtas žymės langelis Rodyti paslėptus objektus.
Lentelių ryšį nurodo ryšio linija, nubrėžta tarp lentelių lange Ryšiai. Jei ryšys nuorodų vientisumo neįgalina, jis rodomas kaip plona linija tarp bendrųjų ryšio siejamų laukų. Jei norėdami pažymėti ryšį spustelėsite jį nurodančią liniją, linija pastorės, nurodydama, kad ji pažymėta. Jei įgalinsite šio ryšio nuorodų vientisumą, abu linijos galai pastorės. Be to, viename ryšio linijos gale virš storosios jos dalies bus rodomas skaičius 1, o kitame ryšio linijos gale virš storosios jos dalies bus rodomas begalybės simbolis (∞).
Suaktyvintame lange Ryšiai galite rinktis iš toliau nurodytų juostelėje esančių komandų.
Skirtuko Ryšių dizainas grupėje Įrankiai :
-
Ryšių redagavimas atidaro dialogo langą Ryšių redagavimas. Pažymėję ryšio liniją galite spustelėti Ryšių redagavimas, kad galėtumėte pakeisti lentelių ryšius. Taip pat galite dukart spustelėti ryšio liniją.
-
Valyti maketą pašalina visas lenteles ir ryšius, kad jie nebūtų rodomi lange Ryšiai. Įsidėmėkite, kad ši komanda tik paslepia lenteles ir ryšius, bet jų nepanaikina.
-
Ryšių ataskaita sukuria ataskaitą, kurioje rodomos duomenų bazės lentelės ir ryšiai. Ataskaitoje rodomos tik tos lentelės ir ryšiai, kurie nėra paslėpti lange Ryšiai.
Skirtuko Ryšių dizainas grupėje Ryšiai :
-
Įtraukti lentelių Leidžia pasirinkti lenteles, kurios bus rodomos lange Ryšiai.
-
Slėpti lentelę paslepia pažymėtą lentelę lange Ryšiai.
-
Tiesioginiai ryšiai lange Ryšiai rodo visus pažymėtos lentelės ryšius ir su ja susijusias lenteles, jei ši informacija dar nėra rodoma.
-
Visi ryšiai lange Ryšiai rodo visus duomenų bazės ryšius ir susijusias lenteles. Nepamirškite, kad paslėptos lentelės (lentelės, kurių dialogo lange Ypatybės pažymėtas žymės langelis Paslėpta) ir jų ryšiai nerodomi, jei dialogo lange Naršymo parinktys nepažymėta Rodyti paslėptus objektus.
-
Uždaryti uždaro langą Ryšiai. Jei atliksite kokių nors lango Ryšiai maketo keitimų, būsite klausiami, ar norite juos įrašyti.