外部キーの設定と ER 図
これは誰に向けたものですか
テーブルの関係を定義する必要があり、データ構造全体を視覚的に表示したいユーザー向け。
これで解決すること
設計段階で外部キー制約とカスケード ルールを明確にし、起動後のデータ整合性の問題を回避できます。 ER 図は、チームがテーブルの関係を迅速に理解するのに役立ちます。
前提条件
- 現在のテーブルには少なくとも 1 つのフィールドがあります。
- 関連付けの対象となるテーブルとフィールドはすでに特定されています。
- ER 図からリレーションシップを作成するには、まずソース テーブルとターゲット テーブルの両方を現在のワークスペースに保存します。
- ER リレーションシップ ウィザードは、ターゲット テーブル上の単一列の主キーまたは一意キーのみを参照できます。
ER 図から関係を作成する
- テーブル設定領域の上部にある「
ER Diagram」をクリックします。結果: 現在のワークスペースに保存されているテーブルと既存のリレーションシップが表示されます。 - ソースフィールドの左側にある接続ハンドルからターゲットフィールドの右側にあるハンドルまでドラッグします。結果: リレーションシップ ウィザードが開き、ソース フィールドとターゲット フィールドが選択されます。
- ソースフィールドとターゲットフィールドを確認します。結果: ターゲット リストでは単一列の主キーまたは一意のキーのみが許可され、フィールド タイプが異なる場合は警告が表示されます。
Many-to-oneまたはOne-to-oneを選択します。結果: 1 対 1 では、ソース フィールドに一意の制約があることが保証されますが、多対 1 では、必要に応じてソース フィールドに通常のインデックスを作成できます。RequiredまたはOptionalを選択します。結果: ソースフィールドはNOT NULLまたはNULLになります。必須の関係ではSET NULLを使用できません。- 関係名、更新アクション、削除アクション、およびインデックス オプションを確認します。アクションのデフォルトは
NO ACTIONです。ビジネス セマンティクスで必要な場合にのみ、CASCADE、SET NULL、または別のアクションを選択してください。 - 変更プレビューを確認し、
Create Relationshipをクリックします。結果: 外部キー、フィールドの NULL 可能性、および必要なインデックスが一緒にソース テーブルに書き込まれ、ER 図が新しいリレーションシップ ラインで更新されます。
外部キーパネルからリレーションシップを作成する
- テーブル構成領域の
Foreign Key Configurationタブに切り替えます。結果: 外部キー管理パネルが開きます。 - 「
Add Foreign Key」をクリックします。結果: 外部キー編集行が展開されます。 Foreign Key Nameを入力し、現在のテーブル フィールド、参照されるテーブル、および参照されるフィールドを選択します。結果: 関係が確立されます。- 必要に応じて、
Update RuleおよびDelete Ruleを設定します。結果: 参照動作が定義され、DDL はすぐに更新されます。 - これらの手順を繰り返して、さらに外部キーを追加します。結果: 現在のテーブルは複数のテーブルを参照できます。
ER図を調べて整理する
- テーブルのノードをドラッグしてレイアウトを調整します。結果: テーブル スキーマを変更せずにノードの位置が変更されます。
- マウス ホイールを使用してズームするか、ツールバーの自動レイアウトを使用します。結果: 大規模なワークスペースでもテーブルとリレーションシップを簡単に見つけることができます。
- 関係ラベルから削除アクションと更新アクションを読み取ります。削除が必要な場合は、行の横にある削除コントロールを使用してください。結果: 対応する外部キーがソーステーブルから削除されます。
いつ完了するか
- 外部キー構成パネルには、すべてのターゲット外部キーが正しいフィールド、関連テーブル、および関連フィールドとともにリストされます。
- 右側の DDL には、すでに
FOREIGN KEYステートメントが含まれています。 - ER 図では、現在のテーブルと関連テーブルの間の関係線が正しく表示されます。
- 1 対 1 のソース フィールドにはプライマリ インデックスまたは一意のインデックスがあります。クエリの高速化が必要な多対 1 の関係には、適切なインデックスが必要です。
- 更新/削除ルールはビジネス上の期待と一致します。
よくある落とし穴
- 外部キー フィールドと関連フィールドの型に互換性がない場合、生成された DDL がターゲット データベースで失敗する可能性があります。事前に型の一致を確認してください。
- ターゲットが単一列の主キーまたは一意キーではない場合、ウィザードは作成をブロックします。まず、プライマリ インデックスまたは一意のインデックスをターゲット フィールドに追加します。
- 同じ名前のテーブルは、異なる保存されたレコードを表す場合があります。 ER 図では、これらのノードが分離されており、どの重複ターゲットがリレーションシップを受け取るべきかを推測しません。
- ウィザードは、同じフィールド間の重複する名前と重複する関係をブロックします。
- すべてのデータベースがすべてのカスケード ルールをサポートしているわけではありません (たとえば、SET NULL ではフィールドが NULL 可能である必要があります)。選択する前に、ターゲット データベースのサポートを確認してください。