Метод 1: ограничение внешнего ключа
Одним из распространенных подходов к установлению связи «один и только один» является использование ограничения внешнего ключа. Давайте рассмотрим пример, где у нас есть две сущности: Клиент и Паспорт. Каждый клиент может иметь только один паспорт, и каждый паспорт принадлежит только одному клиенту.
CREATE TABLE Customer (
customer_id INT PRIMARY KEY,
name VARCHAR(50),
passport_id INT UNIQUE
);
CREATE TABLE Passport (
passport_id INT PRIMARY KEY,
passport_number VARCHAR(20),
customer_id INT UNIQUE,
FOREIGN KEY (customer_id) REFERENCES Customer(customer_id)
);
В этом примере ограничение внешнего ключа в таблице Passport гарантирует, что каждый паспорт связан только с одним клиентом, удовлетворяя отношению «один и только один».
Метод 2: связь «один к одному» с использованием общего первичного ключа
Другой способ представления связи «один и только один» — использование общего первичного ключа. Этот метод предполагает объединение первичных ключей обоих объектов в один первичный ключ.
Рассмотрим пример базы данных университета, где каждый студент может иметь только одно удостоверение личности, и каждое удостоверение личности принадлежит только одному студенту.
CREATE TABLE Student (
student_id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE IDCard (
student_id INT PRIMARY KEY,
card_number VARCHAR(20),
FOREIGN KEY (student_id) REFERENCES Student(student_id)
);
Здесь первичный ключ таблицы IDCard состоит из столбца Student_id, который также является первичным ключом таблицы Student. Это гарантирует, что каждое удостоверение личности будет связано только с одним студентом.
Метод 3: использование уникальных ограничений
Ограничения уникальности также можно использовать для установления связи «один и только один». Этот метод предполагает добавление уникального ограничения к столбцу внешнего ключа.
Рассмотрим пример базы данных библиотеки, где каждая книга может иметь только один ISBN, а каждый ISBN соответствует только одной книге.
CREATE TABLE Book (
book_id INT PRIMARY KEY,
title VARCHAR(100)
);
CREATE TABLE ISBN (
isbn_id INT PRIMARY KEY,
isbn_number VARCHAR(13) UNIQUE,
book_id INT,
FOREIGN KEY (book_id) REFERENCES Book(book_id)
);
В этом примере уникальное ограничение столбца isbn_number в таблице ISBN гарантирует, что каждый ISBN соответствует только одной книге, устанавливая связь «один и только один».
В этой статье блога мы рассмотрели три метода представления и реализации отношений «один и только один» в диаграммах ER. Эти методы включают использование ограничений внешнего ключа, общих первичных ключей и ограничений уникальности. Используя эти методы, вы можете эффективно моделировать и устанавливать желаемые отношения при проектировании вашей базы данных.