2014-08-27 4 views
1

후보 키가 NULL 값을 가질 수 없다는 것을 알고 있습니다. 그러나 후보 키는 그 자체로 프라임 속성이라고하는 많은 속성의 조합 일 수 있습니다. 이 프라임 속성은 NULL 값을 가질 수 있습니까?속성에 프라임 속성을 사용할 수 있습니까?

감사합니다.

+0

가능한 복제본 [MySQL - 기본 키에 "NOT NULL"제약 조건이 필요합니까?] (http://stackoverflow.com/questions/10462918/mysql-are-not-null-constraints-needed-for-primary- 키) –

답변

2

총리는 일부 후보 키 속성으로 표시 속성 때문이다. (그것은 기본 키, 또는 관심 심지어 어떤 열쇠가 될 필요는 없다.)

Schemas and keys

국무 속성이 후보 키의 일부입니다. 후보 키는 이름에서 알 수 있듯이 기본 키의 후보입니다. 즉, 필요한 경우 후보 키 이 기본 키가 될 수 있습니다.

이제 기본 키를 null로 설정할 수 없습니다. 따라서, 정의상, 프라임 속성은 null 일 수 없습니다. null의 경우, 그 속성은 주요한 속성이 아닙니다.

다음은 설명입니다. 당신이있는 경우

는 복합 후보 키는

CK1(P1, P2) 

은 P1과 P2는 주요 특성입니다 말할 수 있습니다. 기본 키 속성 이외의 소수 속성에는 제약 조건이 없기 때문에 P1 또는 P2를 null로 설정할 수 있습니다. 그래서

는 지금

CK1(P1, P2=null) 

, CK1은 따라서 더 이상 후보 키입니다 따라서, P2는 더 이상 주요 속성입니다, 기본 키가 될 수 없습니다.

0

저는 사용하는 데이터베이스에 따라 다르다고 생각합니다.

예를 들어 MySQL에서는 명시 적으로 지정할 필요가 없습니다. 이것은 the manual에 정의되어

기본 키는 모든 키 열이 이 NOT NULL로 정의되어야합니다 고유 인덱스입니다. NOT NULL로 명시 적으로 선언되지 않은 경우, MySQL 은 암시 적으로 (그리고 자동으로) 선언합니다.

관련 문제