2013-03-28 2 views
0

나는 RDBMS에서 이러한 용어에 대해 꽤 혼란 스럽다 : 키와 색인 : 그것들은 같은 개념인가? 예를 들면 다음과 같습니다.RDBMS의 키, 인덱스, 기본 키 및 클러스터 된 키의 관계는 무엇입니까?

CREATE TABLE FOO_TABLE (
    THE_KEY INTEGER PRIMARY KEY 
    FOO INTEGER NOT NULL, 
    BAR INTEGER NOT NULL, 
    QUZ INTEGER UNIQUE, 
    CONSTRAINT UNQ_FOO UNIQUE (FOO, BAR) 
); 

키는이 테이블에 있습니까? 색인이라고 할 수있는 것은 무엇입니까? 이 테이블에 '기본이 아닌 키'가 있습니까? 그리고 검색의 효율성을 어떻게 향상시킬 수 있습니까? 감사합니다. .

+2

"* 또는 SQL *"을 사용하면 'Microsoft SQL Server'를 의미합니까? SQL은 단지 쿼리 * 언어 * 일뿐입니다. Btw. 모든 DBMS가 "클러스터 된 색인"개념을 가지고있는 것은 아닙니다. –

+0

부정확 한 표현으로 인해 유감입니다. 내 말은, RDBMS에서 SQL을 쿼리 언어로 사용한다는 것입니다. 나는 내 질문을 편집 할 것이다. –

+0

@a_horse_with_no_name : re '모든 DBMS가 "클러스터 된 색인"이라는 개념을 가지고있는 것은 아닙니다.' 뭐라고! 클러스터 된 인덱스는 디스크에 테이블을 저장하고 관련 검색 메커니즘을 사용하는 것입니다. 해당 조회 메커니즘이 RecordNumber 형식의 내포 된 필드인지 또는 시스템 카탈로그에 정의 된 명시 적 필드인지는 확실하지 않습니다. 테이블의 클러스터 된 인덱스로 유지됩니다. –

답변

0

키는 레코드를 고유하게 식별하는 데 사용됩니다. 기본 키는 주어진 테이블에서 레코드를 식별하는 주요 방법이며 DB의 각 테이블에 있어야합니다. 고유 키는 추가 키입니다.

쿼리 속도를 높이기 위해 인덱스가 사용됩니다. 일반적으로 검색 기준으로 키를 사용하는 것이 일반적이므로 인덱스는 각 키에 대해 자동으로 생성됩니다.

예제에서 "THE_KEY"라는 1 열 기본 키와 "FOO"및 "BAR"열로 구성된 2 열 고유 키가 있습니다. 각 키에 하나씩 두 개의 인덱스가 있어야합니다.

-1

이전의 대답 here에서 다른 질문으로 복사되었습니다.

  1. 혼란 날짜, 커드, 등에 의해 고안 한 용어가 개념적 모델을 설명하기 때문에 (즉, 엔티티, 관계를 속성, 키) 발생 이후 신체의 특성을 설명하기 위해 공급 업체가 공동으로 선택한를하고있다 해당 모델의 구현 (테이블, 열, 레코드, 인덱스). 문제를 논의 할 때 두 도메인을 구분하고 식별 할 수 있다는 것을 이해하는 것이 중요합니다.
  2. 첫 번째 일반 양식에는 모든 관계에 기본 키가 있습니다 ( 개념 모델). 실제 모델에만 존재하는 인공 키는 자격이 없습니다. 그러나 이른바 이라는 일부 인공 키는 실제 모델에 없지만 실제로는 개념 모델에 있습니다. (예를 들어, 미국의 경우 SSN/SIN이고 캐나다의 경우 캐나다는 개념 모델 에서 고유성을 보장 할 수 없으므로이 점에 유의해야합니다. 아래에서이 내용을 자세히 읽지 만 혼동을 피하기 위해 앞으로 의 기본 키를 참조 할 것입니다. 개념 모델 ( 자연 키). 복수 후보가 후보 자연 키가됩니다.
  3. 현재 RDBMS 구현의 기본 키 제약은 몇 가지 용도로 사용됩니다. 하나는 물리적 레코드에 고유성 제약 조건을 적용하여 (실제) 기본 키 제약 조건의 일부가 아닌 모든 필드의 업데이트를 허용합니다. 자연 키의 필드가 시간이 지남에 따라 변경 될 수있는 경우, 은 그러한 필드가 실제 모델의 기본 키 제한 조건의 일부가 아니어야합니다.
  4. 또 다른 주요 키 제약 조건의 사용은 관련 테이블에서 외래 키 조회를 활성화하는 것입니다.이 끝은 가장 좁은 가능한 기본 키 제약으로 으로 가장 효율적으로 처리됩니다. 이 목적을 위해 자연 키는 인데 최적의 인덱스 크기 및 높이의 경우 일반적으로 너비가 넓어 (인간 답게) 있기 때문에 기본 키 제한 조건을 잘못 선택합니다. 이에서
  5. 나는 추론을 추론 : 개념적 모델에서 자연 키의 실제 모델에 가장 효율적인 번역 보통 고유성 제약 조건이 독특하고 분리 된 인공 기본 키 제약 조건과 결합 입니다. 인공 키 구성 요소가 있어야하는 경우 (예 : , SSN/SIN) 인공 수정 키 전체가 실제 모델에 상주하는 추가 인공 기본 키가 있어야합니다. 이 외부에서 볼 수있는 인공 번호가 변경 및/또는 재 할당되도록 허용해야하기 때문입니다. ( 의 사망자 몇 달 후에 미국 SSN이 재사용된다는 것을 아는 사람이 몇이나 되었습니까?)
+2

First Normal Form은 기본 키의 개념과 아무 관련이 없습니다. http://en.wikipedia.org/wiki/First_normal_form. 터플의 유일성은 관계가 집합이라는 사실에 의해 이론적 인 모델에서 정의된다. 그러므로 모든 요소는 유일하다. (필요할 경우 전체 필드의 조합). 실제로이 고유성은 고유성의 제약이없는 한 중복 레코드를 허용하는 RDBMS에서 필수적이지 않습니다. – koriander

관련 문제