🛢Теория Баз Данных
Теория БД
Теория БД
  • Введение
    • Введение
    • Что такое БД
    • Какие бывают БД
    • СУБД
  • 📑Реляционные БД
    • Диалекты sql
    • SQLite
    • Что такое таблица
    • Типы данных
    • Виды связей
    • Запросы
      • CREATE
      • INSERT INTO
      • SELECT
        • Операторы Сравнения и Логики
        • Работа с датой и временем
        • Операторы группировки и агрегации
        • Оператор JOIN
          • Пример
          • Виды JOIN
      • DELETE
      • UPDATE
      • ALTER TABLE
      • DROP TABLE
  • 🐍sql в питоне
    • пакет sqlite3
      • Команды sqlite3
      • conn
      • cursor
    • ПРОСТОЙ пример программы с БД
    • Серьёзный пример программы с БД
  • 🚫NoSQL
    • Введение
Powered by GitBook
On this page
  • Связь "один к одному"
  • Связь "один ко многим"
  • Связь "многие ко многим"
  1. Реляционные БД

Виды связей

Связь "один к одному"

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

Для примера рассмотрим две таблицы: "Сотрудники" и "Паспортные данные".

Таблица "Сотрудники":

ИД
Имя
Должность

1

John

Менеджер

2

Anna

Разработчик

Таблица "Паспортные данные":

ИД
Паспортный номер

1

12345

2

67890

В этом примере каждый сотрудник имеет только один паспортный номер, и каждый паспортный номер соответствует только одному сотруднику. Таким образом, мы имеем "один к одному" тип связи между таблицами "Сотрудники" и "Паспортные данные".

Но такое используется редко и проще объединить эти таблицу в одну

ИД
Имя
Должность
Паспортный номер

1

John

Менеджер

12345

2

Anna

Разработчик

67890

Связь "один ко многим"

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

Давайте рассмотрим пример с клиентами и номерами телефонов:

Таблица "Клиенты":

ID
Имя

1

Алексей

2

Елена

Таблица "Номера телефонов":

ID
Номер телефона
id_client

1

123456

1

2

789012

1

3

345678

2

В этом примере каждый клиент может иметь несколько номеров телефонов, но каждый номер телефона соответствует только одному клиенту. Это пример связи "один ко многим" между таблицами "Клиенты" и "Номера телефонов".

Для реализации такой связи в базе данных обычно используется внешний ключ во второй таблице, который ссылается на первичный ключ в первой таблице. В этом случае, поле "ID" в таблице "Номера телефонов" является внешним ключом, который ссылается на поле "ID" в таблице "Клиенты".

Связь "многие ко многим"

Связь "многие ко многим" (Many-to-Many) - это тип связи между двумя сущностями в базе данных, при котором одной сущности может соответствовать несколько элементов другой сущности, и наоборот. Этот тип связи часто встречается в реальных приложениях, когда у нескольких элементов одной сущности могут быть связи с несколькими элементами другой сущности, и наоборот.

Давайте рассмотрим пример со связью "многие ко многим" между таблицами "Книги" и "Авторы":

  1. Таблица "Книги":

    • book_id (идентификатор книги)

    • title (название книги)

    • genre (жанр книги)

    • year_published (год публикации)

  2. Таблица "Авторы":

    • author_id (идентификатор автора)

    • author_name (имя автора)

    • birth_date (дата рождения автора)

Теперь, чтобы установить связь "многие ко многим" между книгами и авторами, мы создаем третью таблицу, которая называется, например, "Книги_Авторы":

  1. Таблица "Книги_Авторы":

    • book_id (идентификатор книги) - внешний ключ к таблице "Книги"

    • author_id (идентификатор автора) - внешний ключ к таблице "Авторы"

Каждая запись в таблице "Книги_Авторы" связывает определенную книгу с определенным автором. Например, если книга имеет несколько авторов, то в таблице "Книги_Авторы" будет несколько записей с одним и тем же book_id, но разными author_id. Аналогично, если у автора есть несколько книг, то в этой таблице будет несколько записей с одним и тем же author_id, но разными book_id.

  1. Таблица "Книги":

book_id
title
genre
year_published

1

"Война и мир"

Роман

1869

2

"Преступление и наказание"

Роман

1866

3

"1984"

Фантастика

1949

4

"Унесенные ветром"

Роман

1936

  1. Таблица "Авторы":

author_id
author_name
birth_date

1

Лев Толстой

1828-09-09

2

Федор Достоевский

1821-11-11

3

Джордж Оруэлл

1903-06-25

4

Маргарет Митчелл

1900-11-08

  1. Таблица "Книги_Авторы":

book_id
author_id

1

1

2

2

3

3

4

4

Таким образом, через таблицу "Книги_Авторы" мы можем легко установить связь между книгами и авторами в случае, когда одна книга может иметь несколько авторов, а также когда один автор может быть связан с несколькими книгами.

PreviousТипы данныхNextЗапросы

Last updated 1 year ago

📑