---
title: 一意性の制約
description: Twenty によるインポート時のデータ一意性の確保方法。
---

import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';

## 概要

Twenty は、重複レコードを防ぎデータの整合性を確保するため、特定のフィールドに一意性を強制します。 これらの制約を理解することは、インポートを成功させるうえで不可欠です。

## デフォルトの一意のフィールド

| オブジェクト         | 一意のフィールド       |
| -------------- | -------------- |
| **連絡先**        | `id`, `email`  |
| **会社**         | `id`, `domain` |
| **カスタムオブジェクト** | `id` のみ（デフォルト） |

<Note>`id` フィールドは Twenty の内部識別子で、各レコードに対して自動生成されます。 UUID 形式を使用します（例: `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`）。</Note>

## カスタムの一意フィールド

追加の一意フィールドは **設定 → データモデル** で定義できます:

1. **設定 → データモデル** に移動します
2. オブジェクトを選択する
3. フィールドをクリックする
4. フィールド設定で **Unique** を有効化する

### カスタムの一意フィールドのユースケース

* **外部 ID**: 他システムの ID を保存（Salesforce ID、HubSpot ID）
* **ビジネス識別子**: 従業員番号、顧客コード
* **代替連絡先情報**: LinkedIn プロフィール、電話番号

<Note>フィールド名 `id` は Twenty の内部 ID 用に予約されています。 外部識別子には `externalId` や `legacyId` など別の名前を使用してください。</Note>

## インポート時の動作

### 新規レコードの作成

一意フィールドの値が存在しない場合は、新しいレコードが作成されます。

### 既存レコードの更新

一意フィールドの値が既存レコードに一致する場合、そのレコードは新しいデータで**更新**されます。
<Warning>**既存レコードを更新**する場合は、**一意フィールドを 1 つのみに限定して照合**することを推奨します。</Warning>

### ソフト削除済みレコード

<Warning>
  **削除済みレコードは一意性の判定に含まれます。**

  ソフト削除されたレコード（コマンドメニュー → 削除済みレコードを表示 で表示可能）は、一意性チェックに含まれます。 削除済みレコードと同じ一意の値を持つレコードをインポートすると、その削除済みレコードが新しいデータで**復元**されます。
</Warning>

## インポート時の重複検出

検証フェーズ中:

* ファイル内の重複は黄色でハイライト表示されます
* インポートを開始する前に、UI から重複行を編集または削除できます

<VimeoEmbed videoId="1145246326" title="デモ動画" />

## ベストプラクティス

1. インポート前にファイルから**重複を削除**してください
2. インポート前に Twenty で**既存レコードを確認**してください
3. 他のシステムから移行する場合は、**外部 ID を使用**してください
4. 既存レコードを更新したい場合は、**一意フィールドを含め**てください
