ProgramingTip

NULL을 허용하는 MySQL 외래 키?

bestdevel 2020. 11. 21. 09:30
반응형

NULL을 허용하는 MySQL 외래 키?


저는 이미지 웹 사이트를 연결하고 있습니다. 기본 스키마는 매우 간단한 MySQL이지만 이미지와 관련된 가능한 관리 플래그 ( "부적절", "저작권"등)를 모든 문제가 있습니다. 내 현재 생각은 다음과 가변합니다.

tblImages (
    imageID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ...
);

tblImageFlags (
    imageFlagID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    imageID INT UNSIGNED NOT NULL,
    flagTypeID INT UNSIGNED NOT NULL,
    resolutionTypeID INT UNSIGNED NOT NULL,
    ...
);

luResolutionTypes (
    resolutionTypeID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    resolutionType VARCHAR(63) NOT NULL,
    ...
);

(읽기 쉽도록 잘림; 여러 외래 키와 색인이 순서대로 정렬되어 있습니다.)

tblImageFlags.flagTypeID외국 키가 플래그 유형의 조회 테이블에, 그리고 당신이 상상할 수있는 그대로 tblImageFlags.resolutionTypeID 해야 외국 키가 있음 luResolutionTypes.resolutionTypeID. 당면한 문제는 플래그가 처음 발행 될 때 해결 될 때 사용 가능한 것입니다 (이를 잘 사용하는 것입니다 NULL). 그러나 값이 설정 되어야만 외래 키가 지정되어야합니다.

이 상황에 대한 MySQL 구문 해결 방법을 수 없습니다. 존재합니까? 최고의 준우승자는 다음과 가변적이다.

  • "조정되지 않은"해결 유형 추가
  • NULL항목을 추가합니다 luResolutionTypes.resolutionTypeID( AUTO_INCREMENT에서도 작동 합니까?).

정렬에 감사드립니다!

PS 보너스는 데이터베이스의 경우 "인덱스"인지 "인덱스"인지 알려주는 사람을 가리습니다.


후속 조치 : 테이블 구조에서 구문 오류로 판명 된 것을 지적한 Bill Karwin에게 감사합니다 ( NOT NULL허용 다음 열을 설정하지 않습니다 NULL!). 그리고 일단 당신에게 그 보너스 포인트를 줄 충분한 카르마가 있으면, 나는 할 것입니다 :)


NULL외래 키 열 을 허용하여 문제를 해결할 수 있습니다 tblImageFlags.resolutionTypeID.


PS 보너스는 데이터베이스의 경우 "인덱스"인지 "인덱스"인지 알려주는 사람을 가리습니다.

의 복수 인덱스인덱스 여야 합니다 .

Bryan A. Garner의 " Modern American Usage "에 따르면 :

일반 목적을 위해, 인덱스는 바람직한 복수 아닌 인덱스 . ... 지수보다 적지 허세 포럼 또는 dogmata는 , 그럼에도 불구하고 허세입니다. 작가 일부 는 수학과 과학에서와 같이 기술적 맥락에서 인덱스선호합니다 . 에없는 최고의 복수 제안 지수 , 지수는 점에서 허용된다 "지표." ... 단수 피 indice ,에서 다시 형성 복수 인덱스를 .

참고 URL : https://stackoverflow.com/questions/441988/mysql-foreign-key-to-allow-null

반응형