Utangulizi wa Mahusiano ya Database

Neno la database "uhusiano" au "uhusiano" linaelezea namna data katika meza imeunganishwa.

Wahamiaji kwenye ulimwengu wa daima huwa na wakati mgumu kuona tofauti kati ya database na sahajedwali. Wanaona meza za data na kutambua kwamba orodha hizi zinakuwezesha kuandaa na kuuliza data kwa njia mpya, lakini hushindwa kuelewa umuhimu wa mahusiano kati ya data ambayo hutoa teknolojia ya database ya uhusiano jina lake.

Uhusiano unawezesha kuelezea uhusiano kati ya meza tofauti za database kwa njia za nguvu. Mahusiano haya yanaweza kufutwa ili kufanya maswali yenye nguvu ya msalaba, inayojulikana kama kujiunga.

Aina ya Mahusiano ya Database

Kuna aina tatu tofauti za mahusiano ya database, kila mmoja anayeitwa kwa mujibu wa idadi ya safu ya meza inayoweza kuhusishwa katika uhusiano huo. Aina ya aina hizi tatu za uhusiano zipo kati ya meza mbili.

Mahusiano ya kujitegemea: Uchunguzi maalum

Mahusiano ya kujitegemea hutokea wakati kuna meza moja tu inayohusika. Mfano mmoja wa kawaida ni meza ya Waajiri ambayo ina habari kuhusu msimamizi wa kila mfanyakazi. Kila msimamizi pia ni mfanyakazi na ana msimamizi wake mwenyewe. Katika suala hili, kuna uhusiano wa moja kwa moja binafsi, kama kila mfanyakazi ana msimamizi mmoja, lakini kila msimamizi anaweza kuwa na mfanyakazi zaidi ya moja.

Kujenga Uhusiano na Keki za Nje

Unaunda uhusiano kati ya meza kwa kubainisha ufunguo wa kigeni . Hii ufunguo unaelezea database ya uhusiano jinsi meza zinavyohusiana. Mara nyingi, safu katika Jedwali A ina funguo za msingi ambazo zimeandikwa kutoka kwenye Jedwali B.

Fikiria tena mfano wa meza za Walimu na Wanafunzi. Jedwali la Walimu lina ID, jina, na safu ya kozi.

Walimu
InstructorID Mwalimu_Name Kozi
001 John Doe Kiingereza
002 Jane Schmoe Math

Jedwali la wanafunzi linajumuisha ID, jina, na safu ya ufunguo wa kigeni:

Wanafunzi
Mwanafunzi Mwanafunzi_Name Mwalimu_FK
0200 Lowell Smith 001
0201 Brian Short 001
0202 Corky Mendez 002
0203 Monica Jones 001

Safu Teacher_FK katika meza ya Wanafunzi inaonyesha thamani muhimu ya mwalimu katika meza ya Walimu.

Mara kwa mara, wabunifu wa database watatumia "PK" au "FK" katika jina la safu ili kutambua kwa urahisi ufunguo wa msingi au safu ya ufunguo wa kigeni.

Kumbuka kwamba meza hizi mbili zinaonyesha uhusiano mmoja hadi wengi kati ya walimu na wanafunzi.

Uhusiano na uaminifu wa kutafakari

Mara baada ya kuongezea ufunguo wa kigeni kwenye meza, unaweza kuunda kikwazo cha database ambacho kinasisitiza uadilifu wa kutaja kati ya meza mbili. Hii inahakikisha kuwa mahusiano kati ya meza hubakia thabiti. Wakati meza moja ina ufunguo wa kigeni kwenye meza nyingine, dhana ya utimilifu wa kutaja inasema kuwa thamani yoyote ya nje ya kigeni katika Jedwali B inapaswa kutaja rekodi iliyopo katika Jedwali A.

Utekelezaji wa Mahusiano

Kulingana na database yako, unatekeleza uhusiano kati ya meza kwa njia tofauti. Microsoft Access hutoa wizara ambayo inaruhusu urahisi kuunganisha meza na pia kutekeleza utimilifu wa kutafakari.

Ikiwa unaandika SQL moja kwa moja, ungependa kuunda meza ya Walimu kwanza, wakitangaza safu ya ID kuwa msingi muhimu:

Unda TABLE Walimu (

InstructorID INT AUTO_INCREMENT PRIMARY KEY,
Mwalimu_Name VARCHAR (100),
Kozi VARCHAR (100)
);

Unapounda meza ya Wanafunzi, unasema safu ya Mwalimu_FK kuwa kiini cha kigeni kinachoelezea safu ya InstructorID katika meza ya Walimu:

Unda TABLE Wanafunzi (
StudentID INT AUTO_INCREMENT PRIMARY KEY,
Mwanafunzi_Name VARCHAR (100), Teacher_FK INT,
KIJANI KIWE (Teacher_FK) REFERENCES Walimu (InstructorID))
);

Kutumia Mahusiano Kujiunga na Majedwali

Mara baada ya kuunda uhusiano mmoja au zaidi kwenye databana yako, unaweza kutumia uwezo wao kwa kutumia SQL JOIN maswali kuchanganya habari kutoka kwa meza nyingi. Aina ya kawaida ya kujiunga ni SQL INNER JOIN, au kujiunga rahisi. Aina hii ya kujiunga inarudi rekodi zote ambazo zinakabiliwa na hali ya kujiunga kutoka kwa meza nyingi. Kwa mfano, hali hii ya JOIN itarudi Student_Name, Teacher_Name, na Kozi ambapo ufunguo wa kigeni katika Wafanyabiashara meza umefananisha ufunguo wa msingi katika meza ya Walimu:

Chagua Wanafunzi.Student_Name, WalimuTeacher_Name, Teachers.Course
Kutoka kwa Wanafunzi
INNER JOIN Walimu
ILIYO Wanafunzi. Mwalimu_FK = WalimuInstructorID;

Taarifa hii inazalisha meza kama kitu hiki:

Jedwali la Kurudi kutoka kwa Taarifa ya Kujiunga SQL

Mwanafunzi_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish