Duomenų bazės terminai „reliacinis“ir „ryšys“apibūdina duomenų lentelėse susiejimo būdą. Reliacinė duomenų bazė susideda iš dviejų ar daugiau lentelių, susietų konkrečiu raktu, serijos. Reliacinė duomenų bazė skiriasi nuo nestruktūrizuotų duomenų bazių, kurios yra įprastos didelių duomenų iniciatyvose. Reliacinėms duomenų bazėms paprastai reikalingos griežtos taisyklės, kaip apibrėžiamos lentelės ir kas sudaro galiojantį ryšį tarp lentelių.
Duomenų bazių ryšių tipai
Ryšiai leidžia apibūdinti ryšius tarp duomenų bazių lentelių efektyviais būdais. Tada šiuos ryšius galima panaudoti norint atlikti galingas kryžminių lentelių užklausas, žinomas kaip JOIN.
Yra trijų tipų duomenų bazių ryšiai, kurių kiekvienas pavadintas pagal ryšyje dalyvaujančių lentelės eilučių skaičių. Kiekvienas iš šių trijų ryšių tipų egzistuoja tarp dviejų lentelių.
- Ryšiai „vienas su vienu“atsiranda, kai kiekvienas pirmosios lentelės įrašas turi tik vieną atitikmenį antroje lentelėje. Ryšiai „vienas su vienu“naudojami retai, nes dažnai efektyviau yra visą informaciją sudėti į vieną lentelę. Kai kurie duomenų bazių kūrėjai naudojasi šiuo ryšiu kurdami lenteles, kuriose yra duomenų iš kitos lentelės poaibis.
- Ryšiai „vienas su daugeliu“yra labiausiai paplitęs duomenų bazės ryšio tipas. Jie atsiranda, kai kiekvienas A lentelės įrašas atitinka vieną ar kelis B lentelės įrašus, bet kiekvienas B lentelės įrašas atitinka tik vieną A lentelės įrašą. Pavyzdžiui, mokytojų lentelės ir mokinių lentelės ryšys pradinėje mokykloje duomenų bazė greičiausiai būtų ryšys vienas su daugeliu, nes kiekvienas mokinys turi tik vieną mokytoją, bet kiekvienas mokytojas turi kelis mokinius. Šis „vienas su daugeliu“dizainas padeda pašalinti pasikartojančius duomenis.
- Ryšiai nuo daugelio iki daugelio atsiranda, kai kiekvienas A lentelės įrašas atitinka vieną ar daugiau B lentelės įrašų, o kiekvienas B lentelės įrašas atitinka vieną ar daugiau įrašų A lentelėje. Pavyzdžiui, ryšys tarp Mokytojų lentelės ir Kursų lentelės greičiausiai būtų „daug su daug“, nes kiekvienas mokytojas gali dėstyti daugiau nei vieną kursą, o kiekviename kurse gali būti daugiau nei vienas instruktorius.
Bottom line
Sąveikinantys ryšiai atsiranda, kai yra tik viena lentelė. Dažnas pavyzdys yra darbuotojų lentelė, kurioje pateikiama informacija apie kiekvieno darbuotojo vadovą. Kiekvienas vadovas taip pat yra darbuotojas ir turi vadovą. Šiuo atveju yra vienas su daugeliu savarankiškas ryšys, nes kiekvienas darbuotojas turi vieną vadovą, tačiau kiekvienas vadovas gali turėti daugiau nei vieną darbuotoją.
Ryšių su svetimais raktais kūrimas
Ryšius tarp lentelių kuriate nurodydami išorinį raktą. Šis raktas nurodo reliacinei duomenų bazei, kaip lentelės yra susijusios. Daugeliu atvejų A lentelės stulpelyje yra pirminiai raktai, nurodyti iš B lentelės.
Apsvarstykite Mokytojų ir Mokinių lentelių pavyzdį. Lentelėje Mokytojai yra ID, pavadinimas ir kurso stulpelis:
InstructorID | Mokytojo_vardas | Kursas |
001 | Jonas Doe | Anglų k. |
002 | Jane Schmoe | Matematika |
Mokinių lentelėje yra ID, pavadinimas ir išorinio rakto stulpelis:
StudentID | Student_Name | Teacher_FK |
0200 | Lowell Smith | 001 |
0201 | Brianas Shortas | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
Stulpelis Teacher_FK lentelėje Mokiniai nurodo pirminio instruktoriaus rakto reikšmę lentelėje Mokytojai. Dažnai duomenų bazių kūrėjai naudoja PK arba FK stulpelio pavadinime, kad nustatytų pirminio rakto arba išorinio rakto stulpelį.
Šios dvi lentelės iliustruoja ryšį tarp mokytojų ir mokinių vienas prieš daugelį.
Santykiai ir nuorodų vientisumas
Pridėję išorinį raktą į lentelę, sukurkite duomenų bazės apribojimą, kuris užtikrina nuorodų vientisumą tarp dviejų lentelių. Šis veiksmas užtikrina, kad ryšiai tarp lentelių išliktų nuoseklūs. Kai vienoje lentelėje yra kitos lentelės išorinis raktas, nuorodos vientisumas reikalauja, kad bet kokia B lentelės išorinio rakto reikšmė būtų susijusi su esamu įrašu A lentelėje.
Santykių įgyvendinimas
Priklausomai nuo duomenų bazės, ryšius tarp lentelių įdiegsite įvairiais būdais. „Microsoft Access“suteikia vedlį, leidžiantį susieti lenteles ir užtikrinti nuorodų vientisumą.
Jei rašote SQL tiesiogiai, pirmiausia sukurkite lentelę Mokytojai, nurodydami ID stulpelį kaip pirminį raktą:
KURTI LENTELĘ Mokytojai (InstructorID INT AUTO_INCREMENT PRIMARY KEY, Mokytojo_vardas VARCHAR(100), Kursas VARCHAR(100));
Kurdami mokinių lentelę deklaruojate, kad stulpelis Teacher_FK yra išorinis raktas, nurodantis Mokytojų lentelės stulpelį InstructorID:
Nr.
);
Ryšių naudojimas norint sujungti lenteles
Sukūrę vieną ar daugiau ryšių duomenų bazėje, išnaudokite jų galią naudodami SQL JOIN užklausas, kad sujungtumėte informaciją iš kelių lentelių. Labiausiai paplitęs sujungimo tipas yra SQL INNER JOIN, kuris yra paprastas sujungimas. Šio tipo sujungimas pateikia visus įrašus, atitinkančius sujungimo sąlygą, iš vienos ar kelių lentelių.
Pavyzdžiui, ši JOIN sąlyga grąžina Studento_vardą, Mokytojo_vardą ir Kursą, kai užsienio raktas Mokinių lentelėje atitinka pirminį raktą lentelėje Mokytojai:
PASIRINKITE Mokinius. Studento_vardas, Mokytojai. Mokytojo_vardas, Mokytojai. Kursas
FROM Students
VIDINIS PRISIJUNGTI MokytojaiON Studentai. Teacher_FK=Mokytojai. InstructorID;
Šis teiginys sukuria maždaug tokią lentelę:
Studento_vardas | Mokytojo_vardas | Kursas |
Lowell Smith | Jonas Doe | Anglų k. |
Brianas Shortas | Jonas Doe | Anglų k. |
Corky Mendez | Jane Schmoe | Matematika |
Monica Jones | Jonas Doe | Anglų k. |