Tèm nan baz done "relasyon" oswa "relasyon" dekri fason ke done nan tab yo konekte.
Newcomers nan mond lan nan baz done souvan gen yon tan difisil wè diferans ki genyen ant yon baz done ak yon calcul. Yo wè tab nan done ak rekonèt ke baz done pèmèt ou òganize ak sijè done nan nouvo fason, men fail atrab siyifikasyon nan relasyon ki genyen ant done ki bay relasyon baz done teknoloji non li yo.
Relasyon yo pèmèt ou dekri koneksyon ki genyen ant tab baz done diferan nan fason ki pwisan. Relasyon sa yo ka Lè sa a, dwe exploit yo fè pwisan kesyon kwa-tab, li te ye kòm kontre ak.
Kalite bazaj relasyon yo
Gen twa diferan kalite relasyon baz done, chak yo te rele dapre kantite ranje tab ki ka patisipe nan relasyon an. Chak nan twa kalite relasyon sa yo egziste ant de tab.
- Yon sèl-a-yon sèl relasyon rive lè chak antre nan premye tab la gen yon sèl, ak sèlman yon sèl, kontrepati nan dezyèm tab la. Yon relasyon youn-a-yon sèl yo raman itilize paske li se souvan pi efikas tou senpleman mete tout enfòmasyon ki nan yon tab sèl. Gen kèk konsèpteur baz done pran avantaj de relasyon sa a pa kreye tab ki gen yon subset nan done yo soti nan yon lòt tab.
- Yon sèl-a-anpil relasyon yo se tip ki pi komen nan relasyon baz done. Yo rive lè chak dosye nan Tablo A koresponn ak youn oswa plizyè dosye nan Table B, men chak dosye nan Table B koresponn ak yon sèl dosye nan Table A. Pou egzanp, relasyon ki genyen ant yon tab pwofesè ak yon tab elèv nan yon lekòl elemantè Baz done ta gen anpil chans pou yon relasyon yon sèl-a-anpil, paske chak elèv gen yon sèl pwofesè, men chak pwofesè gen plizyè elèv. Sa a konsepsyon yon sèl-a-anpil ede elimine done duplicated.
- Anpil relasyon ki rive anpil lè chak dosye nan Tablo A koresponn ak youn oswa plizyè dosye nan Table B, epi chak dosye nan Table B koresponn ak youn oswa plizyè dosye nan Table A. Pou egzanp, relasyon ant yon pwofesè ak yon kou tab la ta ka gen anpil anpil moun paske chak pwofesè ka enstwi plis pase yon kou, epi chak kou ka gen plis pase yon sèl enstriktè.
Oto-Referencing Relasyon: Yon ka Espesyal
Oto-referans relasyon rive lè gen yon sèl tab ki enplike. Yon egzanp komen se yon tab Anplwaye ki gen enfòmasyon sou sipèvizè chak anplwaye. Chak sipèvizè se yon anplwaye e li gen sipèvizè li. Nan ka sa a, gen yon sèl-a-anpil relasyon pwòp tèt ou-referans, kòm chak anplwaye gen yon sèl sipèvizè, men chak sipèvizè ka gen plis pase yon sèl anplwaye.
Kreye relasyon ak kle etranje yo
Ou kreye relasyon ant tab pa espesifye yon kle etranje yo .Ka kle sa a di baz done relasyon ki jan tab yo ki gen rapò. Nan anpil ka, yon kolòn nan Table A gen kle prensipal ki referans nan Table B.
Konsidere ankò egzanp la nan pwofesè yo ak elèv tab. Tablo Pwofesè yo gen sèlman yon ID, yon non, ak yon kolòn kou:
InstructorID | Pwofesè_Name | Kou |
---|---|---|
001 | John Doe | Angle |
002 | Jane Schmoe | Matematik |
Tablo Elèv yo gen ladan yon ID, non, ak yon kolòn etranje kle:
StudentID | Student_Name | Pwofesè_FK |
---|---|---|
0200 | Lowell Smith | 001 |
0201 | Brian Kout | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
Kolòn Teacher_FK a nan tablo elèv yo referans kle kle prensipal yon enstriktè nan tab pwofesè yo.
Souvan, konsèpteur baz done ap itilize "PK" oswa "FK" nan non kolòn nan fasilman idantifye yon prensipal kle oswa etranje kle kolòn.
Remake byen ke de tab sa yo ilistre yon relasyon yon sèl-a-anpil ant pwofesè yo ak elèv yo.
Relasyon ak Entegrite referansyèl
Yon fwa ou te ajoute yon kle etranje nan yon tab, ou ka Lè sa a, kreye yon contrainte baz done ki ranfòse referans entegrite ant de tab yo. Sa a asire ke relasyon ant tab rete ki konsistan. Lè yon tab gen yon kle etranje pou yon lòt tab, konsèp eta entegrite referansyèl ke nenpòt valè kle etranje nan Table B dwe refere a yon dosye ki deja egziste nan Table A.
Aplike Relasyon
Tou depan de baz done ou, ou aplike relasyon ant tab nan diferan fason. Microsoft Aksè bay yon sòsye ki fasil pèmèt ou konekte tab ak tou ranfòse referans entegrite.
Si ou ap ekri SQL dirèkteman, ou ta premye kreye pwofesè yo tab, deklare yon kolòn ID yo dwe kle prensipal la:
Kreye pwofesè tab yo (
InstructorID INT AUTO_INCREMENT PREMYE KLE,
Pwofesè_Name VARCHAR (100),
Kou VARCHAR (100)
);
Lè ou kreye Tablo Elèv yo, ou deklare kolòn Teacher_FK la pou yon kle etranje yo referencte kolòn InstructorID la nan tab pwofesè yo:
CREATE TABLE Elèv yo (
StudentID INT AUTO_INCREMENT PREMYE KLE,
Student_Name VARCHAR (100), Pwofesè_ FK INT,
KONSÈY LEKÒL (Teacher_FK) REFERANS Pwofesè (InstructorID))
);
Sèvi ak relasyon yo Join Tablo
Yon fwa ou te kreye youn oswa plis relasyon nan baz done ou, ou ka ogmante pouvwa yo lè l sèvi avèk queries SQL JOIN konbine enfòmasyon ki soti nan tab miltip. Kalite ki pi komen nan rantre nan se yon SQL INNER JOIN, oswa yon senp rantre nan. Sa a ki kalite rantre nan retounen tout dosye ki satisfè kondisyon an rantre nan tab miltip. Pa egzanp, kondisyon JOIN sa a pral retounen Student_Name, Teacher_Name, ak kou kote kle etranjè a nan tab elèv la ki koresponn kle prensipal la nan tab pwofesè yo:
Chwazi Students.Student_Name, Teachers.Teacher_Name, Teachers.Course
SOTI NAN Elèv
INNER ANSANM pwofesè yo
SOU Elèv yo. Teacher_FK = Teachers.InstructorID;
Deklarasyon sa a pwodui yon bagay tankou:
Retounen Table soti nan Deklarasyon an SQL Join
Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish