2011-05-16 7 views
1

저는 개인/재미 프로젝트에 참여하고 있습니다. 나는 cakePHP를 사용하고있다. 그러나 이것은 데이터베이스 설계 문제에 더 가깝다.사용자에게 여러 그룹이 있어야합니까?

현재 내 USERS 테이블에 group이라는 필드가 있습니다. admin, confirm, new 등 여러 그룹을 나열하는 GROUPS 테이블이 있습니다.

다른 유형의 알림을 추적하는 데 사용하는 NOTIFICATIONS 테이블도 있습니다. 그룹에 대한 NOTIFICATIONS 테이블에 GROUP 테이블의 그룹을 추가하는 필드를 추가하고 싶습니다.

"확인 된"그룹의 일부로 알림을 태그하는 경우 "admin"그룹의 사용자도 알림을 액세스 할 수 있도록하는 방법입니다. 기본적으로 "관리자"는 "확인 된"모든 항목에 액세스 할 수 있어야합니다.

1) 사용자가 여러 그룹에 속하도록하는 것이 더 좋을까요? 따라서 관리자는 관리자와 확인 된 그룹에 모두 있습니까?

2) 내 코드에 몇 가지 추가 논리가 있어야합니까? "그룹"을 전달할 수있는 함수와 마찬가지로 사용자가 해당 그룹에 액세스 할 수 있는지 여부를 알려줍니다.

3) ... 다른 접근 방식은? 이 잘못 생각하고 있니?

+1

사양에 대해 좀 더 자세히 설명하고 싶을 수 있습니다. 통신뿐 아니라 액세스 용입니까? 사용자/그룹의 사용 사례는 무엇입니까? –

답변

2

사용자가 여러 그룹에 속하게하는 것이 그리 어렵지 않습니다. user_id 열과 group_id 열이있는 users_groups 테이블 만 있으면됩니다.

더 큰 질문은 : 의미가 응용 프로그램에 대한 만들 수 있습니까? 그것을하는 이유는 무엇입니까? 그 이유는 무엇입니까 아니야 무엇입니까?

또한 "확인 된 그룹"의 의미는 확실하지 않지만 실제 "그룹"보다 상태 표시기처럼 들립니다. 그러나 자세한 요구 사항을 알지 못하면 확실히 말할 수 없습니다.


업데이트 : 만 관리자가 여러 그룹에있을 할 수있을 것입니다

경우에만 사용자가 한 그룹에서 할 수 있도록 더 나은 수 있습니다. 그런 다음 사용자가 관리자인지 여부를 나타내려면 is_admin 표시기가 필요할 수 있습니다. 물론 관리자는 여전히 그룹에 속해야합니다 (사용자가 0 그룹에 속할 수 없다면). 그러면 관리자를 "admin"그룹에 추가 할 수도 있습니다. 아니면 관리자가 일부 그룹의 관리자 일 뿐이라는 상황입니까? 이 경우 관리자가 user_id이고 관리 그룹이 group_idadmins_groups의 표를 가질 수 있습니다. 동일한 user_id에 대한 여러 레코드를 통해 관리 사용자는 매우 특정한 그룹을 관리 할 수 ​​있습니다.

그래서 ... 사용자가 여러 그룹에 속하는 것이 합리적입니까? 지금이 아니라면 미래에 원하는 것이 있을까요?

+2

기술적으로 말하자면, 이것은 join 테이블에 대한 [CakePHP DB 규약] (http://book.cakephp.org/#!/view/903/Model-and-Database-Conventions)을 따르려면'groups_users'이어야합니다. –

+0

@ Jason McCreary : 고마워, 나는 CakePHP 규칙을 모른다. – FrustratedWithFormsDesigner

+0

의견 주셔서 감사합니다. 나는 내가 정말로 묻고있는 것이 무엇인지 생각한다.사용자가 여러 그룹에 속하도록 허용하는 것이 다른 그룹과 관련된 권한에 "관리자"권한을 부여하는 메커니즘으로 간단하게 허용하는 것이 적절합니까? 아니면 다른 방식으로 처리해야합니다. – corsen

관련 문제