2012-02-11 1 views
5

나는 2 개의 테이블, UserEmployee을 가지고 있습니다. 각 사용자에게는 User_ID이 부여되며 이는 User 테이블의 기본 키이고 Employee 테이블의 외래 키입니다. Employee 테이블의 해당 속성을 기본 키로 사용할 수 있습니까?데이터베이스 특성을 기본 및 외래 키로 지정할 수 있습니까?

+0

Employee 테이블의 기본 키는 무엇입니까? 각 테이블에는 하나의 기본 키만 허용됩니다. 복합 기본 키 (둘 이상의 열)를 수행 할 수 있습니다. –

답변

20

두 테이블 사이에 일대일 대응 관계가있는 경우 세부 정보 테이블의 기본 키도 외래 키입니다. 만약 m 대 N의 관계를 가질 경우

master   detail (1 : 1) 
+----------+ 1:1 +-------------+ 
| PK id |<---o| PK FK id | 
+----------+  +-------------+ 
|  col1 |  |  col1 | 
|  col2 |  |  col2 | 
|  etc. |  |  etc. | 
+----------+  +-------------+ 

는 접합 테이블은 m의 두 개의 기본 키 및 해당 테이블에 관련된 열을 갖는다. 이 열은 기본 키와 외래 키입니다. 접합 테이블의 각 복합 기본 키가 고유해야하므로,이 구성으로, 하나 개의 테이블에 레코드가 한 번만 다른 테이블의 특정 레코드에 링크 될 수 있다는

    m : n 
m_table   junction 
+----------+ 1:m +------------+  n_table 
| PK id1 |<---o| PK FK1 id1 | n:1 +----------+ 
+----------+  | PK FK2 id2 |o--->| PK id2 | 
|  col1 |  +------------+  +----------+ 
|  col2 |  |   |  |  col1 | 
|  etc. |  +------------+  |  etc. | 
+----------+      +----------+ 

참고. 이 경우

    m : n 
        junction 
       +---------+ 
m_table   | PK id | 
+----------+ 1:m +---------+  n_table 
| PK id1 |<---o| FK1 id1 | n:1 +----------+ 
+----------+  | FK2 id2 |o--->| PK id2 | 
|  col1 |  |   |  +----------+ 
|  col2 |  +---------+  |  col1 | 
|  etc. |      |  etc. | 
+----------+      +----------+ 

, 기본 키 및 외래 키 제약 조건이 다른 열을 설정됩니다 : 당신이 고유하지 않은 짝 허용하려면, 접합 테이블에서 별도의 기본 키를 정의합니다. 또는 두 개의 외래 키와 하나의 분자 또는 다른 식별 속성을 사용하여 기본 키를 작성할 수도 있습니다. 일대일 또는 일대 제로 또는-하나 UserEmployee의 관계, 다음 예, Employee 테이블의 User_ID이 외부 키가 될 수있는 경우 귀하의 경우에는


, (FK) 및 기본 키 (PK) 동시에. 즉, 사용자가 직원이 될 수도 있습니다.이 경우 직원 데이터가 사용자에게 연결됩니다. 직원이 아닌 경우 (외부 전문가 일 수 있음) 직원 기록이 첨부되지 않습니다. User_ID이 FK이고 PK가 Employee 인 경우 각 사용자는 최대 하나의 직원 레코드를 첨부 할 수 있습니다. User_ID이 FK 만 이었지만 테이블 Employee에 PK가없는 경우 사용자는 여러 관련 직원 레코드를 가질 수 있습니다.

2

예. 예를 들어 모든 직원이 사용자이고 일부 사용자가 직원이 될 수 있도록하려는 경우이 작업을 수행합니다. 이것은 (0 또는 1) 하나의 관계가됩니다.

그렇지 않으면 다차원 관계에 대한 접합 테이블의 경우처럼 외래 키를 포함 할 수 있지만 외래 키와 같은 기본 키는 일반적으로 갖지 않습니다.

관련 문제