Სრული ფუნქციონალური დამოკიდებულება მონაცემთა ბაზის ნორმალიზაციისას

სრული ფუნქციონალური დამოკიდებულება არის მონაცემთა ნორმალიზაციის სახელმწიფო, რომელიც მიესადაგება მეორე ნორმალური ფორმის ნორმალიზაციის სტანდარტს (2NF) . მოკლედ, ეს იმას ნიშნავს, რომ იგი შეესაბამება პირველი ნორმალური ფორმის (1NF) მოთხოვნებს და ყველა არა-გასაღები ატრიბუტი მთლიანად ფუნქციურად დამოკიდებულია პირველადი გასაღებიზე.

ეს არ არის ისეთი რთული, როგორც ეს შეიძლება ჟღერდეს. მოდით შევხედოთ ამ უფრო დეტალურად.

პირველი ჩვეულებრივი ფორმის შეჯამება

მონაცემთა ბაზის მთლიანად ფუნქციურად დამოკიდებულების დამთავრებამდე, მან უნდა შეასრულოს პირველი ფორმალური ფორმა .

ყოველივე ეს იმას ნიშნავს, რომ თითოეული ატრიბუტი უნდა აკმაყოფილებდეს ერთ, ატომურ მნიშვნელობას.

მაგალითად, შემდეგი ცხრილი არ შეესაბამება 1NF- ს, რადგან თანამშრომელი თინა დაკავშირებულია ორ ადგილას, ორივე მათგანი ერთ საკანში:

პირველი ჩვეულებრივი ფორმა არ შეესაბამება
თანამშრომელი მდებარეობა
იოანე ლოს ანჯელესი
თინა ლოს-ანჯელესი, ჩიკაგო

ამ დიზაინის დაშვება შეიძლება უარყოფითად აისახოს მონაცემთა განახლებებზე ან ჩანაწერებზე. 1NF- ის შესაბამისობის უზრუნველსაყოფად, მაგიდის გადაბრუნება ისე, რომ ყველა ატრიბუტი (ან სვეტიანი უჯრედები) ერთჯერადი ღირებულებაა:

პირველი ჩვეულებრივი ფორმა შესაბამისობა
თანამშრომელი მდებარეობა
იოანე ლოს ანჯელესი
თინა ლოს ანჯელესი
თინა ჩიკაგოში

მაგრამ 1NF ჯერ კიდევ არ არის საკმარისი, რათა თავიდან იქნას აცილებული მონაცემები.

როგორ 2NF მუშაობს სრული დატვირთვის უზრუნველსაყოფად

სრულად უნდა იყოს დამოკიდებული, ყველა არასამთავრობო კანდიდატი ძირითადი ატრიბუტიკა უნდა იყოს დამოკიდებული პირველადი გასაღები. (გახსოვდეთ, კანდიდატის ძირითადი ატრიბუტი არის ნებისმიერი გასაღები (მაგალითად, პირველადი ან უცხოური გასაღები), რომელიც გამოიყენება მონაცემთა ბაზის ჩანაწერის ცალსახად გამოსაყოფად.

მონაცემთა ბაზის დიზაინერები გამოიყენებენ ნოტაში ატრიბუტებს შორის დამოკიდებულ ურთიერთობებს:

თუ ატრიბუტი განსაზღვრავს B- ს მნიშვნელობას, ვწერ ამ A -> B - გულისხმობს, რომ B არის ფუნქციურად დამოკიდებული ა. ამ ურთიერთობაში, განსაზღვრავს B- ის მნიშვნელობას, ხოლო B დამოკიდებულია ა.

მაგალითად, შემდეგ თანამშრომელი დეპარტამენტების მაგიდა, EmployeeID და DeptID ორივე კანდიდატი გასაღებები: EmployeeID არის მაგიდის პირველადი გასაღები ხოლო DeptID არის უცხოური გასაღები.

ნებისმიერი სხვა ატრიბუტი - ამ შემთხვევაში, EmployeeName და DeptName - უნდა იყოს დამოკიდებული პირველადი გასაღები მის მისაღებად.

თანამშრომელი დეპარტამენტები
თანამშრომელი თანამშრომელთა სახელი დეპოზიტი DeptName
Emp1 იოანე Dept001 ფინანსები
Emp2 თინა Dept003 გაყიდვების
Emp3 კარლოს Dept001 ფინანსები

ამ შემთხვევაში, მაგიდა სრულად არ არის დამოკიდებული, რადგან, როდესაც თანამშრომელია დამოკიდებული პირველადი გასაღები თანამშრომელი, DeptName დამოკიდებულია ნაცვლად DeptID. ეს არის ნაწილობრივი დამოკიდებულება .

იმისათვის, რომ ეს მაგიდა 2NF- ს შეესაბამებოდეს, ჩვენ უნდა გამოვყოთ მონაცემები ორ მაგიდასთან:

თანამშრომლები
თანამშრომელი თანამშრომელთა სახელი დეპოზიტი
Emp1 იოანე Dept001
Emp2 თინა Dept003
Emp3 კარლოს Dept001

ჩვენ ამოიღონ DeptName ატრიბუტი თანამშრომლების მაგიდაზე და შევქმნათ ახალი მაგიდა დეპარტამენტები :

დეპარტამენტები
დეპოზიტი DeptName
Dept001 ფინანსები
Dept002 ადამიანური რესურსების
Dept003 გაყიდვების

ახლა მაგიდათა შორის ურთიერთობა სრულად არის დამოკიდებული, ან 2NF- ში.

რატომ არის სრული დამოკიდებულება მნიშვნელოვანი?

მონაცემთა ატრიბუტებს შორის სრული დამოკიდებულება ხელს უწყობს მონაცემთა მთლიანობას და მონაცემების ანომალიების თავიდან აცილებას.

მაგალითად, განვიხილოთ მაგიდა იმ სექციაში, რომელიც მხოლოდ 1NF- ს იკავებს. აქ ისევ,

პირველი ჩვეულებრივი ფორმა შესაბამისობა
თანამშრომელი მდებარეობა
იოანე ლოს ანჯელესი
თინა ლოს ანჯელესი
თინა ჩიკაგოში

თინაში ორი ჩანაწერია. თუ ჩვენ განახლებას ვუწოდებთ, რომ არსებობს ორი, შედეგი იქნება შეუსაბამო მონაცემები.

ან, თუ ჩვენ გვინდა, რომ დაამატოთ თანამშრომელი ამ მაგიდასთან, მაგრამ ჩვენ ჯერ არ ვიცით საიდან? ჩვენ შეიძლება არ დავუშვებთ, რომ დაამატოთ ახალი თანამშრომელი, თუ საიდან ატრიბუტი არ იძლევა NULL ღირებულებებს.

სრული დამოკიდებულება არ არის მთელი სურათი, თუმცა, როდესაც საქმე ეხება ნორმალიზაციას. თქვენ უნდა დარწმუნდეთ, რომ თქვენი მონაცემთა ბაზა მესამე ჩვეულებრივი ფორმაა (3NF).