Терминот за базата на податоци "релациона" или "врска" го опишува начинот на кој се поврзани податоците во табелите.
Новодојденците во светот на бази на податоци често имаат тешко време да ја видат разликата помеѓу базата на податоци и табелата. Тие гледаат табели на податоци и признаваат дека базите на податоци ви дозволуваат да ги организирате и да ги пребарувате податоците на нови начини, но не успеваат да го сфатат значењето на односите меѓу податоците што им даваат на технологијата за релациони бази на податоци неговото име.
Односите ви овозможуваат да ги опишете врските помеѓу различни табели на бази на податоци на моќни начини. Овие односи потоа можат да се искористат за да се извршат моќни пребарувања од вкрстени табели, познати како приклучоци.
Видови врски со бази на податоци
Постојат три различни типови на врски на базата на податоци, секоја именувана според бројот на редови на табели кои можат да бидат вклучени во врската. Секој од овие три типа на односи постои помеѓу две табели.
- Еден-на-еден односи се јавуваат кога секој запис во првата табела има еден, и само еден, колега во втората табела. Еден-на-еден односи ретко се користат, бидејќи често е поефикасно едноставно да ги стави сите информации во една табела. Некои дизајнери на бази на податоци ја искористуваат оваа врска со создавање на табели кои содржат подмножество од податоците од друга табела.
- Еден-на-многу врски се најчестиот вид на врска на базата на податоци. Тие се појавуваат кога секој запис во Табела А одговара на една или повеќе записи во Табела Б, но секој запис во Табела B одговара на само еден запис во Табела A. На пример, односот помеѓу табелата Наставници и Студентската табела во основно училиште база на податоци, најверојатно, ќе биде еден-на-многу врска, бидејќи секој студент има само еден наставник, но секој наставник има повеќе ученици. Овој еден-на-многу дизајн помага да се елиминираат дупликат податоци.
- Многу-до-многу врски се јавуваат кога секој запис во Табела А одговара на една или повеќе записи во Табела Б, и секој запис во Табела Б одговара на една или повеќе записи во Табела А. На пример, односот помеѓу наставниците и курсевите маса, најверојатно, ќе биде многу-на-многу, бидејќи секој наставник може да поучува повеќе од еден курс, и секој курс може да има повеќе од еден инструктор.
Односи со само-референцирање: посебен случај
Релациите со само-референцирање се јавуваат кога има само една табела. Еден чест пример е табелата на вработените која содржи информации за супервизорот на секој вработен. Секој претпоставен е исто така вработен и има свој претпоставен. Во овој случај, постои еден-на-многу само-референцирање односи, како секој вработен има еден претпоставен, но секој претпоставен може да има повеќе од еден вработен.
Креирање врски со странски клучеви
Вие создавате врски помеѓу табелите со наведување на странски клуч. Овој клуч ја кажува релациона база на податоци како се поврзани табелите. Во многу случаи, колоната во Табела А содржи примарни клучеви кои се референцирани од Табела Б.
Повторно размислете за примерот на масите на наставниците и учениците. Табелата Наставници содржи само лична карта, име и колона на курсот:
| InstructorID | Teacher_Name | Курс |
|---|---|---|
| 001 | Џон До | Англиски |
| 002 | Јане Шмо | Математика |
Табелата Студентите вклучува идентификатор, име и странски клуч колона:
| StudentID | Student_Name | Teacher_FK |
|---|---|---|
| 0200 | Ловел Смит | 001 |
| 0201 | Брајан Кратко | 001 |
| 0202 | Корки Мендез | 002 |
| 0203 | Моника Џонс | 001 |
Колоната Teacher_FK во табелата Студенти ја реферира примарната клучна вредност на инструктор во табелата Наставници.
Често, дизајнерите на бази на податоци ќе го користат "PK" или "FK" во името на колоната за лесно идентификување на примарен клуч или колона за странски клучеви.
Имајте на ум дека овие две табели ја илустрираат врската меѓу наставниците и учениците еден-на-многу.
Врски и референтен интегритет
Откако ќе додадете странски клуч во табела, тогаш можете да создадете ограничување на база на податоци што ќе го засилува референтниот интегритет помеѓу двете табели. Ова осигурува дека односите меѓу табелите остануваат конзистентни. Кога една табела има странски клуч во друга табела, концептот на референцијален интегритет наведува дека секоја вредност од странски клуч во Табела Б мора да се однесува на постоечки запис во Табела А.
Спроведување односи
Во зависност од вашата база на податоци, ги спроведувате односите меѓу табелите на различни начини. Microsoft Access обезбедува волшебник кој лесно ви овозможува да ги поврзете масите и исто така да наметнете референтен интегритет.
Ако директно пишувате SQL, прво ќе ја креирате табелата Наставници, прогласувајќи колона со идентификација да биде примарен клуч:
КРЕАЦИЈА ТАБЕЛА Наставници (
InstructorID INT AUTO_INCREMENT ПРИМАРЕН КЛУЧ,
Teacher_Name VARCHAR (100),
Курс VARCHAR (100)
);
Кога ја креирате табелата Студенти, прогласувате колона Teacher_FK да биде странски клуч кој се однесува на колоната InstructorID во наставната табела:
КРЕАЦИЈА ТАБЕЛА Студентите (
StudentID INT AUTO_INCREMENT ПРИМАРЕН КЛУЧ,
Student_Name VARCHAR (100), Teacher_FK INT,
СТРАНСКИ КЛУЧ (Teacher_FK) РЕФЕРЕНЦИИ Наставници (InstructorID))
);
Користење на врски за приклучување на табели
Откако ќе создадете една или повеќе врски во вашата база на податоци, можете да ја искористите нивната моќ користејќи SQL JOIN queries за да ги комбинирате информациите од повеќе табели. Најчестиот тип на приклучок е SQL INNER JOIN или едноставно се приклучи. Овој тип на приклучок ги враќа сите записи кои ги исполнуваат условите за приклучување од повеќе табели. На пример, оваа состојба JOIN ќе го врати името на Student_Name, Teacher_Name и курсот, каде што странскиот клуч во табелата Студентите одговара на примарниот клуч во табелата Наставници:
SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.Course
ОД студенти
ВНАТРЕШНИ ПРИСТАПНИ наставници
ON Students.Teacher_FK = Teachers.InstructorID;
Оваа изјава произведува маса како ова:
Врати табела од изјавата за пристап на SQL
Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish