Skip to content

Регистрация сущности

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

Создание сущности в SDK:

from fsclient.catalogue import (
    entity as ent,
    data_type as dttp
)

customer_agreement = ent.create()

customer_agreement.config = {
    'name': 'CUSTOMER_AGREEMENT',     # Название сущности
    'description': 'Клиент-договор',  # Описание сущности
    'entity_keys': [
        {
            'name': 'AGREEMENT_RK',  # Название нового ключа
            'description': 'Суррогатный ключ договора',  # Описание ключа
            'data_type': dttp.INT    # Тип данных ключа
        },
        ent._keys.CUSTOMER_RK  # <-- Существующий ключ
    ]
}

customer_agreement.storage_key = [  # ключи дистрибуции (опционально)
    ent._keys.CUSTOMER_RK
]

customer_agreement.save()  # Регистрация новой сущности

Автоматические связи сущностей

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

Тип связи в этом случае определяется по следующим правилам:

  • 1:1 - полное пересечении ключей между сущностями
  • 1:M - ключи одной из сущностей полностью входят в набор ключей другой сущности, у которой есть минимум один ключ, не входящий в набор ключей первой сущности
  • M:N - ключи сущностей пересекаются частично, то есть у каждой сущности из связи есть минимум один ключ, отсутствующий у другой

Созданные автосвязи появляются в каталоге связей сущностей.