⊗pyPmDOLT 122 of 129 menu

Звязванне табліц у базах дадзеных у Python

Няхай у нас ёсць табліца з імёнамі карыстальнікаў і гарадамі, у якіх яны жывуць:

users
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, які будзе спасылацца на горад карыстальніка.

Такім чынам, давайце зробім дзве табліцы. Табліца з гарадамі:

cities
id name
1 city1
2 city2
3 city3

Табліца з карыстальнікамі:

users
id name city_id
1 user1 1
2 user2 1
3 user3 2
4 user4 1
5 user5 3
6 user6 2

Практычныя задачы

Няхай вам трэба захоўваць тавары (назва, кошт, колькасць) і катэгорыі гэтых тавараў. Распішыце структуру захоўвання.

Няхай вам трэба захоўваць рэкі і моры, у якія ўпадаюць гэтыя рэкі. Распішыце структуру захоўвання.

Няхай вам трэба захоўваць гарады і краіны, у якіх яны знаходзяцца. Распішыце структуру захоўвання.

Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць