Մեկից շատ հարաբերություններ տվյալների բազայում

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

Մեկից շատ հարաբերություններ տվյալների բազայում
Մեկից շատ հարաբերություններ տվյալների բազայում
Anonim

Տվյալների բազայում մեկ-շատ հարաբերությունը տեղի է ունենում, երբ A աղյուսակի յուրաքանչյուր գրառում կարող է ունենալ բազմաթիվ կապակցված գրառումներ աղյուսակում B-ում, սակայն B աղյուսակի յուրաքանչյուր գրառում կարող է ունենալ միայն մեկ համապատասխան գրառում A աղյուսակում:

Տվյալների բազայում մեկ-շատ փոխհարաբերությունները ամենատարածված հարաբերական տվյալների բազայի ձևավորումն է և գտնվում է լավ դիզայնի հիմքում:

Տվյալների բազաները կարող են նաև իրականացնել մեկ առ մեկ և շատ-շատ հարաբերություններ:

Image
Image

Մեկից շատ հարաբերությունների օրինակ

Մտածեք ուսուցչի և նրանց կողմից դասավանդվող դասընթացների միջև փոխհարաբերությունների մասին: Ուսուցիչը կարող է մի քանի դասեր դասավանդել, բայց դասընթացը նույն հարաբերությունները չի ունենա ուսուցչի հետ:

Հետևաբար, ուսուցիչների աղյուսակի յուրաքանչյուր գրառման համար Դասընթացների աղյուսակում կարող են լինել բազմաթիվ գրառումներ: Այս օրինակը ցույց է տալիս մեկ-շատ փոխհարաբերությունները. մեկ ուսուցիչ մի քանի դասընթացների հետ:

Ինչու է կարևոր մեկից շատ հարաբերություններ հաստատել

Մեկ-շատ հարաբերությունները ներկայացնելու համար ձեզ անհրաժեշտ է առնվազն երկու աղյուսակ: Տեսնենք, թե ինչու։

Հավատարմություն առաջին նորմալ ձևի ձևավորմանը

Միգուցե մենք ստեղծել ենք աղյուսակ, որտեղ ցանկանում ենք գրանցել դասավանդվող անունն ու դասընթացները: Մենք կարող ենք ձևավորել «Ուսուցիչների և դասընթացների» աղյուսակը այսպես՝

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

Իսկ եթե Կարմենը դասավանդի երկու կամ ավելի դասընթաց: Այս դիզայնով մենք ունենք երկու տարբերակ. Մենք կարող ենք այն ավելացնել Կարմենի գոյություն ունեցող ռեկորդին, այսպես՝

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

Սակայն, վերը նշված դիզայնը ճկուն չէ և կարող է հետագայում խնդիրներ առաջացնել, երբ դուք տվյալները տեղադրեք, խմբագրեք կամ ջնջեք: Դա դժվարացնում է տվյալների որոնումը։

Այս դիզայնը խախտում է նաև տվյալների բազայի նորմալացման առաջին սկզբունքը՝ Առաջին նորմալ ձևը (1NF), որը նշում է, որ աղյուսակի յուրաքանչյուր բջիջ պետք է պարունակի մեկ, առանձին տվյալներ։

Երկրորդ նորմալ ձևի կանոն

Դիզայնի մեկ այլ այլընտրանք կարող է լինել Կարմենի համար երկրորդ ռեկորդ ավելացնելը.

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

Այս մոտեցումը հավատարիմ է 1NF-ին, բայց դեռևս տվյալների բազայի վատ ձևավորում է, քանի որ այն ներմուծում է ավելորդություն և կարող է անհարկի փչացնել մեծ տվյալների բազան: Ավելի կարևոր է, որ տվյալները կարող են անհամապատասխան լինել:

Օրինակ, իսկ եթե Կարմենի անունը փոխվեր: Տվյալների հետ աշխատող ինչ-որ մեկը կարող է թարմացնել իր անունը մեկ գրառումով և չթարմացնել այն երկրորդ գրառումում:

Այս դիզայնը խախտում է Երկրորդ նորմալ ձևի (2NF) ստանդարտը, որը համապատասխանում է 1NF-ին և պետք է նաև խուսափի բազմաթիվ գրառումների ավելորդություններից: 2NF կանոնը հասնում է դրան՝ տվյալների ենթաբազմությունները բաժանելով բազմաթիվ աղյուսակների և ստեղծելով նրանց միջև հարաբերություններ:

Ինչպես ձևավորել տվյալների բազա՝ մեկից շատ հարաբերություններով

Ուսուցիչներ և դասընթացներ աղյուսակում մեկ-շատ փոխհարաբերություններ իրականացնելու համար աղյուսակները բաժանեք երկու մասի և կապեք դրանք օտար բանալիով:

Այստեղ մենք հեռացրինք Դասընթացի սյունակը ուսուցիչների աղյուսակում.

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

Եվ ահա Դասընթացների աղյուսակը: Նկատի ունեցեք, որ դրա օտարերկրյա բանալին՝ Teacher_ID, դասընթացը կապում է ուսուցչի հետ ուսուցիչների աղյուսակում՝

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

Մենք մշակել ենք հարաբերություններ ուսուցիչների և Դասընթացների աղյուսակի միջև՝ օգտագործելով օտար բանալի: Այս դասավորությունը մեզ ասում է, որ Կարմենը դասավանդում է և՛ կենսաբանություն, և՛ մաթեմատիկա, և որ Խորխեն անգլերեն է դասավանդում:

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

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