Andmebaasi mõisted relatsioon ja seos kirjeldavad tabelite andmete ühendamise viisi. Relatsiooniandmebaas koosneb kahest või enamast tabelist, mis on seotud kindla võtmega. Relatsiooniandmebaas erineb struktureerimata andmebaasidest, mis on levinud suurandmete algatustes. Relatsiooniandmebaasid nõuavad rangeid reegleid tabelite määratlemise ja tabelitevahelise kehtiva seose kohta.
Andmebaasisuhete tüübid
Seosed võimaldavad kirjeldada andmebaasi tabelite vahelisi seoseid võimsal viisil. Neid seoseid saab seejärel kasutada võimsate tabeliüleste päringute tegemiseks, mida nimetatakse JOIN-ideks.
Andmebaasi seoseid on kolme tüüpi, millest igaühe nimi on antud seosega seotud tabeliridade arvu järgi. Kõik need kolm seostüüpi eksisteerivad kahe tabeli vahel.
- Üks-ühele seosed tekivad siis, kui igal esimese tabeli kirjel on teises tabelis ainult üks vaste. Üks-ühele seoseid kasutatakse harva, kuna sageli on tõhusam koondada kogu teave ühte tabelisse. Mõned andmebaasi kujundajad kasutavad seda seost ära, luues tabeleid, mis sisaldavad alamhulka teisest tabelist pärit andmetest.
- Üks-mitmele seosed on kõige levinum andmebaasi seose tüüp. Need tekivad siis, kui iga kirje tabelis A vastab ühele või mitmele tabeli B kirjele, kuid iga kirje tabelis B vastab ainult ühele kirjele tabelis A. Näiteks seos õpetajate tabeli ja õpilaste tabeli vahel algkoolis andmebaas oleks tõenäoliselt üks-mitmele suhe, sest igal õpilasel on ainult üks õpetaja, kuid igal õpetajal on mitu õpilast. See üks-mitmele kujundus aitab kõrvaldada dubleeritud andmed.
- Mitu-mitmele seosed tekivad siis, kui iga kirje tabelis A vastab ühele või mitmele tabeli B kirjele ja iga kirje tabelis B vastab ühele või mitmele kirjele tabelis A. Näiteks on suhe õpetajate tabeli ja kursuste tabeli vahel tõenäoliselt palju-mitmele, sest iga õpetaja võib juhendada rohkem kui ühte kursust ja igal kursusel võib olla rohkem kui üks juhendaja.
Alumine rida
Iseenesele viitavad seosed tekivad siis, kui tegemist on ainult ühe tabeliga. Üks levinud näide on tabel Töötajad, mis sisaldab teavet iga töötaja juhendaja kohta. Iga juhendaja on ühtlasi töötaja ja tal on juhendaja. Sel juhul on üks-mitmele enesele viitav suhe, kuna igal töötajal on üks ülemus, kuid igal juhendajal võib olla rohkem kui üks töötaja.
Võõrvõtmetega suhete loomine
Tabelitevahelised seosed loote võõrvõtme määramisega. See võti ütleb relatsiooniandmebaasile, kuidas tabelid on seotud. Paljudel juhtudel sisaldab tabeli A veerg primaarvõtmeid, millele on viidatud tabelist B.
Mõelge tabelite Õpetajad ja Õpilased näitele. Tabel Õpetajad sisaldab ID-d, nime ja kursuse veergu:
InstructorID | Õpetaja_nimi | Kursus |
001 | John Doe | inglise |
002 | Jane Schmoe | Matemaatika |
Tabel Õpilased sisaldab ID-d, nime ja võõrvõtme veergu:
StudentID | Õ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 primaarvõtme väärtusele tabelis Teachers. Sageli kasutavad andmebaasi kujundajad primaarvõtme või võõrvõtme veeru tuvastamiseks veeru nimes PK või FK.
Need kaks tabelit illustreerivad üks-mitmele suhet õpetajate ja õpilaste vahel.
Suhted ja viidete terviklikkus
Pärast võõrvõtme lisamist tabelisse looge andmebaasipiirang, mis jõustab kahe tabeli vahelise viiteterviklikkuse. See samm tagab, et tabelitevahelised seosed jäävad järjepidevaks. Kui ühel tabelis on teise tabeli võõrvõti, nõuab viiteterviklikkus, et mis tahes võõrvõtme väärtus tabelis B viitaks tabelis A olemasolevale kirjele.
Suhete rakendamine
Sõltuv alt teie andmebaasist rakendate tabelite vahelisi seoseid erineval viisil. Microsoft Access pakub viisardit, mis võimaldab teil linkida tabeleid ja jõustada ka viidete terviklikkust.
Kui kirjutate otse SQL-i, looge esm alt tabel Teachers, deklareerides primaarvõtmeks ID veeru:
CREATE TABLE Õpetajad (InstructorID INT AUTO_INCREMENT PRIMARY KEY, Teacher_Name VARCHAR(100), Kursus VARCHAR(100));
Tabeli Õpilased loomisel deklareerite veeru Teacher_FK võõrvõtmeks, mis viitab õpetajate tabeli veerule InstructorID:
LOO TABEL Õpilased (StudentID INT AUTO_INCREMENT PRIMARY KEY, Student_Name VARCHAR(100), Teacher_FK INT, FOREIGN KEY (Õpetaja_ID) REFERENCESor_FK));
Seoste kasutamine tabelitega liitumiseks
Pärast andmebaasis ühe või mitme seose loomist kasutage nende võimsust, kasutades SQL JOIN päringuid, et kombineerida teavet mitmest tabelist. Kõige tavalisem liitumistüüp on SQL INNER JOIN, mis on lihtne liitumine. Seda tüüpi liitmine tagastab kõik kirjed, mis vastavad liitumise tingimusele ühest või mitmest tabelist.
Näiteks see JOIN-tingimus tagastab õpilase_nime, õpetaja_nime ja kursuse, kus õpilaste tabelis olev võõrvõti ühtib õpetajate tabeli primaarvõtmega:
VALI Õpilased. Õpilase_nimi, Õpetajad. Õpetaja_nimi, Õpetajad. Kursus
FROM Õpilased
SISEMINE LIITU ÕpetajadON Õpilased. Teacher_FK=Õpetajad. InstruktorID;
See väide loob umbes sellise tabeli:
Õpilase_nimi | Õpetaja_nimi | Kursus |
Lowell Smith | John Doe | inglise |
Brian Short | John Doe | inglise |
Corky Mendez | Jane Schmoe | Matemaatika |
Monica Jones | John Doe | inglise |