Введение в отношения базы данных

Термин «реляционный» или «отношение» базы данных описывает способ соединения данных в таблицах.

Новичкам в мире баз данных часто трудно увидеть разницу между базой данных и таблицей. Они видят таблицы данных и распознают, что базы данных позволяют вам организовывать и запрашивать данные новыми способами, но не понимают значимости отношений между данными , которые дают технологии реляционных баз данных свое имя.

Отношения позволяют вам мощно описывать связи между различными таблицами базы данных. Затем эти отношения могут быть использованы для выполнения мощных кросс-таблиц запросов, известных как соединения.

Типы отношений базы данных

Существует три различных типа отношений базы данных, каждый из которых назван в соответствии с количеством строк таблицы, которые могут быть вовлечены в отношения. Каждый из этих трех типов отношений существует между двумя таблицами.

  • Отношения один-к-одному возникают, когда каждая запись в первой таблице имеет один и только один аналог во второй таблице. Отношения один-к-одному редко используются, потому что зачастую более эффективно просто поместить всю информацию в одну таблицу. Некоторые разработчики баз данных используют эти отношения, создавая таблицы, которые содержат подмножество данных из другой таблицы.
  • Отношения «один ко многим» являются наиболее распространенным типом отношений в базе данных. Они происходят, когда каждая запись в таблице A соответствует одной или нескольким записям в таблице B, но каждая запись в таблице B соответствует только одной записи в таблице A. Например, связь между таблицей Teachers и таблицей учеников в начальной школе база данных, вероятно, будет отношением один-ко-многим, потому что у каждого учащегося есть только один учитель, но у каждого учителя есть несколько учеников. Такая конструкция «один ко многим» помогает устранить дублированные данные.
  • Соотношение «многие ко многим» возникает, когда каждая запись в таблице A соответствует одной или нескольким записям в таблице B, а каждая запись в таблице B соответствует одной или нескольким записям в таблице A. Отношения между преподавателями и таблицей курсов, вероятно, будут многодетными, потому что каждый преподаватель может проводить более одного курса, а в каждом курсе может быть более одного преподавателя.

Отношения с самообращением: особый случай

Самореферентные отношения возникают, когда задействована только одна таблица. Одним из распространенных примеров является таблица «Сотрудники», которая содержит информацию о руководителе каждого сотрудника. Каждый руководитель также является работником и имеет своего руководителя. В этом случае существует отношение «один ко многим», поскольку у каждого сотрудника есть один руководитель, но каждый руководитель может иметь более одного сотрудника.

Создание отношений с иностранными ключами

Вы создаете отношения между таблицами, указывая внешний ключ. Этот ключ сообщает реляционной базе данных, как связаны таблицы. Во многих случаях столбец в таблице A содержит первичные ключи, на которые ссылаются из таблицы B.

Рассмотрим снова пример таблиц «Учителя и ученики». Таблица Teachers содержит только идентификатор, имя и столбец курса:

Учителя





InstructorID

TEACHER_NAME

Курс

001

Джон Доу

английский
002

Джейн Шмо

Math

Таблица «Студенты» включает в себя идентификатор, имя и столбец внешнего ключа:

Студенты







StudentID

Имя ученика

Teacher_FK
0200

Лоуэлл Смит

001
0201

Брайан Шорт

001
0202

Корки Мендес

002
0203

Моника Джонс

001

Столбец Teacher_FK в таблице учеников ссылается на значение первичного ключа инструктора в таблице учителей. Зачастую разработчики баз данных используют «PK» или «FK» в имени столбца, чтобы легко идентифицировать первичный ключ или столбец внешнего ключа.

Обратите внимание, что эти две таблицы иллюстрируют отношения «один ко многим» между учителями и учениками.

Отношения и ссылочная целостность

Добавив внешний ключ в таблицу, вы можете создать ограничение базы данных, обеспечивающее ссылочную целостность между двумя таблицами. Это гарантирует, что отношения между таблицами остаются согласованными. Когда одна таблица имеет внешний ключ к другой таблице, концепция ссылочной целостности гласит, что любое значение внешнего ключа в таблице B должно ссылаться на существующую запись в таблице A.

Реализация отношений

В зависимости от вашей базы данных вы реализуете связи между таблицами по-разному. Microsoft Access предоставляет мастер, который позволяет легко связывать таблицы, а также обеспечивать ссылочную целостность.

Если вы пишете SQL напрямую, вы сначала должны создать таблицу Teachers, объявив столбец идентификатора первичным ключом:

Учителя CREATE TABLE (

InstructorID INT AUTO_INCREMENT ПЕРВИЧНЫЙ КЛЮЧ,
Teacher_Name VARCHAR (100),
Курс VARCHAR (100)
);

Когда вы создаете таблицу учеников, вы объявляете столбец Teacher_FK внешним ключом, ссылающимся на столбец InstructorID в таблице учителей:

CREATE TABLE Учащиеся (
StudentID INT AUTO_INCREMENT ПЕРВИЧНЫЙ КЛЮЧ,
Student_Name VARCHAR (100), Teacher_FK INT,
ИНОСТРАННЫЙ КЛЮЧ (Teacher_FK) ССЫЛКИ Учителя (InstructorID))
)
;

Использование отношений для объединения таблиц

Создав одно или несколько отношений в базе данных, вы можете использовать их возможности, используя запросы SQL JOIN для объединения информации из нескольких таблиц. Наиболее распространенным типом объединения является SQL INNER JOIN или простое соединение. Этот тип объединения возвращает все записи, которые удовлетворяют условию соединения из нескольких таблиц. Например, это условие JOIN возвратит Student_Name, Teacher_Name и Course, где внешний ключ в таблице Students соответствует первичному ключу в таблице Teachers:

SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.Course
ОТ студентов
INNER JOIN Teachers
ON Students.Teacher_FK = Teachers.InstructorID;

Этот оператор создает таблицу примерно так:

Возвращаемая таблица из оператора соединения SQL

Student_NameTeacher_NameCourseLowell SmithДжон ДоуАнглийскийБриан ШортДжон ДоуАнглийскийКорки МендезДжейн ШмоМатематикаМоника ДжонсДжон ДоуEnglish

Оцените статью
Solutics.ru
Добавить комментарий