SQL Serverは、あるテーブルにレコードの存在が別のテーブルに絶対に必要な真の1対1の関係を直接サポートしていません。 これは、データベースの制約が論理的なパラドックスを作成せずにこのような厳格な要件を強制できないためです。 このシナリオを効果的に管理する理由と方法を探りましょう。
外部キーによってリンクされた国と資本のテーブルを検討してください。 これは真の1対1の関係ではなく、1対1(1対0)の関係です。国の記録は本質的に資本記録を必要としません。
この制限を処理するためのいくつかのアプローチがあります:
データの統合:最も単純なソリューションは、多くの場合、国と資本データを単一のテーブルに結合することです。これにより、1対1の関係の必要性が完全に排除されます。
ロジックによる制約施行:アプリケーションレベルのロジック(アプリケーションコードまたはデータベーストリガー内)を実装して、一方のテーブルに挿入することを確認してください。 このアプローチは複雑さを追加しますが、より強力な施行を提供します。
1から1つの現実を受け入れる:は、望ましい「1対1」が実際には1対0.1関係であることを認めます。これにより、実際のデータベースの制約が明確になり、設計が簡素化されます。
古典的な「鶏肉と卵」の類推は、問題を強調しています:鶏肉と卵のレコードの両方を必要とする前に、どちらかを許すことができないことを許可することができません。
真の1対1の関係は直接サポートされていませんが、SQL Serverは1対0..1の関係を容易に処理します。 たとえば、顧客テーブル(プライマリキー)は、アドレステーブル(顧客の主キーを参照する外部キー)と1対0..1の関係を持つことができます。 これにより、住所のない顧客、または対応する顧客のないアドレスが可能になります。
さらに、エンティティフレームワーク5.0以降のバージョンは、必要に応じて従属プロパティをマークする機能を提供します。これにより、非脆弱な関係を実施することができ、依存するエンティティが親なしで存在できないようにします。 これにより、アプリケーションフレームワーク内でより高いレベルの制約施行が提供されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3