Маълумотлар базасидаги jадвалларни боглаш
Фарз қилайлик, бизда фойдаланувчиларнинг исмлари ва улар яшайдиган шахарлар билан jадвал бор:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
Бу jадвалнинг камчилиги шундаки, бир хил шахар турли фойдаланувчилар учун бир неча mарта такрорланади. Бу бир қанча муаммоларга олиб келади.
Биринчидан, доимий такрорланиш маълумотлар базаси кўпроқ жойни босиб олишига олиб келади.
Иккинчидан, шахарлар билан амалиётларни бажариш жудa қулай эмас. Mисол учун, биз экранда барча шахарлар рўйхатини кўрсатмоқчимиз. Буни осонгина бажариб бўлмай. Бизга барча фойдаланувчиларни уларнинг шахарлари билан бирга олиш керак бўлади, сўнгра олинган шахарлардан дубликатларни ўчириш керак бўлади ва фақат шундан кейингина биз бу рўйхатни оламиз.
Энди tasаввур қилайлик, базада 10000
фойдаланувчи 10 та шахардан - бу 10 та
шахар учун биз кўпчилик qatorlarдан иборат бутун jадвални олишimiz керак бўлади -
натижада жуда секин ишлайдиган ва мaъносиз
ресурслар сарфлайдиган амалиёт бўлади.
Муаммони ечиш
Бизнинг 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 |
Фарз қилайлик, сиз товарлар (номи, нархи, миқдори) ва ушбу товарларнинг туркумларини сақлашингиз керак. Сақлаш тузилмасини ёзиб чиқинг.
Фарз қилайлик, сиз дарёлар ва улар quyiladigan денгизларни сақлашингиз керак. Сақлаш тузилмасини ёзиб чиқинг.
Фарз қилайлик, сиз шахарлар ва улар joylashган мамлакатларни сақлашингиз керак. Сақлаш тузилмасини ёзиб чиқинг.