Овладение искусством отношений «один и только один» в ER-диаграммах

Метод 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. Эти методы включают использование ограничений внешнего ключа, общих первичных ключей и ограничений уникальности. Используя эти методы, вы можете эффективно моделировать и устанавливать желаемые отношения при проектировании вашей базы данных.