Что такое связь в базе данных?sql-15

Связь (relationship) в базе данных — это способ логического соединения двух или более таблиц на основе общих атрибутов (полей). Она определяет, как данные в одной таблице соотносятся с данными в другой. Связи являются фундаментальным понятием в реляционных базах данных и обеспечивают целостность данных, уменьшают избыточность и позволяют эффективно организовывать информацию.

Типы связей в базах данных

  1. Один к одному (1:1)
    Каждая запись в таблице A связана ровно с одной записью в таблице B, и наоборот.

    CREATE TABLE users (
        user_id INT PRIMARY KEY,
        name VARCHAR(100)
    );
    
    CREATE TABLE passports (
        passport_id INT PRIMARY KEY,
        user_id INT UNIQUE,
        number VARCHAR(20),
        FOREIGN KEY (user_id) REFERENCES users(user_id)
    );
    
  2. Один ко многим (1:N)
    Запись в таблице A может быть связана с несколькими записями в таблице B, но запись в таблице B — только с одной записью в таблице A.

    CREATE TABLE departments (
        dept_id INT PRIMARY KEY,
        name VARCHAR(100)
    );
    
    CREATE TABLE employees (
        emp_id INT PRIMARY KEY,
        name VARCHAR(100),
        dept_id INT,
        FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
    );
    
  3. Многие ко многим (M:N)
    Записи в таблице A могут быть связаны с несколькими записями в таблице B, и наоборот. Для реализации такой связи используется промежуточная таблица (junction table).

    CREATE TABLE students (
        student_id INT PRIMARY KEY,
        name VARCHAR(100)
    );
    
    CREATE TABLE courses (
        course_id INT PRIMARY KEY,
        title VARCHAR(100)
    );
    
    CREATE TABLE student_courses (
        student_id INT,
        course_id INT,
        PRIMARY KEY (student_id, course_id),
        FOREIGN KEY (student_id) REFERENCES students(student_id),
        FOREIGN KEY (course_id) REFERENCES courses(course_id)
    );
    

Ключевые аспекты связей

  • Первичный ключ (Primary Key, PK): Уникально идентифицирует запись в таблице.
  • Внешний ключ (Foreign Key, FK): Поле, которое ссылается на PK другой таблицы для обеспечения связи.
  • Целостность данных: Связи помогают поддерживать согласованность данных через ограничения (CONSTRAINTS), такие как ON DELETE CASCADE или ON UPDATE SET NULL.

Примеры использования связей

  1. Каскадное удаление:

    FOREIGN KEY (dept_id) REFERENCES departments(dept_id) ON DELETE CASCADE
    

    При удалении записи в departments автоматически удаляются связанные записи в employees.

  2. Ограничение уникальности:

    FOREIGN KEY (user_id) REFERENCES users(user_id) UNIQUE
    

    Гарантирует, что связь будет один-к-одному.

Резюмируем: связи в базах данных — это механизм, который позволяет таблицам "общаться" друг с другом, обеспечивая структурированность, целостность и эффективность хранения данных. Понимание связей критически важно для проектирования нормализованных и производительных баз данных.