MS Accessで(タイプ、ID)(別名「ポリモーフィック」)-外部キー列を作成するにはどうすればよいですか?
質問
Ruby-on-Railsでは、これは「ポリモーフィックな関連付け」と呼ばれます。
アプリケーションにはいくつかの Commentable
があります。それぞれの表は以下のとおりです。
Post
id | title | text | author (FK:Person.id) | ...
Person
id | name | ...
Photo
id | title | owner (FK:Person.id) | path | ...
次のように Comments
テーブルを追加します:
Comments
id | commentable_type | commentable_id | text | author (FK:Person.id)
この方法でデータベースの参照整合性が失われることは理解していますが、他のオプションは複数の Comments
テーブルを作成することです: PostComments
、 PersonComments
、 PhotoComments
、...
次は質問です。
最初に Comments.commentable_type
からテーブル名を取得し、次に Comments.commentable_id
からIDを取得して、ルックアップの方法を理解するフォームを作成するにはどうすればよいですか
解決
この手法は、SQLの世界では「サブクラス化」として口語的に知られています。実用的な例(SQL Server構文ですが、MS Accessに簡単に適合)については、 David Portaのブログ。。
シナリオでは、すべてのコメントに共通のデータ項目がコメントテーブルにあります。各タイプに固有のものは、PhotoCommentsなどの特殊なテーブルにあります。FKは、IDとタイプの2列の化合物である必要があります。これは見落とされがちですが、ここでは参照整合性に不可欠です。 PersonCommentsテーブルに表示される写真のコメントとして何かを入力する必要はありません。
他のヒント
私は多くの人がそのようなことのメタテーブルを作っていると信じています。説明したとおりです。
所属していません StackOverflow