- 키는 관계형 데이터베이스에서 중요한 역할을 합니다.
- 이는 테이블의 모든 레코드나 데이터 행을 고유하게 식별하는 데 사용됩니다. 또한 테이블 간의 관계를 설정하고 식별하는 데에도 사용됩니다.
예를 들어, ID는 학생마다 고유하므로 Student 테이블에서 키로 사용됩니다. PERSON 테이블에서는 Passport_number, License_number, SSN이 개인마다 고유하므로 키입니다.
키 유형:
1. 기본 키
- 이는 엔터티의 단 하나의 인스턴스를 고유하게 식별하는 데 사용되는 첫 번째 키입니다. PERSON 테이블에서 본 것처럼 엔터티에는 여러 키가 포함될 수 있습니다. 이들 목록 중 가장 적합한 키가 기본 키가 됩니다.
- EMPLOYEE 테이블에서 ID는 각 직원마다 고유하므로 기본 키가 될 수 있습니다. EMPLOYEE 테이블에서는 License_Number 및 Passport_Number도 고유하므로 기본 키로 선택할 수도 있습니다.
- 각 엔터티에 대해 기본 키 선택은 요구 사항 및 개발자를 기반으로 합니다.
2. 후보키
- 후보 키는 튜플을 고유하게 식별할 수 있는 속성 또는 속성 집합입니다.
- 기본 키를 제외한 나머지 속성은 후보 키로 간주됩니다. 후보 키는 기본 키만큼 강력합니다.
예를 들어: EMPLOYEE 테이블에서 id는 기본 키에 가장 적합합니다. SSN, Passport_Number, License_Number 등과 같은 나머지 속성은 후보 키로 간주됩니다.
3. 슈퍼 키
슈퍼 키는 튜플을 고유하게 식별할 수 있는 속성 집합입니다. 슈퍼 키는 후보 키의 상위 집합입니다.
예를 들어: 위의 EMPLOYEE 테이블에서 (EMPLOEE_ID, EMPLOYEE_NAME)에 대해 두 직원의 이름은 동일할 수 있지만 EMPLYEE_ID는 동일할 수 없습니다. 따라서 이 조합도 핵심이 될 수 있습니다.
슈퍼 키는 EMPLOYEE-ID(EMPLOYEE_ID, EMPLOYEE-NAME) 등입니다.
4. 외래 키
- 외래 키는 다른 테이블의 기본 키를 가리키는 데 사용되는 테이블의 열입니다.
- 모든 직원은 회사의 특정 부서에서 근무하며 직원과 부서는 서로 다른 개체입니다. 따라서 직원 테이블에 부서 정보를 저장할 수 없습니다. 이것이 바로 우리가 한 테이블의 기본 키를 통해 이 두 테이블을 연결하는 이유입니다.
- DEPARTMENT 테이블의 기본 키인 Department_Id를 EMPLOYEE 테이블의 새 속성으로 추가합니다.
- EMPLOYEE 테이블에서 Department_Id는 외래 키이고 두 테이블은 모두 관련되어 있습니다.
5. 대체 키
관계의 각 튜플을 고유하게 식별하는 하나 이상의 속성 또는 속성 조합이 있을 수 있습니다. 이러한 속성 또는 속성의 조합을 후보 키라고 합니다. 이들 후보 키 중에서 하나의 키가 기본 키로 선택되고, 나머지 후보 키가 존재할 경우 대체 키라고 합니다. 다시 말해서, 대체 키의 총 개수는 후보 키의 총 개수에서 기본 키를 뺀 값입니다. 대체 키가 존재할 수도 있고 존재하지 않을 수도 있습니다. 관계에 후보 키가 하나만 있으면 대체 키가 없습니다.
예를 들어, 직원 관계에는 후보 키 역할을 하는 Employee_Id 및 PAN_No라는 두 가지 속성이 있습니다. 이 관계에서는 Employee_Id가 기본 키로 선택되므로 다른 후보 키인 PAN_No가 대체 키 역할을 합니다.
CSS를 중앙으로 보내는 버튼
6. 복합 키
기본 키가 둘 이상의 속성으로 구성될 때마다 이를 복합 키라고 합니다. 이 키는 연결된 키라고도 합니다.
예를 들어, 직원 관계에서는 직원에게 여러 역할이 할당될 수 있고 직원이 여러 프로젝트에서 동시에 작업할 수 있다고 가정합니다. 따라서 기본 키는 Emp_ID, Emp_role 및 Proj_ID의 세 가지 속성이 모두 조합되어 구성됩니다. 따라서 기본 키는 둘 이상의 속성으로 구성되므로 이러한 속성은 복합 키 역할을 합니다.
7. 인공키
임의로 할당된 데이터를 사용하여 생성된 키를 인공키라고 합니다. 이러한 키는 기본 키가 크고 복잡하며 다른 많은 관계와 관계가 없을 때 생성됩니다. 인공 키의 데이터 값은 일반적으로 일련의 순서로 번호가 지정됩니다.
예를 들어, Emp_ID, Emp_role, Proj_ID로 구성되는 기본 키는 직원 관계가 큽니다. 따라서 관계의 각 튜플을 고유하게 식별하려면 새로운 가상 속성을 추가하는 것이 좋습니다.