2012-02-28 1 views
2

MySQL WB의 새로운 기능이므로 종속 테이블에 관계를 추가하여 외래 키를 만들 수 있습니다.복합 키를 만드는 방법은 무엇입니까?

그러나 합성 키를 만드는 방법은 무엇입니까? 예를 들어 나는이 테이블 SQL

CREATE TABLE TASKS 
(
TEST_ID NUMBER(6) CONSTRAINT FK_TASKS_TESTS REFERENCES TESTS(TEST_ID), 
TASK_ID NUMBER(3), 
MAX_POINTS NUMBER, 
CONSTRAINT PK_TASKS PRIMARY KEY (TEST_ID, TASK_ID) 
); 

이에 대한 옵션이 아니면이 다른 작성해야 있나요?

답변

2

질문은 고유성에 관한 것입니다. TASK_ID가 고유 할 것이라는 것을 알고 있으면 단일 열을 기본 키로 갖는 것이 더 좋습니다. MySQL은 다중 컬럼 기본 키를 허용하지만, TASK_ID가 고유하면 기본 키를 작성하고 TEST_ID에 다른 인덱스를 추가하십시오. 기본 키의 구문은 다음과 같습니다.

CREATE TABLE TASKS 
(
TEST_ID NUMBER(6), 
TASK_ID NUMBER(3), 
MAX_POINTS NUMBER, 
PRIMARY_KEY(TASK_ID) -- OR PRIMARY_KEY(TASK_ID, TEST_ID) for the composite key 
); 

자세한 내용은 this discussion을 참조하십시오.

3

우선 외래 키 제약 조건, 나는 거기에 넣어야한다고 생각하지 않습니다. 지금까지 모든 제약 조건은 변수 선언 (일반적으로 SQL의 규범 중 하나임) 이후에 선언되었습니다. 거의 복합 키에 대해서는 , 그 중 하나는 잘못된 것이며 Contraint를 쓰고 있습니다. 여기

CREATE TABLE IF NOT EXISTS TASK (
    TEST_ID NUMBER(6) , 
    TASK_ID NUMBER(3) , 
    MAX_POINTS NUMBER , 
    PRIMARY KEY (TEST_ID,TASK_ID), 

    CONSTRAINT fk_1 FOREIGN KEY (`TEST_ID`) REFERENCES TEST (TEST_ID) 
) 
0

이미 지금은 복합 기본 키

테이블 변경 직원이 기본 키 (EMP_ID, EMP_NAME)를 추가하기 위해이 쿼리를 사용하여 테이블을 만든 가정 작업의 예입니다;