Primary Key란?
테이블의 각 레코드를 고유하게 식별하는 데 사용되는 하나 또는 여러 필드의 조합입니다.
Unique Index란?
테이블 내에서 특정 필드의 모든 값이 고유하도록 보장하는 인덱스입니다.
Primary Key와 UNIQUE INDEX의 비교
항목 | PRIMARY KEY | UNIQUE INDEX |
목적 | Constraint + Index | Index |
공통점 | 유일성 보장 | 유일성 보장 |
참조 무결성 | PK/FK에 의해 지정 가능 | 지정 불가능 |
테이블당 개수 | 1개만 가능 | 여러 개 가능 |
인덱스 생성 | Unique Index 생성 | Unique Index 생성 |
역공학 적용 시 | PK인식 가능 | PK인식 불가능 |
Null 가능 | 불가능 | 가능 |
UNIQUE INDEX의 장단점
장점 | 단점 |
- PK/FK가 존재하지 않아 DBA가 데이터베이스를 관리하기 쉽습니다. |
- 데이터의 무결성이 깨어질 수 있습니다. - 데이터의 무결성이 깨지므로 데이터전환작업 시 데이터 정리 작업이 필요합니다. |
- 개발 시점에 데이터 제약이 없으므로 개발이 용이합니다. | - 데이터 모델과 테이블의 관계가 일치하지 않습니다. |
- PK/FK를 이용하지 않기 때문에 성능이 좋아질 수도 있습니다. | - UNIQUE INDEX는 한 테이블에 여러 개 만들 수 있으므로 테이블만을 보고는 PK가 무엇인지 구분할 수 없습니다. |
PRIMARY KEY 사용 시의 장점
- 전체 데이터베이스에 대한 PK/FK 관계를 설정할 수 있어 참조 무결성 제약 조건 지정이 가능합니다.
- 참조 무결성을 깨드리는 무결성 오류를 방지할 수 있습니다.
- 유일성을 보장할 수 있습니다.
- PK 속성에 대해서 NULL을 허용하지 않습니다.
- 테이블에 한 개의 PK만 허용이 되므로 향후 데이터베이스에서 역공학을 적용하여 데이터 모델을 생성해도 명확하게 PK가 무엇인지 구분이 가능합니다.
- FK를 설정하지 않는다면 UI만을 사용하는 것에 비해 성능 저하가 나타나지 않습니다.
- FK를 사용해도 FK 인덱스만 적절하게 설정한다면 과도한 성능 저하 현상은 유발되지 않습니다.
※ 역공학: 장치 또는 시스템의 기술적인 원리를 구조분석을 통해 발견하는 과정
PK를 선택해야 합니다.
UI는 개발과 유지보수에 있어서 약간의 편리함을 제공한다는 것을 제외하면 PK보다 나은 장점이 없습니다.
데이터 모델링과 데이터베이스를 구축할 때는 데이터 무결성, 데이터베이스 성능, 데이터베이스 관리의 용이성,
개발자 편의성이라는 네 가지 기준에 의해 판단해야 합니다.
1순위: 데이터 무결성
2순위: 데이터베이스 성능
3순위: 데이터베이스 관리의 용이성
4순위: 개발자 편의성
PK를 사용하지 않으면 1순위의 데이터 무결성을 데이터베이스에 맡기지 않고 전적으로 애플리케이션에서 주관한다는 의미입니다. 따라서 데이터베이스에 쓸모없는 데이터가 생성되거나 필요한 데이터가 변경되거나 삭제되는 경우가 발생합니다. 겨우 3순위, 4순위에 해당하는 데이터베이스 관리의 용이성과 개발자 편의성을 우선적으로 고려하여 의사결정을 하는 것은 정말 위험한 일입니다.
그러므로 데이터베이스에 생성하는 테이블에는 데이터베이스 자체에서 데이터 무결성 기능을 제공하는 PRIMARY KEY를 사용하는 것이 가장 좋은 방법입니다.
참고 도서
- 아는 만큼 보이는 데이터베이스 설계와 구축
'[개발] 데이터베이스 > 이론' 카테고리의 다른 글
[RDB] 엔티티타입 도출하는 방법 (0) | 2023.11.24 |
---|---|
[RDB] 자기참조관계 모델링 기법 (1) | 2023.11.22 |
[RDB] 엔티티타입의 통합과 분리 (0) | 2023.11.16 |
[RDB] 이력 유형 데이터 모델 (1) | 2023.11.15 |
[RDB] 식별자관계와 비식별자관계 (1) | 2023.11.14 |