2

アップロードを伴うシステムを作成しています。ここで、これらのアップロードは、たとえば、ある方法の1つに添付する必要があります。メッセージ、契約、プロジェクト

添付ファイル用のテーブルを1つ用意してから、それらをこれらのタイプにリンクしてもかまいません。ただし、これらの各タイプの個々のIDにリンクする必要があることに注意してください。

例えば。添付ファイルのテーブル
タイプ-メッセージコントラクトなどの
IDのリストを持つテーブルへのリンク。-タイプのID#。タイプがメッセージの場合はmessage.idを参照し、コントラクトの場合はcontract.idを参照します。

しかし、外部キーチェックはありませんか?しかし、外部キーを実行しなければならないのは奇妙に思えます。

type
message_id (FK)
contract_id (FK)
project_id (FK)

編集:おそらく将来的には5-6のように3つよりもいくつかのテーブルがあります。

4

2 に答える 2

0

私がお勧めします:

  1. 添付ファイルのテーブル(attachment_id +添付ファイルに必要なその他の列)
  2. 可能なタイプ(メッセージ、契約、プロジェクト)ごとに、関係テーブルがあります。

例:

  • MessageAttachmentTable:message_id(FK)、attachment_id(FK)
  • ContractAttachmentTable:contract_id(FK)、attachment_id(FK)

これにより、未使用の列を使用せずに、すべてのデータベース整合性制約を設定できます。

于 2012-08-02T05:23:35.457 に答える
0

それぞれのテーブルへの外部キーを持つ3つのNULL可能フィールドは、私の意見では最も賢明なアプローチです。

さらに、外部キーフィールドが3つある場合は、NULLではない外部キーフィールドによって決定されるため、「タイプ」を格納する必要もありません。

于 2012-08-02T05:23:37.427 に答える