갤러리를 만들고 있습니다. 사용자가 그룹이나 개인별로 사진을 볼 수있는 사람을 선택할 수 있기를 바랍니다. 나는 두 개의 열 (user_id, photo_id)
을 가진 테이블 can_see
을 가져야한다고 생각합니다. 이것은 개인을 위해 작동해야한다. 그러나 만일 내가 거기에 group_id
을 던지면 그것은 작동하지 않을 것이다. 그룹을 선택했을 때 group_id
대신 선택한 그룹의 각 개인을 해당 테이블에 추가하는 것이 가장 좋은 방법이라고 생각합니다. 그러나이 테이블에서 나중에 검색 할 항목을 더 많이 만듭니다. 여전히 최선의 접근 방법입니까?사용 권한/가시성에 관한 갤러리 데이터베이스 디자인 질문
는 여기에 내가 생각하고있는 내용은 다음과 같습니다 당신이 검색 할 항목의 금액을 제거하고 싶은 경우에, 나는 다음과 같은 접근 방식에 갈 것
users: id, username, ...
photos: id, album_id, ...
albums: id, user_id (owns all photos in album), ....
can_see: user_id, photo_id
groups: id, user_id(owner), name
member_of: user_id, group_id
나는 당신이나 내가 오해가 있다고 생각합니다. 사진을 검색하지 않으므로 누가 사진을 볼 권한이 있는지 확인하려고합니다. 이 설정으로 어떻게 할 수 있습니까? "사용자 그룹 테이블"이 어떻게 작동하는지 잘 모르겠습니다. 같은 그룹에 속한 5 명의 사용자가 있다면 어떻게됩니까? 그룹 이름이 5 번 반복됩니까? 그것은 단지 나쁜 디자인입니다. 내 설정으로 내 질문을 기각합니다 ... – mpen
동의. 반복 그룹 이름을 사용하는 사용자 그룹 테이블의 이전 디자인은 올바른 디자인이 아닙니다. 나는 내 생각을 반영하기 위해 디자인을 조금 수정했다. 검색을 통해 실제로 액세스하는 것을 의미했습니다. – msvcyc
나는 아직도 그것을 얻지 않는다. 사진을 소유 한 개인 사용자 * 또는 사진 전체가 * 소유 한 것처럼 들리게 만듭니다. 사용자 A가 사진 B를 업로드 한 다음 사진 B를보고 싶은 사용자 C가 오는 경우 어떻게해야합니까? 권한을 부여 받았는지 어떻게 확인합니까? 당신에 따르면 사용자 테이블에서 UserID를 끌어 올린 다음 사진 표를 확인하지만 사진 표는 누가 그 사진을 소유했는지 설명합니다. 아직 가시성 테이블이 없습니다. – mpen