Հարաբերակցություն է հաստատվում տվյալների բազայի երկու աղյուսակների միջև, երբ մի աղյուսակն օգտագործում է օտար բանալի, որը հղում է կատարում մեկ այլ աղյուսակի հիմնական բանալին: Սա հարաբերական տվյալների բազա տերմինի հիմքում ընկած հիմնական հասկացությունն է:
Ինչպես է աշխատում արտաքին բանալին հարաբերություններ հաստատելու համար
Առաջնային բանալին եզակիորեն նույնականացնում է աղյուսակի յուրաքանչյուր գրառում: Դա թեկնածուի բանալու տեսակ է, որը սովորաբար աղյուսակի առաջին սյունակն է և կարող է ավտոմատ կերպով ստեղծվել տվյալների բազայի կողմից՝ ապահովելու, որ այն եզակի է: Օտար բանալին այլ թեկնածու բանալին է (ոչ հիմնական բանալի), որն օգտագործվում է գրառումը այլ աղյուսակի տվյալների հետ կապելու համար:
Օրինակ, դիտարկեք այս երկու աղյուսակները, որոնք ցույց են տալիս, թե որ ուսուցիչը որ դասընթացն է դասավանդում: Այստեղ Դասընթացների աղյուսակի հիմնական բանալին Course_ID է: Դրա արտաքին բանալին է Teacher_ID:
Դասընթացի_ID | Դասընթացի_անվանում | Teacher_ID |
---|---|---|
Դասընթաց_001 | Կենսաբանություն | Ուսուցիչ_001 |
Դասընթաց_002 | Math | Ուսուցիչ_002 |
Դասընթաց_003 | Անգլերեն | Ուսուցիչ_003 |
Դուք կարող եք տեսնել, որ Դասընթացների օտարերկրյա բանալին համընկնում է Teachers-ի հիմնական բանալին՝
Teacher_ID | Ուսուցչի_անուն |
---|---|
Ուսուցիչ_001 | Կարմեն |
Ուսուցիչ_002 | Վերոնիկա |
Ուսուցիչ_003 | Խորխե |
Կարող ենք ասել, որ Teacher_ID օտարերկրյա բանալին օգնեց հարաբերություններ հաստատել դասընթացների և ուսուցիչների աղյուսակների միջև:
Տվյալների բազայի փոխհարաբերությունների տեսակները
Օգտագործելով օտար բանալիներ կամ այլ թեկնածու բանալիներ, դուք կարող եք իրականացնել երեք տեսակի հարաբերություններ աղյուսակների միջև.
Մեկ-մեկ
Հարաբերությունների այս տեսակը թույլ է տալիս միայն մեկ գրառում հարաբերությունների յուրաքանչյուր կողմում: Առաջնային բանալին վերաբերում է մեկ այլ աղյուսակի միայն մեկ գրառումին (կամ ոչ մեկին): Օրինակ, ամուսնության մեջ յուրաքանչյուր ամուսին ունի միայն մեկ այլ ամուսին: Այս տեսակի հարաբերությունները կարող են իրականացվել մեկ աղյուսակում և, հետևաբար, չի օգտագործում օտար բանալի:
Մեկից շատ
Մեկից շատ հարաբերությունները թույլ են տալիս մեկ աղյուսակի մեկ գրառումը կապված լինել մեկ այլ աղյուսակի բազմաթիվ գրառումների հետ: Դիտարկենք մի բիզնես տվյալների բազայով, որն ունի Հաճախորդների և Պատվերների աղյուսակներ:
Մեկ հաճախորդը կարող է ձեռք բերել մի քանի պատվեր, սակայն մեկ պատվերը չի կարող կապված լինել բազմաթիվ հաճախորդների հետ: Հետևաբար Պատվերների աղյուսակը պետք է պարունակի օտար բանալի, որը կհամապատասխանի Հաճախորդների աղյուսակի հիմնական բանալիին, մինչդեռ Հաճախորդների աղյուսակը չպետք է ունենա օտար բանալի, որը ցույց է տալիս Պատվերների աղյուսակը::
Շատ-շատ-շատ
Սա բարդ հարաբերություն է, որտեղ աղյուսակի բազմաթիվ գրառումներ կարող են կապվել մեկ այլ աղյուսակի բազմաթիվ գրառումների հետ: Օրինակ՝ մեր բիզնեսին, հավանաբար, պետք են Հաճախորդների և Պատվերների աղյուսակներ, և հավանաբար նաև՝ Ապրանքների աղյուսակ:
Կրկին, Հաճախորդների և Պատվերների աղյուսակի հարաբերությունները մեկ-շատ են, բայց հաշվի առեք Պատվերների և Ապրանքների աղյուսակի հարաբերությունները: Պատվերը կարող է պարունակել մի քանի ապրանք, և ապրանքը կարող է կապված լինել մի քանի պատվերի հետ, քանի որ մի քանի հաճախորդներ կարող են պատվեր ներկայացնել, որը պարունակում է նույն ապրանքներից մի քանիսը: Այս տեսակի հարաբերությունները պահանջում են նվազագույնը երեք աղյուսակ:
Ինչու են տվյալների բազայի փոխհարաբերությունները կարևոր:
Տվյալների բազայի աղյուսակների միջև հետևողական հարաբերությունների հաստատումն օգնում է ապահովել տվյալների ամբողջականությունը՝ նպաստելով տվյալների բազայի նորմալացմանը: Օրինակ, ի՞նչ կլիներ, եթե մենք որևէ աղյուսակ չկապակցեինք օտար բանալիով և փոխարենը միավորեինք Դասընթացների և Ուսուցիչների աղյուսակների տվյալները, օրինակ՝:
Teacher_ID | Ուսուցչի_անուն | Դասընթաց |
---|---|---|
Ուսուցիչ_001 | Կարմեն | Կենսաբանություն, մաթեմատիկա |
Ուսուցիչ_002 | Վերոնիկա | Math |
Ուսուցիչ_003 | Խորխե | Անգլերեն |
Այս դիզայնը անճկուն է և խախտում է տվյալների բազայի նորմալացման առաջին սկզբունքը՝ Առաջին նորմալ ձևը, որը սահմանում է, որ աղյուսակի յուրաքանչյուր բջիջ պետք է պարունակի մեկ, դիսկրետ տվյալ:
Կամ գուցե մենք որոշեցինք ավելացնել երկրորդ ռեկորդը Կարմենի համար, որպեսզի պարտադրենք 1NF:
Teacher_ID | Ուսուցչի_անուն | Դասընթաց |
---|---|---|
Ուսուցիչ_001 | Կարմեն | Կենսաբանություն |
Ուսուցիչ_001 | Կարմեն | Math |
Ուսուցիչ_002 | Վերոնիկա | Math |
Ուսուցիչ_003 | Խորխե | Անգլերեն |
Սա դեռևս թույլ դիզայն է, որը ներկայացնում է անհարկի կրկնօրինակում և այն, ինչ կոչվում է տվյալների ներդրման անոմալիաներ, ինչը նշանակում է, որ այն կարող է նպաստել տվյալների անհամապատասխանությանը:Օրինակ, եթե ուսուցիչը ունի բազմաթիվ գրառումներ, ի՞նչ անել, եթե որոշ տվյալներ պետք է խմբագրվեն, բայց տվյալների խմբագրումն իրականացնող անձը չի գիտակցում, որ կան բազմաթիվ գրառումներ: Այնուհետև աղյուսակը պետք է պարունակի տարբեր տվյալներ նույն անհատի համար՝ առանց դրանց նույնականացնելու կամ խուսափելու որևէ հստակ միջոցի:
Այս աղյուսակը բաժանելով երկու աղյուսակի՝ Ուսուցիչներ և Դասընթացներ, ստեղծում է համապատասխան հարաբերություններ տվյալների միջև և, հետևաբար, օգնում է ապահովել տվյալների հետևողականությունն ու ճշգրտությունը: