데이터 모델링
데이터 모델링은 업무 요구사항을 RDBMS의 테이블·키·관계 구조로 바꾸는 설계 활동이다. 설계 품질을 좌우하는 출발점이라 실무에서 중요하고, 시험에도 반복해서 나온다. 핵심 키워드는 개념·논리·물리 모델, ERD, 식별·비식별 관계, 정규화다. 데이터 모델링은 추상…
주요 장면
대본
데이터 모델링이란
데이터 모델링은 업무 요구사항을 RDBMS의 테이블·키·관계 구조로 바꾸는 설계 활동이다.
설계 품질을 좌우하는 출발점이라 실무에서 중요하고, 시험에도 반복해서 나온다.
핵심 키워드는 개념·논리·물리 모델, ERD, 식별·비식별 관계, 정규화다.
세 단계 모델링
데이터 모델링은 추상화 수준에 따라 개념, 논리, 물리 세 단계로 나뉜다.
개념 단계는 기술과 무관하게 업무 개념과 관계를 정한다. 논리 단계는 엔티티, 속성, 식별자, 정규형을 정한다.
물리 단계는 DBMS 기능과 제약을 반영해 테이블, 데이터 타입, 인덱스를 정한다.
단계가 내려갈수록 구체성이 커진다. 프로젝트에서는 세 단계를 한꺼번에 수행하는 경우가 많다.
식별·비식별 관계
식별 관계는 부모의 기본키가 자식의 기본키에 포함되는 관계다.
그래서 식별 관계의 자식 주식별자는 부모 키를 받으므로 NULL이 될 수 없다.
비식별 관계는 부모의 기본키가 자식에 외래키로만 들어가는 관계다.
두 관계는 키 길이, 참조 무결성, 변경 용이성에서 갈린다.
주문과 주문상세 예
가상의 예로 주문과 주문상세의 관계를 살펴본다. 주문의 기본키는 주문번호 하나다.
식별 관계로 설계하면 주문상세의 기본키는 주문번호와 항목번호의 복합 키가 된다.
비식별 관계로 설계하면 상세번호 하나가 기본키이고, 주문번호는 외래키가 된다.
주문번호 8바이트, 항목번호 4바이트로 가정하면 식별 관계 키는 12바이트, 비식별 관계 키는 8바이트다.
흔한 실수
흔한 실수는 모델링 단계의 산출물과 목적을 섞는 것이다. 개념 모델에 인덱스를 넣는 식이다.
식별 관계를 무조건 좋은 설계로 쓰면 기본키가 길어지고 부모 변경이 어려워진다.
N:M 관계를 해소하지 않고 남겨 두는 것도 실수다. 연관 엔터티로 두 개의 1:N 관계로 바꾼다.
정규형은 나열만 하지 말고, 이행 함수 종속 제거라는 원리를 함께 쓴다.
정리와 직접 풀기
정리하면 데이터 모델링은 개념, 논리, 물리 순으로 요구사항을 구체화하는 과정이다.
식별 관계는 부모 기본키가 자식 기본키에 포함되고, 비식별 관계는 외래키로만 들어간다.
정규화는 제3정규형까지 기본으로 하고, 조회 성능 요구가 크면 반정규화를 추가로 검토한다.
식별 관계는 참조 무결성을 DB에서 보장하지만, PK 상속으로 구조 변경이 어렵다.