2016-08-01 4 views
1

테이블 rolesusers이 있습니다. idroles에서 테이블 usersrole 열의 외래 키입니다.
두 가지 역할이 있습니다 : support 및 관리자입니다. 사용자 peter에 두 역할이 모두 할당되도록 지정하려면 어떻게해야합니까?하나의 행에 2 개의 외래 키를 할당하는 방법은 무엇입니까?

역할

| id | role | 
|----|---------| 
| 1 | support | 
| 2 | manager | 

사용자

| id | user  | pass | role (FK) | 
|----|----------|-------|-----------| 
| 1 | peter | hash1 | 1,2  | <-- 2 foreign keys 
| 2 | jennifer | hash2 | 2   | 
+0

과 함께 추가하면 언제든지이 경로를 사용할 수 있습니다. https://www.mssqltips.com/sqlserverip/1218/sql-server-bitwise-operators-store-multiple- 값 - 하나 - 열/ – JamieD77

답변

7

이 많은 관계로 고전 많은입니다. 한 사용자는 많은 역할을 가질 수 있고 하나의 역할은 많은 사용자에게 할당 될 수 있습니다.

id userId roleId 
1 1  1 
2 1  2 
3 2  2 
4 ... 

당신이 대리 키를 원하는 ID를 제거하지 않으면 userId를 + 역할 ID 기본 키 :

userId roleId 
    1  1 
    1  2 
    2  2 
+1

첫 번째 열 ('id')은 중복됩니다. 또한'userId + roleId'는'PK'이어야합니다. –

+1

@AlexKudryashev'id'는 단지 대용 키입니다. 일부 사람들은 좋아하지 않는 사람도 있습니다. 내 샘플'id'는'PK'와'userId + roleId UK'가 될 것입니다. – vercelli

1

I 당신은 아마이 같은 정보와 함께 새로운 UserRole 테이블을 작성해야한다 세 번째 테이블 user_roles를 role_id 열 및 user_id

+1

vercelli가 먼저 도착했습니다 ... –

관련 문제