작업 테이블을 추가하려고하는데 현재이 문제에 접근하는 방법에 대해 현재 확률이 높습니다.구성원 작업 테이블 데이터 모델 제안
내가 자세히 설명하기 전에.
우리는
- 에 다른 작업을 할 수있는 회원이 게시물
- 블로그 게시물 업데이트
- 블로그 게시물에 대한 의견
- 등 등
작업 테이블은 그들의 감시 목록에 추가하려는 경우 우리의 사용자가 다른 회원의 활동을 "시계"할 수 있습니다.
는 I 현재라는 테이블의 다음 컬럼으로 member_actions 생성
[UserID] [actionDate] [actionType] [refID]
[REFID] 중 화상 상기 DB에 ID 나 블로그 게시물 ID, 또는 다른 실행 가능의 ID 항목에 대한 참조 수 테이블 (예. 이벤트)
[actionType] 등의 조치 이름을 가진 열거 열 (등 imgAdd, imgUpdate, blogAdd, blogUpdate는, ...)입니다
[actionDate] 삭제 얻을 레코드를 결정합니다 D 매 90 일 ... 그래서 우리는 행동을 유지하지 않습니다 영원히
내가 함께 캠 현재 MySQL의 쿼리는 내가있을거야 주어진, 그래서 기본적으로
SELECT act.*,
img.Title, img.FileName, img.Rating, img.isSafe, img.allowComment AS allowimgComment,
blog.postTitle, blog.firstImageSRC AS blogImg, blog.allowComments AS allowBlogComment,
event.Subject, event.image AS eventImg, event.stimgs, event.ends,
imgrate.Rating
FROM member_action act
LEFT JOIN member_img img ON (act.actionType="imgAdd" OR act.actionType="imgUpdate")
AND img.imgID=act.refID AND img.isActive AND img.isReady
LEFT JOIN member_blogpost blog ON (act.actionType="blogAdd" OR act.actionType="blogUpdate")
AND blog.id=act.refID AND blog.isPublished AND blog.isPublic
LEFT JOIN member_event event ON (act.actionType="eventAdd" OR act.actionType="eventUpdate")
AND event.id=act.refID AND event.isPublished
LEFT JOIN img_rating imgrate ON act.actionType="imgRate" AND imgrate.UserID=act.UserID AND imgrate.imgID=act.refID
LEFT JOIN member_favorite imgfav ON act.actionType="imgFavorite" AND imgfav.UserID=act.UserID AND imgfav.imgID=act.refID
LEFT JOIN img_comment imgcomm ON (act.actionType="imgComment" OR act.actionType="imgCommentReply") AND imgcomm.imgID=act.refID
LEFT JOIN blogpost_comment blogcomm ON (act.actionType="blogComment" OR act.actionType="blogCommentReply") AND blogcomm.blogPostID=act.refID
ORDER BY act.actionDate DESC
LIMIT XXXXX,20
좋아하다 매주 90 일 이상 된 작업 삭제 ... 회원 쿼리 작업 기록을 표시하기 위해이 쿼리를 사용하는 것이 합리적일까요?
또는 에 새 텍스트 열을 추가해야합니다. member_actions member_action 테이블을 빠르게 쿼리하기 위해 json 또는 xml 형식으로 몇 가지 세부 정보를 저장할 수있는 [actionData] 테이블이 필요합니다.
테이블 크기를 늘리고 쿼리 복잡성을 줄이지 만 테이블은 이전 항목에서 정기적으로 제거됩니다.
결국 100k 멤버가 몇 개 밖에 없으므로 member_action 테이블의 테이블 크기에 신경 쓰면 특정 세부 정보가 포함 된 text [actionData] 열이 표시됩니다.
[actionData] 모델로 기울고 있지만 권장 사항이나 고려 사항을 알려 주시면 감사하겠습니다.
또 다른 고려 사항은 img 또는 blog에 대한 테이블 항목이 삭제 될 수 있다는 것입니다. 그래서 조치를 취할 수 있지만 참조 레코드가 없음 ...이 것은 문제에 추가됩니다.사전에
감사
또 다른 고려 사항은 img 또는 블로그에 대한 테이블 항목이 삭제 될 수 있다는 것입니다 ... 그래서 나는 행동을 취할 수 있지만 참조 기록이 없다 ... 확실히이 문제에 추가됩니다 ... – robert
@robert. . . 일부 값을 캐시하는 것은 부분적인 해결책 일 수 있습니다. 텍스트가 표시되지만 기본 객체는 표시되지 않습니다. –