Термин базы данных «реляционный» или «взаимосвязь» описывает способ подключения данных в таблицах.
Новичкам в мире баз данных часто бывает трудно увидеть разницу между базой данных и таблицей. Они видят таблицы данных и признают, что базы данных позволяют вам упорядочивать и запрашивать данные по-новому, но не понимают значимости отношения между данными которые дают реляционной базе данных свое имя.
Отношения позволяют описывать связи между различными таблицами базы данных мощными способами. Эти отношения затем могут быть использованы для выполнения мощных кросс-табличных запросов, известных как объединения.
Типы отношений с базами данных
Существует три разных типа отношений с базой данных, каждая из которых называется в соответствии с количеством строк таблицы, которые могут быть связаны с этим отношением. Каждый из этих трех типов отношений существует между двумя таблицами.
- Индивидуальные отношения возникают, когда каждая запись в первой таблице имеет одну и только одну, вторую во второй таблице. Отношения «один-к-одному» используются редко, потому что зачастую более эффективно просто помещать всю информацию в одну таблицу. Некоторые разработчики баз данных используют эту взаимосвязь, создавая таблицы, содержащие подмножество данных из другой таблицы.
- Отношение «один ко многим» являются наиболее распространенным типом отношений с базой данных. Они возникают, когда каждая запись в таблице A соответствует одной или нескольким записям в таблице B, но каждая запись в таблице B соответствует только одной записи в таблице A. Например, связь между таблицей Учителей и таблицей учащихся в начальной школе база данных, вероятно, будет отношения «один ко многим», потому что у каждого ученика есть только один учитель, но у каждого учителя есть несколько учеников. Эта конструкция «один ко многим» помогает устранить дублированные данные.
- Отношение «многие ко многим» происходят, когда каждая запись в таблице A соответствует одной или нескольким записям в таблице B, и каждая запись в таблице B соответствует одной или нескольким записям в таблице A. Например, соотношение между таблицей Учителей и Курсов, вероятно, для многих, потому что каждый учитель может обучить более одного курса, и каждый курс может иметь более одного инструктора.
Отношения с самостоятельной привязкой: специальный случай
Соотношения с привязкой встречаются, когда задействована только одна таблица. Одним из распространенных примеров является таблица Employees, в которой содержится информация о супервизоре каждого сотрудника. Каждый руководитель также является сотрудником и имеет своего собственного руководителя. В этом случае существует взаимосвязь «один-ко-многим» с саморефлексией, так как каждый сотрудник имеет одного наблюдателя, но каждый руководитель может иметь более одного сотрудника.
Создание отношений с внешними ключами
Вы создаете отношения между таблицами, указав внешний ключ. Этот ключ указывает реляционной базе данных, как связаны таблицы. Во многих случаях столбец в таблице A содержит первичные ключи, на которые ссылаются из таблицы B.
Рассмотрим снова пример таблиц Учителей и Студентов. Таблица Учителей содержит только идентификатор, имя и колонку курса:
InstructorID | Имя учителя | Курс |
---|---|---|
001 | Джон Доу | английский |
002 | Джейн Шмоу | математический |
Таблица «Студенты» содержит идентификатор, имя и столбец внешнего ключа:
Студенческий билет | Имя ученика | Teacher_FK |
---|---|---|
0200 | Лоуэлл Смит | 001 |
0201 | Брайан Корот | 001 |
0202 | Корки Мендес | 002 |
0203 | Моника Джонс | 001 |
Колонка Teacher_FK в таблице «Студенты» указано значение первичного ключа инструктора в таблице «Учителя».
Часто разработчики баз данных будут использовать «PK» или «FK» в имени столбца, чтобы легко идентифицировать столбец первичного ключа или внешнего ключа.
Обратите внимание, что эти две таблицы иллюстрируют отношения «один ко многим» между учителями и учащимися.
Отношения и ссылочная целостность
После того, как вы добавили внешний ключ в таблицу, вы можете создать ограничение базы данных, которое обеспечивает ссылочную целостность между двумя таблицами. Это гарантирует, что отношения между таблицами остаются согласованными. Когда одна таблица имеет внешний ключ к другой таблице, концепция ссылочной целостности устанавливает, что любое значение внешнего ключа в таблице B должно относиться к существующей записи в таблице A.
Реализация отношений
В зависимости от вашей базы данных вы реализуете отношения между таблицами по-разному. Microsoft Access предоставляет мастер, который легко позволяет связывать таблицы и также обеспечивать ссылочную целостность.
Если вы пишете SQL напрямую, сначала создадите таблицу «Учителя», объявив столбец «Идентификатор» основным ключом:
CREATE TABLE Учителя (
InstructorID INT AUTO_INCREMENT ПЕРВИЧНЫЙ КЛЮЧ, Teacher_Name VARCHAR (100), Курс VARCHAR (100));
Когда вы создаете таблицу Students, вы объявляете столбец Teacher_FK внешним ключом, ссылающимся на столбец InstructorID в таблице Учителей:
CREATE TABLE Студенты ( StudentID INT AUTO_INCREMENT ПЕРВИЧНЫЙ КЛЮЧ, Student_Name VARCHAR (100), Teacher_FK INT, FOREIGN KEY (Teacher_FK) ССЫЛКИ Учителя (InstructorID)))
;
Использование отношений для объединения таблиц
После того, как вы создали одно или несколько отношений в своей базе данных, вы можете использовать их мощь, используя SQL JOIN-запросы для объединения информации из нескольких таблиц. Наиболее распространенным типом объединения является SQL INNER JOIN или простое соединение. Этот тип соединения возвращает все записи, которые удовлетворяют условию объединения из нескольких таблиц.Например, это условие JOIN вернет Student_Name, Teacher_Name и курс, где внешний ключ в таблице «Студенты» соответствует первичному ключу в таблице «Учителя»:
SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.CourseОТ студентовINNER JOIN УчителяON Students.Teacher_FK = Учителя. Инструкторский идентификатор;
Этот оператор создает таблицу примерно так:
Возвращенная таблица из SQL-заявки
Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish