- 자연(Natural) 키는 데이터베이스에서 고유성을 보장하기 위해 사용되는 키임
- 자연 키는 이름, 도시, 연도 등과 같은 실제 데이터를 기반으로 함
- 예를 들어, 세계 최고의 50개 레스토랑 데이터베이스에서
restaurantName,cityName,year를 자연 키로 사용할 수 있음 - 그러나 자연 키는 고유성을 보장하지 못할 수 있음. 예를 들어, 같은 이름의 레스토랑이 여러 도시에 있을 수 있음
정체성
- 자연 키는 고유성을 보장하는 것 외에도 정체성을 보장해야 함
- 예를 들어, 자동차의 차대 번호나 개인 식별 번호(CPR 번호)를 자연 키로 사용할 수 있음
- 그러나 동일한 사람이 여러 개의 식별 번호를 가질 수 있음. 예를 들어, 덴마크에서는 성전환자가 새로운 CPR 번호를 받을 수 있음
서류 오류
- 자연 키는 서류 오류에 취약함
- 데이터 입력 오류, 사용자 오타, 데이터 변환 오류 등이 발생할 수 있음
- 시스템은 이러한 오류를 수정할 수 있어야 함. 따라서 외부 키를 데이터베이스 키로 사용하는 것은 적절하지 않음
결론
- 자연 키를 데이터베이스 설계에서 사용하는 것은 좋은 아이디어가 아님
- 데이터 오류가 발생할 수 있으며, 이러한 오류를 수정할 수 있어야 함
- 따라서 데이터베이스 테이블에는 항상 인공 키를 사용하는 것이 좋음
GN⁺의 의견
- 자연 키의 문제점: 자연 키는 고유성과 정체성을 보장하지 못할 수 있으며, 데이터 입력 오류에 취약함.
- 인공 키의 장점: 인공 키는 고유성과 정체성을 보장하며, 데이터 오류를 쉽게 수정할 수 있음.
- ORM 사용 시 고려사항: ORM 라이브러리를 사용할 때는 인공 키를 사용하는 것이 더 쉬움. ORM은 데이터베이스 구조를 일정 부분 결정하기 때문에, 인공 키를 사용하는 것이 더 효율적임.
- 비슷한 기능의 제품: 다른 데이터베이스 설계 도구나 ORM 라이브러리도 인공 키 사용을 권장함. 예를 들어, Hibernate, Entity Framework 등이 있음.
- 기술 도입 시 고려사항: 새로운 데이터베이스 설계를 도입할 때는 자연 키의 단점을 고려하고, 인공 키를 사용하는 것이 좋음. 인공 키는 데이터 무결성을 보장하고, 오류를 쉽게 수정할 수 있음.