일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 네트워크
- 자바
- mysql
- SQL쿡북
- DDD
- 인프런백기선
- 혼공SQL
- react
- 이펙티브자바
- 이팩티브 자바
- 스프링부트와AWS로혼자구현하는웹서비스
- 이펙티브 자바
- 도메인 주도 개발 시작하기
- 클린코드
- 자료구조
- AWS RDS
- 알고리즘
- 인프런김영한
- AWS
- 기술면접
- 알고리즘분석
- MariaDB
- aop
- java
- 자바예외
- 인덱스
- CleanCode
- jpa
- 자바스터디
- vue.js
- Today
- Total
기록이 힘이다.
[모델링 노트] 04. 속성이야기 본문
식별자 속성과 비식별자 속성
사원 엔터티에서 사원번호 속성은 주 식별자다. 그리고 사원주민등록번호 속성은 대리 식별자며 소속부서번호 속성은 외래 식별자다. 따라서 사원번호.사원주민등록번호 속성은 식별자 속성이고 사원명.입사일자.소속부서번호.퇴사일자.휴대전화번호 속성은 비식별자 속성이다.
후보 식별자
주 식별자가 될 가능성이 있는 식별자를 의미한다. 모든 식별자는 주 식별자가 될 수 있는 후보이므로, 식별자와 후보 식별자는 사실상 동일어다. 후보 식별자가 업무 식별자보다 더 넓은 개념이다.
주 식별자
주 식별자는 엔터티에 하나만 존재하는 대표 식별자다. 흔히 주 식별자와 주 키라는 용어는 동일하게 사용한다.
PK는 테이블에 지정된 물리적인 제약을 의미한다. 이에 반해 주 식별자는 논리적으로 인스턴스를 식별하는 기준을 의미한다. 논리적인 주 식별자에 다른 속성을 추가해서 물리적인PK를 생성할 수도 있다. 따라서 두 용어가 완전히 일치한다고 볼 수 없다. 이 책에서는동일하게 사용.
주 식별자의 역할은 두 가지 관점으로 생각할 수 있다. 하나는 자신의 엔터티를 바라보는 관점이고 다른 하나는 다른 엔터티에서 바라보는 관점이다. PK 역할과 FK 역할이다.
주 식별자를 선정하는 방법은 두 가지가 있다. 하나 또는 여러 개의 후보 식별자 중에서 대표를 지정하는 방법이 있으며, 적당한 후보 식별자가 없다면 인조 식별자를 만들어 주 식별자로 사용하는 방법이 있다.
주 식별자는 엔터티의 성격(정체성)을 대변할 수 있는 기초 속성이므로 가장 중요한 요소 중 하나다.
시간이 부족할 때 엔터티명과 주 식별자만 바로잡아도 모델이 깔끔해질 때가 있다.
주 식별자가 바뀌는 현상
프로젝트가 연기되고 유지.보수가 힘들어지는 이유 중의 하나가 주 식별자의 변경이다.
- 엔터티 정의가 불명확할 때
- 데이터 분석이 미흡할 때
- 이력 데이터를 고려하지 않았을 때
- 업무가 변경될 때
어떤 속성을 주 식별자로 선택해야 하는가?
업무 식별자가 주 식별자가 될 수도 있고, 후보 식별자가 주 식별자가 될 수도 있다. 업무.후보 식별자가 주 식별자로 부적절하면 인조 식별자가 주 식별자가 된다.
- 주 식별자 속성의 값이 변경되지 않도록 선정
-실무에서 통합 고객을 관리하기 위한 요건에 의해서 고객번호도 간혹 변경이 발생한다.
- 일반 속성에 종속되지 않도록 선정
- 인조 식별자에는 의미를 부여하지 않도록 선정
- 아무 의미 없이 식별 기능만 하는 순번을 주로 사용한다. 업무적인 의미가 존재하면 속성으로 관리
- 주 식별자 속성에 논리적으로 널 값이 존재하지 않도록 선정
- 최소한의 속성이 포함되도록 선정
- 업무적으로 활용도가 높은 속성으로 선정
- 많은 화면에서 자주 조회되면 주 식별자로 조회하는 것이 가장 효율적이다.
- 업무 식별자와 인조 식별자가 혼합되지 않도록 선정
- 슈퍼 식별자가 되지 않도록 선정
인덱스와 주 식별자에 대한 인식이 부족하기 때문이다. 같은 개념이 아니다. 인덱스를 설계하는 것은 단순하지 ㅇ낳으며, 최적화되지 않은 인덱스는 더 심각하고 복잡한 성능 문제를 일으킨다.
- 최소길이가 되도록 선정
Varchar 타입보다는 Number 타입이 저장 공간이 절약된다. 몇 가지 제약은 있지만, Number 타입은 Varchar 타입보다 주 식별자에 적용하면 효율적이다.
- 주 식별자 속성 값은 가능한 고정 길이가 되도록 선정
- 주 식별자 속성은 전사에서 한 번만 사용되도록 선정
- 암호화 대상 속성이 포함되지 않도록 선정
- 업무를 대표할 수 있는 속성으로 선정
'IT서적' 카테고리의 다른 글
[모델링 노트] 06. 이력데이터 (0) | 2023.12.26 |
---|---|
[모델링 노트] 02. 정규화 이야기 (1) | 2023.12.20 |
[관계형 데이터 모델링 노트] 01. 엔터티 이야기 (1) | 2023.12.18 |
[HTTP 완벽가이드] 5. 웹 서버 (0) | 2023.12.15 |
[HTTP 완벽가이드] 3. HTTP 메시지 (0) | 2023.12.14 |