2012-04-30 4 views
-2

n 라벨 코멘트 시스템을 관리하고 이와 같은 데이터베이스 구조를 설계하고 싶습니다. my database structure코멘트 시스템 구조

등록되지 않은 사용자에 대한 의견 검토를 지원하는 데이터베이스를 설계하려고합니다. 필자가 요구하는 기능은 주석을 게시 할 때와 같은 것입니다.

  • 사용자가 등록되면 직접 나타납니다. 그렇지 않으면;
  • 게시물은 운영자가 확인되기 전에 검토되어야합니다.

이 기능을 지원하려면 위 데이터베이스 스키마의 변경 사항을 제안하십시오.

+0

답변을 작성하기 전에 몇 가지 질문이 있습니다. 1) 사용자가 등록되어 있는지 어떻게 식별합니까? 'RegisteredUser' 테이블이 있습니까? 2) 당신은'BlogSetting' 테이블을 보았습니다. 그러나 링크 된 것은 보이지 않습니다. 'BlogSetting'과'BlogPost'의 부모 인 메인'Blog' 테이블이 있습니까? (힌트 : 있어야합니다!) 3)'BlogBlockedUser'는 어떻게 그것으로 들어 옵니까? – Jamiec

+0

@Jamiec 예 .' RegisteredUser' table.Blog의 Seeting은 페이지가로드 될 때입니다. 내 'sp'가 관리합니다. –

답변

1

원하는 것을하기 위해 필요한 것보다 많거나 적은 것으로 보입니다. 당신은 당신이

SELECT Comment, ISNULL(bc.UserName, ru.UserName) AS UserName 
FROM BlogComment bc 
LEFT JOIN RegisteredUser ru 
    ON bc.UserId = ru.Id 
WHERE postId=<current PostId> 
AND IsApproved=1 
이 승인 된 모든 의견을 끌어

같은 쿼리 (그 원하는 게시물 아래에 보여 주석을 꺼내 때

if the user is registered, and not blocked 
    create BlogComment record with: 
      IsApproved=true 
      IsBlocked=false 
      UserId=registered userId 
      UserName = null 
if the user is registered and blocked 
    create BlogComment record with 
      IsApproved=false 
      IsBlocked=true 
      UserId=registered userId 
      UserName = null 
if the user is unregistered 
    create BlogComment record with 
     IsApproved=false 
     IsBlocked=false 
     UserId=null 
     UserName=user's name 

을 다음과 같이 사용자가 새 코멘트를 작성하는 과정은 등록 된 사용자 또는 검토 된 등록되지 않은 사용자 또는 사용자 이름과 일치 함) (등록 된 사용자의 경우 사용자 이름은 RegisteredUser입니다. 등록되지 않았 으면 BlogComment 테이블의 설명과 함께 저장됩니다)

마지막으로, 당신은

SELECT * 
FROM BlogComment 
WHERE IsApproved=0 
AND IsBlocked=0 

그런 다음 그들이 IsApproved=1에 동의 레코드를 업데이트 할 수 있습니다 완화하는 사회자에 대한 게시물의 목록을 뽑아합니다.

+0

멋진 접근 방식을 제공해 주신 것에 대해 고마워. 내가 원하는 것을 얻었습니다. –