0

「添付ファイルのアップロード」機能をシステムに実装する方法を検討しています。これらの添付ファイルが適用できる領域は、調査回答とスタッフ アクションの 2 つです。添付ファイル リポジトリを実装する方法が必要なため、リンク テーブルが必要です。これにより、それらを Answers と Actions に適用でき、同じドキュメントを再度アップロードする必要がなくなります。次のようなリンク テーブルを簡単に作成できますか。

INT - 添付ファイル ID

INT - AppliesTo -> システム内の列挙型 (Answer の場合は 1、Action の場合は 2)

INT- AppliesToId -> アクションまたは回答の ID

これはデザインが悪いのでしょうか?私はこれについて間違った方向に進んでいると感じています。

これは私の最初の投稿です。

どうもありがとう、

クリス

4

2 に答える 2

0

これは悪い設計ではありませんが、次の設計の方が便利だと思うかもしれません。

Attachment
AttachmentId (pkey)

Answer
AnswerId (pkey)
AttachmentId (fkey)

Action
ActionId (pkey)
AttachmentId (fkey)

これにより、データ値を に設定せずにアクションのない添付ファイルを持つことができNULL、条件付き結合ではなく、同じ添付ファイルのすべてのアクションと回答を単純結合で表示できます。

(疑似コード)

select * from Attachment
outer join Answer on Answer.AttachmentId = Attachment.AttachmentId
outer join Action on Action.AttachmentId = Attachment.AttachmentId

アクション/回答に複数の添付ファイルを関連付けることができる場合は、これを変更してクロス結合を含めます。

Attachment
AttachmentId (pkey)

Answer
AnswerId (pkey)

Action
ActionId (pkey)

AttachmentAnswer
AttachmentAnswerId (pkey)
AttachmentId (fkey)
AnswerId (fkey)

AttachmentAction
AttachmentActionId (pkey)
AttachmentId (fkey)
ActionId (fkey)
于 2013-01-22T00:06:47.880 に答える
0

これは設計の観点からは不適切ではありませんが、GUID が主キーとして使用されている場合は、GUID が一意であることが保証されているため、おそらく [AppliesTo] フィールドを削除できます。

以下は、指定された調査回答のすべての添付ファイルを検索する例です。

SELECT
    AttachmentId
FROM
    Attachments
WHERE
    AppliesToId = @SurveyAnswerId
于 2013-01-21T23:10:33.263 に答える