Ի՞նչ է տվյալների բազայի կապը:

Բովանդակություն:

Ի՞նչ է տվյալների բազայի կապը:
Ի՞նչ է տվյալների բազայի կապը:
Anonim

Հարաբերակցություն է հաստատվում տվյալների բազայի երկու աղյուսակների միջև, երբ մի աղյուսակն օգտագործում է օտար բանալի, որը հղում է կատարում մեկ այլ աղյուսակի հիմնական բանալին: Սա հարաբերական տվյալների բազա տերմինի հիմքում ընկած հիմնական հասկացությունն է:

Ինչպես է աշխատում արտաքին բանալին հարաբերություններ հաստատելու համար

Առաջնային բանալին եզակիորեն նույնականացնում է աղյուսակի յուրաքանչյուր գրառում: Դա թեկնածուի բանալու տեսակ է, որը սովորաբար աղյուսակի առաջին սյունակն է և կարող է ավտոմատ կերպով ստեղծվել տվյալների բազայի կողմից՝ ապահովելու, որ այն եզակի է: Օտար բանալին այլ թեկնածու բանալին է (ոչ հիմնական բանալի), որն օգտագործվում է գրառումը այլ աղյուսակի տվյալների հետ կապելու համար:

Օրինակ, դիտարկեք այս երկու աղյուսակները, որոնք ցույց են տալիս, թե որ ուսուցիչը որ դասընթացն է դասավանդում: Այստեղ Դասընթացների աղյուսակի հիմնական բանալին Course_ID է: Դրա արտաքին բանալին է Teacher_ID:

Դասընթացի_ID Դասընթացի_անվանում Teacher_ID
Դասընթաց_001 Կենսաբանություն Ուսուցիչ_001
Դասընթաց_002 Math Ուսուցիչ_002
Դասընթաց_003 Անգլերեն Ուսուցիչ_003

Դուք կարող եք տեսնել, որ Դասընթացների օտարերկրյա բանալին համընկնում է Teachers-ի հիմնական բանալին՝

Teacher_ID Ուսուցչի_անուն
Ուսուցիչ_001 Կարմեն
Ուսուցիչ_002 Վերոնիկա
Ուսուցիչ_003 Խորխե

Կարող ենք ասել, որ Teacher_ID օտարերկրյա բանալին օգնեց հարաբերություններ հաստատել դասընթացների և ուսուցիչների աղյուսակների միջև:

Image
Image

Տվյալների բազայի փոխհարաբերությունների տեսակները

Օգտագործելով օտար բանալիներ կամ այլ թեկնածու բանալիներ, դուք կարող եք իրականացնել երեք տեսակի հարաբերություններ աղյուսակների միջև.

Մեկ-մեկ

Հարաբերությունների այս տեսակը թույլ է տալիս միայն մեկ գրառում հարաբերությունների յուրաքանչյուր կողմում: Առաջնային բանալին վերաբերում է մեկ այլ աղյուսակի միայն մեկ գրառումին (կամ ոչ մեկին): Օրինակ, ամուսնության մեջ յուրաքանչյուր ամուսին ունի միայն մեկ այլ ամուսին: Այս տեսակի հարաբերությունները կարող են իրականացվել մեկ աղյուսակում և, հետևաբար, չի օգտագործում օտար բանալի:

Մեկից շատ

Մեկից շատ հարաբերությունները թույլ են տալիս մեկ աղյուսակի մեկ գրառումը կապված լինել մեկ այլ աղյուսակի բազմաթիվ գրառումների հետ: Դիտարկենք մի բիզնես տվյալների բազայով, որն ունի Հաճախորդների և Պատվերների աղյուսակներ:

Մեկ հաճախորդը կարող է ձեռք բերել մի քանի պատվեր, սակայն մեկ պատվերը չի կարող կապված լինել բազմաթիվ հաճախորդների հետ: Հետևաբար Պատվերների աղյուսակը պետք է պարունակի օտար բանալի, որը կհամապատասխանի Հաճախորդների աղյուսակի հիմնական բանալիին, մինչդեռ Հաճախորդների աղյուսակը չպետք է ունենա օտար բանալի, որը ցույց է տալիս Պատվերների աղյուսակը::

