Լրիվ ֆունկցիոնալ կախվածությունը տվյալների բազայի նորմալացման վիճակ է, որը հավասարեցնում է երկրորդ բնական ձեւի (2NF) նորմալացման ստանդարտին: Կարճ ասած, դա նշանակում է, որ այն համապատասխանում է Առաջին Normal Form (1NF) պահանջներին, եւ բոլոր առանցքային հատկանիշները լիովին գործունակորեն կախված են առաջնային բանալինից:
Սա ոչ թե բարդ է, որքան հնչում է: Այս մասին ավելի մանրամասն քննարկենք:
Առաջին բնականոն ձեւի ամփոփում
Նախքան տվյալների բազան կարող է լիովին գործունակորեն կախված լինել, այն պետք է նախ ստանա առաջին Normal ձեւը :
Այս ամենը նշանակում է, որ յուրաքանչյուր հատկանիշ պետք է ունենա միակ, ատոմային արժեք:
Օրինակ, հետեւյալ աղյուսակը չի համապատասխանում 1NF- ին, քանի որ Tina- ի աշխատակիցը կապված է երկու վայրի հետ, երկուսն էլ մեկ խցում.
Աշխատակիցը | Որտեղից |
---|---|
Ջոն | Լոս Անջելես |
Թինա | Լոս Անջելես, Չիկագո |
Այս դիզայնի թույլատրումը կարող է բացասաբար ազդել տվյալների թարմացումների կամ գրառումների վրա: 1NF- ի համապատասխանության ապահովման համար վերադասավորեք աղյուսակը, որպեսզի բոլոր հատկանիշները (կամ սյունակային բջիջները) ունենան մեկ արժեք:
Աշխատակիցը | Որտեղից |
---|---|
Ջոն | Լոս Անջելես |
Թինա | Լոս Անջելես |
Թինա | Չիկագո |
Սակայն 1NF- ն դեռեւս բավարար չէ տվյալների հետ կապված խնդիրներից խուսափելու համար:
Ինչպես 2NF- ն աշխատում է ապահովել ամբողջական կախվածություն
Անկախ կախված լինելու համար բոլոր ոչ թեկնածուի հիմնական հատկանիշները պետք է կախված լինեն առաջնային բանալին: (Հիշեք, թեկնածուի հիմնական հատկանիշը ցանկացած բանալի (օրինակ, առաջնային կամ օտարերկրյա բանալին) օգտագործվում է տվյալների բազայի յուրահատուկ հայտնաբերման համար:
Տվյալների շտեմարանների դիզայներները օգտագործում են նշում, նկարագրելու համար հատկանիշների կախվածությունը.
Եթե Ա հատկանիշը սահմանում է B- ի արժեքը, մենք գրում ենք այս A-> B- նշանակում է, որ B- ն ֆունկցիոնալ կախված է Ա-ում: Այս հարաբերություններում A- ը սահմանում է B- ի արժեքը, իսկ B- ն կախված է Ա-ից:
Օրինակ, Աշխատակազմի հետեւյալ ստորաբաժանման ներքո EmployeeID- ը եւ DeptID- ը երկուսն էլ թեկնածուական ստեղներ են. EmployeeID- ը աղյուսակի առաջնային բանալին է, իսկ DeptID- ը օտարերկրյա բանալին է:
Ցանկացած այլ հատկանիշ, այս դեպքում, EmployeeName- ի եւ DeptName- ը պետք է կախված լինեն հիմնական արժեքից ստացվող արժեքից:
EmployeeID- ը | Աշխատողի անունը | DeptID- ը | DeptName |
---|---|---|---|
Emp1 | Ջոն | Dept001 | Ֆինանսներ |
Emp2 | Թինա | Dept003 | Վաճառք |
Emp3 | Կառլոս | Dept001 | Ֆինանսներ |
Այս պարագայում սեղանը լիովին կախված չէ, քանի որ EmployeeName- ն կախված է առաջնային բանալի EmployeeID- ից, DeptName կախված է DeptID- ի փոխարեն: Սա կոչվում է մասնակի կախվածություն :
Այս աղյուսակը համապատասխանում է 2NF- ին, պետք է առանձնացնել տվյալները երկու աղյուսակներում.
EmployeeID- ը | Աշխատողի անունը | DeptID- ը |
---|---|---|
Emp1 | Ջոն | Dept001 |
Emp2 | Թինա | Dept003 |
Emp3 | Կառլոս | Dept001 |
Մենք հեռացնում ենք DeptName- ի հատկանիշը Աշխատակիցների աղյուսակում եւ ստեղծում ենք նոր աղյուսակի բաժիններ .
DeptID- ը | DeptName |
---|---|
Dept001 | Ֆինանսներ |
Dept002 | Մարդկային ռեսուրսներ |
Dept003 | Վաճառք |
Այժմ աղյուսակների միջեւ հարաբերությունները լիովին կախված են կամ 2NF- ում:
Ինչու է լիարժեք կախվածությունը կարեւոր
Տվյալների բազայի հատկանիշների միջեւ ամբողջական կախվածությունը օգնում է ապահովել տվյալների ամբողջականությունը եւ խուսափել տվյալների անոմալիաներից:
Օրինակ, վերը նշված սյունակում դիտարկեք միայն 1NF- ին: Ահա, կրկին.
Աշխատակիցը | Որտեղից |
---|---|
Ջոն | Լոս Անջելես |
Թինա | Լոս Անջելես |
Թինա | Չիկագո |
Tina- ն ունի երկու գրառում: Եթե մենք թարմացնենք, առանց գիտակցելու, որ կան երկու, արդյունքը կլինի անհամապատասխան տվյալներ:
Կամ, եթե ինչ-որ մեկը ցանկանում է ավելացնել աշխատակցին այս սեղանին, բայց մենք դեռ տեղյակ չենք: Մենք կարող ենք նույնիսկ թույլ չտալ, որ նոր աշխատակից ավելացնենք, եթե Տեղի հատկանիշը թույլ չի տալիս NULL արժեքներ:
Ճիշտ կախվածությունը ամբողջ պատկերը չէ, այնուամենայնիվ, երբ խոսքը վերաբերում է նորմալացմանը: Դուք պետք է համոզվեք, որ ձեր տվյալների բազան գտնվում է երրորդ հերթական ձեւաչափով (3NF):