2012-11-09 8 views
0

시스템 데이터베이스를 설계하는 중입니다. 외래 키 제약이 많습니다.MySQL 테이블에서 제약 조건을 지정하십시오.

나는 다음 중 무엇을해야하는지 여부, 나는 몇 가지 조언을받을 수 있는지 궁금 해서요 :

1) 테이블 생성 자체를 즉시 제약 조건을 지정

CREATE TABLE IF NOT EXISTS abc 
    (
    keyword VARCHAR(20) NOT NULL, 
    id INT UNSIGNED NOT NULL, 
    FOREIGN KEY (id) REFERENCES xyz(id) ON DELETE CASCADE ON UPDATE CASCADE 
    )ENGINE=InnoDB; 

2) 테이블을 생성 FK 제약 나중에 예에 'ALTER'테이블없이

CREATE TABLE IF NOT EXISTS abc 
    (
    keyword VARCHAR(20) NOT NULL, 
    id INT UNSIGNED NOT NULL, 
    )ENGINE=InnoDB; 
ALTER TABLE abc ADD CONSTRAINT fk_constraint FOREIGN KEY (id) REFERENCES xyz(id) 
ON DELETE CASCADE ON UPDATE CASCADE; 

표 XYZ는 기본 키 '아이디'와 다른 테이블은 간단하다.

답변

0

FK를 한 번에 만들 수 있습니다. 그러나 이것은 순환 방식으로 서로를 참조 할 수 있기 때문에 항상 가능하지는 않습니다. 또한 나중에 FK를 사용하여 열을 추가 할 수 있습니다.

MySQL이 일부 변경 사항에 대해 테이블 ​​구조의 유효성을 검사하고 다시 작성해야하기 때문에 한 번에 추가하는 것이 약간 더 빠를 수도 있습니다. (FK를 추가 할 지 모르겠지만). 그러나 빈 테이블에서는이 프로세스가 상당히 빠르므로 FK를 추가 할 때는 별다른 문제가되지 않습니다.

+0

작동시킬 수 있었습니까? – GolezTrol

+0

확인. 알 겠어. 우리가 사전에 FK를 선언하면 성과 측면이 있습니다. 감사! – GreenDroid

0

결과는 동일합니다. 따라서 차이점은 없습니다.

새 데이터베이스를 만들면 하나의 명령문에서 테이블과 외래 키를 생성합니다. 스크립트가 더 좋아 보일 것입니다. 그러나이 경우 부모 테이블은 자식 테이블보다 먼저 만들어야합니다.

테이블을 만들 때 종속성을 고려하지 않으려는 경우 스크립트 시작 부분에 임의의 순서로 테이블을 만든 다음 ALTER TABLE을 사용하여 외래 키를 추가 할 수 있습니다.

+0

이제 알았습니다. 고마워요! – GreenDroid

관련 문제