|
|
1 month ago | |
|---|---|---|
| .. | ||
| README.md | 1 month ago | |
| assignment.md | 1 month ago | |
README.md
Рад са подацима: Релационе базе података
![]() |
|---|
| Рад са подацима: Релационе базе података - Скетчнот од @nitya |
Вероватно сте у прошлости користили табеларни програм за чување информација. Имали сте скуп редова и колона, где су редови садржали информације (или податке), а колоне описивале информације (понекад називане метаподаци). Релациона база података је изграђена на овом основном принципу колона и редова у табелама, омогућавајући вам да имате информације распоређене преко више табела. Ово вам омогућава да радите са сложенијим подацима, избегнете дуплирање и имате флексибилност у начину на који истражујете податке. Хајде да истражимо концепте релационе базе података.
Квиз пре предавања
Све почиње са табелама
Релациона база података у свом језгру има табеле. Баш као и код табеларног програма, табела је скуп колона и редова. Ред садржи податке или информације са којима желимо да радимо, као што је име града или количина падавина. Колоне описују податке које чувају.
Хајде да започнемо наше истраживање тако што ћемо направити табелу за чување информација о градовима. Можемо почети са њиховим именом и државом. Ово можете сачувати у табели као што следи:
| Град | Држава |
|---|---|
| Токио | Јапан |
| Атланта | Сједињене Државе |
| Окланд | Нови Зеланд |
Приметите да имена колона град, држава и популација описују податке који се чувају, а сваки ред садржи информације о једном граду.
Недостаци приступа са једном табелом
Вероватно вам горња табела делује релативно познато. Хајде да додамо неке додатне податке у нашу растућу базу података - годишње падавине (у милиметрима). Фокусираћемо се на године 2018, 2019 и 2020. Ако бисмо то додали за Токио, могло би изгледати овако:
| Град | Држава | Година | Количина |
|---|---|---|---|
| Токио | Јапан | 2020 | 1690 |
| Токио | Јапан | 2019 | 1874 |
| Токио | Јапан | 2018 | 1445 |
Шта примећујете у нашој табели? Можда примећујете да дуплирамо име и државу града изнова и изнова. То може заузети доста простора за складиштење и углавном није потребно имати више копија. На крају крајева, Токио има само једно име које нас занима.
У реду, хајде да пробамо нешто друго. Додаћемо нове колоне за сваку годину:
| Град | Држава | 2018 | 2019 | 2020 |
|---|---|---|---|---|
| Токио | Јапан | 1445 | 1874 | 1690 |
| Атланта | Сједињене Државе | 1779 | 1111 | 1683 |
| Окланд | Нови Зеланд | 1386 | 942 | 1176 |
Иако ово избегава дуплирање редова, додаје неколико других изазова. Морали бисмо да мењамо структуру наше табеле сваки пут када се појави нова година. Поред тога, како наши подаци расту, имање година као колона ће отежати преузимање и израчунавање вредности.
Зато нам треба више табела и односа. Разбијањем наших података можемо избегнути дуплирање и имати већу флексибилност у начину рада са подацима.
Концепти односа
Вратимо се нашим подацима и одредимо како желимо да их поделимо. Знамо да желимо да сачувамо име и државу наших градова, па ће то највероватније најбоље функционисати у једној табели.
| Град | Држава |
|---|---|
| Токио | Јапан |
| Атланта | Сједињене Државе |
| Окланд | Нови Зеланд |
Али пре него што направимо следећу табелу, морамо да схватимо како да реферишемо сваки град. Потребан нам је неки облик идентификатора, ИД или (у техничким терминима база података) примарни кључ. Примарни кључ је вредност која се користи за идентификовање једног специфичног реда у табели. Иако би то могло бити засновано на самој вредности (на пример, могли бисмо користити име града), требало би да буде готово увек број или други идентификатор. Не желимо да се ИД икада мења јер би то прекинуло однос. У већини случајева примарни кључ или ИД ће бити аутоматски генерисан број.
✅ Примарни кључ се често скраћује као PK
градови
| city_id | Град | Држава |
|---|---|---|
| 1 | Токио | Јапан |
| 2 | Атланта | Сједињене Државе |
| 3 | Окланд | Нови Зеланд |
✅ Приметићете да током ове лекције користимо термине "ид" и "примарни кључ" наизменично. Концепти овде важe и за DataFrame-ове, које ћете касније истраживати. DataFrame-ови не користе терминологију "примарни кључ", али ћете приметити да се понашају на сличан начин.
Када смо направили табелу градова, хајде да сачувамо падавине. Уместо да дуплирамо све информације о граду, можемо користити ИД. Такође треба да обезбедимо да новонаправљена табела има колону ид, јер све табеле треба да имају ид или примарни кључ.
падавине
| rainfall_id | city_id | Година | Количина |
|---|---|---|---|
| 1 | 1 | 2018 | 1445 |
| 2 | 1 | 2019 | 1874 |
| 3 | 1 | 2020 | 1690 |
| 4 | 2 | 2018 | 1779 |
| 5 | 2 | 2019 | 1111 |
| 6 | 2 | 2020 | 1683 |
| 7 | 3 | 2018 | 1386 |
| 8 | 3 | 2019 | 942 |
| 9 | 3 | 2020 | 1176 |
Приметите колону city_id у новонаправљеној табели падавине. Ова колона садржи вредности које реферишу ИД-ове у табели градови. У техничким терминима релационих података, ово се зове страни кључ; то је примарни кључ из друге табеле. Можете то једноставно сматрати као референцу или показивач. city_id 1 реферише Токио.
[!NOTE] Страни кључ се често скраћује као FK
Преузимање података
Када су наши подаци раздвојени у две табеле, можда се питате како их преузимамо. Ако користимо релациону базу података као што су MySQL, SQL Server или Oracle, можемо користити језик који се зове Structured Query Language или SQL. SQL (понекад изговарано као "сиквел") је стандардни језик који се користи за преузимање и измену података у релационој бази података.
За преузимање података користите команду SELECT. У основи, ви изаберете колоне које желите да видите из табеле у којој се налазе. Ако желите да прикажете само имена градова, можете користити следеће:
SELECT city
FROM cities;
-- Output:
-- Tokyo
-- Atlanta
-- Auckland
SELECT је место где наводите колоне, а FROM је место где наводите табеле.
[!NOTE] SQL синтакса није осетљива на велика и мала слова, што значи да
selectиSELECTзначе исто. Међутим, у зависности од типа базе података коју користите, колоне и табеле могу бити осетљиве на велика и мала слова. Због тога је добра пракса да увек третирајте све у програмирању као да је осетљиво на велика и мала слова. При писању SQL упита уобичајена конвенција је да кључне речи пишете великим словима.
Горњи упит ће приказати све градове. Замислите да желимо да прикажемо само градове у Новом Зеланду. Потребан нам је неки облик филтера. SQL кључна реч за то је WHERE, или "где је нешто тачно".
SELECT city
FROM cities
WHERE country = 'New Zealand';
-- Output:
-- Auckland
Спојење података
До сада смо преузимали податке из једне табеле. Сада желимо да спојимо податке из обе табеле, градови и падавине. Ово се ради спајањем табела. Ефективно ћете направити спој између две табеле и упоредити вредности из колоне из сваке табеле.
У нашем примеру, упоредићемо колону city_id у табели падавине са колоном city_id у табели градови. Ово ће упарити вредност падавина са одговарајућим градом. Тип споја који ћемо извршити назива се унутрашњи спој, што значи да ако неки редови немају подударност са било чим из друге табеле, неће бити приказани. У нашем случају сваки град има податке о падавинама, тако да ће све бити приказано.
Хајде да преузмемо падавине за 2019. годину за све наше градове.
Урадићемо то у корацима. Први корак је да спојимо податке тако што ћемо назначити колоне за спој - city_id као што је раније истакнуто.
SELECT cities.city
rainfall.amount
FROM cities
INNER JOIN rainfall ON cities.city_id = rainfall.city_id
Истакли смо две колоне које желимо и чињеницу да желимо да спојимо табеле преко city_id. Сада можемо додати WHERE изјаву да филтрирамо само годину 2019.
SELECT cities.city
rainfall.amount
FROM cities
INNER JOIN rainfall ON cities.city_id = rainfall.city_id
WHERE rainfall.year = 2019
-- Output
-- city | amount
-- -------- | ------
-- Tokyo | 1874
-- Atlanta | 1111
-- Auckland | 942
Резиме
Релационе базе података се заснивају на дељењу информација између више табела које се затим поново спајају за приказ и анализу. Ово пружа висок степен флексибилности за извођење прорачуна и друге манипулације подацима. Видели сте основне концепте релационе базе података и како извршити спајање између две табеле.
🚀 Изазов
Постоји много релационих база података доступних на интернету. Можете истраживати податке користећи вештине које сте научили горе.
Квиз после предавања
Квиз после предавања
Преглед и самостално учење
Постоји неколико ресурса доступних на Microsoft Learn за наставак вашег истраживања SQL-а и концепата релационих база података
- Опишите концепте релационих података
- Започните са упитима користећи Transact-SQL (Transact-SQL је верзија SQL-а)
- SQL садржај на Microsoft Learn
Задатак
Приказивање података о аеродромима
Одрицање од одговорности: Овај документ је преведен коришћењем AI услуге за превођење Co-op Translator. Иако се трудимо да превод буде тачан, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитетним извором. За критичне информације препоручује се професионални људски превод. Нисмо одговорни за било каква неспоразума или погрешна тумачења која произилазе из коришћења овог превода.
