1

지금까지 하나의 테이블이있는 다음 SQL Server 데이터베이스가 있습니다.SQL Server 데이터베이스 디자인 사용자, 그룹, 역할, 구성원

---------------- 
|Users   | 
---------------- 
| UserId PK | 
|    | 
| Other fields | 
---------------- 

나는 문제가하지 않은 그것에 몇 테이블을 추가해야하지만이 목표입니다 :

  • :

    ---------------- ---------------- ---------------- ---------------- 
    |Users   | |Roles   | | Teams  | | Groups  | 
    ---------------- ---------------- ---------------- ---------------- 
    | UserId PK | | RoleId PK | | TeamId PK | | GroupId PK | 
    |    | |    | |    | |    | 
    | Other fields | | Other fields | | Other fields | | Other fields | 
    ---------------- ---------------- ---------------- ---------------- 
    

    내가 달성하는 데 필요한 것은 다음과 같다 X 사용자가 있습니다.

    • 사용자 1
    • 사용자 2
    • UserX
  • 나는 3 개 모든 사용자가 모든 팀에서 사용하기에 대해서만 역할과 그룹

    • 관리
    • 회원
    • 방문자
  • 하나 사용자는 그룹

    • 그룹 1
    • 그룹 2
    • 의 X 금액을 만들 수 있습니다

      • Team1
      • 사의 Team2 심박 측정기를
      • TeamX
    • 한 사용자를 팀의 X 금액을 만들 수 있습니다

    • GroupX
  • 은 그룹 및 팀은 다른 역할 (관리자, 회원, 방문자)와 그들에게 할당 된 사용자가

  • 한 사용자는 하나 또는 여러 팀 또는 그룹

  • 하나에 속할 수 있습니다 사용자는 하나 이상의 역할에 속할 수 있습니다.

이러한 테이블 간의 관계를 이해하는 데 약간의 어려움이 있습니다.

다음은 @Robertas Valeika의 대답을 기반으로 달성 한 것입니다.

http://i58.tinypic.com/3588h0i.png

답변

2

당신은 3 개 이상의 테이블이 필요합니다. UsersRoles UsersRolesGroups UsersRolesTeams.

관계 :

UsersRoles - UsersRolesGroups, 그룹 - UsersRolesGroups

UsersRoles

- UsersRolesTeams, 팀 - UsersRolesTeams 사용자

- UsersRoles, 역할 - UsersRoles.

그룹 및 팀의 사용자에게 FK를 추가하여 그룹 및 팀의 생성자를 식별합니다.

+0

의견을 보내 주셔서 감사합니다. 나는 그것을 할 수 있었다. http://i57.tinypic.com/2r2c51i.png 모든 것이 정상인지, 관계 (1 .. *, * .. * ... 등)가 있는지 확인할 수 있습니다. –

+0

모든 테이블에는 PK로 하나의 열이 있어야합니다 필요한 경우 하나). 팀 - UserRolesTeams (1 대 다수) 그룹 및 UserRoles와 동일 - UserRolesTeams (1 대 다수). 팀 및 그룹에서 제작자 칼럼을 볼 수 없습니다. –

+0

나는 최종 버전을 만들었 : http://i58.tinypic.com/3588h0i.png –

관련 문제