Տվյալների շտեմարանային հարաբերությունները բոլոր հարաբերական տվյալների բազաների հիմնական մասերն են
Կա հարաբերություն երկու բազայի աղյուսակների միջեւ, երբ մեկ աղյուսակում արտասահմանյան բանալին է, որը հղում է կատարում մեկ այլ աղյուսակի հիմնական բանալին: Սա պայմանական բազայի տերմինի հիմնական հասկացությունն է:
Ինչպես է օտարերկրյա գործը փոխհարաբերություններ հաստատել
Եկեք վերանայենք առաջնային եւ արտաքին բանալիների հիմունքները: Առաջնային բանալին յուրահատուկ նույնականացնում է յուրաքանչյուր գրառում սեղանին: Դա թեկնածուի բանալիի տեսակն է, որը սովորաբար սեղանի առաջին սյունն է եւ կարող է ավտոմատ կերպով գեներացվել է տվյալների բազայում `ապահովելու համար, որ այն եզակի է:
Օտարերկրյա ստեղնը հերթական թեկնածուի ստեղն է (ոչ առաջնային բանալին), որն օգտագործվում է գրառումը այլ աղյուսակում տվյալների կապելու համար:
Օրինակ, հաշվի առեք այս երկու աղյուսակը, որոնք բացահայտում են, թե որ ուսուցիչը դասավանդում է դասընթացին:
Այստեղ դասընթացների աղյուսակի առաջնային բանալին `Course_ID- ը: Արտասահմանյան բանալին Ուսուցիչ_ID է.
Course_ID- ը | Դասընթացի անվանումը | Ուսուցիչ_ID |
---|---|---|
Course_001 | Կենսաբանություն | Ուսուցիչ_001 |
Course_002 | Մաթեմատիկա | Ուսուցիչ_001 |
Course_003 | Անգլերեն | Ուսուցիչ_003 |
Դուք կարող եք տեսնել, որ Դասընթացների օտարերկրյա բանալին համապատասխանում է ուսուցիչների առաջնային բանալին.
Ուսուցիչ_ID | Ուսուցիչ_Name |
---|---|
Ուսուցիչ_001 | Կարմեն |
Ուսուցիչ_002 | Վերոնիկա |
Ուսուցիչ_003 | Խորխե |
Կարող ենք ասել, որ Teacher_ID օտարերկրյա բանալին օգնում է հաստատել դասընթացների եւ ուսուցիչների սեղանների միջեւ կապը:
Տվյալների շտեմարանի տեսակները
Օգտագործելով արտաքին բանալիների կամ այլ թեկնածուի ստեղներ, դուք կարող եք իրականացնել երեք տեսակի հարաբերություններ աղյուսակների միջեւ:
One-to-one : Այս տեսակի հարաբերությունը թույլ է տալիս միայն մեկ արձանագրություն հարաբերության երկու կողմերում:
Առաջնային բանալին վերաբերում է միայն մեկ գրառումին, կամ ոչ մեկը `մեկ այլ աղյուսակում: Օրինակ, ամուսնության մեջ յուրաքանչյուր ամուսին ունի միայն մեկ այլ ամուսնական զույգ: Նման փոխհարաբերությունները կարող են իրականացվել միայն մեկ սեղանի վրա, եւ, հետեւաբար, չի օգտագործվում օտարերկրյա բանալին:
One to to many : Մեկից ավելի շատ փոխհարաբերություններ թույլ են տալիս մեկ սեղանի վրա մեկ ռեկորդ ունենալ `կապված այլ աղյուսակի բազմակի գրառումների հետ:
Մտածեք բիզնեսը հաճախորդների եւ պատվերների աղյուսակ ունեցող տվյալների բազայի հետ:
Մեկ հաճախորդը կարող է ձեռք բերել բազմաթիվ պատվերներ, սակայն մեկ պատվիրանը չի կարող կապվել բազմակի հաճախորդների հետ: Հետեւաբար, Պատվերների աղյուսակը պարունակում է արտաքին բանալի, որը համապատասխանում է Հաճախորդների սեղանի առաջնային բանալին, իսկ Հաճախորդների աղյուսակը չպետք է արտասահմանյան բանալին մատնանշի Պատվերների աղյուսակում:
Շատ-շատերի համար . Սա բարդ հարաբերություններ է, որի մեջ շատ աղյուսակում բազմաթիվ գրառումները կարող են կապվել այլ աղյուսակի բազմաթիվ գրառումներին: Օրինակ, մեր բիզնեսը հավանաբար կարիք ունի ոչ միայն հաճախորդների եւ պատվերների սեղանների, այլեւ, նաեւ, արտադրանքի աղյուսակին:
Կրկին, Հաճախորդների եւ Պատվերի աղյուսակի միջեւ փոխհարաբերությունները մեկից շատ են, սակայն համարում են Պատվերի եւ արտադրանքի սեղանի միջեւ հարաբերությունները: Պատվերը կարող են պարունակել բազմաթիվ ապրանքներ, եւ արտադրանքը կարող է կապվել բազմակի պատվերների հետ. Մի քանի հաճախորդներ կարող են ներկայացնել այնպիսի պատվեր, որը պարունակում է որոշակի ապրանքներ: Նման հարաբերությունները պահանջում են առնվազն երեք աղյուսակ:
Ինչ է նշանակում տվյալների շտեմարանների փոխհարաբերությունները:
Տվյալների բազայի աղյուսակների միջեւ հետեւողական հարաբերություններ հաստատելը օգնում է ապահովել տվյալների ամբողջականությունը, նպաստելով տվյալների շտեմարանի կարգավորումը: Օրինակ, եթե ինչ-որ բան չստեղծեինք որեւէ օտարերկրյա բանալին եւ փոխարենը համադրեց տվյալների Դասընթացների եւ Ուսուցիչների սեղաններում, ինչպես:
Ուսուցիչ_ID | Ուսուցիչ_Name | Դասընթաց |
---|---|---|
Ուսուցիչ_001 | Կարմեն | Կենսաբանություն, Մաթեմատիկա |
Ուսուցիչ_002 | Վերոնիկա | Մաթեմատիկա |
Ուսուցիչ_003 | Խորխե | Անգլերեն |
Այս դիզայնը անխոչընդոտ է եւ խախտում է տվյալների բազայի նորմալացման առաջին սկզբունքը, Առաջին Normal Form (1NF), որը նշում է, որ յուրաքանչյուր աղյուսակի բջիջը պետք է պարունակի մեկ, առանձին տվյալներ:
Կամ գուցե մենք որոշեցինք պարզապես ավելացնել երկրորդ ռեկորդ Carmen- ի համար, որպեսզի կիրառենք 1NF- ը.
Ուսուցիչ_ID | Ուսուցիչ_Name | Դասընթաց |
---|---|---|
Ուսուցիչ_001 | Կարմեն | Կենսաբանություն |
Ուսուցիչ_001 | Կարմեն | Մաթեմատիկա |
Ուսուցիչ_002 | Վերոնիկա | Մաթեմատիկա |
Ուսուցիչ_003 | Խորխե | Անգլերեն |
Սա դեռ թույլ դիզայն է, որն ավելացնում է ավելորդ կրկնօրինակումը եւ որը կոչվում է տվյալների ներածման անոմալիաներ , ինչը պարզապես նշանակում է, որ այն կարող է նպաստել անհամապատասխան տվյալների:
Օրինակ, եթե ուսուցիչը բազմակի գրառում ունի, ինչ է, եթե ինչ-որ տվյալներ պետք է խմբագրվեն, բայց տվյալների խմբագրումն իրականացնող անձը չի գիտակցում, որ բազմակի գրառում կա: Աղյուսակը այնուհետեւ պարունակում է նույն անձի համար այլ տվյալներ, առանց որեւէ պարզ ձեւի բացահայտելու կամ խուսափելու համար:
Այս աղյուսակը կոտրելու համար երկու դասատուների, դասախոսների եւ դասընթացների (վերը նշված տեսքով) ստեղծում է տվյալների միջեւ պատշաճ հարաբերություններ եւ օգնում է ապահովել տվյալների հստակությունը եւ ճշգրտությունը: