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

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

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

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

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

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

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

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

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

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

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

    Учителя

    InstructorID

    Имя учителя

    Курс

    001

    Джон Доу

    английский
    002

    Джейн Шмо

    математический

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

    Ученики

    Студенческий билет

    Имя ученика

    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 PRIMARY KEY,
    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 для объединения информации из нескольких таблиц. Наиболее распространенным типом объединения является SQL INNER JOIN или простое соединение. Этот тип объединения возвращает все записи, которые удовлетворяют условию соединения из одной или нескольких таблиц. Например, это условие JOIN возвратит Student_Name, Teacher_Name и Course, где внешний ключ в таблице Students соответствует первичному ключу в таблице Teachers:

    ВЫБЕРИТЕ Студенты.Студент_Имя, Учителя.Учитель_Имя, Учитель.Курс
    От студентов
    ВНУТРЕННИЕ РЕЙТИНГИ Учителя
    ON Students.Teacher_FK = Teachers.InstructorID;

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

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

    Ученик_Имя Учитель_Имя
    Лоуэлл Смит Джон Доу Английский
    Брайан Шорт Джон Доу Английский
    Корки Мендес Джейн Шмо Мат
    Моника Джонс Джон Доу Английский
    Ссылка на основную публикацию