5-1. 속성이란?
속성(Attribute) 은 엔티티가 가지는 특성/성질을 의미한다. 물리적으로는 테이블의 컬럼에 해당한다.
예를 들어 회원 엔티티를 생각해 보면 다음과 같은 속성이 있을 수 있다.
| 엔티티 |
속성 예시 |
| 회원 |
회원번호, 이름, 이메일, 전화번호, 주소, 가입일자 등 |
속성은 다음과 같은 관점으로 나누어 볼 수 있다.
- 필수 속성 / 선택 속성
- 반드시 값이 있어야 하는지(필수), 없어도 되는지(선택)를 구분한다.
- 단일 속성 / 복합 속성
- 하나의 값으로 충분한 속성(전화번호)과, 여러 값으로 나누어 표현할 수 있는 속성(주소: 시/구/상세)으로 나눌 수 있다.
- 단일값 / 다중값 속성
- 한 엔티티 인스턴스에 하나의 값만 가지는지(성별), 여러 값을 가질 수 있는지(관심 분야 목록) 구분한다.
- 저장 속성 / 유도 속성
- 직접 저장하는 값인지(가격), 다른 속성으로부터 계산 가능한 값인지(할인가, 재고 자산 금액 등)를 구분한다.
5-2. 식별자란?
식별자(Identifier) 는 엔티티 내에서 각 인스턴스를 유일하게 식별할 수 있는 속성(또는 속성의 조합) 을 의미한다. 물리적인 설계에서는 보통 Primary Key(PK) 로 구현된다.
식별자는 보통 다음과 같이 나눈다.
- 후보 키(Candidate Key)
- 엔티티 내에서 유일하게 식별 가능한 속성(또는 속성 조합) 후보들이다.
- 예: 회원번호, 이메일, 주민등록번호 등
- 기본 키(Primary Key)
- 후보 키 중에서 실제 PK로 선택한 식별자이다.
- 규칙: NULL이 아니어야 하고, 중복되면 안 되며, 값이 자주 바뀌지 않는 것이 좋다.
- 대체 키(Alternate Key)
- 기본 키로 선택되지 않은 나머지 후보 키이다.
- 예: 이메일에 유니크 인덱스를 걸어 중복을 막는 경우 등
- 복합 키(Composite Key)
- 두 개 이상의 속성을 조합해 하나의 식별자로 사용하는 경우이다.
- 예: (학생ID, 과목ID)로 수강 내역을 식별
- 대리 키(Surrogate Key)
- 의미 없는 일련번호를 식별자로 사용하는 경우이다.
- 예: AUTO_INCREMENT로 생성하는
id
개념적 모델링 단계에서는 업무적으로 자연스러운 식별자(자연 키) 를 먼저 생각하고, 물리 설계 단계에서 필요에 따라 대리 키를 도입하는 방식으로 접근하는 것이 일반적이다.