ホームページ >データベース >mysql チュートリアル >データベース設計でポリモーフィックな関連付けを実装するにはどうすればよいですか?

データベース設計でポリモーフィックな関連付けを実装するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-13 21:57:35687ブラウズ

How Can I Implement Polymorphic Associations in Database Design?

多態性関連付け: 複数のテーブルへの外部キーの確立

データベース設計では、多くの場合、テーブル間にリレーションシップを作成することが望まれます。ただし、単一の列と複数のターゲット テーブルの間に外部キー制約を確立する必要がある特定のシナリオが発生する場合があります。この概念はポリモーフィック アソシエーションとして知られています。

この特定のケースでは、「region_id」と「popular_place_id」の 2 つの列を持つ「popular_areas」というテーブルを作成します。 Popular_place_id 列は、「countries」テーブルまたは「states」テーブルを参照する外部キーとして機能する必要があります。

データベース制約と多態性関連付け

残念ながら、標準 SQL 制約ポリモーフィックな関連付けはサポートされていません。外部キー制約には、単一のターゲット テーブルへの直接参照が必要です。 Rails や Hibernate などのフレームワークは回避策を提供する場合がありますが、SQL 制約を無効にする必要があります。これにより、不整合とデータの整合性に関する懸念が生じます。

代替ソリューション

この制限に対処するには、いくつかの代替アプローチがあります。

多重継承:

次のような別のテーブルを作成します。 「popular_states」と「popular_countries」は、それぞれ「州」と「国」を参照します。これにより、参照整合性が保持されます。

共通スーパーテーブル:

「州」と「国」の両方が継承する「場所」と呼ばれるスーパーテーブルを作成します。 "popular_areas" の外部キーは "places" を参照します。

デュアル列アプローチ:

"popular_areas" で 2 つの列を使用します: "state_id" と "国 ID。」一貫した参照を確保するには、これらの列のうち 1 つだけを設定する必要があります。

結論

多態性関連付けは、データベース設計に課題をもたらします。ただし、制限を理解し、代替ソリューションを検討することで、柔軟かつ効率的な方法でテーブル間のリレーションシップを確立することが可能になります。

以上がデータベース設計でポリモーフィックな関連付けを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。