DBMS에서 기본 키와 슈퍼 키의 차이점은 무엇입니까


20

저는 DBMS를 처음 접했고 여전히 이론을 배우고 있습니다.

나는이 주요 사업과 정말로 혼란스러워하고 인터넷 검색 후 내가 얻지 못하는 2 개의 키 (기본 및 슈퍼 키)로 좁혔습니다.

DBMS에 대한 몇 가지 질문이 있습니다. 대답 해 주시면 감사하겠습니다.

1) DBMS에서 기본 키와 슈퍼 키의 차이점은 무엇입니까? 포괄적 인 예를 사용하여 올바르게 설명 할 수 있다면 대단히 감사합니다.

2) 기본 키와 슈퍼 키 모두 기본 키와 슈퍼 키 를 형성하기 위해 여러 열을 결합 할 수 있습니까?

3) 기본 키는 슈퍼 키의 하위 집합입니까?


1
많은 것들에 대해 광택이 나는 것 중 하나는 튜플 (행) 자체가 수퍼 키라는 것입니다. 의도는 행을 고유하게 식별 할 수 있어야합니다. 즉, 특정 값 조합을 포함하는 튜플을 고유하게 식별 할 수 있어야하기 때문에 한 가지 방법은 이미 모든 값을 사용할 수있는 것입니다. 따라서 튜플은 그 자체의 수 퍼키입니다. 일단 튜플의 값을 알고 나면 그 값을 갖는 튜플을 찾는 방법을 분명히 알 수 있기 때문입니다. 처음에는 어리석은 것처럼 보이지만 튜플의 수퍼 키가 될 수있는 튜플 자체에 대한 상한을 설정합니다.
Dave

@Dave 관계 / 테이블의 모든 열 이름 세트 (따라서 각 튜플 / 행)는 수 퍼키입니다. "튜플 (행) 자체"가 아닙니다.
philipxy

@ philipxy 당신 말이 맞고 내가 틀렸다-나는 정정했다. 설명을 추가해 주셔서 감사합니다.
Dave

답변:


23

슈퍼 키는 단순히 비 최소한의 후보 키 엄격하게 행의 고유성을 보장하기 위해 요구되지 않은 추가 열이 한 말을하는 것입니다.

기본 키는 최소 인 후보 키 의 모든 구성 열이 엄격 고유성을 보장하기 위해 필요한 말을하는 것입니다.

30 년의 경험을 가진 데이터베이스 개발자 / 디자이너로서, 이 질문을보고 찾아보기 전까지는 슈퍼 키라 는 용어를 들어 본 적이 없습니다 . 수퍼 키의 개념은 성능 및 물리 스키마 디자인 주제와 더 밀접한 것으로 보이며 , 향상된 쿼리 범위를위한 추가 열 이있는 고유 한 비 클러스터형 인덱스 개념에 직접 매핑되기 때문입니다 .


3
이것은 매우 부정확합니다. 적절한 수 퍼키, 수 퍼키 및 CK 대신 수 퍼키, CK & PK를 사용하고 있습니다. 수 퍼키는 고유 한 세트입니다. (CK는 "최소"수 퍼키입니다. "최소 CK"개념은 없습니다. 모든 CK는 수 퍼키입니다. 따라서 수 퍼키는 CK보다 많은 열을 가질 필요가 없습니다. PK는 PK를 호출하는 CK입니다. "최소 CK"여야한다면 "최소"는 "임의"를 의미해야합니다.) SQL PK & UNIQUE NOT NULL 슈퍼 키를 선언합니다. (SQL PK는 PK 일 수도 있고 아닐 수도 있습니다.) 슈퍼 키는 CK 정의에 중요하며, 정규화를 포함하여 디자인에 중요합니다. 내 대답을 참조하십시오.
philipxy


16

수퍼 키 : 수퍼 키는 키의 수퍼 세트를 나타냅니다. 수퍼 키는 집합 적으로 취해지며 다른 모든 속성을 고유하게 식별 할 수있는 하나 이상의 속성 집합입니다.

예를 들어, 우리는 테이블을 가지고 있습니다

Book (BookId, BookName, Author)

이 표에서 우리는

   (BookId)
   (BookId,BookName)
   (BookId, BookName, Author)
   (BookId, Author)
   (BookName, Author)

우리의 슈퍼 키로. 각 수퍼 키는 각 튜플 (레코드)을 고유하게 식별 할 수 있습니다.

후보 키 후보 키는 중복 속성이없는 수퍼 키입니다. 다시 말해 후보 키는 최소 수퍼 키입니다. 예를 들어 위 그림에서

   (BookId)
   (BookName,Author)

나머지 키에는 중복 속성이 있으므로이 두 키는 후보 키가 될 수 있습니다. 수퍼 키 (BookId, BookName) 레코드의 수단은 bookid만으로 고유하게 식별 할 수 있으므로 Bookname은 중복 속성입니다.

기본 키 : 엔터티 집합에서 엔터티를 식별하기 위해 데이터베이스 디자이너가 선택하는 후보 키입니다. 또는 각 레코드를 고유하게 식별하는 데 사용되는 키를 기본 키라고합니다.

위의 후보 키에서 기본 키가 될 수 있습니다. 기본 키로 선택되지 않은 다른 키는 대체 키라고합니다.


이것은 질문에 대답하고 공감할 가치가 있습니다.
srk

또한 또 다른 이름이 있습니다 alternative key이다 secondary key그들은 동일합니다. 좋은 답변입니다!
Wael Alshabani

2

에서 내이 stackoverflow.com 답변 :

후보 키는 행을 고유하게 식별하고 행을 고유하게 식별하는 더 작은 ( "적절한") 서브 세트를 포함하지 않는 열 세트입니다.

수 퍼키는 행을 고유하게 식별하는 열 집합입니다. 따라서 후보 키는 더 작은 수 퍼키를 포함하지 않는 수 퍼키입니다.

SQL에서는 빈 후보 키를 선언 할 수 없습니다. 또한 UNIQUE NOT NULL 및 PRIMARY KEY (제약 조건에서 UNIQUE NOT NULL을 의미 함)는 키 자체가 아닌 수 퍼키를 선언합니다. 이러한 선언의 열 집합에 슈퍼 키로 선언 된 더 작은 열 집합이 포함되어 있지 않으면 선언하는 슈퍼 키가 후보 키입니다.

에서 내이 stackoverflow.com 응답 주어진 테이블을 다시 :

X 및 Y 열 세트의 경우 X-> Y를 쓸 수 있습니다 . 우리는 X가있다라고 결정하는 세트 와 Y는이다 결정된 세트 에 /의 함수 종속성 ( FD ) X -> Y.

X 는 기능적으로 Y를 결정 하고 Y 는 기능적으로 X에 의해 결정 된다고합니다. X는 X-> Y 의 결정 요인 이라고합니다 . {C}-> Y에서 C는 기능적으로 Y를 결정합니다 . X-> {C}에서는 X라고 말합니다 기능적으로 C를 결정합니다 . X가 Y의 수퍼 셋일 때 우리는 X-> Y가 사소 하다고 말합니다 .

X에 대한 각 값의 하위 행이 항상 Y에 대해 동일한 하위 값과 함께 나타날 때 X-> Y 테이블 T에 유지됩니다 . 또는 X-> Y는 F의 FD /에 있습니다 . X가 결정 인 경우 표 T의 일부 FD 중 X T 의 결정 요인 이라고 말합니다 .

테이블 T 의 수 퍼키 는 모든 속성을 기능적으로 결정하는 열 집합입니다. 후보 키 ( CK는 ) 더 작은 퍼키를 포함하는 퍼키이다. 하나의 CK를 기본 키 ( PK )로 선택한 다음 다른 CK의 대체 키 를 호출 할 수 있습니다. 열이 일부 CK에있을 때 가장 중요 합니다.

(내가 언급 한대로 "FD, hold, superkey 및 CK에 대한 4 개의 굵은 체 문장으로 충분했습니다."

빈 CK가있는 테이블은 최대 하나의 행을 포함하도록 제한됩니다. 빈 세트에 의해 결정된 열 세트는 모든 행에서 동일한 하위 행 값을 갖도록 제한됩니다.


1

키는 단일 또는 여러 필드의 조합입니다. 그 목적은 요구 사항에 따라 테이블에서 데이터 행에 액세스하거나 검색하는 것입니다. 키는 저장된 데이터를 빠르고 매끄럽게 액세스하거나 시퀀싱하기 위해 테이블에 정의되어 있습니다. 또한 서로 다른 테이블간에 링크를 만드는 데 사용됩니다.

키 유형 다음 표 또는 관계는 다른 유형의 키를 정의하는 데 사용됩니다.

기본 키 관계에서 행 또는 레코드를 고유하게 식별하는 속성 또는 속성 조합을 기본 키라고합니다.

보조 키 검색의 기초가되는 필드 또는 필드 조합을 보조 키라고합니다. 보조 키는 고유하지 않은 필드입니다. 하나의 보조 키 값은 많은 레코드를 나타낼 수 있습니다.

후보 키 또는 대체 키 관계에는 기본 키가 하나만있을 수 있습니다. 기본 키로 사용할 수있는 많은 필드 또는 필드 조합이 포함될 수 있습니다. 하나의 필드 또는 필드 조합이 기본 키로 사용됩니다. 기본 키로 사용되지 않는 필드 또는 필드 조합을 후보 키 또는 대체 키라고합니다.

복합 키 또는 연결 키 둘 이상의 속성으로 구성된 기본 키를 복합 키라고합니다.

정렬 또는 제어 키 정렬 키라는 저장된 데이터를 물리적으로 시퀀싱하는 데 사용되는 필드 또는 필드 조합입니다. 컨트롤 키라고도합니다.

퍼키 는 데이터베이스 레코드를 식별하는 데 고유하게 사용할 수있는 속성의 조합입니다. 테이블에는 많은 수 퍼키가있을 수 있습니다. 후보 키는 관련 정보가없는 수 퍼키의 특수 하위 집합입니다.

수퍼 키의 예 : 이름, 연령, SSN 및 <전화 내선 번호> 필드가있는 테이블을 상상해보십시오. 이 테이블에는 가능한 많은 수 퍼키가 있습니다. 이 중 세 가지는 SSN, 전화 내선 번호 및 이름입니다. 나열된 것 중에서 SSN 만 후보 키입니다. 다른 것에는 레코드를 고유하게 식별하는 데 필요하지 않은 정보가 포함되어 있기 때문입니다.

외래 키 외래 키는 값이 다른 관계의 기본 키와 일치하는 관계의 특성 또는 특성 조합입니다. 외래 키가 생성되는 테이블을 종속 테이블이라고합니다. 외래 키가 참조하는 테이블을 부모 테이블이라고합니다.

에 대한 최소한의 슈퍼 키가 이 링크를 참조 것이 더 명확이 http://www.answers.com/topic/superkey-1

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.