사용자 및 그룹 : 엔티티가 2 개 있습니다. 가장 쉬운 모델은 user (id, name, etc ...), group (id, name), user_group_rel (user_id, group_id)입니다. 그러나 다른 그룹에 그룹을 포함시켜야합니다. 한 사용자는 많은 그룹에 속할 수 있으며 그룹에는 자신의 사용자 및 하위 그룹이있는 사용자 및 하위 그룹이 포함될 수 있습니다! 데이터베이스 모델에 대한 도움이 필요합니다.데이터베이스 사용자 및 그룹 모델
답변
나는 Ken Down의 명명법에 동의하지만, 사용자와 역할이 동일한 엔티티임을 반드시 동의하지는 않습니다.
자료 엔티티 :
Users (user_id, user name, real name, user_status, etc)
Role (role_id, role name, role_password, etc)
Privilege (priv_id, base object, functionality, what have you)
연관 기관 :
User has Role (0 - n) (user_id, role_id)
Role has Role (0 - n) (role_id, has_role_id)
User has Privilege (0 - n) (user_id, priv_id)
Role has Privilege (0 - n) (role_id, priv_id)
요즘이는 "역할"에 사용자 및 그룹을 모두 붕괴하여 수행됩니다. 당신이 가진 것은 역할이며, 다른 역할과 역할의 연결입니다. 일부 역할에는 "login"플래그가 true로 설정되어 유효 사용자가되고 "login"플래그가 설정되지 않은 역할은 그룹과 유사합니다.
주요 아이디어는 모든 것을 더 간단하게 만듭니다. 두 가지 별도의 개념이나 엔티티 (사용자 및 그룹)를 유지할 필요는 없지만 하나의 개념, 즉 역할 만 유지하면됩니다. 그런 다음 사용자에게 해당 "로그인"플래그를 사용합니다.
EDIT : @XIVSolutions에서 제공하는 첫 번째 옵션을 보면 테이블 구조에 대해 위에서 언급 한 내용을 자세히 설명합니다. 다른 역할에 하나의 역할을 두는 것에 대한 귀하의 질문에 대한 답변입니다. 두 번째 테이블 인 상호 참조는 역할과 상위를 나열합니다. 역할에 여러 상위 항목 (해당 테이블에 여러 항목이 있음)이 있으면 많은 그룹에서 한 명의 사용자를 갖는 것과 같습니다.
#DIT : @XIVSolutions 테이블 디자인 :이 세 번째 테이블은 사용자 (로그인)를 별도로 관리하는 엔티티로 완벽하게 합법적 인 방법입니다.
재 : 켄 다운스 솔루션 :
나는 것,이 두 가지 버전의 연주 (및했습니다 목표에 부합하는지 여부를 듣고 사랑해.) :
옵션 1 :
**tblRole**
RoleID PK
RoleName
**tblRoleIndex**
ParentRoleID FK on tblRole
ChildRoleID FK ON tblRole
NOTE: ParentRoleID and ChildRoleID form a composite Primary key in the above table.
**tblLogIns**
LogInID PK
RoleID
PassWord
또는 옵션 2 :
**tblRole**
RoleID
ParentRoleID Recursive FK on tblRole.RoleID
RoleName
NOTE: A top-level role in the table above has a default ParentRoleID of -1 or 0
**tblLogIns**
LogInID PK
RoleID
PassWord
나는 더 가까이서 보았다. 그것이 가치가있는 것을 위해, 아담의 해결책도 꽤 흥미 롭습니다, 그리고 아마 내 것보다 낫습니다. – XIVSolutions
나는 속임수를 썼습니다. 오라클이 내부적으로 사용하는 사용자와 그룹을위한 모델입니다. 8-) –
@ 아담 - 음, 그게 인생의 모든 것인가? 휠의 재발 명을 피하시겠습니까? ;-) – XIVSolutions
이 그룹의 구성원으로 모두 사용자와 그룹을 처리하는 방법입니다 모델링의 주요 난제. Ken Downs의 접근 방식은이 문제를 해결할 것입니다. 또 다른 방법은 공통 기본 형태의 파생 형태로서 사용자와 및 그룹을 치료하는 것이다
이러한 접근create table groupmemberbase
(
memberid int,
--optional flag to idicate the type of the derived entity
--this is similar to the login flag used by Ken Downs
membertype int,
primary key (memberid)
)
create table users
{
memberid int,
--more user attributes here
primary key (memberid),
foreign key (memberid) references groupmemberbase (memberid)
)
create table groups
(
memberid int,
--more group attributes here
primary key (memberid),
foreign key (memberid) references groupmemberbase (memberid)
)
create table groupmembers
(
groupid int,
memberid int,
primary key (groupid, memberid),
foreign key (groupid) references groups (memberid)
foreign key (memberid) references groupmemberbase (memberid)
)
하나의 장점은 실수로 사용자의 부재가되는 사용자 또는 그룹을 방지한다는 것이다 - 이러한 제약 스키마 수준에서 적용됩니다.
나는 이것 역시 좋아한다. 결코이 방법을 생각하지는 않았지만, 단순하고 깨끗하며 우아하게 보입니다. – XIVSolutions
- 1. 디자인 사용자/그룹 ACL 데이터 모델
- 2. 데이터베이스 모델 및 성능
- 3. 장고 관리의 그룹 모델
- 4. MVC3 및 사용자 모델
- 5. 레일 : 모델 및 데이터베이스 테이블
- 6. 데이터베이스 및 웹 서비스 모델
- 7. SVN 사용자 그룹 및 권한
- 8. 사용자 지정 작업 및 그룹
- 9. 사용자, 그룹 및 권한이있는 로그인
- 10. PostgreSQL 사용자 그룹 및 권한
- 11. Django 인증 그룹 모델 m2m
- 12. 데이터베이스 모델 및 계산 된 잔액, mysql
- 13. CakePHP 인증 및 사용자 모델
- 14. 사용자/그룹 다중 소유권 Entity Framework 4를 사용하는 모델
- 15. 셰어 '사용자 및 그룹'- Active Directory의 그룹 동기화
- 16. 데이터베이스/모델 픽스처 및 원래 상태
- 17. 라이브 및 초안 데이터 용 데이터베이스 모델
- 18. 차량 제조사/모델 및 부품 데이터베이스
- 19. 데이터베이스 및 모델 업데이트가없는 동적 데이터
- 20. LAMP 서버용 Linux 사용자 및 그룹
- 21. CakePHP 사용자에 속한 사용자, 그룹 및 데이터
- 22. 사용자 항목 및 그룹 항목 유형
- 23. tarfile 및 사용자, 그룹 정보 문제
- 24. 그룹 별 그룹 및 고유 값
- 25. 사용자 지정보기 그룹
- 26. Drupal의 그룹 및 그룹 관리자 구현
- 27. .NET - 사용자 및 다른 데이터베이스
- 28. 장고 모델 클래스 및 사용자 지정 속성
- 29. 사용자 (그룹) - 항목 (폴더), 트리 구조가있는 다중 루트 데이터베이스
- 30. 그룹 및 하위 그룹 동적 루프 Foreach
확인. 그룹 또는 사용자를 여러 그룹에 포함시킬 수있는 방법은 무엇입니까? – VeroLom
데이터베이스 모델링에 초보자이기 때문에 예제가 필요합니다. – VeroLom
예를 들어, 다른 방법을 사용하는 것이 좋습니다. 구성하려는 특정 보안 담당자의 예제를 제공하도록 질문을 편집 한 다음 해결책에 맞는 답을 수정할 수 있습니다. –