ერთობა იქმნება მონაცემთა ბაზის ორ ცხრილს შორის, როდესაც ერთი ცხრილი იყენებს უცხო კლავიშს, რომელიც მიუთითებს სხვა ცხრილის ძირითად გასაღებზე. ეს არის ძირითადი კონცეფცია ტერმინის მიმართებითი მონაცემთა ბაზაში.
როგორ მუშაობს უცხოური გასაღები ურთიერთობის დასამყარებლად
პირველადი გასაღები ცალსახად განსაზღვრავს ცხრილის თითოეულ ჩანაწერს. ეს არის კანდიდატის გასაღების ტიპი, რომელიც, როგორც წესი, არის ცხრილის პირველი სვეტი და შეიძლება ავტომატურად გენერირებული იყოს მონაცემთა ბაზის მიერ, რათა დარწმუნდეს, რომ ის უნიკალურია. უცხო გასაღები არის სხვა კანდიდატი გასაღები (არა ძირითადი გასაღები), რომელიც გამოიყენება ჩანაწერის სხვა ცხრილის მონაცემებთან დასაკავშირებლად.
მაგალითად, განიხილეთ ეს ორი ცხრილი, რომელიც განსაზღვრავს, რომელი მასწავლებელი ასწავლის რომელ კურსს. აქ, კურსების ცხრილის ძირითადი გასაღები არის Course_ID. მისი უცხო გასაღები არის Teacher_ID:
კურსის_ID | კურსის_სახელი | მასწავლებლის_ID |
---|---|---|
კურსი_001 | ბიოლოგია | მასწავლებელი_001 |
კურსი_002 | მათემატიკა | მასწავლებელი_002 |
კურსი_003 | ინგლისური | მასწავლებელი_003 |
შეგიძლიათ ნახოთ, რომ კურსებში უცხოური გასაღები ემთხვევა ძირითად გასაღებს Teachers:
მასწავლებლის_ID | მასწავლებლის_სახელი |
---|---|
მასწავლებელი_001 | კარმენ |
მასწავლებელი_002 | ვერონიკა |
მასწავლებელი_003 | ჟორხე |
შეიძლება ვთქვათ, რომ Teacher_ID უცხოური გასაღები დაეხმარა ურთიერთობის დამყარებას კურსებსა და მასწავლებლების ცხრილებს შორის.
მონაცემთა ბაზის ურთიერთობის ტიპები
უცხოური გასაღებების ან სხვა კანდიდატის გასაღებების გამოყენებით, შეგიძლიათ განახორციელოთ სამი სახის ურთიერთობა ცხრილებს შორის:
ერთი-ერთი
ამ ტიპის ურთიერთობა იძლევა მხოლოდ ერთი ჩანაწერის საშუალებას ურთიერთობის თითოეულ მხარეს. პირველადი გასაღები ეხება მხოლოდ ერთ ჩანაწერს (ან არცერთს) სხვა ცხრილში. მაგალითად, ქორწინებაში, თითოეულ მეუღლეს ჰყავს მხოლოდ ერთი მეორე მეუღლე. ამ ტიპის ურთიერთობა შეიძლება განხორციელდეს ერთ ცხრილში და, შესაბამისად, არ იყენებს უცხო კლავიშს.
ერთი-ბევრამდე
ერთი-მრავალზე ურთიერთობა საშუალებას იძლევა, რომ ერთ ცხრილში ერთი ჩანაწერი იყოს დაკავშირებული სხვა ცხრილის მრავალ ჩანაწერთან. განვიხილოთ ბიზნესი მონაცემთა ბაზაში, რომელსაც აქვს კლიენტებისა და შეკვეთების ცხრილები.
ერთ მომხმარებელს შეუძლია შეიძინოს მრავალი შეკვეთა, მაგრამ ერთი შეკვეთა არ შეიძლება იყოს დაკავშირებული მრავალ მომხმარებელთან. ამიტომ შეკვეთების ცხრილი შეიცავს უცხოურ გასაღებს, რომელიც ემთხვევა კლიენტების ცხრილის ძირითად გასაღებს, ხოლო კლიენტების ცხრილს არ ექნება უცხო გასაღები, რომელიც მიუთითებს შეკვეთების ცხრილზე.
ბევრი-ბევრამდე
ეს არის რთული ურთიერთობა, რომელშიც ცხრილის ბევრ ჩანაწერს შეუძლია დაუკავშირდეს სხვა ცხრილის ბევრ ჩანაწერს. მაგალითად, ჩვენს ბიზნესს ალბათ სჭირდება კლიენტებისა და შეკვეთების ცხრილები და, სავარაუდოდ, ასევე სჭირდება პროდუქტების ცხრილი.
კიდევ ერთხელ, კლიენტებისა და შეკვეთების ცხრილს შორის ურთიერთობა არის ერთი-მრავალზე, მაგრამ განიხილეთ კავშირი შეკვეთებსა და პროდუქტებს შორის. შეკვეთა შეიძლება შეიცავდეს რამდენიმე პროდუქტს და პროდუქტი შეიძლება იყოს დაკავშირებული მრავალ შეკვეთასთან, რადგან რამდენიმე მომხმარებელმა შეიძლება წარადგინოს შეკვეთა, რომელიც შეიცავს ზოგიერთ იმავე პროდუქტს. ამ ტიპის ურთიერთობა მოითხოვს მინიმუმ სამ ცხრილს.
რატომ არის მონაცემთა ბაზის ურთიერთობები მნიშვნელოვანი?
მონაცემთა ბაზის ცხრილებს შორის თანმიმდევრული ურთიერთობების დამყარება ხელს უწყობს მონაცემთა მთლიანობის უზრუნველყოფას, რაც ხელს უწყობს მონაცემთა ბაზის ნორმალიზებას. მაგალითად, რა მოხდება, თუ ჩვენ არ დავაკავშირებთ ცხრილებს უცხო გასაღების მეშვეობით და ამის ნაცვლად გავაერთიანებთ კურსების და მასწავლებლების ცხრილების მონაცემებს, მაგალითად:
მასწავლებლის_ID | მასწავლებლის_სახელი | კურსი |
---|---|---|
მასწავლებელი_001 | კარმენ | ბიოლოგია, მათემატიკა |
მასწავლებელი_002 | ვერონიკა | მათემატიკა |
მასწავლებელი_003 | ჟორხე | ინგლისური |
ეს დიზაინი მოუქნელია და არღვევს მონაცემთა ბაზის ნორმალიზაციის პირველ პრინციპს, პირველ ნორმალურ ფორმას, რომელიც აცხადებს, რომ ცხრილის თითოეული უჯრედი უნდა შეიცავდეს ერთ, დისკრეტულ მონაცემს.
ან იქნებ გადავწყვიტეთ დავამატოთ მეორე ჩანაწერი კარმენისთვის, რათა განვახორციელოთ 1NF:
მასწავლებლის_ID | მასწავლებლის_სახელი | კურსი |
---|---|---|
მასწავლებელი_001 | კარმენ | ბიოლოგია |
მასწავლებელი_001 | კარმენ | მათემატიკა |
მასწავლებელი_002 | ვერონიკა | მათემატიკა |
მასწავლებელი_003 | ჟორხე | ინგლისური |
ეს ჯერ კიდევ სუსტი დიზაინია, შემოაქვს არასაჭირო დუბლირებას და რასაც მონაცემთა ჩასმის ანომალიები ჰქვია, რაც ნიშნავს, რომ მას შეუძლია ხელი შეუწყოს არათანმიმდევრულ მონაცემებს.მაგალითად, თუ მასწავლებელს აქვს მრავალი ჩანაწერი, რა მოხდება, თუ ზოგიერთი მონაცემი საჭიროებს რედაქტირებას, მაგრამ პირი, რომელიც ახორციელებს მონაცემთა რედაქტირებას, ვერ აცნობიერებს, რომ არსებობს მრავალი ჩანაწერი? შემდეგ ცხრილი შეიცავდა განსხვავებულ მონაცემებს ერთი და იგივე ინდივიდისთვის, მისი ამოცნობის ან თავიდან აცილების მკაფიო ხერხის გარეშე.
ამ ცხრილის ორ ცხრილად დაყოფა, მასწავლებლები და კურსები, ქმნის შესაბამის ურთიერთობას მონაცემებს შორის და, შესაბამისად, ეხმარება მონაცემთა თანმიმდევრულობასა და სიზუსტეს.