MS Accessで(タイプ、ID)(別名「ポリモーフィック」)-外部キー列を作成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/154209

  •  03-07-2019
  •  | 
  •  

質問

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テーブルに表示される写真のコメントとして何かを入力する必要はありません。

他のヒント

私は多くの人がそのようなことのメタテーブルを作っていると信じています。説明したとおりです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top