2011-03-29 1 views
2

저는 MyISAM을 사용하고 있으며 최근까지 참조 무결성 등에 대해 걱정하기 시작하기 전까지 명백한 외래 키 관계를 정의하지 않았습니다.MySQL에서 InnoDB를 사용할 때 * 모든 외래 키를 명시 적으로 정의하는 것이 일반적입니까?

나는 싸우는 이벤트, 전투기의 통계를 저장하는 데이터베이스에서 작업하고 있으므로 InnoDB를 사용하고 명시 적으로 외래 키를 정의하는 기준을 충족한다고 생각합니다.

나는 외래 키인 여러 컬럼을 가진 전투기 테이블을 가지고있다. 그것은 항상 외래 키 관계를 테이블에 참조 된 얼마나 많은 외래 키가 관계없이 명시 적으로 권장하는 경우 궁금하네요? 특히

이 테이블에 대해 내가 가진 :

CREATE TABLE `fights` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `event_id` int(10) unsigned DEFAULT NULL, 
    `winner_id` int(10) unsigned DEFAULT NULL, 
    `referee_id` int(10) unsigned DEFAULT NULL, 
    `championship_match` enum('1','0') DEFAULT NULL, 
    `weight_class` int(10) unsigned DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

내가 각각의 테이블 'ID 열에 referee_id, winner_id, event_id 모든 외래 키를 만들 계획이다. 이게 가야 할 길인가? 또는 관계형 무결성 비용으로 성능상의 이유로 명시 적으로 정의 된 외래 키의 양을 제한해야합니까?

답변

6

결코 정확한 데이터를 절대로 포기하지 마십시오. 참조 무결성을 유지하십시오.

+0

이런 이유로 MySQL을 사용할 때 항상 InnoDB를 사용합니까? MyISAM에 대한 찬성이 있더라도? –

+0

MyISAM은 버전 6에서 외래 키 제약 조건을 추가 할 계획이지만 질문에 답하기 위해 트랜잭션 지원과 외래 키 제약 조건과 같은 몇 가지 이유로 InnoDB를 사용합니다. –