පයිතන්හි දත්ත සමුදා සංයෝජනය කිරීම

අප සතුව පරිශීලක නම් සහ ඔවුන් ජීවත් වන නගර අඩංගු වගුවක් ඇතැයි සිතන්න:

පරිශීලකයන්
id නම නගරය
1 user1 city1
2 user2 city1
3 user3 city2
4 user4 city1
5 user5 city3
6 user6 city2

මෙම වගුවේ අඩුපාඩුව නම්, එකම නගරය විවිධ පරිශීලකයන් සඳහා කිහිප වතාවක්ම පුනරාවර්තනය වීමයි. මෙය ගැටලු කිහිපයකට මඟ පාදයි.

පළමුව, නිරන්තර පුනරාවර්තනය හේතුවෙන් දත්ත සමුදාව ඉතා වැඩි ඉඩක් අල්ලාගනී.

දෙවනුව, නගර සමඟ මෙහෙයුම් කිරීම තරමක් අපහසුය. උදාහරණයක් ලෙස, අපට සියලුම නගර ලැයිස්තුවක් තිරය මත පෙන්වීමට අවශ්‍ය යැයි සිතන්න. එය සරලව කළ නොහැකිය. අපට පරිශීලකයින් සියල්ලම ඔවුන්ගේ නගර සමඟ ලබාගත යුතුය, ඉන්පසු ලබාගත් නගරවලින් අනුපිටපත් ඉවත් කර එවිට පමණක් අපට එම ලැයිස්තුව ලැබේ.

දැන් සිතන්න, දත්ත සමුදාවේ 10000 පරිශීලකයින් සහ 10 නගර ඇති බව - මෙම 10 නගර සඳහා අපට පේළි ගොඩක් සහිත මුළු වගුවම ලබාගත යුතුය - එහි ප්‍රතිඵලය වනුයේ ඉතා මන්දගාමී මෙහෙයුමක් සහ සම්පත් නිෂ්ප්‍රයෝගී ලෙස වැයවීමයි.

ගැටලුවට විසඳුම

අපගේ වගුව කොටස් දෙකකට බෙදිය යුතුය: එකක නගර ගබඩා කර ඇති අතර, අනෙක පරිශීලකයන් ගබඩා කරයි. මෙම අවස්ථාවේදී, පරිශීලක වගුවේ city_id තීරුවක් ඇත, එය පරිශීලකයාගේ නගරය වෙත සබැඳි වේ.

එබැවින්, වගු දෙකක් සාදමු. නගර වගුව:

නගර
id නම
1 city1
2 city2
3 city3

පරිශීලක වගුව:

පරිශීලකයන්
id නම නගර_id
1 user1 1
2 user2 1
3 user3 2
4 user4 1
5 user5 3
6 user6 2

ප්‍රායෝගික කාර්යයන්

Задание 1

ඔබට භාණ්ඩ (නම, මිල, ප්‍රමාණය) සහ මෙම භාණ්ඩවල ප්‍රවර්ග ගබඩා කිරීමට අවශ්‍ය යැයි සිතන්න. ගබඩා කිරීමේ ව්‍යුහය ලියන්න.

Задание 2

ඔබට නදී සහ ඒවාට ගලා බසින මුහුදු ගබඩා කිරීමට අවශ්‍ය යැයි සිතන්න. ගබඩා කිරීමේ ව්‍යුහය ලියන්න.

Задание 3

ඔබට නගර සහ ඒවා පිහිටි රටවල් ගබඩා කිරීමට අවශ්‍ය යැයි සිතන්න. ගබඩා කිරීමේ ව්‍යුහය ලියන්න.