Python да базаларда jадвалларни боглаш
Фароз қилайлик, бизда фойдаланувчиларнинг исмлари ва улар яшайдиган шахарлар билан jадвал бор:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
Бу jадвалнинг камчилиги шундаки, бир хил шахар турли фойдаланувчилар учун бир неча бор такрорланади. Бу ўзи билан бир қанча муаммоларни олиб келади.
Бирinchidan, доимий такрорланиш маълумотлар базасининг жой соҳасини ancha кўпроқ эгаллашига олиб келади.
Иккинчидан, шахарлар билан амалиётларни бажариш жудa қийин. Мисол учун, биз экранга барча шахарлар руйхатини чиқармоқчимиз. Буни оддий йўл билан бажариб бўлмайди. Бизга барча фойдаланувчиларни уларнинг шахарлари билан бирга олиш, сўнг olingan шахарлардан дубликатларни ўчириш керак бўлади ва шундан кейингина биз бу рўйхатни оламиз.
Энди tasavvur qiling, базада 10000
фойдаланувчи 10 та шахардан - бу 10
шахар учун биз уларни кўп миқдордаги сатрлардан иборат
бутун jадвалдан олишга мажбур бўламиз - натижада жуда
секин ишлайдиган ва ресурсларни бемаъно сарфловчи
амалиёт бўлади.
Муаммони ҳал этиш
Бизнинг jадвалимизни иккига бўлиш керак: биринчисида
шахарлар сақланади, иккинчисида эса фойдаланувчилар.
Бу ҳолда фойдаланувчилар jадвалида city_id
устуни бўлади, у фойдаланувчининг шахрига урнайди.
Шундай қилиб, иккита jадвал ясаймиз. Шахарлар jадвали:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
Фойдаланувчилар jадвали:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Амалий вазифалар
Фароз қилайлик, сиз товарлар (номи, нархи, миқдори) ва ушбу товарларнинг категорияларини сақлашингиз керак. Сақлаш тузилмасини ёзиб чиқинг.
Фароз қилайлик, сиз дарёлар ва улар қуйиладиган денгизларни сақлашингиз керак. Сақлаш тузилмасини ёзиб чиқинг.
Фароз қилайлик, сиз шахарлар ва улар jойлашган мамлакатларни сақлашингиз керак. Сақлаш тузилмасини ёзиб чиқинг.