Sissejuhatus andmebaasi suhetesse

Andmebaasi termin "relatsiooniline" või "suhe" kirjeldab seda, kuidas tabelites olevad andmed on ühendatud.

Uutele andmebaaside maailmas on sageli raske näha andmebaasi ja arvutustabeli vahelisi erinevusi. Nad näevad andmete tabelid ja tunnistavad, et andmebaasid võimaldavad teil uusi andmeid korraldada ja päringuid , kuid ei suuda mõista seoseid andmete vahel, mis annavad relatsioonandmebaasi tehnoloogia nime.

Suhted võimaldavad teil kirjeldada ühendusi erinevate andmebaaside tabelite vahel võimas viisidel. Seejärel saab neid suhteid võimendama, et täita võimasid lauaarvutite päringuid, mida nimetatakse liituvateks.

Andmebaasi seoste tüübid

Andmebaasi suhteid on kolm erinevat tüüpi, igaüks nimega vastavalt nende tabeli ridade arvule, mis võivad suhtega kaasata. Kõik need kolm seosetüüpi eksisteerivad kahe tabeli vahel.

Eneseusaldatavad suhted: erijuhtum

Iseseisva suhe tekib, kui on ainult üks tabel. Üks tavaline näide on töötajate tabel, mis sisaldab teavet iga töötaja juhendaja kohta. Iga juhendaja on ka töötaja ja tal on oma juhendaja. Sellisel juhul on enesekindel suhe üks-kuni-ühele, kuna igal töötajal on üks juhendaja, kuid igal juhendajal võib olla rohkem kui üks töötaja.

Välisvõtmetega suhete loomine

Looge suhted tabelite vahel, määrates välisvõti. See võti annab relatsioonandmebaasile teada, kuidas tabelid on seotud. Paljudel juhtudel sisaldab veerg tabelis A esmaseid võtmeid, millele on viidatud tabelist B.

Mõelge uuesti õpetajate ja õpilaste tabelite näide. Õpetajate tabel sisaldab ainult ID-d, nime ja kursuse veergu:

Õpetajad
JuhendajaID Õpetaja_nimi Kursus
001 John Doe Inglise
002 Jane Schmoe Matemaatika

Õpilaste tabel sisaldab ID-d, nime ja võõrkeele veergu:

Õpilased
Õpilase ID Õpilase nimi Teacher_FK
0200 Lowell Smith 001
0201 Brian Short 001
0202 Corky Mendez 002
0203 Monica Jones 001

Tabeli Õpilased veerg Teacher_FK viitab õpetaja tabeli juhendaja peamise võtmeväärtusele .

Sageli kasutavad andmebaasi disainerid veergu nimeks "PK" või "FK", et primaarvõtit või välist võtmesõna veergu hõlpsalt tuvastada.

Pange tähele, et need kaks tabelit illustreerivad õpetajate ja õpilaste vahelist üksteisemõistmist.

Suhted ja terviklikkuse tagasiside

Kui olete lisanud võõrkeele tabelisse, saate seejärel luua andmebaasi piirangu, mis tagab kahe tabeli vahelise võrdväärse terviklikkuse . See tagab, et tabelite vahelised suhted jäävad järjepidevaks. Kui ühel tabelil on teise tabeli võõrvõti, viitab viidete terviklikkuse mõiste, et mõni tabeli B võõrväärtusväärtus peab viitama tabeli A olemasolevale rekordile.

Suhete rakendamine

Sõltuvalt teie andmebaasist rakendate suhteid tabelite vahel erineval viisil. Microsoft Access pakub viisardit, mis hõlpsalt võimaldab teil lingid linkida ja samuti viidete terviklikkust rakendada.

Kui sa kirjutad SQL otse, loote kõigepealt tabeli Õpetajad, deklareerides ID-veeru esmaseks võtmeks:

CREATE TABLE Õpetajaid (

InstruktorID INT AUTO_INCREMENT PRIMARY KEY,
Õpetaja nimi VARCHAR (100),
Kursus VARCHAR (100)
);

Kui loote õpilaste tabeli, deklareerite Teacher_FK veeru välisteks võti, mis viitab InstructorID veerule õpetajate tabelis:

CREATE TABLE Õpilased (
StudentID INT AUTO_INCREMENT PRIMARY KEY,
Student_Name VARCHAR (100), Teacher_FK INT,
VÄLISVÕIME (Teacher_FK) LINGID Õpetajad (InstructorID))
);

Kasutades suhteid tabelitega liitumiseks

Kui olete loonud oma andmebaasis ühe või mitu suhet, võite kasutada oma jõudu SQL JOIN päringute abil, et kombineerida teavet mitmest tabelist. Kõige tavalisem liitumisviis on SQL INNER JOIN või lihtne liitumine. Selline liitu tagastab kõik dokumendid, mis vastavad ühinemistingimustele mitmest tabelist. Näiteks tagastab see JOIN-i tingimus Student_Name, Teacher_Name ja Course, kus võõrustaja tabelis Students vastab esmasele võtmele õpetajate tabelis:

SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.Course
Õpilased
INNER JOIN Õpetajad
ON Õpilased.Teacher_FK = Õpetajad.InstruktorID;

See avaldus annab tabeli midagi sellist:

Tagastatud tabel SQL Join'i avaldusest

Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish