⊗ppPmDOLT 381 of 447 menu

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

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

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 для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць