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

Оглавление:

Что такое связь с базой данных?
Что такое связь с базой данных?
Anonim

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

Как работает внешний ключ для установления связи

Первичный ключ однозначно идентифицирует каждую запись в таблице. Это тип ключа-кандидата, который обычно является первым столбцом в таблице и может автоматически генерироваться базой данных, чтобы гарантировать его уникальность. Внешний ключ - это еще один ключ-кандидат (не первичный ключ), используемый для связи записи с данными в другой таблице.

Например, рассмотрите эти две таблицы, которые определяют, какой учитель преподает какой курс. Здесь первичный ключ таблицы Courses - Course_ID. Его внешний ключ - Teacher_ID:.

Course_ID Название_курса Teacher_ID
Курс_001 Биология Учитель_001
Курс_002 Математика Учитель_002
Курс_003 Английский Учитель_003

Вы можете видеть, что внешний ключ в Курсах совпадает с первичным ключом в Преподавателях:

Teacher_ID Teacher_Name
Учитель_001 Кармен
Учитель_002 Вероника
Учитель_003 Хорхе

Можно сказать, что внешний ключ Teacher_ID помог установить связь между таблицами «Курсы» и «Учителя».

Image
Image

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

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

Один на один

Взаимоотношения этого типа допускают только одну запись на каждой стороне отношения. Первичный ключ относится только к одной записи (или ни к одной) в другой таблице. Например, в браке у каждого супруга есть только один другой супруг. Этот тип связи может быть реализован в одной таблице и, следовательно, не использует внешний ключ.

Один ко многим

Отношение «один ко многим» позволяет одной записи в одной таблице быть связанной с несколькими записями в другой таблице. Рассмотрим бизнес с базой данных, в которой есть таблицы Customers и Orders.

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

Многие ко многим

Это сложная связь, при которой многие записи в таблице могут быть связаны со многими записями в другой таблице. Например, нашему бизнесу, вероятно, нужны таблицы Customers и Orders, а также, вероятно, нужна таблица Products.

Опять же, связь между таблицей "Клиенты" и "Заказы" является "один ко многим", но рассмотрим связь между таблицей "Заказы" и "Продукты". Заказ может содержать несколько продуктов, а продукт может быть связан с несколькими заказами, поскольку несколько клиентов могут отправить заказ, содержащий несколько одинаковых продуктов. Для такого типа отношений требуется как минимум три таблицы.

Почему важны связи с базой данных?

Установление согласованных отношений между таблицами базы данных помогает обеспечить целостность данных, способствуя нормализации базы данных. Например, что, если бы мы не связывали какие-либо таблицы через внешний ключ, а вместо этого объединили данные в таблицах «Курсы» и «Учителя», например так:

Teacher_ID Teacher_Name Курс
Учитель_001 Кармен Биология, Математика
Учитель_002 Вероника Математика
Учитель_003 Хорхе Английский

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

Или, возможно, мы решили добавить вторую запись для Кармен, чтобы усилить 1NF:

Teacher_ID Teacher_Name Курс
Учитель_001 Кармен Биология
Учитель_001 Кармен Математика
Учитель_002 Вероника Математика
Учитель_003 Хорхе Английский

Это по-прежнему слабый дизайн, вводящий ненужное дублирование и то, что называется аномалиями вставки данных, что означает, что это может способствовать несогласованности данных. Например, если у учителя есть несколько записей, что, если некоторые данные необходимо отредактировать, но человек, выполняющий редактирование данных, не понимает, что существует несколько записей? В этом случае таблица будет содержать разные данные для одного и того же лица без какого-либо четкого способа идентифицировать или избежать их.

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

Рекомендуемые: