Խուսափեք անցողիկ կախվածությունից, որպեսզի օգնի ապահովել կարգավորումը
Տվյալների բազայում անցողիկ կախվածությունը անուղղակի փոխկապակցված է նույն աղյուսակում արժեքների միջեւ, ինչը գործնական կախվածություն է առաջացնում: Երրորդ Normal Form (3NF) կարգավորման ստանդարտին հասնելու համար դուք պետք է վերացնեք ցանկացած անցումային կախվածություն:
Իր բնույթով անցումային կախվածությունը պահանջում է երեք կամ ավելի հատկանիշներ (կամ տվյալների բազայի սյունակներ), որոնց միջեւ գործառնական կախվածություն կա, ինչը նշանակում է, որ Սյունակ Ա-ն սեղանի վրա հիմնված է B սյունակում միջանկյալ սյունակով:
Տեսնենք, թե ինչպես դա կարող է աշխատել:
Անցումային կախվածության օրինակ
ՀԵՂԻՆԱԿՆԵՐ
Author_ID- ը | Հեղինակ | Գիրք | Author_Nationalality |
---|---|---|---|
Auth_001 | Օրսոն Սքոթ Քարտ | Էնրերի խաղ | Միացյալ Նահանգներ |
Auth_001 | Օրսոն Սքոթ Քարտ | Էնրերի խաղ | Միացյալ Նահանգներ |
Auth_002 | Մարգարետ Աթվուդ | The Handmaid- ի հեքիաթը | Կանադա |
Վերեւում գտնվող AUTHORS օրինակով.
- Գիրք → Հեղինակ : Այստեղ Գրքի հատկանիշը որոշում է Հեղինակային հատկանիշը: Եթե գիտեք գրքի անունը, կարող եք իմանալ հեղինակի անունը: Սակայն, Հեղինակը չի որոշում Գիրքը , քանի որ հեղինակը կարող է գրել բազմաթիվ գրքեր: Օրինակ, հենց այն պատճառով, որ գիտենք հեղինակի անունը Orson Scott Card- ը, մենք դեռ չգիտենք գրքի անունը:
- Հեղինակ → Author_Nationality : Հավանաբար, Հեղինակային հատկանիշը սահմանում է Author_Nationality , բայց ոչ այլ կերպ: միայն այն պատճառով, որ մենք գիտենք, որ ազգությունը չի նշանակում, որ կարող ենք որոշել հեղինակը:
Սակայն այս աղյուսակը ներկայացնում է անցումային կախվածություն.
- Գիրք → Author_Nationality: Եթե մենք գիտենք գիրքի անունը, մենք կարող ենք որոշել ազգությունը հեղինակի սյունակում:
Խուսափելով անցումային կախվածությունից
Երրորդ կարգի ձեւը ապահովելու համար, եկեք հեռացնենք անցումային կախվածությունը:
Մենք կարող ենք սկսել գրքերի սյունը հեղինակների սեղանից եւ ստեղծել առանձին Գրքերի սեղան `
ԳՐՔԵՐ
Book_ID- ը | Գիրք | Author_ID- ը |
---|---|---|
Book_001 | Էնրերի խաղ | Auth_001 |
Book_001 | Երեխաների մտավոր | Auth_001 |
Book_002 | The Handmaid- ի հեքիաթը | Auth_002 |
ՀԵՂԻՆԱԿՆԵՐ
Author_ID- ը | Հեղինակ | Author_Nationalality |
---|---|---|
Auth_001 | Օրսոն Սքոթ Քարտ | Միացյալ Նահանգներ |
Auth_002 | Մարգարետ Աթվուդ | Կանադա |
Արդյոք դա ամրագրել է դա: Եկեք քննենք մեր կախվածությունը հիմա.
ԳՐՔԵՐ սեղան :
- Book_ID → Book: Գիրքը կախված է Book_ID- ից :
- Այս աղյուսակում որեւէ այլ կախվածություն չկա, ուստի մենք լավ ենք: Նշենք, որ Author_ID օտարերկրյա բանալին այս աղյուսակը հղում է AUTHORS սեղանին իր նախնական բանալին Author_ID- ի միջոցով : Մենք ստեղծել ենք փոխկապակցված փոխհարաբերություններից խուսափելու փոխհարաբերություններ, հիմնված տվյալների բազաների հիմնական դիզայն:
ՀԵՂԻՆԱԿՆԵՐԻ աղյուսակ .
- Author_ID → Հեղինակ: Հեղինակը կախված է Author_ID- ից :
- Հեղինակ → Author_Nationality: Ազգությունը կարող է որոշվել հեղինակի կողմից:
- Author_ID → Author_Nationality: Ազգությունը կարող է որոշվել Author_ID- ից հեղինակի հատկանիշով: Մենք դեռ ունենք անցումային կախվածություն:
Մենք պետք է ավելացնենք երրորդ սեղան `այս տվյալները կարգավորելու համար.
ԵՐԿՐՆԵՐ
Country_ID- ը | Երկիրը |
---|---|
Coun_001 | Միացյալ Նահանգներ |
Coun_002 | Կանադա |
ՀԵՂԻՆԱԿՆԵՐ
Author_ID- ը | Հեղինակ | Country_ID- ը |
---|---|---|
Auth_001 | Օրսոն Սքոթ Քարտ | Coun_001 |
Auth_002 | Մարգարետ Աթվուդ | Coun_002 |
Այժմ մենք ունենք երեք աղյուսակներ, օգտագործելով արտասահմանյան բանալիներ սեղանների միջեւ կապելու համար.
- ԳԻՐՔ սեղանի օտարերկրյա բանալին Author_ID- ը AUTHORS սեղանի հեղինակին գիրք է հղում:
- AUTHORS սեղանի օտարերկրյա Country_ID- ը մի հեղինակին կապում է COUNTRIES սեղանի մեջ գտնվող երկիր:
- COUNTRIES- ի աղյուսակը արտասահմանյան բանալին չունի, քանի որ դրա կարիքը չպետք է հղում այլ դիզայնի սեղանին:
Ինչու փոխկապակցված կախվածությունը վատ տվյալների բազայի ձեւավորումն է
Ինչ է նշանակում խուսափել անցումային կախվածությունից `օգնելու ապահովել 3NF- ը: Եկեք քննարկենք մեր առաջին սեղանը եւ տեսնենք այն հարցերը, որոնք ստեղծում են.
ՀԵՂԻՆԱԿՆԵՐ
Author_ID- ը | Հեղինակ | Գիրք | Author_Nationalality |
---|---|---|---|
Auth_001 | Օրսոն Սքոթ Քարտ | Էնրերի խաղ | Միացյալ Նահանգներ |
Auth_001 | Օրսոն Սքոթ Քարտ | Երեխաների մտավոր | Միացյալ Նահանգներ |
Auth_002 | Մարգարետ Աթվուդ | The Handmaid- ի հեքիաթը | Կանադա |
Այսպիսի դիզայնը կարող է նպաստել տվյալների անոմալիաների եւ անհամապատասխանությունների, օրինակ `
- Եթե ջնջել եք «Երեխաների խելքը» եւ «Ender's Game» երկու գիրքը, ապա դուք կստանաք հեղինակ «Orson Scott Card» եւ նրա ազգությունը լիովին բազայից:
- Դուք չեք կարող ավելացնել նոր հեղինակի տվյալների բազան, եթե դուք նույնպես ավելացնեք գիրք: ինչ էլ որ հեղինակը դեռ չհրապարակվի, կամ չգիտեք հեղինակի անունը:
- Եթե «Օրսոն Սքոթ Քրեդիտը» փոխեց իր քաղաքացիությունը, դուք պետք է փոխեք այն այն բոլոր գրառումներում, որտեղ նա հայտնվում է: Միեւնույն հեղինակի հետ բազմապատկված գրառումներ ունենալը կարող է հանգեցնել անճշտությունների. Եթե տվյալները մուտքագրող անձը չի գիտակցում, որ նրա համար բազմակի գրառումներ կան, եւ տվյալները միայն մեկ ռեկորդում են փոխում:
- Դուք չեք կարող ջնջել «The Handmaid's Tale» գիրքը, առանց նաեւ ամբողջովին հեղինակը ջնջելու համար:
Սրանք ընդամենը մի քանի պատճառներ են, թե ինչու է կարգավորումը եւ անցանկալի կախվածությունը խուսափելը, տվյալների պաշտպանությունը եւ հետեւողականությունը: