프라이머리 키
Primary key이 기사는 대부분 또는 전체적으로 단일 출처에 의존하고 있습니다. : 키 · · · · ( 2021년 6월) |
데이터베이스의 관계 모델에서 프라이머리 키는 관계(표)[a][1]의 태플(행)을 일의로 지정하는 최소한의 속성(열) 세트 중 특정 선택입니다.비공식적으로 프라이머리 키는 "어느 속성이 레코드를 식별하는지"이며, 단순한 경우 단일 속성인 고유 ID를 구성합니다.보다 형식적으로 프라이머리 키는 후보 키(최소 슈퍼 키)의 선택이며, 그 외의 후보 키는 대체 키입니다.
프라이머리 키는 실제 관찰 가능한 것으로 구성될 수 있으며, 이 경우 자연스러운 키라고 불리며, 키로서 기능하도록 작성된 속성은 데이터베이스 외부의 식별에 사용되지 않습니다.예를 들어, (특정 국적의) 사람들의 데이터베이스의 경우, 출생 시간과 장소는 자연스러운 [b]키가 될 수 있다.주민번호는 자연키로서 사용할 수 있는 속성의 또 다른 예입니다.
역사
현재는 주로 관계형 데이터베이스 컨텍스트에서 사용되지만 "프라이머리 키"라는 용어는 관계형 모델보다 먼저 생성되며 다른 데이터베이스 모델에서도 사용됩니다.찰스 바크만은 항법 데이터베이스에 대한 그의 정의에서 주요 [2]키를 정의한 첫 번째 사람이다.
설계.
관계형 데이터베이스 용어로 기본 키는 기본 키가 아닌 키와 형식이나 기능이 다르지 않습니다.실제로는 다양한 동기에 따라 어떤 키를 다른 키보다 우선으로 선택할 수 있습니다.프라이머리 키의 지정은 테이블 내의 데이터에 대한 "우선" 식별자를 나타내거나 프라이머리 키를 다른 테이블로부터의 외부 키 참조에 사용하거나 테이블의 의미보다는 다른 기술적 특징을 나타낼 수 있습니다.일부 언어 및 소프트웨어에는 프라이머리 키 식별에 사용할 수 있는 특별한 구문 기능이 있습니다(SQL의 프라이머리 키 제약 등).
관계식 미적분과 관계대수를 통해 표현되는 관계식 모델은 기본 키와 다른 종류의 키를 구별하지 않습니다.주 키는 주로 애플리케이션 프로그래머의 편의를 [citation needed]위해 SQL 표준에 추가되었습니다.
SQL에서 기본 키 정의
기본 키는 ISO SQL 표준에서 PRIMAY KEY 제약 조건을 통해 정의됩니다.이러한 제약을 기존 테이블에 추가하기 위한 구문은 SQL:2003에서 다음과 같이 정의되어 있습니다.
바꾸다 테이블 < >테이블 식별자> 더하다 [ 제약 < >제약 식별자> ] 기본적인 열쇠 ( < >기둥. 이름.> [ {, < >기둥. 이름.> }... ] )
프라이머리 키는 테이블 작성 중에 직접 지정할 수도 있습니다.SQL Standard에서 기본 키는 하나 또는 여러 개의 열로 구성될 수 있습니다.프라이머리 키에 참여하는 각 열은 NOT NULL로 암묵적으로 정의됩니다.일부 RDBMS에서는 프라이머리 키열을 명시적으로 마킹해야 합니다.NOT NULL
를 클릭합니다.[citation needed]
만들다 테이블 table_name ( ... )
프라이머리 키가 1개의 컬럼으로만 구성되어 있는 경우 다음 구문을 사용하여 컬럼을 마킹할 수 있습니다.
만들다 테이블 table_name ( id_col 인트 기본적인 열쇠, col2 성격 변화하고 있다(20), ... )
대리 키
어떤 상황에서는 관계에서 태플을 고유하게 식별하는 자연 키가 소프트웨어 개발에 사용하기 번거로울 수 있습니다.예를 들어 여러 열이나 큰 텍스트 필드가 포함될 수 있습니다.이 경우 프라이머리 키 대신 대리 키를 사용할 수 있습니다.다른 상황에서는 관계에 대한 후보 키가 여러 개 있을 수 있으며 후보 키는 분명히 선호되지 않습니다.하나의 후보 키가 다른 후보 키보다 인위적인 우선권을 주는 것을 피하기 위해 대리 키를 프라이머리 키로서 사용할 수 있다.
프라이머리 키는 주로 프로그래머의 편의를 위해 존재하기 때문에 대리 프라이머리 키는 많은 경우 데이터베이스 애플리케이션 설계에서만 사용됩니다.
대리 프라이머리 키의 인기로 인해, 많은 개발자와 경우에 따라서는 이론가들도 대리 프라이머리 키를 관계형 데이터 모델의 양도할 수 없는 부분으로 간주하게 되었다.이것은 주로 객체 지향 프로그래밍 모델에서 관계형 모델로 원칙의 이행에 기인하며, 혼합 객체 관계형 모델을 만듭니다.ORM 라이크 액티브레코드 패턴에서는 프라이머리 키에 다음과 같은 추가 제한이 적용됩니다.
- 프라이머리 키는 불변해야 합니다.즉, 변경이나 재사용을 하지 않고 관련 레코드와 함께 삭제해야 합니다.
- 기본 키는 익명 정수 또는 숫자 식별자여야 합니다.
그러나 이러한 제한은 관계형 모델이나 SQL 표준의 일부가 아닙니다.데이터베이스 및 애플리케이션 설계 시 주요 키 값의 불변성을 결정할 때는 실사를 적용해야 합니다.데이터베이스 시스템에 따라서는 프라이머리 키 열의 값을 변경할 수 없는 경우도 있습니다.UPDATE
SQL [citation needed]문
대체 키
일반적으로 프라이머리 키로서 후보 키가 1개 선택됩니다.다른 후보 키는 대체 키가 됩니다.각 키에는,UNIQUE
중복을 방지하기 위해 할당된 제약 조건(중복 엔트리는 고유 [3]열에 유효하지 않습니다).
대체 키는 단일 테이블 선택을 수행할 때 또는 where 절을 필터링할 때 프라이머리 키와 같이 사용할 수 있지만 일반적으로 여러 테이블을 결합할 때는 사용되지 않습니다.
「 」를 참조해 주세요.
메모들
레퍼런스
- ^ "Add or change a table's primary key in Access". Microsoft. Retrieved January 20, 2020.
A primary key is a field or set of fields with values that are unique throughout a table.
- ^ "The programmer as navigator". Portal.acm.org. doi:10.1145/355611.362534. Retrieved 2012-10-01.
- ^ 대체 키 – Oracle FAQ