Inngangur að gagnasambandi

Gagnagrunnurinn "samskiptum" eða "sambönd" lýsir því hvernig gögnin í töflum eru tengdir.

Nýliðar í heim gagnagrunna hafa oft erfitt með að sjá muninn á gagnagrunni og töflureikni. Þeir sjá töflur af gögnum og viðurkenna að gagnagrunna leyfa þér að skipuleggja og spyrja gögn á nýjan hátt, en mistekst að skilja mikilvægi tengslanna milli gagna sem gefa nafnbreytingar gagnasafn tækni nafn sitt.

Sambönd leyfa þér að lýsa tengingum milli mismunandi gagnagrunna á öflugan hátt. Þessar sambönd geta síðan verið skuldsettir til að framkvæma öfluga yfirborðs fyrirspurnir, þekktur sem tengingar.

Tegundir gagnasamskipta

Það eru þrjár mismunandi gerðir gagnasamskipta, hver þeirra heitir í samræmi við fjölda borðregla sem kunna að taka þátt í sambandi. Hver af þessum þremur samskiptategundum er á milli tveggja tafla.

Sjálfvísandi tengsl: Sérstök tilfelli

Sjálfsvísindasambönd eiga sér stað þegar aðeins eitt borð er að ræða. Eitt algengt dæmi er starfsfólki töflunni sem inniheldur upplýsingar um umsjónarmann hvers starfsmanns. Hver umsjónarmaður er einnig starfsmaður og hefur eigin yfirmann sinn. Í þessu tilfelli er það eitt til margra sjálfstætt samband, þar sem hver starfsmaður hefur einn umsjónarmann en hver umsjónarmaður getur haft fleiri en einn starfsmann.

Búa til tengsl við erlenda lykla

Þú býrð til tengsl milli tafla með því að tilgreina erlent lykill. Þessi lykill sýnir sambandi gagnagrunninn hvernig borðið er tengt. Í mörgum tilvikum inniheldur súla í töflu A aðallyklar sem vísað er til í töflu B.

Íhugaðu aftur dæmi um kennara og nemenda töflur. Kennaraborðið inniheldur aðeins kennitölu, nafn og námskeiðssúlu:

Kennarar
InstructorID Kennari_Name Námskeið
001 John Doe Enska
002 Jane Schmoe Stærðfræði

Nemandaborðið inniheldur auðkenni, nafn og erlenda lykil dálk:

Nemendur
StudentID Nafn nemanda Kennari_FK
0200 Lowell Smith 001
0201 Brian Short 001
0202 Corky Mendez 002
0203 Monica Jones 001

Dálkinn Teacher_FK í námsmatstöflunni vísar til aðal lykilvirði kennara í kennaraborðinu .

Oft mun gagnasafnshönnuðir nota "PK" eða "FK" í dálkheitinu til að auðkenna aðal lykil eða erlendan lykil dálk.

Athugaðu að þessar tvær töflur sýna eitt til margra tengsl milli kennara og nemenda.

Sambönd og tilvísun heilindi

Þegar þú hefur bætt við erlent lykill í töflu geturðu síðan búið til gagnagrunniþvingun sem fullnægir referential heiðarleika milli tveggja taflna. Þetta tryggir að sambönd milli taflna séu í samræmi. Þegar eitt borð hefur erlent lykil í annað borð, segir hugtakið referential integrity að allir erlendir lykill gildi í töflu B skuli vísa til núverandi skrá í töflu A.

Framkvæmdar sambönd

Það fer eftir gagnagrunni þinni með því að framkvæma tengsl milli tafla á mismunandi vegu. Microsoft Access veitir töframaður sem gerir þér kleift að tengja töflur og einnig til að framfylgja referential heiðarleiki.

Ef þú ert að skrifa SQL beint, þá ættirðu fyrst að búa til töflunni. Kennarar, sem lýsa yfir ID-dálki sem aðal lykillinn:

Búðu til töflu kennara (

InstructorID INT AUTO_INCREMENT PRIMARY KEY,
Kennari_Name VARCHAR (100),
Námskeið VARCHAR (100)
);

Þegar þú býrð til nemendafjöldann lýsir þú dálknum Teacher_FK til að vera erlent lykill sem vísar til InstructorID dálkinn í töflu kennara:

Búðu til töflu nemendur (
StudentID INT AUTO_INCREMENT PRIMARY KEY,
NámsmaðurName VARCHAR (100), Kennari_FK INT,
FRAMLEIÐSLA KEY (Teacher_FK) Tilvísanir Kennarar (InstructorID))
);

Nota sambönd til að taka þátt í töflum

Þegar þú hefur búið til eitt eða fleiri sambönd í gagnagrunninum þínum, getur þú nýtt vald sitt með því að nota SQL JOIN fyrirspurnir til að sameina upplýsingar úr mörgum borðum. Algengasta gerð þátttöku er SQL INNER JOIN, eða einfalt þátttaka. Þessi tegund af þátttöku skilar öllum skrám sem uppfylla þátttökuskilyrði frá mörgum borðum. Til dæmis, þetta JOIN skilyrði mun skila Student_Name, Kennari_Name og námskeið þar sem erlent lykill í nemenda borð passar aðal takkann í kennara borðinu:

SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.Course
Frá nemendum
INNER JOIN Kennarar
ON Students.Teacher_FK = Kennarar.InstructorID;

Þessi yfirlýsing framleiðir borð eins og þetta:

Skilað borð frá SQL Join Statement

Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish