Какво е връзка с база данни?

Съдържание:

Какво е връзка с база данни?
Какво е връзка с база данни?
Anonim

Установява се връзка между две таблици на базата данни, когато една таблица използва външен ключ, който препраща към първичния ключ на друга таблица. Това е основната концепция зад термина релационна база данни.

Как работи външният ключ за установяване на връзка

Първичен ключ уникално идентифицира всеки запис в таблицата. Това е тип кандидат ключ, който обикновено е първата колона в таблица и може да бъде автоматично генериран от базата данни, за да се гарантира, че е уникален. Външният ключ е друг кандидат-ключ (не първичен ключ), използван за свързване на запис с данни в друга таблица.

Например, разгледайте тези две таблици, които идентифицират кой учител кой курс преподава. Тук първичният ключ на таблицата Courses е Course_ID. Неговият външен ключ е Teacher_ID:

Course_ID Course_Name Teacher_ID
Course_001 Биология Teacher_001
Course_002 математика Teacher_002
Course_003 английски Teacher_003

Можете да видите, че външният ключ в Courses съвпада с първичен ключ в Teachers:

Teacher_ID Име_на учител
Teacher_001 Кармен
Teacher_002 Вероника
Teacher_003 Хорхе

Можем да кажем, че външният ключ Teacher_ID помогна да се установи връзка между курсовете и таблиците на учителите.

Image
Image

Видове релации на бази данни

Използвайки външни ключове или други кандидат-ключове, можете да реализирате три типа релации между таблици:

Един към един

Този тип връзка позволява само един запис от всяка страна на връзката. Първичният ключ се отнася само до един запис (или нито един) в друга таблица. Например в брака всеки съпруг има само още един съпруг. Този вид връзка може да бъде реализирана в една таблица и следователно не използва външен ключ.

Едно към много

Връзката "един към много" позволява единичен запис в една таблица да бъде свързан с множество записи в друга таблица. Помислете за бизнес с база данни, която има таблици с клиенти и поръчки.

Един клиент може да закупи няколко поръчки, но една поръчка не може да бъде свързана с множество клиенти. Следователно таблицата Orders ще съдържа външен ключ, който съответства на първичния ключ на таблицата Customers, докато таблицата Customers няма да има външен ключ, сочещ към таблицата Orders.

Много към много

Това е сложна връзка, в която много записи в една таблица могат да се свържат с много записи в друга таблица. Например, нашият бизнес вероятно се нуждае от таблици „Клиенти“и „Поръчки“и вероятно също се нуждае от таблица „Продукти“.

Отново връзката между таблицата Клиенти и Поръчки е едно към много, но помислете за връзката между таблицата Поръчки и Продукти. Една поръчка може да съдържа множество продукти и един продукт може да бъде свързан с множество поръчки, тъй като няколко клиента могат да подадат поръчка, която съдържа някои от едни и същи продукти. Този вид връзка изисква най-малко три таблици.

Защо са важни връзките с бази данни?

Установяването на последователни връзки между таблиците на базата данни помага да се гарантира целостта на данните, допринасяйки за нормализирането на базата данни. Например, какво ще стане, ако не свържем никакви таблици чрез външен ключ и вместо това комбинираме данните в таблиците Курсове и Преподаватели, така:

Teacher_ID Име_на учител Курс
Teacher_001 Кармен Биология, Математика
Teacher_002 Вероника математика
Teacher_003 Хорхе английски

Този дизайн е негъвкав и нарушава първия принцип на нормализиране на базата данни, First Normal Form, който гласи, че всяка клетка на таблицата трябва да съдържа единична, отделна част от данните.

Или може би решихме да добавим втори запис за Кармен, за да наложим 1NF:

Teacher_ID Име_на учител Курс
Teacher_001 Кармен Биология
Teacher_001 Кармен математика
Teacher_002 Вероника математика
Teacher_003 Хорхе английски

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

Разбиването на тази таблица на две таблици, учители и курсове, създава правилната връзка между данните и следователно спомага за осигуряване на последователност и точност на данните.

Препоръчано: