ცხრილების დაკავშირება მონაცემთა ბაზებში Python-ში
დავუშვათ, გვაქვს ცხრილი მომხმარებელთა სახელებით და ქალაქებით, რომლებშიც ისინი ცხოვრობენ:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
ამ ცხრილის ნაკლი ისაა, რომ ერთი და იგივე ქალაქი მეორდება რამდენჯერმე სხვადასხვა მომხმარებლისთვის. ეს იწვევს გარკვეულ პრობლემებს.
პირველ რიგში, მუდმივი გამეორება იწვევს იმას, რომ მონაცემთა ბაზა იწყებს ბევრად მეტი ადგილის დაკავებას.
მეორე რიგში, საკმაოდ მოუხერხებელია ქალაქებთან ოპერაციების შესრულება. მაგალითად, ჩვენ გვსურს ეკრანზე ყველა ქალაქის სიის ჩვენება. ამის გამარტივებულად გაკეთება შეუძლებელია. ჩვენ მოგვიწევს მივიღოთ ყველა მომხმარებელი მათი ქალაქებით, შემდეგ ამოვიღოთ დუბლიკატები მიღებული ქალაქებიდან და მხოლოდ ამის შემდეგ მივიღებთ ამ სიას.
ახლა კი წარმოვიდგინოთ, რომ ბაზაში 10000
მომხმარებელია 10 ქალაქიდან - ამ
10 ქალაქის მისაღებად ჩვენ მოგვიწევს გამოვიღოთ მთელი
ცხრილი უამრავი სტრიქონით -
მიიღება ძალიან ნელი ოპერაცია
რესურსების უაზრო დახარჯვით.
პრობლემის გადაწყვეტა
საჭიროა ჩვენი ცხრილის გაყოფა ორად: ერთში
შეინახება ქალაქები, ხოლო მეორეში - მომხმარებლები.
ამ შემთხვევაში, მომხმარებელთა ცხრილში იქნება სვეტი
city_id, რომელიც მიუთითებს
მომხმარებლის ქალაქზე.
მაშ ასე, შევქმნათ ორი ცხრილი. ცხრილი ქალაქებით:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
ცხრილი მომხმარებლებით:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
პრაქტიკული ამოცანები
დავუშვათ, თქვენ გჭირდებათ საქონლის შენახვა (სახელი, ფასი, რაოდენობა) და ამ საქონლის კატეგორიები. აღწერეთ შენახვის სტრუქტურა.
დავუშვათ, თქვენ გჭირდებათ მდინარეების და ზღვების შენახვა, რომლებშიც ეს მდინარეები ჩაედინება. აღწერეთ შენახვის სტრუქტურა.
დავუშვათ, თქვენ გჭირდებათ ქალაქების და ქვეყნების შენახვა, რომლებშიც ისინი მდებარეობენ. აღწერეთ შენახვის სტრუქტურა.