0

次の部分 ER 図があるとします。

メッセージ、提出物、添付ファイル、課題、レクチャーの 5 つのエンティティを含む ER 図

attachmentsこのテーブルは、メッセージ、提出物、課題、講義の添付ファイルに後で使用されることに注意してください。

attachments問題は、とmessages、 、の間の 3 つの 1 対 1 の関係submissionsにありassignmentsます。CakePHP の規約によると、Message belongsTo Attachment(and Attachment hasOne Message)Messageには外部キーが含まれているためです (同じことが他の 2 つの関係にも当てはまります)。もちろん、それを言う方が理にかなっていますMessage hasOne Attachment(そしてそれAttachment belongsTo Message)。messagesandしかない場合は、外部キーを に移動することで、関係を「適切に方向付けるattachments」のは簡単です。attachments

しかし、ここでも問題は、messagessubmissionsassignments、およびが同じテーブルlecturesと関係を持っていることです。「意味的に正しい」関係attachmentsを得る 1 つの方法は、 、、、およびの 4 つの異なるモデルを持つことです。AttachmentMessageAttachmentSubmissionAttachmentAssignmentAttachmentLectureAttachment

特定のメッセージ、送信、または割り当ての添付ファイルを取得することにのみ関心があると仮定すると、これらの意味的に逆の関連付けを使用しても問題ないでしょうか、それとも上記のように 4 つの異なるモデルに分けて適切に方向付ける必要がありますか?Attachment

4

2 に答える 2

0

セマンティクスとは、言語の自然なセマンティクスも意味します。しかし、あなたは異なるセマンティクスを持つ特定の技術的なシナリオについて話しているのです。

それはまったく問題ありません。これらは単なる名前です。A と B (添付ファイルとメッセージ) があり、あなたのケースでは B が One A を持っている場合、添付ファイルには One メッセージがあると言うの正しいことです。

于 2010-07-11T13:17:36.550 に答える
0

警告: この回答は、「MVC フレームワークでこれを行うことができるはずです」という行に少し沿っています。私は CakePHP に慣れていないので、ドキュメントを簡単に見ただけでは、実際に次のことを行う方法がわかりません。

Perl DBIx::Class (私はよく知っています) では、belongs tofk マッチングだけでなく、関係に追加の制約を課すことができます。この問題を解決するには、この特定のものを所有するオブジェクトのタイプ (たとえば、 ) を示すフィールドtypeをに追加し、.attachmentmessagelectureattachmentattachmentforeign_id

クエリ構文は次のようになりますSELECT * from attachment WHERE foreign_id == myId AND type == MyType

attachments_lectures講義ごとに多くのアタッチメントを持たせているだけのように見えるので、その構造はテーブルをなくすことができるように見えます。また、必要に応じて、課題、提出物、メッセージ用に多くの添付ファイルを無料で作成できます.

于 2010-07-11T13:25:18.420 に答える