# Один-к-одному

Отношение между сотрудниками и личными профилями является примером связи «один-к-одному». В такой связи каждый сотрудник может иметь только одну запись личного профиля, и каждая запись личного профиля может соответствовать только одному сотруднику.

В связи «один-к-одному» внешний ключ может быть размещен как в исходной, так и в целевой коллекции. Если связь означает «имеет один» (has one), то внешний ключ целесообразнее разместить в целевой коллекции. Если же связь означает «принадлежит» (belongs to), то внешний ключ лучше разместить в исходной коллекции.

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

## Один-к-одному (Имеет один)

Это означает, что сотрудник имеет одну запись личного профиля.

ER-диаграмма

![alt text](https://static-docs.nocobase.com/4359e128936bbd7c9ff51bcff1d646dd.png)

Конфигурация поля

![alt text](https://static-docs.nocobase.com/7665a87e094b4fb50c9426a108f87105.png)

## Один-к-одному (Принадлежит)

Это означает, что личный профиль принадлежит конкретному сотруднику.

ER-диаграмма

![](https://static-docs.nocobase.com/31e7cc3e630220cf1e98753ca24ac72d.png)

Конфигурация поля

![alt text](https://static-docs.nocobase.com/4f09eeb3c7717d61a349842da43c187c.png)

## Описание параметров

### Source collection

Исходная коллекция, то есть коллекция, в которой находится текущее поле.

### Target collection

Целевая коллекция, то есть коллекция, с которой устанавливается связь.

### Foreign key

Используется для установления связи между двумя коллекциями. В связи «один-к-одному» внешний ключ может быть размещен как в исходной, так и в целевой коллекции. Если связь означает «имеет один» (has one), то внешний ключ целесообразнее разместить в целевой коллекции. Если же связь означает «принадлежит» (belongs to), то внешний ключ лучше разместить в исходной коллекции.

### Source key <- Foreign key (Внешний ключ в целевой коллекции)

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

### Target key <- Foreign key (Внешний ключ в исходной коллекции)

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

### ON DELETE

`ON DELETE` определяет правила действий для ссылок внешнего ключа в связанной дочерней коллекции при удалении записей из родительской коллекции. Это опция, которая задается при определении ограничения внешнего ключа. Распространенные опции `ON DELETE` включают:

- `CASCADE`: При удалении записи в родительской коллекции автоматически удаляются все связанные записи в дочерней коллекции.
- `SET NULL`: При удалении записи в родительской коллекции значение внешнего ключа в связанной дочерней коллекции устанавливается в `NULL`.
- `RESTRICT`: Опция по умолчанию. Удаление записи в родительской коллекции отклоняется, если существуют связанные записи в дочерней коллекции.
- `NO ACTION`: Аналогично `RESTRICT`. Удаление записи в родительской коллекции отклоняется, если существуют связанные записи в дочерней коллекции.