Duomenų bazės terminas "reliacinis" arba "santykis" apibūdina, kaip duomenys, esantys lentelėse, yra prijungti.
Naujokams į duomenų bazių pasaulį dažnai sunku pamatyti skirtumą tarp duomenų bazės ir skaičiuoklės. Jie mato duomenų lenteles ir pripažįsta, kad duomenų bazės leidžia jums tvarkyti ir užklausa duomenų naujais būdais, bet nesupranta santykiai tarp duomenų kurie suteikia reliacinės duomenų bazės technologiją savo pavadinimą.
Santykiai leidžia jums efektyviai apibūdinti ryšius tarp skirtingų duomenų bazių lentelių. Tada šie santykiai gali būti panaudoti, kad būtų galima atlikti galingas kelių stalų užklausas, vadinamą jungtimis.
Duomenų ryšių tipai
Yra trys skirtingi duomenų bazių santykių tipai, kiekvienas nurodytas pagal lentelių eilučių skaičių, kuris gali būti susijęs su santykiais. Kiekvienas iš šių trijų santykių tipų egzistuoja tarp dviejų lentelių.
- "Vienas su vienu" santykiai atsiranda, kai kiekviename pirmosios lentelės įraše yra viena, o tik viena antroji lentelė. Ryšiai "vienas su vienu" retai naudojami, nes dažnai efektyviau paprasčiausiai pateikti visą informaciją vienoje lentelėje. Kai kurie duomenų bazių dizaineriai pasinaudoja šiais ryšiais, sukuriami lentelės, kuriose yra kitų lentelių duomenų pogrupis.
- Vienas į daugybę santykių yra labiausiai paplitęs duomenų bazės santykis. Jie įvyksta tada, kai kiekvienas A lentelėje į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, ryšys tarp Mokytojų lentelės ir Studentų stalo pradinėje mokykloje Duomenų bazė, greičiausiai, bus santykis "vienas su daugybe", nes kiekvienas mokinys turi tik vieną mokytoją, tačiau kiekvienas mokytojas turi kelis mokinius. Šis "vienas į daug" dizainas padeda pašalinti dubliuotus duomenis.
- Many-to-many santykiai atsiranda, kai kiekvienas A lentelėje įrašytas įrašas atitinka vieną ar kelis B lentelės įrašus, o kiekvienas B lentelės įrašas atitinka vieną ar kelis A lentelės įrašus. Pavyzdžiui, santykis tarp Mokytojų ir Kursų lentelės greičiausiai būtų daugybinis. nes kiekvienas mokytojas gali nurodyti daugiau nei vieną kursą, o kiekviename kurse gali būti daugiau nei vienas instruktorius.
Savarankiško santykio santykiai: ypatingas atvejis
Savarankiški santykiniai santykiai atsiranda, kai dalyvauja tik viena lentelė. Vienas bendras pavyzdys yra darbuotojų lentelė, kurioje pateikiama informacija apie kiekvieno darbuotojo vadovą. Kiekvienas vadovas taip pat yra darbuotojas ir turi savo vadovą. Tokiu atveju yra vienas nuo daugelio savarankiškų santykių, nes kiekvienas darbuotojas turi vieną vadovą, tačiau kiekvienam vadovui gali būti daugiau nei vienas darbuotojas.
Ryšių su užsienio raktais kūrimas
Sąsajas tarp lentelių sukuriate nurodydami užsienio raktą. Šis raktas nurodo reliacinę duomenų bazę, kaip sujungtos lentelės. Daugeliu atvejų stulpelyje A lentelėje yra pirminiai raktiniai žodžiai, nurodyti pagal B lentelę.
Dar kartą apsvarstykite mokytojų ir studentų lenteles. Mokytojų lentelėje yra tik ID, vardas ir kursų stulpelis:
InstruktoriusID | Mokytojo vardas | Kursas |
---|---|---|
001 | John Doe | Anglų |
002 | Jane Schmoe | Matematika |
Studentų lentelėje yra ID, vardas ir užsienio rakto stulpelis:
Studento pažymėjimas | Studento vardas | Teacher_FK |
---|---|---|
0200 | Lowellas Smitas | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monika Jones | 001 |
Stulpelis Teacher_FK Studentų lentelėje nurodomos mokytojų lentelės instruktoriaus pagrindinė reikšmė.
Dažnai duomenų bazių kūrėjai stulpelio pavadinime naudoja "PK" arba "FK", kad lengvai identifikuotų pirminį raktą ar užsienio rakto stulpelį.
Atkreipkite dėmesį, kad šios dvi lentelės iliustruoja mokytojų ir studentų santykius "vienas į daugybę".
Santykiai ir referencinis vientisumas
Kai prie lentelės pridėjote užsienio raktą, tuomet galėsite sukurti duomenų bazės apribojimą, kuris užtikrins nuorodų integralumą tarp dviejų lentelių. Tai užtikrina, kad santykiai tarp lentelių išliktų nuoseklūs. Kai vienoje lentelėje yra užsienio raktas į kitą lentelę, referencinio vientisumo koncepcija nurodo, kad bet kuri lentelės B užsienio reikšmė turi atitikti esamą A lentelės įrašą.
Santykių įgyvendinimas
Priklausomai nuo jūsų duomenų bazės, skirtingų tipų santykius galite įdiegti. "Microsoft Access" suteikia vedlį, kuris lengvai leidžia susieti lenteles ir taip pat užtikrinti referencinį vientisumą.
Jei rašote SQL tiesiogiai, pirmiausia turėtumėte sukurti lentelę "Mokytojai", nurodydami, kad ID stulpelis yra pagrindinis raktas:
CREATE TABLE Mokytojai (
InstructorID INT AUTO_INCREMENT PRIMARY KEY, Mokytojo vardas VARCHAR (100), Kursas VARCHAR (100));
Kurdami studentų lentelę, paskelbiate, kad stulpelis "Teacher_FK" yra užsienio raktas, nurodantis stulpelį "Instruktorius", esantį Mokytojų lentelėje:
CREATE TABLE Studentai ( StudentID INT AUTO_INCREMENT PRIMARY KEY, Student_Name VARCHAR (100), Teacher_FK INT, UŽSIENIO REIKŠMĖ (Teacher_FK) NUORODOS Mokytojai (InstruktoriusI)))
;
Naudojant santykius prisijungti prie lentelių
Sukūrę vieną ar kelis santykius savo duomenų bazėje, galite pasinaudoti savo galia, naudodami SQL JOIN užklausas, kad sujungtumėte informaciją iš kelių lentelių. Labiausiai paplitęs prisijungimo būdas yra SQL INNER JOIN arba paprasta prisijungti. Šis prisijungimo tipas grąžina visus įrašus, kurie atitinka prisijungimo būklę iš kelių lentelių.Pavyzdžiui, ši JOIN sąlyga grąžins "Student_Name", "Teacher_Name" ir "Course", kur užsienio klavišas lentelėje "Studentai" atitinka pirminį raktą Mokytojų lentelėje:
SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.CourseIš studentųINNER JOIN mokytojaiON Studentai.Teacher_FK = Mokytojai.InstruktoriusID;
Šiame pareiškime pateikiama tokia lentelė:
Returned Table iš SQL prisijungimo pareiškimo
Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish