Ответ
Связь между таблицами устанавливается с помощью внешних ключей (Foreign Keys, FK). Внешний ключ в дочерней таблице ссылается на первичный ключ (Primary Key, PK) или уникальный ключ в родительской таблице.
Ключевые аспекты:
- Целостность данных: СУБД обеспечивает ссылочную целостность, предотвращая операции, которые нарушили бы связь (например, удаление родительской записи, на которую есть ссылки).
- Типы связей: Один-ко-многим (One-to-Many), многие-ко-многим (Many-to-Many, через связующую таблицу), один-к-одному (One-to-One).
Пример на SQL:
-- Родительская таблица
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(100)
);
-- Дочерняя таблица с внешним ключом
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT, -- Внешний ключ
amount DECIMAL,
FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE CASCADE
);
Пример на JPA/Hibernate:
@Entity
public class Customer {
@Id
private Long id;
@OneToMany(mappedBy = "customer") // Обратная сторона связи
private List<Order> orders;
}
@Entity
public class Order {
@Id
private Long id;
@ManyToOne // Владеющая сторона связи
@JoinColumn(name = "customer_id") // Столбец внешнего ключа
private Customer customer;
}
Каскадные операции (например, CascadeType.ALL, ON DELETE CASCADE) позволяют автоматически распространять действия (удаление, обновление) с родительской записи на дочерние.