17.00 - 17.05 - 参照制約 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Release Date
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1184-170K-JPN
Language
日本語 (日本)

一部の状況では、特定の参照の関係が、リクエスト内に指定されたテーブル間で定義されている場合、最適化ルーチンは、非常に優れたクエリー計画を作成することができます。参照制約機能(ソフト参照整合性ともいう)を使用すると、推奨される参照制約の実行で生じるオーバーヘッドなしで、これらの最適化を活用できます。

参照制約機能では、Teradata Databaseとそのユーザーとの間に高レベルの信頼性が確立されているものとし、システムによってこれらの制約を実行できなくても、ユーザーが定義済みの参照制約のいずれにも違反しないことを前提としています。これらの前提がない場合、参照制約がアプリケーションの重要な列に定義されていて、データ保全性を確実に維持するための適切な対策がとられていないと、状況によっては不適切な結果が生じ、データベースが破損する可能性があります。参照制約の関係における実テーブルの整合性の評価を参照してください。ご使用のアプリケーションに影響を与えない方法でデータ破壊の可能性およびクエリー エラーの可能性を管理できるときにだけ参照制約を指定するようにしてください。例については、参照制約によるデータ破壊のシナリオを参照してください。
参照制約の関係は、FOREIGN KEY … REFERENCES制約にWITH NO CHECK OPTION句を指定することによって定義します。この句を指定すると、Teradata Databaseは、定義されたRI制約を施行しません。これは、子テーブル行に関する次のことを意味しています。
  • 参照元の列に値がある行であっても、それに相当する値が親テーブルに存在しないことがあります。
  • 一部の状況では、参照先の列の値と参照元の列の値を比較したときに、1つの行がその親テーブルの複数行と一致することがあります。これは、候補キーが、固有であると明示的に宣言する必要のない制約において参照されるテーブルのプライマリ キーとなるため発生します。参照制約の使用に関するルールを参照してください。
そのような非整合性の可能性は、以下のことを暗示しています。
  • RIが施行されていた場合にSQLによって参照整合性違反としてフラグされたイベントはフラグされず、それらの整合性違反は警告なしで許可されます。
  • 同様に、FastLoad、MultiLoad、およびTeradata Parallel TransporterによってRIエラーとしてフラグされたイベントは、参照制約を定義された列に対して警告なしで許可されます。

テンポラル テーブルに対して指定されることがある参照制約の別の形式として、テンポラル関係制約があります。テンポラル テーブルについては、<Teradata Vantage™ - ANSIテンポラル テーブル サポート、B035-1186>および<Teradata Vantage™ - テンポラル テーブル サポート、B035-1182>を参照してください。

参照制約およびテンポラル関係制約は、ANSI SQL:2011規格に対するTeradataの拡張機能です。