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.
- Üks-ühele suhtele tekivad siis, kui esimesel tabelil on igal tabelis üks ja teine tabel. Üks-ühele suhteid kasutatakse harva, sest sageli on efektiivsem lihtsalt kogu teabe kogumiseks üks tabel. Mõned andmebaasi kujundajad kasutavad selle suhte eeliseid, luues tabeleid, mis sisaldavad teise tabeli andmete alamhulka.
- Üks-kuni-palju suhteid on kõige sagedasem andmebaasi suhe. Need tekivad siis, kui iga tabeli A rekord vastab tabelis B ühele või mitmele kirjel, kuid iga tabeli B rekord vastab tabelisse ainult ühele rekordile. Näiteks suhe õpetajate tabeli ja üliõpilaste tabeli vahel algkoolis andmebaas on tõenäoliselt üks-kõigile suhe, sest igal üliõpilasel on ainult üks õpetaja, kuid igal õpetajail on mitu õpilast. See üks-to-palju disain aitab kõrvaldada dubleeritud andmed.
- Paljud-paljud suhted esinevad siis, kui iga tabeli A rekord vastab tabelis B ühele või mitmele kirjale ja iga tabeli B rekord vastab ühele või mitmele tabelis A esitatud kirjale. Näiteks suhe õpetajate ja kursuste vahel tabel oleks tõenäoliselt palju-paljud, sest iga õpetaja võib anda rohkem kui ühe kursuse ja igal kursusel võib olla rohkem kui üks õpetaja.
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:
JuhendajaID | Õpetaja_nimi | Kursus |
---|---|---|
001 | John Doe | Inglise |
002 | Jane Schmoe | Matemaatika |
Õpilaste tabel sisaldab ID-d, nime ja võõrkeele veergu:
Õ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