Lentelių ryšių vadovas

Taikoma
„Access“, skirta „Microsoft 365“ „Access 2024“ Access 2021 Access 2019 Access 2016

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 "Access" galite suteikti būdą, kaip vėl sujungti išskirstytą informaciją. Tai atlikite sukurdami bendruosius laukus susijusiose lentelėse. 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ę kiekvienai savo duomenų bazės temai skirtą lentelę, turite suteikti programai "Access" būdą, kaip prireikus informaciją vėl sujungti. 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.

Forma Užsakymai, kurioje iškart rodoma susijusi informacija, pateikta penkiose lentelėse

1. Informacija šioje formoje gaunama iš lentelės Klientai...

2. ... lentelėje Užsakymai...

3. ... lentelėje Produktai...

4. ... ir lentelę Užsakymų 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.

Darbuotojo ID, kuris lentelėje Darbuotojai naudojamas kaip pirminis raktas, o lentelėje Užsakymai – kaip išorinis.

1. EmployeeID rodomas abiejose lentelėse – kaip pirminis raktas...

2. ... ir kaip išorinį raktą.

Puslapio viršus

Lentelių ryšių tipai

„Access“ galimi trys lentelių ryšių tipai.

  • Ryšys „vienas su daugeliu“
    Kaip pavyzdžiu pasinaudokime užsakymo sekimo duomenų baze, 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. Tuomet "Access", naudodama lentelėje Užsakymai esantį kliento ID, gali rasti kiekvieną užsakymą atitinkantį klientą.
  • Ryšys „daugelis su daugeliu“
    Dabar pažvelkime į lentelių Produktai ir Užsakymai ryšį. Į 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.

Puslapio viršus

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 jungti 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. Bet jei jau turite apibrėžtą ryšį tarp lentelių, "Access" pateikia numatytąjį sujungimą pagal esamą lentelių ryšį. Be to, jei naudojate vieną iš užklausų vediklių, "Access" naudoja informaciją, surinktą iš jūsų jau apibrėžtų lentelių ryšių, kad pateiktų jums pagrįstus pasirinkimus ir ypatybių parametrus iš anksto užpildytų atitinkamomis numatytosiomis reikšmėmis.
  • Lentelių ryšiai nurodo formų ir ataskaitų dizainą
    Kai kuriate formą arba ataskaitą, "Access" naudoja informaciją, surinktą iš jūsų jau apibrėžtų lentelių ryšių, kad pateiktų jums pagrįstus sprendimus ir iš anksto užpildytų ypatybių parametrus 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ų poros išliktų sinchronizuotos. Nuorodų vientisumas, priklausomas nuo lentelių ryšių, padeda užtikrinti nuorodų sinchronizaciją.

Puslapio viršus

Supratimas, kas yra nuorodų vientisumas

Kurdami duomenų bazę, jos informaciją dalijate į daugelį temomis pagrįstų lentelių, kad būtų sumažintas duomenų perteklumas. Tada galite suteikti "Access" būdą, kaip vėl sujungti duomenis, sudedant 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ėdama vėl sujungti duomenis, programa "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šį. Jį įgalinus, "Access" atmes visas operacijas, pažeidžiančias tuo lentelių ryšiu pagrįstą nuorodų vientisumą. Tai reiškia, kad "Access" atmes abu naujinimo veiksmus, galinčius pakeisti tikslinę nuorodą, ir naikinimo veiksmus, galinčius pašalinti tikslinę nuorodą. Gali būti, kad jums visiškai pagrįstai reikia pakeisti pirminį raktą siuntėjui, kurio lentelėje Užsakymai yra užsakymų. Tokiais atvejais tikrai reikia, kad atlikdama tą pačią operaciją "Access" automatiškai atnaujintų visas eilutes, kurioms gali būti padaryta įtakos. Tokiu būdu "Access" užtikrina, kad naujinimas bus atliktas visiškai, kad duomenų bazė nelinktų negalutinės būsenos, kai kai kurios eilutės atnaujintos, o kai kurios ne. Todėl "Access" palaiko parinktį Susijusius laukus naujinti pakopomis . Jei pirminį raktą naujinsite įgalinę nuorodų vientisumą ir pasirinkę parinktį Susijusius laukus naujinti pakopomis , "Access" automatiškai atnaujins 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. Todėl "Access" palaiko parinktį Susijusius įrašus naikinti pakopomis . Jei įgalinę nuorodų vientisumą ir pasirinkę parinktį Susijusius įrašus naikinti pakopomis panaikinsite įrašą ryšio siejamoje lentelėje, kurioje yra pirminis raktas, "Access" automatiškai panaikins visus pirminį raktą nurodančius įrašus.

Puslapio viršus

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 lentelės ryšiai nebuvo apibrėžti ir langą Ryšiai atidarysite pirmą kartą, "Access" paragins į langą įtraukti lentelę arba užklausą.

Lango Ryšiai atidarymas

  1. Spustelėkite Failas, Atidaryti, tada pažymėkite ir atidarykite duomenų bazę.

  2. Skirtuko Duomenų bazės įrankiai grupėje Ryšiai spustelėkite Ryšiai.

  3. 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 Atidaromas dialogo langas 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:

  • Lentelių įtraukimas Įgalina lentelių pasirinkimą, kuris bus rodomas 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.

Puslapio viršus