티스토리 뷰
목차
데이터베이스 설계의 첫 단추이자 가장 중요한 핵심 단계는 비즈니스 도메인의 실체인 '엔터티(Entity)'를 정의하고, 이를 유일하게 구분해 줄 '식별자(Identifier)'를 전략적으로 설계하는 것입니다. 식별자는 단순히 데이터를 구분하는 키(Key)를 넘어, 테이블 간의 관계를 형성하고 쿼리의 성능(Join Efficiency)과 데이터 무결성을 결정짓는 결정적인 역할을 수행합니다. 식별자를 어떻게 분류하고 어떤 명명 규칙(Naming Rule)을 적용하느냐에 따라 프로젝트의 유지보수 편의성과 데이터 모델의 가독성이 천양지차로 갈라집니다. 오늘 포스팅에서는 엔터티 식별자의 다양한 분류 체계부터 실무에서 반드시 지켜야 할 표준 명명 규칙까지 1,500자 분량으로 압축하여 완벽하게 정리해 드리겠습니다.
1. 식별자의 대표성 및 스스로 생성 여부에 따른 분류
엔터티 내에서 식별자는 그 대표성에 따라 주식별자(Primary Identifier)와 보조식별자(Alternate Identifier)로 나뉩니다. 주식별자는 엔터티를 대표하며 물리적으로 Primary Key가 되는 핵심 키이며, 보조식별자는 유일성은 가지지만 대표성을 갖지 못한 후보키들을 의미합니다. 또한 스스로 생성되었는지 여부에 따라 내부식별자와 외부 테이블과의 관계를 통해 생성된 외부식별자(Foreign Identifier)로 구분됩니다. 설계자는 엔터티의 본질을 가장 잘 나타내는 속성을 주식별자로 선정하여 데이터 참조의 무결성을 확보해야 합니다.





2. 속성의 수 및 대체 여부에 따른 분류 (단일 vs 복합 / 본질 vs 인조)
식별자를 구성하는 속성의 개수에 따라 하나의 속성으로 구성된 단일식별자와 둘 이상의 속성이 결합된 복합식별자(Composite Identifier)로 구분합니다. 실무에서 가장 중요한 분류는 본질식별자와 인조식별자(Surrogate Identifier)의 구분입니다. 본질식별자는 비즈니스 프로세스에서 자연스럽게 발생하는 속성(예: 주민번호, 사번)이며, 인조식별자는 본질식별자가 너무 복잡하거나 보안상의 이유로 사용할 수 없을 때 시스템적으로 생성한 가상의 키(예: 일련번호, UUID)를 말합니다. 과도한 복합키는 조인 성능을 저하시키므로 인조식별자를 적절히 활용하는 튜닝이 필요합니다.
3. 주식별자의 특징: 유일성, 최소성, 불변성, 존재성
훌륭한 주식별자가 되기 위해서는 4가지 필수 조건을 만족해야 합니다. 첫째, 모든 인스턴스를 유일하게 구분하는 유일성, 둘째, 식별자를 구성하는 속성은 최소한의 개수여야 한다는 최소성, 셋째, 한 번 지정되면 값이 변하지 않는 불변성, 마지막으로 데이터가 반드시 존재해야(Not Null) 하는 존재성입니다. 특히 불변성은 매우 중요하며, 만약 주식별자 값이 자주 변한다면 이는 주식별자 선정이 잘못되었거나 인조식별자 도입이 시급하다는 강력한 신호입니다.





4. 엔터티 명명 규칙(Naming Rule)의 5대 표준 원칙
엔터티 이름은 데이터 사전의 품질을 결정합니다. 명명 규칙의 핵심 원칙은 다음과 같습니다. 1) 현업에서 사용하는 업무 용어를 그대로 사용한다. 2) 약어 사용을 가급적 제한하고 풀 네임을 지향한다. 3) 모든 엔터티 이름은 단수 명사를 사용한다(복수형 지양). 4) 이름은 유일해야 하며 중복된 이름을 허용하지 않는다. 5) 엔터티가 생성된 의미를 담아 명확하게 명명한다. 이러한 규칙은 개발자와 설계자 간의 원활한 커뮤니케이션을 돕고 모델의 직관성을 극대화합니다.
5. 물리 모델링을 위한 물리 명칭(Physical Name) 부여 전략
논리 모델의 엔터티명이 결정되었다면, 실제 DB에 생성될 물리 명칭(Table Name)을 정해야 합니다. 일반적으로 '영문 약어_접미사' 형태를 선호합니다. 예를 들어 '고객' 엔터티는 TB_CUST와 같이 'TB(Table)'라는 접두어나 접미사를 붙여 오브젝트 성격을 명시합니다. 이때 프로젝트 표준 단어집(Standard Dictionary)을 준수하여 'Customer'를 어떤 곳은 CUST, 어떤 곳은 USER로 혼용하지 않도록 전사적인 거버넌스를 확립하는 것이 유지보수 비용을 줄이는 실무적인 팁입니다.







🔗 함께 보면 좋은 데이터 설계 관련 링크