Найти тему
ITdependence

Что такое ‘Primary Key’ и ‘Foreign Key’ в SQL? Для чего они нужны?

Оглавление

В языке SQL `Primary Key` (первичный ключ) и `Foreign Key` (внешний ключ) являются важными концепциями, которые используются для обеспечения целостности данных и организации связей между таблицами в базе данных.

Primary Key (Первичный ключ)

Primary Key — это уникальный идентификатор для каждой записи в таблице. Он обладает следующими свойствами:

1. Уникальность: Значение первичного ключа должно быть уникальным для каждой записи в таблице. Никакие две записи не могут иметь одинаковое значение первичного ключа.

2. Не может быть NULL: Значение первичного ключа не может быть пустым (NULL).

3. Стабильность: Значение первичного ключа не должно изменяться со временем.

Пример:

```sql

CREATE TABLE Customers (

  CustomerID INT PRIMARY KEY,

  CustomerName VARCHAR(50),

  ContactName VARCHAR(50),

  Address VARCHAR(100),

  City VARCHAR(50),

  PostalCode VARCHAR(20),

  Country VARCHAR(50)

);

```

В этом примере `CustomerID` является первичным ключом, который уникально идентифицирует каждого клиента в таблице `Customers`.

Foreign Key (Внешний ключ)

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

Свойства Foreign Key:

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

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

Пример:

```sql

CREATE TABLE Orders (

  OrderID INT PRIMARY KEY,

  OrderDate DATE,

  CustomerID INT,

  FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)

);

```

В этом примере `CustomerID` в таблице `Orders` является внешним ключом, который ссылается на первичный ключ `CustomerID` в таблице `Customers`. Это устанавливает связь между заказами и клиентами, гарантируя, что каждый заказ связан с существующим клиентом.

Зачем они нужны?

1. Целостность данных: Первичные и внешние ключи помогают поддерживать целостность данных, предотвращая вставку некорректных или несуществующих ссылок.

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

3. Упрощение запросов: Использование первичных и внешних ключей упрощает написание сложных запросов, так как база данных сама понимает, как связаны данные.

Пример использования в запросе:

```sql

SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName

FROM Orders

JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

```

Этот запрос объединяет таблицы `Orders` и `Customers` по полю `CustomerID`, используя связь, установленную через внешний ключ.

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