문제

누군가가 채용 공고를 게시하고 자격을 갖춘 사람은 누구나 채용 공고를 볼 수 있지만 그렇지 않은 사람(또는 제외)은 채용 공고를 볼 수 없는 스크립트를 만들어야 합니다.따라서 두 사람이 같은 페이지에 가서 서로 다른 콘텐츠를 볼 수 있습니다. 일부는 잠재적으로 동일하고 일부는 완전히 고유할 수 있습니다.MySQL DB/테이블에 해당 데이터를 정렬하는 가장 좋은 방법이 확실하지 않습니다.

예를 들어 게시별로 정리할 수 있지만 다음과 같습니다.

  PostID   VisibleTo
 PostingA    user1,user2

그리고 그것은 잘못된 것 같습니다(열의 CSV 스타일).아니면 개인별로 갈 수도 있습니다.

User   VisiblePosts

user1 포스팅1, 포스팅2

그러나 그것은 같은 문제입니다.사용자를 고유하게 만들고 게시물을 고유하게 만들고 일치하는 곳에만 가입하도록 하는 방법이 있습니까?

처음에는 다른 테이블 세트에 대한 일련의 쿼리를 수행하여 결정이 내려지지만 일단 실행되면 사용자가 위치를 게시한 후에도 변경되지 않을 때 일부 코드 덩어리를 반복해서 실행하는 것은 비효율적입니다.

...다시 생각해 보면 변경될 수도 있지만 그렇지 않다고 가정하면(가능성이 낮고 사용자가 더 이상 자격이 없는 항목을 보는 경우 결과가 거의 없음) 이에 대한 표준 솔루션이 있습니까? 대본?

도움이 되었습니까?

해결책

이것은 다수의 관계 또는 n : m 관계입니다.

추가 테이블을 만들 것입니다 PostVisibility, 열이 있습니다 PostID 그리고 UserID. 조합 인 경우 PostID 그리고 UserID 테이블에 존재하고 해당 게시물이 해당 사용자에게 보입니다.

다른 팁

테이블 세개...

사용자:userId] [Otherfield

우편:PostId] [기타 필드

사용자 게시물:userId] [postID

user.userid는 userpost.userid, post.postid에 userpost.postid에 가입합니다

그런 다음 표시할 게시물을 선택할 때 UserPost 테이블을 찾아 Post에 합류합니다.

편집 : 죄송합니다. 게시 사용자 용어로 말하고있는 것 같습니다. 나는 "보기 권리"용어를 게시하는 측면에서 이것을 생각하고 있었는데, 그것은 일대일입니다.

내가 뭔가를 놓치지 않는 한, 이것은 두 개의 테이블이 필요한 일대일 상황입니다. 예를 들어, 각 게시물에는 볼 수있는 N 사용자가 있습니다. 게시물은 개별 사용자에게 고유하므로 반대로 수행 할 필요가 없습니다.

  • PostingID (및 기타 데이터)와 함께 게시하기 쉬운

  • PostingID 및 UserID와 함께 게시 할 수 있습니다

  • UserID 및 사용자 데이터로 사용 가능합니다

가시성 권한과 독립적으로 게시물을 작성한 다음 가시성 테이블에 대해 PostingID/UserID 쌍을 별도로 추가/제거하십시오.

현재 사용자에게 보이는 모든 게시물을 선택하려면 다음과 같습니다.

SELECT * FROM PostingTable A INNER JOIN PostingVisibilityTable B ON A.PostingID = B.PostingID WHERE B.UserID = "currentUserID"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top