2012-03-25 2 views
0

다른 사용자가 Facebook 및 Google+에서 공유하는 버튼과 트위터가 비슷하게 게시물을 공유 할 수있게 해주는 기능을 구현하고 싶습니다.다른 사용자가 게시물을 공유하도록하는 기능과 관련된 최적의 데이터베이스 디자인

1) 나는 게시물의 중복 복사본을 생성하고 원래의 게시물의 ID를 추적하고이 공유 게시물입니다 명확하게하는 열이 :

2 개 선택이 있습니다.

2) 게시물 테이블에 게시 ID의 외래 키인 게시물 ID를 저장하는 별도의 테이블 공유 게시물이 있습니다. 기본적으로 내가 별도의 테이블에있는 원래의 게시물에 포인터를 유지하고 또한 공유하는 사람을 사용자가 게시 한 게시물을 얻을 필요가있을 때 나는 왼쪽을 프로그래밍의 관점에서 이야기

이 게시물에 가입하고 공유 후 테이블

Post(post_id(PK), post_content, posted_by) 

    SharedPost(post_id(FK to Post.post_id), sharing_user, sharedfrom(in case someone shares from non owners profile)) 

두 번째 선택에 찬성하지만 전문가의 조언을 알고 싶습니다.

내 webapp에 대한 한 가지 더 많은 것들이 tweet 크기가 아닌 facebook 크기의 줄에 더 많을 것입니다.

답변

1

시스템에서 두 가지 중 하나를 수행하는 것이 좋습니다. 원래 게시물을 참조하는 게시물 (하이퍼 링크와 유사)에 대한 인라인 코드를 삽입하십시오. 이미지 나 다른 미디어를 가져 오려고하는지 알 수 없습니다. 이 인라인 코드가 발생하면 시스템에서 원본을 보거나 원본에서 가져온 데이터를 공유하는 게시물로 끌어 올 수있는 하이퍼 링크를 만들 수 있습니다.

posts 테이블의 shared_post에 대한 열은 post_id이거나 공유 할 외부 항목에 대한 하이퍼 링크 일 수 있습니다. 시스템은 값이 null 또는 -1이면 공유 된 게시물이 아니며 정상적으로 처리 할 수 ​​있음을 인식합니다.

공유 게시물의 중복 사본을 저장할 새 테이블을 만드는 것을 권장하지 않습니다. 유지 관리 및 업데이트가 더 어려워집니다.

또한이 시스템과 관련된 공유 그룹을 계획하는 경우 대부분 post_id에서 sharing_group_id으로 연결되는 다른 테이블이 필요할 것입니다.

+0

그래서 새 게시물을 만들고 게시물 내용에 원래 게시물에 대한 하이퍼 링크를 추가하고이 링크가 나타나면이 링크가 가리키는 원본 콘텐츠를 표시한다고 말합니다. 권리? – codecool

+0

그 하나의 옵션입니다. 다른 하나는 원래 게시물의 준비된보기로 이동하려면 링크를 사용 (뒤따라/클릭해야 함)해야한다는 것입니다. – jheep

+0

사용자가 링크를 추적 할 때 여분의 db 쿼리를 사용하지 않겠습니까? 원래 게시물 콘텐츠를 가져 오는 것은 자체 참여가됩니다. – codecool

관련 문제