Предположим, что у нас есть следующая частичная диаграмма ER:
Обратите внимание, что впоследствии таблица attachments
будет использоваться для сообщений ", представления", назначения ",и вложения лекций.
Проблема заключается в трех взаимно-однозначных отношениях между attachments
и messages
, submissions
и assignments
.Согласно соглашениям CakePHP, Message belongsTo Attachment
(и Attachment hasOne Message
), потому что Message
содержит внешний ключ (то же самое относится и к двум другим отношениям).Конечно, имеет смысл сказать, что Message hasOne Attachment
(а это Attachment belongsTo Message
).Если бы у нас было только messages
и attachments
, было бы легко " правильно сориентировать " отношения, переместив внешний ключ в attachments
.
Но проблема снова заключается в том, чтоmessages
, submissions
, assignments
и lectures
имеют отношения с одной и той же таблицей attachments
.Один из способов получить семантически правильные отношения состоит в том, чтобы иметь 4 разные модели Attachment
: MessageAttachment
, SubmissionAttachment
, AssignmentAttachment
и LectureAttachment
.
.мы заинтересованы только в получении вложения определенного сообщения, отправки или назначения, нормально ли использовать эти семантически обращенные ассоциации, или мы должным образом сориентируем их путемразделить Attachment
на 4 разные модели, как указано выше?