2010-07-11 3 views
0

우리는 다음과 같은 부분 ER 다이어그램을 가지고 있다고 가정하십시오 attachments 표는 이후 메시지에 사용됩니다CakePHP에서 Message blongsTo Attachment와 같은 "semantically reversed"연관을 사용해도 괜찮습니까?

An ER diagram with 5 entities: messages, submissions, attachments, assignments, and lectures

공지 사항 '제출'과제 '강의'첨부 파일.

문제는 attachmentsmessages, submissionsassignments 사이의 3 대 일대일 관계입니다. Message에 외래 키가 포함되어 있기 때문에 (다른 두 관계에도 똑같은 내용이 적용됩니다.) CakePHP의 규칙에 따르면 Message belongsTo Attachment (및 Attachment hasOne Message)입니다. 물론, Message hasOne Attachment (그리고 그것은 Attachment belongsTo Message)이라고 말하는 것이 더 합리적입니다. messagesattachments 만있는 경우 외래 키를 attachments으로 이동하여 "제대로 방향 설정"의 관계를 쉽게 유지할 수 있습니다.

는 그러나 문제는 다시 messages, submissions, assignmentslectures이 같은 attachments 테이블과의 관계를 가지고있다. 의미가 올바른 관계를 얻는 한 가지 방법은 MessageAttachment, SubmissionAttachment, AssignmentAttachmentLectureAttachment의 4 가지 Attachment 모델을 사용하는 것입니다.

우리는 특정 메시지, 제출, 또는 할당의 첨부 파일을 검색에만 관심이있는 가정, 는 이들 의미 반전 연결을 사용하는 OK, 또는 우리가 제대로 다른 4로 Attachment를 분리하여 그 방향을 한다 위에서 언급 한 모델?

답변

0

의미 론적 의미로는 언어의 자연적인 의미를 의미합니다. 그러나 당신은 다른 의미를 지닌 특정한 기술적 인 시나리오에 대해서 이야기하고 있습니다.

괜찮습니다. 이들은 단지 이름입니다. 당신은 A와 B (첨부 파일과 메시지)를 가지고 있고, 당신의 경우 B hasOne A이면, 입니다. 첨부 파일 hasOne 메시지를 말하는 것이 옳은 것입니다.

0

경고 :이 답변은 "MVC 프레임 워크에서이 작업을 수행 할 수 있어야합니다."라는 회선을 따라 조금 있습니다. 나는 CakePHP에 익숙하지 않다. 그리고 문서를 간략히보고 나는 실제로 다음과 같은 작업을 수행하는 방법을 알 수 없다.

Perl DBIx :: Class (필자가 잘 알고있는)에서 fk matching보다 belongs to 관계에 추가 제약 조건을 부과 할 수 있습니다. 이 문제를 해결하려면이 특정 attachment을 소유 한 객체 유형 (예 : message, lecture)을 나타내는 typeattachment에 추가 한 다음 attachmentforeign_id으로 지정합니다.

쿼리 구문은 SELECT * from attachment WHERE foreign_id == myId AND type == MyType이됩니다.

구조로 인해 attachments_lectures 테이블을 제거 할 수있는 것처럼 보입니다.이 테이블은 강의당 많은 첨부 파일을 가지고있는 것처럼 보입니다.당신은 또한 당신이 그렇게 생각한다면 과제물, 제출물 및 메시지를위한 많은 첨부 파일을 무료로 가질 수 있습니다.

관련 문제