ერთ-დან ბევრთან ურთიერთობა მონაცემთა ბაზაში

Სარჩევი:

ერთ-დან ბევრთან ურთიერთობა მონაცემთა ბაზაში
ერთ-დან ბევრთან ურთიერთობა მონაცემთა ბაზაში
Anonim

ერთ-ერთ-მრავალზე ურთიერთობა მონაცემთა ბაზაში ხდება მაშინ, როდესაც A ცხრილის თითოეულ ჩანაწერს შეიძლება ჰქონდეს ბევრი დაკავშირებული ჩანაწერი B ცხრილში, მაგრამ B ცხრილის თითოეულ ჩანაწერს შეიძლება ჰქონდეს მხოლოდ ერთი შესაბამისი ჩანაწერი ცხრილში A.

ერთ-ერთ-მრავალზე ურთიერთობა მონაცემთა ბაზაში არის ყველაზე გავრცელებული რელაციური მონაცემთა ბაზის დიზაინი და არის კარგი დიზაინის საფუძველი.

მონაცემთა ბაზებს ასევე შეუძლიათ განახორციელონ ერთი-ერთ-ერთ და ბევრი-მრავალთან ურთიერთობა.

Image
Image

ერთ-ერთ-მრავალზე ურთიერთობის მაგალითი

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

ამიტომ, მასწავლებლების ცხრილის თითოეული ჩანაწერისთვის შეიძლება იყოს ბევრი ჩანაწერი კურსების ცხრილში. ეს მაგალითი ასახავს ურთიერთობის ერთ-ერთს: ერთი მასწავლებელი მრავალ კურსს.

რატომ არის მნიშვნელოვანი ერთ-ერთი ურთიერთობის დამყარება

ერთი-მრავალზე ურთიერთობის წარმოსადგენად, საჭიროა მინიმუმ ორი ცხრილი. ვნახოთ რატომ.

პირველი ნორმალური ფორმის დიზაინის დაცვა

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

მასწავლებლის_ID მასწავლებლის_სახელი კურსი
მასწავლებელი_001 კარმენ ბიოლოგია
მასწავლებელი_002 ვერონიკა მათემატიკა
მასწავლებელი_003 ჟორხე ინგლისური

რა მოხდება, თუ კარმენი ასწავლის ორ ან მეტ კურსს? ჩვენ გვაქვს ორი ვარიანტი ამ დიზაინით. ჩვენ შეგვიძლია დავამატოთ ის კარმენის არსებულ ჩანაწერში, ასე:

მასწავლებლის_ID მასწავლებელი_სახელი კურსი
მასწავლებელი_001 კარმენ ბიოლოგია, მათემატიკა
მასწავლებელი_002 ვერონიკა მათემატიკა
მასწავლებელი_003 ჟორხე ინგლისური

თუმცა, ზემოთ მოყვანილი დიზაინი მოუქნელია და შეიძლება გამოიწვიოს პრობლემები მოგვიანებით მონაცემთა ჩასმის, რედაქტირების ან წაშლისას. ართულებს მონაცემთა ძიებას.

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

მეორე ნორმალური ფორმის წესი

დიზაინის კიდევ ერთი ალტერნატივა შეიძლება იყოს კარმენისთვის მეორე ჩანაწერის დამატება:

მასწავლებელი_ID მასწავლებელი_სახელი კურსი
მასწავლებელი_001 კარმენ ბიოლოგია
მასწავლებელი_001 კარმენ მათემატიკა
მასწავლებელი_002 ვერონიკა მათემატიკა
მასწავლებელი_003 ჟორხე ინგლისური

ეს მიდგომა ემორჩილება 1NF-ს, მაგრამ მაინც არის მონაცემთა ბაზის ცუდი დიზაინი, რადგან ის შემოაქვს ზედმეტობას და შეიძლება დიდი მონაცემთა ბაზის ზედმეტად გაფუჭება. რაც მთავარია, მონაცემები შეიძლება გახდეს არათანმიმდევრული.

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

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

როგორ შევქმნათ მონაცემთა ბაზა ერთიდან ბევრთან ურთიერთობით

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

აქ, ჩვენ წავშალეთ კურსის სვეტი მასწავლებლების ცხრილიდან:

მასწავლებელი_ID მასწავლებელი_სახელი
მასწავლებელი_001 კარმენ
მასწავლებელი_002 ვერონიკა
მასწავლებელი_003 ჟორხე

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

კურსის_ID კურსის_სახელი მასწავლებლის_ID
კურსი_001 ბიოლოგია მასწავლებელი_001
კურსი_002 მათემატიკა მასწავლებელი_001
კურსი_003 ინგლისური მასწავლებელი_003

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

ჩვენ შეგვიძლია დავინახოთ, როგორ აცილებს ეს დიზაინი ყოველგვარ შესაძლო ზედმეტობას, საშუალებას აძლევს ცალკეულ მასწავლებელს ასწავლონ მრავალი კურსი და ახორციელებს ურთიერთობის ერთ-ერთს.

გირჩევთ: