-
Primary Key, Unique Index 에 대하여Technique/RDBMS 2015. 12. 23. 23:04반응형
Primary Key를 아무생각없이 넣거나,
단순히 개발의 용이성과, 유지보수의 편의성때문에 Unique Index를 당연시 여기거나 하는가?
항목
Primary key
Unique Index
목적
Constraint + Index
Index
공통점
유일성 보장
유일성 보장
참조 무결성
PK/FK에 의해 지정가능
지정 불가능
테이블당 개수
1개만 가능
여러개 가능
인덱스 생성
Unique Index 생성
Unique Index 생성
역공학 적용 시
PK 인식가능
PK 인식 불가능
Null 허용
허용 안됨
허용됨
PK와 UI가 비슷한 것 같지만 세부적인 애용에 잉서서는 차이가 분명히 있다.
Unique Index만을 이용하였을 때 장단점
장점
단점
- PK/FK가 존재하지 않아 DBA가 데이터베이스를 관리하기 쉽다/
- 데이터의 무결성이 깨어질 수 있다.
- 데이터의 무결성이 깨지므로 데이터전환작업 시 데이터 정리 작업이 필요하다
- 개발 시점에 데이터 제약이 없으므로 개발이 용이하다
- 데이터 모델과 테이블의 관계가 일치하지 않는다.
- PK/FK 를 이용하지 않기 때문에 성능이 좋아질 수도 있다.
- Unique Index 는 한 테이블에 여러 개 만들 수 있으므로 테이블만을 보고는 PK가 무엇인지 구분 할 수 없다.
Primary Key 의 장점
장점
- 전체 데이터베이스에 대한 PK/FK 관계를 설정할 수 있어 참조 무결성 제약 조건 지정이 가능하다.
- 따라서 참조 무결성을 깨트리는 무결성 오류를 방지할 수 있다.
- 유일성을 보장할 수 있다.
- PK 속성에 대해서 NULL을 허용하지 않는다.
- 테이블에 한 개의 PK만 허용이 되므로 향후 데이터베이스에서 역공학을 적용하여 데이터 모델을 생성해도 명확하게 PK가 무엇인지 구분이 가능하다.
- FK를 설정하지 않는다면 UI만을 사용하는 것에 비해 성능 저하가 나타나지 않는다.
- FK를 사용해도 FK 인덱스만 적절하게 설정해 준다면 염려할 만큼 과도한 성능 저하 현상은 유발되지 않는다.
UI가 PK에 비해 장점이 있다고 하면 개발과 유지보수에 있어서 약간의 편리함을 제공한다는 것이다.
데이터 모델링을 할 때 데이터 무결성, 데이터베이스 성능, 데이터베이스 관리의 용이성, 개발자 편의성 이라는 4가지 기준에 의해 판단을 해야한다.
■ 성능저하 소문의 정체란?
서버의 환경이 열악하던 시절 PK/FK를 제공한 DBMS의 문제가 어느정도 존재하던 시절이 있엇다. 심각한 문제는 FK가 설정된 테이블에 인덱스가 제대로 설정되어 있지 않아 내부적으로 Full Scan을 유발하는 경우가 많았다는 것.
위에 말한 것 처럼 무작정 PK만을 고집하진 않는가??
어떠한 장점이 있고, UI에 비해 어떠한점이 더 뛰어 나기에 PK를 당연시 하는지 잘 알고 넘어 가는 마음에 정리해 보았다.
반응형'Technique > RDBMS' 카테고리의 다른 글
[ 메모 ] MySQL SQL_CALC_FOUND_ROWS, FOUNT_ROWS() 키워드 (0) 2016.03.31 [ 메모 ] is null 을 사용한 order by (0) 2016.03.31 엔티티타입, 통합? 분리? (0) 2015.12.23 이력 유형 데이터 모델링 (0) 2015.12.21 식별자관계와 비식별자관계 설정 (0) 2015.12.21