source

NULL을 허용하려면 MySQL 외부 키를 선택하십시오.

factcode 2022. 9. 29. 00:11
반응형

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 Bonus는 데이터베이스의 경우 "인덱스"인지 "인덱스"인지를 알려주는 사람을 가리킵니다.


후속 조치: 테이블 구조에서 구문 오류로 판명된 것을 지적해 준 Bill Karwin에게 감사드립니다(컬럼 설정 안 함).NOT NULL괜찮으시다면NULL!) 그리고 당신에게 보너스 포인트를 줄 수 있는 충분한 업보가 생기면, 나는 :)

이 문제를 해결하려면NULL[외부 키]란에서tblImageFlags.resolutionTypeID.


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

여러 인덱스는 인덱스가 되어야 합니다.

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

통상적인 목적에서는 인덱스아닌 복수의 인덱스가 바람직하다.지표포라도그마타보다는 덜 가식적이지만 그럼에도 불구하고 가식적이다.일부 작가는 수학과 과학에서처럼 기술적 맥락에서 지수를 선호한다.지수에 대한 최선의 복수는 아니지만, 지수는 "지표"라는 의미에서 허용된다.여러 인덱스의 역형성인 단수 인디스는 피하십시오.

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

반응형