복합 키

Composite key

데이터베이스 설계에서 복합 키는 엔티티 오카렌스(테이블 행)를 일의로 식별하는 두 개 이상의 속성(테이블 열)으로 구성된 후보 키입니다.복합 키는 키를 구성하는 각 속성이 그 자체로 외부 키인 복합 키입니다.

이점

복합 키는 여러 개의 자연 키 속성으로 구성되는 경우가 많기 때문에 자연 키와 유사한 장점이 있습니다.

보관소

복합 키는 서로게이트 키 열을 정의하는 것에 비해 디스크 공간을 적게 사용합니다. 이는 복합 키가 이미 테이블에 속성으로 존재하기 때문에 고유 식별 목적으로만 테이블에 정의할 필요가 없기 때문입니다.이렇게 하면 테이블이 단순해지고 공간도 절약됩니다.

구현과 사용이 용이함

컴포지트 키는 컴포넌트 부분이 이미 데이터베이스의 이름 있는 항목이기 때문에 데이터베이스 스키마에서 구현하기 쉽습니다.자연키이기도 하지만 실제 시나리오에서는 직관적인 경우가 많습니다.비복합 키가 레코드를 항상 고유하게 식별하지 못할 때 자주 사용됩니다.예를 들어, 개인 이름이 항상 고유한 것은 아니지만, 대부분의 경우 특정 데이터베이스에서 고유할 수 있으며, 고유성을 높이기 위해 생년월일 등의 다른 필드를 추가할 수 있습니다.

단점들

요건의 변경

비즈니스 요건과 규칙이 변경되어 특정 실제 엔티티의 형식이 변경될 수 있습니다.복합 키는 실제와 관련된 여러 개의 자연 키로 구성되며, 실제 세계에서 형식이 변경됨에 따라 데이터베이스의 형식도 변경됩니다.복합 키의 속성 수가 변경되고 모든 외부 키를 업데이트해야 하므로 불편합니다.

복잡성과 스토리지

복합 키는 여러 개의 속성으로 구성되며 복합 키는 여러 테이블에서 외부 키로 참조됩니다. 이 경우 하나의 열이 아닌 여러 개의 열이 외부 키로 저장되기 때문에 디스크 공간이 많이 사용됩니다.이로 인해 스키마가 복잡해지고 쿼리는 CPU 비용이 높아집니다.DBMS는 1개의 자연키일 경우 1개의 속성이 아닌 3개의 속성을 비교해야 합니다.

예를 들어, 각 학생이 대학에서 다니고 있는 모듈을 나타내는 엔티티가 있습니다.엔티티에는 학생이 있습니다.IDmoduleCode를 프라이머리 키로서 사용합니다.프라이머리 키를 구성하는 각 Atribute는 단순한 키입니다.이것은, 1개의 인스턴스와 다른 인스턴스의 모듈을 식별할 때, 각각이 일의의 참조를 나타내므로, 이 키는 복합 키이기 때문입니다.

이와는 대조적으로 같은 예를 사용하여 학생을 이름 + 으로 식별했다고 가정합니다.학생들을 나타내는 표에서 기본 키는 firstName + lastName이 됩니다.학생들은 같은 firstNames 또는 같은 lastNames를 가질 수 있기 때문에 이러한 속성은 단순한 키가 아닙니다.학생의 기본 키 firstName + lastName은 복합 키입니다.

「 」를 참조해 주세요.

외부 링크