Įvadas į duomenų bazių ryšius

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 santykių tarp duomenų, kurie suteikia reliacinės duomenų bazės technologijos pavadinimą, reikšmės.

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ų.

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

Jūs nustatote santykius tarp lentelių, nurodydami užsienio raktą. Šis raktas nurodo reliacinę duomenų bazę, kaip yra susijusios 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:

Mokytojai
InstruktoriusID Mokytojo vardas Kursas
001 John Doe Anglų
002 Jane Schmoe Matematika

Studentų lentelėje yra ID, vardas ir užsienio rakto stulpelis:

Studentai
Studento pažymėjimas Studento vardas Teacher_FK
0200 Lowellas Smitas 001
0201 Brian Short 001
0202 Corky Mendez 002
0203 Monika Jones 001

Stalo "Teacher_FK " lentelė "Studentai" nurodo mokytojų lentelės instruktoriaus pagrindinę vertę .

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.Course
Iš studentų
INNER JOIN mokytojai
ON 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