Односи са базама података

Односи са базама података представљају кичму свих релационих база података

Однос се успоставља између две табеле базе података када једна таблица има инострани кључ који се односи на примарни кључ друге табеле. Ово је основни концепт иза појма релацијске базе података.

Како страначки кључ ради на успостављању везе

Погледајмо основе примарних и страних кључева. Примарни кључ јединствено идентификује сваки запис у табели. То је тип кључа кандидата који је обично први ступац у табели и може се аутоматски генерирати од стране базе података како би се осигурало да је јединствен.

Страни кључ је други кључ кандидата (не примарни кључ) који се користи за повезивање записа са подацима у другој табели.

На пример, размотрите ове две табеле које идентификују који наставник предаје који курс.

Овде, примарни кључ таблице курсева је Цоурсе_ИД. Његов инострани кључ је Теацхер_ИД:

Курсеви
Цоурсе_ИД Цоурсе_Наме Теацхер_ИД
Цоурсе_001 Биологија Теацхер_001
Цоурсе_002 Математика Теацхер_001
Цоурсе_003 енглески језик Теацхер_003

Можете видети да инострани кључ у курсевима одговара примарном кључу у наставницима:

Наставници
Теацхер_ИД Име наставника
Теацхер_001 Цармен
Теацхер_002 Вероница
Теацхер_003 Јорге

Можемо рећи да је страначки кључ Теацхер_ИД помогао успоставити однос између табела Курсеви и Учитеља.

Врсте односа са базама података

Користећи стране кључеве или друге кључеве кандидата, можете успоставити три врсте односа између табела:

Један-на-један : Ова врста везе омогућава само један запис са сваке стране везе.

Примарни кључ се односи на само један запис - или ниједан - у другој табели. На пример, у браку, сваки супружник има само још једног супружника. Ова врста односа може се имплементирати у једној табели и стога не користи инострани кључ.

Оне-то-мани : Однос од једног до другог омогућава да један запис у једној табели буде повезан са више записа у другој табели.

Размислите о пословању са базом података која има табеле купаца и поруџбина.

Један купац може купити више налога, али појединачна поруџбина не може бити повезана са више купаца. Према томе, табела наруџбина би садржала инострани кључ који одговара примарном кључу табеле купаца, док таблица купаца не би имала инострани кључ који указује на таблицу Ордерс.

Многи-до-многи : Ово је сложен однос у којем многи записи у табели могу да се повежу са многим записима у другој табели. На пример, нашем пословању вероватно не требају само таблице Купци и наруџбе, већ ће вероватно требати табела производа.

Поново, однос између табеле Купци и наруџбе је један-до-многи, али узмите у обзир однос између табеле са поруџбинама и производима. Налог може да садржи више производа, а производ може бити повезан са више налога: неколико купаца може да поднесе налог који садржи неке од истих производа. Ова врста односа захтева најмање три табеле.

Шта су везе са базама података важне?

Успостављање конзистентних односа између табела базе података помаже у осигурању интегритета података, доприносећи нормализацији базе података. На примјер, шта ако нисмо повезали било које таблице преко иностраног кључа и умјесто тога само спојили податке у табеле Курсеви и Наставници, као што су:

Наставници и курсеви
Теацхер_ИД Име наставника Курс
Теацхер_001 Цармен Биологија, математика
Теацхер_002 Вероница Математика
Теацхер_003 Јорге енглески језик

Овај дизајн је нефлексибилан и крши први принцип нормализације базе података, Фирст Нормал Форм (1НФ), који наводи да свака ћелија таблице треба да садржи један појединачни дискретни податак.

Или смо можда одлучили да једноставно додамо још један рекорд за Цармен, како би спровели 1НФ:

Наставници и курсеви
Теацхер_ИД Име наставника Курс
Теацхер_001 Цармен Биологија
Теацхер_001 Цармен Математика
Теацхер_002 Вероница Математика
Теацхер_003 Јорге енглески језик

Ово је и даље слаб дизајн, уводећи непотребно дуплирање и оно што се зову аномалије уношења података , што само значи да може допринијети неконзистентним подацима.

На примјер, ако наставник има више записа, шта ако неки подаци требају бити уређени, али особа која врши измјену података не схвата да постоји више записа? Табела би затим садржала различите податке за истог појединца, без икаквог јасног начина да се то идентификује или да се избегне.

Пребацивање ове табеле у две табеле, Наставници и курсеви (како је приказано у горњем тексту), ствара правилну везу између података и стога помаже да се обезбеди доследност и прецизност података.