База на податоци односи се 'рбетот на сите релациони бази на податоци
Врската е воспоставена помеѓу две табели на база на податоци, кога една табела има странски клуч кој го повикува примарниот клуч на друга табела. Ова е основниот концепт зад терминот релациона база на податоци.
Како странски клуч работи за воспоставување на врска
Ајде да ги разгледаме основите на основните и странските клучеви. Примарниот клуч уникатно го идентификува секој запис во табелата. Тоа е тип на клуч за кандидат кој обично е првата колона во табелата и може автоматски да се генерира од базата на податоци за да се осигура дека таа е уникатна.
Странски клуч е друг клучен кандидат (не е примарен клуч) кој се користи за поврзување на запис со податоци во друга табела.
На пример, разгледајте ги овие две табели кои идентификуваат кој наставник поучува кој курс.
Еве, примарниот клуч на табелата на курсеви е Course_ID. Нејзиниот странски клуч е Teacher_ID:
Course_ID | Course_Name | Teacher_ID |
---|---|---|
Course_001 | Биологија | Teacher_001 |
Course_002 | Математика | Teacher_001 |
Course_003 | Англиски | Teacher_003 |
Можете да видите дека странскиот клуч во Курсевите се совпаѓа со примарен клуч во наставниците:
Teacher_ID | Teacher_Name |
---|---|
Teacher_001 | Кармен |
Teacher_002 | Вероника |
Teacher_003 | Хорхе |
Можеме да кажеме дека странскиот клуч Teacher_ID помогна да се воспостави врска помеѓу табелите на курсевите и наставниците.
Видови врски со бази на податоци
Користење на странски клучеви, или други клучеви на кандидати, можете да имплементирате три типа на односи помеѓу табелите:
Еден-на-еден : Овој тип врски дозволува само еден запис на секоја страна од врската.
Примарниот клуч се однесува само на еден запис - или нема - во друга табела. На пример, во бракот, секој сопружник има само еден друг брачен другар. Овој вид врски може да се спроведе во една табела и затоа не користи странски клуч.
Еден-на-многу : односот на еден-на-многу овозможува единствен запис во една табела да биде поврзан со повеќе записи во друга табела.
Размислете за бизнис со база на податоци што има табели на клиенти и нарачки.
Еден клиент може да купи повеќе нарачки, но една нарачка не може да се поврзе со повеќе клиенти. Затоа, табелата на нарачки ќе содржи странски клуч што одговара на примарен клуч од табелата на клиенти, додека табелата на клиенти нема да има странски клуч кој укажува на табелата на налози.
Многу-до-многу : Ова е комплексен однос во кој многу записи во табелата можат да се поврзат со многу записи во друга табела. На пример, на нашиот бизнис веројатно не се потребни само табели на клиенти и нарачки, но најверојатно, исто така, е потребна табела со Производи.
Повторно, односот помеѓу табелата на клиенти и нарачки е еден-на-многу, но сметаат дека односот помеѓу табелата на нарачки и производи. Нарачката може да содржи повеќе производи, а еден производ може да биде поврзан со повеќе нарачки: неколку клиенти може да достават нарачка која содржи некои од истите производи. Овој вид на врска бара минимум три табели.
Кои се Важни База на податоци?
Воспоставувањето на конзистентни односи помеѓу табелите на базата на податоци помага да се обезбеди интегритет на податоците, придонесувајќи за нормализирање на базата на податоци На пример, што ако ние не ги поврзавме ниедна табела преку странски клуч и наместо само ги комбиниравме податоците во табелите за курсеви и наставници, како што се:
Teacher_ID | Teacher_Name | Курс |
---|---|---|
Teacher_001 | Кармен | Биологија, математика |
Teacher_002 | Вероника | Математика |
Teacher_003 | Хорхе | Англиски |
Овој дизајн е нефлексибилен и го нарушува првиот принцип на нормализација на бази на податоци, Прва нормална форма (1NF), во која се наведува дека секоја табела ќелија треба да содржи еден, дискретен дел од податоците.
Или можеби решивме едноставно да додадеме втор запис за Кармен, со цел да се спроведе 1NF:
Teacher_ID | Teacher_Name | Курс |
---|---|---|
Teacher_001 | Кармен | Биологија |
Teacher_001 | Кармен | Математика |
Teacher_002 | Вероника | Математика |
Teacher_003 | Хорхе | Англиски |
Ова е сѐ уште слаб дизајн, воведувајќи непотребно дуплирање и она што се нарекува аномалии за вметнување податоци , што само значи дека би можело да придонесе кон неконзистентни податоци.
На пример, ако наставникот има повеќекратни записи, што ако некои податоци треба да се уредуваат, но лицето што врши уредување на податоци не сфаќа дека постојат повеќе записи? Табелата потоа ќе содржи различни податоци за истото лице, без јасен начин да се идентификува или да се избегне.
Прекршувањето на оваа табела во две маси, наставници и курсеви (како што е визуелизирано погоре), создава соодветна врска помеѓу податоците и затоа помага да се обезбеди конзистентност и точност на податоците.