키는 식별자를 데이터베이스 구현 관점에서 표현한 개념논리 데이터 모델 단계에서 키는 물리 데이터 모델 단계에서 사용| 키 종류 | 설명 | 주요 특징 |
|---|---|---|
| 슈퍼키 (Super Key) | 테이블의 행(튜플)을 유일하게 식별할 수 있는 속성들의 집합 | • 유일성 만족 • 최소성은 만족하지 않을 수도 있음 |
| 후보키 (Candidate Key) | 튜플을 유일하게 식별하기 위해 사용되는 속성들의 최소 집합 | • 유일성 만족 • 최소성 만족 |
| 기본키 (Primary Key) | 후보키 중에서 테이블을 대표하도록 명시적으로 선택된 키 | • 유일성 및 최소성 만족 • 중복값 불가, NULL값 불가 |
| 대체키 (Alternate Key) | 후보키 중에서 기본키로 선택되지 않은 나머지 키들 | • 기본키를 제외한 남은 후보키들 |
| 외래키 (Foreign Key) | 다른 테이블의 기본키를 참조하여 테이블 간의 관계를 맺는 키 | • 참조 무결성 유지 목적 • 중복값 및 NULL값 허용 가능 |
| 구분 | 주식별자 (Primary Identifier) | 보조식별자 (Secondary Identifier) |
|---|---|---|
| 개념 | 엔터티 내에서 각 인스턴스를 유일하게 식별하며, 해당 엔터티를 대표하는 주된 식별자 | 엔터티의 인스턴스를 유일하게 식별할 수 있지만, 주식별자로 채택되지 않은 식별자 |
| 관계 매핑 | 관계형 데이터베이스의 기본키(Primary Key)에 해당하며, 타 엔터티와 관계를 맺을 때 주로 사용됨 | 관계형 데이터베이스의 대체키(Alternate Key)에 해당하며, 주된 관계 연결보다는 보조적인 식별용으로 사용됨 |
| 특징 및 요건 | • 유일성: 인스턴스를 유일하게 식별 • 최소성: 키를 구성하는 속성의 최소 집합 • 존재성: 반드시 값이 존재해야 함 (NULL 불가) • 대표성: 엔터티를 대표함 | • 유일성: 인스턴스를 유일하게 식별 • 최소성: 키를 구성하는 속성의 최소 집합 • 대표성 없음: 주식별자가 아니므로 엔터티를 대표하지 않음 • 필요에 따라 NULL 허용 여부가 달라질 수 있음 |
| 특징 | 설명 |
|---|---|
| 테이블 기반 구조 | 데이터가 행(Row/튜플)과 열(Column/속성)로 이루어진 2차원 형태의 테이블(릴레이션)로 저장됩니다. |
| 관계표현 | 기본키(Primary Key)와 외래키(Foreign Key)를 활용하여 여러 테이블 간의 논리적 관계를 유연하게 표현합니다. |
| SQL사용 | 표준화된 데이터베이스 질의 언어인 SQL(Structured Query Language)을 사용하여 데이터 조회, 수정, 삭제, 삽입 등을 수행합니다. |
| 데이터 무결성 | 다양한 제약 조건(Unique, Not Null, Check 등)을 통해 데이터의 정확성과 일관성을 유지하고 오류를 방지합니다. |
| 트랜잭션 지원 | ACID(원자성, 일관성, 고립성, 지속성) 특성을 보장하여 데이터 처리의 안정성과 신뢰성을 제공합니다. |
| 독립성 보장 | 논리적 독립성과 물리적 독립성을 제공하여 데이터베이스의 구조가 바뀌어도 응용 프로그램이나 물리적 저장 장치에 영향을 주지 않습니다. |
| 용어 | 의미 | 동의어/관련 용어 |
|---|---|---|
| 릴레이션 (Relation) | 행(Row)과 열(Column)로 이루어진 2차원 테이블 구조 | 테이블 (Table) |
| 튜플 (Tuple) | 릴레이션의 행을 의미하며, 개체에 대한 데이터(레코드)의 모임 | 행 (Row), 레코드 (Record) |
| 속성 (Attribute) | 릴레이션의 열을 의미하며, 데이터의 가장 작은 논리적 단위 | 열 (Column), 필드 (Field) |
| 도메인 (Domain) | 하나의 속성이 가질 수 있는 원자값들의 허용 범위 집합 | 값의 범위, 데이터 타입 |
| 차수 (Degree) | 릴레이션을 구성하는 속성(Attribute)들의 개수 | 열의 개수 |
| 카디널리티 (Cardinality) | 릴레이션에 포함되어 있는 튜플(Tuple)들의 개수 | 기수, 행의 개수 |
| 옵션 | 설명 | 예시 |
|---|---|---|
| CASCADE | 부모 테이블의 데이터가 삭제되거나 수정될 때, 자식 테이블의 관련 데이터도 함께 삭제되거나 수정됩니다. | 부서(부모)가 삭제될 때, 해당 부서에 소속된 사원(자식) 데이터도 함께 삭제됨 |
| SET NULL | 부모 테이블의 데이터가 삭제되거나 수정될 때, 자식 테이블의 외래키 컬럼 값을 NULL로 변경합니다. | 부서(부모)가 삭제될 때, 해당 사원들의 부서 번호 외래키 값이 NULL로 변경됨 |
| SET DEFAULT | 부모 테이블의 데이터가 삭제되거나 수정될 때, 자식 테이블의 외래키 컬럼 값을 미리 지정한 기본값(Default)으로 변경합니다. | 부서(부모)가 삭제될 때, 해당 사원들의 부서 번호가 지정된 기본 부서 번호로 변경됨 |
| RESTRICT | 자식 테이블에서 해당 데이터를 참조하고 있는 경우, 부모 테이블의 데이터 삭제나 수정을 즉시 거부합니다. | 사원이 한 명이라도 소속된 부서(부모)는 삭제할 수 없음 |
| NO ACTION | RESTRICT와 유사하게 참조 중인 경우 삭제/수정을 거부하지만, 제약 조건 검사가 트랜잭션 종료 시점에 이루어집니다. | 참조하는 자식이 있는 상태에서 부모를 삭제하려고 하면 에러 발생 |