SQL : 데이터 모델의 이해

Skele·2025년 5월 12일

SQL

목록 보기
1/11
post-thumbnail

1. 데이터 모델의 이해

1.1 개념

현실 세계의 비즈니스 프로세스와 데이터 요구 사항같은 개념으로부터 추상적이고 구조화된 논리적인 데이터 모델을 구성하는 작업을 말한다. 일반적으로 물리적인 데이터베이스 모델과 연관되어 고객의 요구에 따라 특정 정보 시스템의 데이터베이스에 반영하는 작업을 포함하며, 흔히 데이터베이스 모델링으로 불리기도 한다.

1.2 특징

  • 단순화(Simplification) : 현실을 단순화하여 제한된 언어와 표기법으로 쉽게 표현
  • 추상화(Abstraction) : 현실을 일정한 형식에 맞추어 간략하게 표현
  • 명확화(Clarity) : 애매모호함을 제거하고 의사소통이 원활하도록 정확하게 현상을 기술

1.3 관점

  • 데이터 관점 : 데이터가 어떻게 저장되고 관리되는지를 정의
  • 프로세스 관점 : 시스템이 어떤 작업을 수행하며, 이러한 작업들이 어떻게 조직되고 조정되는지를 정의
  • 데이터&프로세스 관점 : 특정 프로세스가 어떤 데이터를 사용하는지, 데이터가 어떻게 생성되고 변경되는지를 명확하게 정의

1.4 유의점

  • 중복(Duplication) : 같은 정보를 하나 또는 여러 테이블에 저장 -> 저장공간 낭비
  • 비유연성(Inflexibility) : 업무 변화에 대해 잦은 모델 변경 -> 유지보수 비용 증가
  • 비일관성(Inconsistency) : 서로 모순되거나 상반된 정보를 가짐 -> 오류 발생

2. 데이터 모델링의 3단계

모델링 단계추상화 수준구체화 수준주요 특징
개념적 모델링높음낮음• 업무 중심적이고 포괄적인 수준의 모델링
• 핵심 엔터티(Entity) 추출
• ERD 작성
• 전체 시스템 관점에서 데이터 구조 정의
논리적 모델링중간중간• 세부 속성, 식별자, 관계 표현
• 데이터 정규화 수행
• 재사용성 고려
• DBMS에 독립적인 명세 작성
물리적 모델링낮음높음• 실제 데이터베이스 구현
• 성능, 저장구조, 접근 방법 고려
• 인덱스, 파티션 등 물리적 설계 요소 포함
• 특정 DBMS에 종속적인 구현 방법 정의

3. 스키마의 3단계 구조

3.1 스키마

  • 외부 스키마: 사용자 관점의 데이터베이스 정의(View)
  • 개념 스키마: 데이터베이스의 전체 논리적 구조 정의
  • 내부 스키마: 물리적 저장 구조 정의

3.2 스키마 독립성

  • 논리적 독립성 : 논리적 데이터 구조(개념 스키마)가 변경되더라도 사용자(외부 스키마)에게 영향을 주지 않는 특성
  • 물리적 독립성 : 물리적 구조(내부 스키마)가 변경되더라도 개념/외부 스키마에 영향을 주지 않는 특성

4. 데이터 모델링의 3요소

4.1 엔터티(Entity)

4.1.1 개념

독립적으로 식별가능한 객체 집합

4.1.2 특징

  • 유일한 식별자에 의해 식별 가능해야한다.
  • 업무에 필요하고 관리하고자하는 정보이어야 한다.
  • 영속적으로 존재하는 인스턴스들의 집합(두 개 이상)이어야한다.
  • 엔티티는 반드시 2개 이상의 속성을 가진다.
  • 엔티티는 업무 프로세스에 사용되어야한다.
  • 다른 엔티티와 최소 한가지 이상의 관계가 성립해야한다.

4.1.3 엔터티의 분류

유형/무형에 따른 분류

분류특징예시
유형엔터티• 물리적 형태가 있음
• 실체가 있는 대상
• 안정적이며 지속적으로 활용
사원, 물품, 강사 등
개념엔터티• 물리적인 형태가 없음
• 개념적 정보로부터 구분
• 관리해야 할 개념적 정보
조직, 보험상품 등
사건엔터티• 업무 수행에 따라 발생
• 발생량이 많음
• 통계자료로 활용
주문, 청구, 미납 등

발생 시점에 따른 분류

분류특징예시
기본엔터티• 업무에 원래 존재하는 정보
• 독립적으로 생성됨
• 타 엔터티의 부모 역할
• 자신의 고유한 주식별자를 가짐
사원, 부서, 고객, 상품 등
중심엔터티• 기본엔터티로부터 발생
• 업무에서 중심적인 역할
• 많은 데이터가 발생
• 다른 엔터티와의 관계를 통해 행위 엔터티 생성
계약, 사고, 청구, 주문, 매출 등
행위엔터티• 2개 이상의 부모엔터티로부터 발생
• 내용이 자주 바뀌거나 데이터양이 증가
• 상세 설계 단계나 상관모델링 과정에서 도출
주문이력, 사원변경이력 등

관계 간 엔티티 구분

분류특징예시
강한개체
(Strong Entity)
• 독립적으로 존재할 수 있는 엔티티
• 다른 엔티티에 의존하지 않고 자체적으로 식별 가능
• 자신의 고유한 식별자를 가짐
고객, 부서, 직원, 상품 등
약한개체
(Weak Entity)
• 독립적으로 존재할 수 없는 엔티티
• 강한개체에 의존하여 식별됨
• 부분키와 부모 엔티티의 식별자를 결합하여 식별
계좌(고객에 의존), 주문상세(주문에 의존) 등

4.2 속성(Attribute)

4.2.1 개념

업무에서 필요한 최소 데이터 단위

4.2.2 특징

  • 업무에 필요하고 관리하고자 하는 정보여야한다.
  • 속성마다 하나의 값을 가지는 원자성을 만족해야한다.
  • 주식별자에 함수적 종속성을 가져야한다.

함수적 종속성

어떤 속성 A의 값에 의해 다른 속성 B도 유일하게 결정된다면 B는 A에 함수적으로 종속이며, A->B로 표현된다.

  • 완전 함수적 종속 : 기본키 전체에 대해 종속 (학번, 과목번호 -> 성적)
  • 부분 함수적 종속 : 기본키 일부에 대해 종속 (학번 -> 이름)

4.2.3 분류

속성(Attribute)의 분류

특성에 따른 분류

분류특징예시
기본 속성• 업무로부터 추출된 모든 속성
• 엔터티에 가장 일반적으로 많이 존재하는 속성
원금, 예치기간, 이름, 주소 등
설계 속성• 업무를 규칙화하기 위해 새로 만들어지거나 기본 속성을 변형하여 만들어지는 속성
• 시스템 내에서 코드화하여 관리하기 위한 속성
상품코드, 지점코드, 예금분류 등
파생 속성• 다른 속성에 의해 만들어지는 속성
• 계산된 값들이 해당함
• 데이터 정합성을 유지하기 위해 가급적 적게 정의하는 것이 좋음
합계, 평균, 이자 등

엔터티 구성방식에 따른 분류

분류특징예시
PK(Primary Key) 속성• 인스턴스를 식별할 수 있는 속성
• 유일성과 최소성을 만족
• NULL 값 허용하지 않음
학번, 사원번호, 고객ID 등
FK(Foreign Key) 속성• 다른 엔터티와의 관계에서 포함된 속성
• 참조 무결성 유지에 중요
• 참조하는 테이블의 PK를 참조
부서번호(사원 테이블에서), 과목코드(수강 테이블에서) 등
일반 속성• 엔터티에 포함되어 있고 PK/FK에 포함되지 않는 속성
• 업무적 필요에 의해 관리되는 속성
이름, 주소, 전화번호, 이메일 등

분해 여부에 따른 분류

분류특징예시
단일 속성• 하나의 의미로 구성된 경우
• 더 이상 분해할 수 없는 원자적 속성
회원ID, 이름, 전화번호 등
복합 속성• 여러 개의 의미로 구성된 경우
• 업무적 필요에 따라 더 작은 단위로 분해 가능
주소(시, 구, 동 등으로 분해 가능), 성명(성, 이름) 등
다중값 속성• 속성에 여러 개의 값을 가질 수 있는 경우
• 일반적으로 별도의 엔터티로 분해하여 관리
상품 리스트, 자격증 목록, 전화번호 리스트 등

4.3 관계(Relationship)

4.3.1 개념

엔터티 간 연관성

4.3.2 종류

  • 존재적 관계 : 엔터티의 존재가 다른 엔터티의 존재에 영향을 미치는 관계
  • 행위적 관계 : 엔터티 간의 어떤 행위가 있는 것을 의미

4.3.3 구성요소

관계명(Membership)

관계의 이름

차수(Cardinality)

  • 1:1 관계 : 학교 - 교장
  • 1:N 관계 : 학교 - 교사
  • N:1 관계 : 수업 - 교사
  • N:M 관계 : 직원 - 프로젝트

선택성(Optionality)

  • 필수적 관계
  • 선택적 관계

4.3.4 식별 관계와 비식별관계

분류특징표기법예시
식별관계
(Identification Relationship)
• 부모 엔티티의 기본키가 자식 엔티티의 기본키의 일부로 전이
• 자식 엔티티의 존재가 부모 엔티티에 의존
• 부모 없이 자식이 독립적으로 존재할 수 없음
ERD에서 실선으로 표시주문-주문상세, 사원-교육이력
비식별관계
(Non-identification Relationship)
• 부모 엔티티의 기본키가 자식 엔티티의 일반 속성으로 전이
• 자식 엔티티가 독립적으로 존재 가능
• 논리적 연관관계만 표현
ERD에서 점선으로 표시부서-사원, 고객-주문

5. 식별자(Identifier)

5.1 개념

엔터티를 대표하는 속성

5.2 특징

  • 유일성 : 주식별자에 의해 모든 인스턴트들이 구분된다.
  • 최소성 : 주식별자는 유일성을 만족하는 최소한의 속성으로 구성된다.
  • 불변성 : 주식별자의 값은 변하지 않아야한다.
  • 존재성 : 주식별자의 값(Not Null)은 반드시 존재해야한다.

5.3 분류

대표성 여부에 따른 분류

분류특징예시
주식별자
(Primary Identifier)
• 유일성과 최소성을 만족하면서 엔터티를 대표하는 식별자
• 각 인스턴스를 유일하게 구분
• 타 엔터티와 참조관계 연결 가능
• NULL 값 허용하지 않음
사원번호, 학번, 주문번호 등
보조식별자
(Alternate Identifier)
• 인스턴스를 구분할 수 있지만 대표성을 가지지 못함
• 유일성과 최소성은 만족하지만 대표성 만족 못함
• 참조관계 연결에 사용되지 않음
주민등록번호(사원 테이블에서), 이메일 주소(사용자 테이블에서) 등

생성 여부에 따른 분류

분류특징예시
내부식별자
(Internal Identifier)
• 다른 엔터티 참조 없이 엔터티 내부에서 스스로 생성되는 식별자
• 자체적으로 유일성 보장
• 독립적인 식별 가능
사원번호, 상품코드, 부서코드 등
외부식별자
(External Identifier)
• 다른 엔터티와 관계로 인하여 만들어지는 식별자
• 외래키(FK)로 사용됨
• 다른 엔터티와의 관계에서 생성
주문 테이블의 고객번호, 수강신청 테이블의 학번 등

속성 수에 따른 분류

분류특징예시
단일식별자
(Single Identifier)
• 하나의 속성으로 구성된 식별자
• 단일 컬럼으로 유일성 보장
• 관리가 용이함
사원번호, 학번, 상품코드 등
복합식별자
(Composite Identifier)
• 두 개 이상의 속성으로 구성된 식별자
• 여러 컬럼의 조합으로 유일성 보장
• 식별자 관리가 복잡할 수 있음
주문상세(주문번호+상품번호), 수강신청(학번+과목코드) 등

대체 여부에 따른 분류

분류특징예시
본질식별자
(Natural Identifier)
• 비즈니스 프로세스에서 자연적으로 만들어지는 식별자
• 업무에 의해 생성되어 실제 업무적 의미를 가짐
• 업무 변경 시 식별자도 변경될 수 있음
사업자등록번호, 주민등록번호, 상품코드 등
인조식별자
(Surrogate Identifier)
• 인위적으로 만들어지는 식별자
• 일련번호와 같은 형태로 시스템에서 자동 생성
• 업무적 의미는 없으나 유일성 보장 및 관리 편리
자동증가 ID, UUID, 시퀀스 번호 등

5.4 Key의 종류

  • 기본키(Primary Key): 엔터티를 대표할 수 있는 키
  • 후보키(Candidate Key): 유일성과 최소성을 만족하는 키
  • 슈퍼키(Super Key): 유일성은 만족하지만 최소성은 만족하지 않는 키
  • 대체키(Alternate Key): 여러 후보키 중 기본키가 아닌 키
  • 외래키(Foreign Key): 다른 테이블의 기본키를 참조하는 키
profile
Tireless And Restless Debugging In Source : TARDIS

0개의 댓글