Շատ-շատ-շատ

Սա բարդ հարաբերություն է, որտեղ աղյուսակի բազմաթիվ գրառումներ կարող են կապվել մեկ այլ աղյուսակի բազմաթիվ գրառումների հետ: Օրինակ՝ մեր բիզնեսին, հավանաբար, պետք են Հաճախորդների և Պատվերների աղյուսակներ, և հավանաբար նաև՝ Ապրանքների աղյուսակ:

Կրկին, Հաճախորդների և Պատվերների աղյուսակի հարաբերությունները մեկ-շատ են, բայց հաշվի առեք Պատվերների և Ապրանքների աղյուսակի հարաբերությունները: Պատվերը կարող է պարունակել մի քանի ապրանք, և ապրանքը կարող է կապված լինել մի քանի պատվերի հետ, քանի որ մի քանի հաճախորդներ կարող են պատվեր ներկայացնել, որը պարունակում է նույն ապրանքներից մի քանիսը: Այս տեսակի հարաբերությունները պահանջում են նվազագույնը երեք աղյուսակ:

Ինչու են տվյալների բազայի փոխհարաբերությունները կարևոր:

Տվյալների բազայի աղյուսակների միջև հետևողական հարաբերությունների հաստատումն օգնում է ապահովել տվյալների ամբողջականությունը՝ նպաստելով տվյալների բազայի նորմալացմանը: Օրինակ, ի՞նչ կլիներ, եթե մենք որևէ աղյուսակ չկապակցեինք օտար բանալիով և փոխարենը միավորեինք Դասընթացների և Ուսուցիչների աղյուսակների տվյալները, օրինակ՝:

Teacher_ID Ուսուցչի_անուն Դասընթաց
Ուսուցիչ_001 Կարմեն Կենսաբանություն, մաթեմատիկա
Ուսուցիչ_002 Վերոնիկա Math
Ուսուցիչ_003 Խորխե Անգլերեն

Այս դիզայնը անճկուն է և խախտում է տվյալների բազայի նորմալացման առաջին սկզբունքը՝ Առաջին նորմալ ձևը, որը սահմանում է, որ աղյուսակի յուրաքանչյուր բջիջ պետք է պարունակի մեկ, դիսկրետ տվյալ:

Կամ գուցե մենք որոշեցինք ավելացնել երկրորդ ռեկորդը Կարմենի համար, որպեսզի պարտադրենք 1NF:

Teacher_ID Ուսուցչի_անուն Դասընթաց
Ուսուցիչ_001 Կարմեն Կենսաբանություն
Ուսուցիչ_001 Կարմեն Math
Ուսուցիչ_002 Վերոնիկա Math
Ուսուցիչ_003 Խորխե Անգլերեն

Սա դեռևս թույլ դիզայն է, որը ներկայացնում է անհարկի կրկնօրինակում և այն, ինչ կոչվում է տվյալների ներդրման անոմալիաներ, ինչը նշանակում է, որ այն կարող է նպաստել տվյալների անհամապատասխանությանը:Օրինակ, եթե ուսուցիչը ունի բազմաթիվ գրառումներ, ի՞նչ անել, եթե որոշ տվյալներ պետք է խմբագրվեն, բայց տվյալների խմբագրումն իրականացնող անձը չի գիտակցում, որ կան բազմաթիվ գրառումներ: Այնուհետև աղյուսակը պետք է պարունակի տարբեր տվյալներ նույն անհատի համար՝ առանց դրանց նույնականացնելու կամ խուսափելու որևէ հստակ միջոցի:

Այս աղյուսակը բաժանելով երկու աղյուսակի՝ Ուսուցիչներ և Դասընթացներ, ստեղծում է համապատասխան հարաբերություններ տվյալների միջև և, հետևաբար, օգնում է ապահովել տվյալների հետևողականությունն ու ճշգրտությունը:

Խորհուրդ ենք տալիս: