엔터티-관계 모델링이란 무엇인가?
엔터티-관계(Entity-Relationship, ER) 모델링은 데이터 중복을 제거하기 위해 활용되는 논리적 설계 접근 방식입니다. 예를 들어 어떤 기업이 고객으로부터 주문을 받고 상품을 판매하는 비즈니스를 운영한다고 가정해 볼 수 있습니다.
관계형 데이터베이스 이전의 데이터 관리 방식
관계형 데이터베이스가 등장하기 훨씬 전, 정보를 컴퓨터로 처음 옮겨 담던 초기 단계에서는 종이 주문서를 여러 필드로 구성된 하나의 평면적인(flat) 데이터로 캡처하는 방식이 일반적이었습니다. 이런 데이터는 대개 50개 정도의 필드에 걸쳐 1,000바이트에 달하기도 했습니다.
주문의 품목(line item)들은 마스터 데이터 안에 삽입된 반복 필드 집합으로 정의되었습니다. 컴퓨터로 이런 데이터를 받아 처리할 수 있게 된 것은 분명 큰 발전이었지만, 데이터를 저장하고 조작하는 과정에서 몇 가지 기본적인 교훈을 빠르게 얻게 됩니다.
중복 데이터가 초래한 문제점
새로운 주문이 접수될 때마다 고객 이름과 주소가 반복해서 기록되었습니다. 일부 고객 주소 레코드는 서로 독립적으로 관리되었기 때문에 데이터 불일치가 통제되지 않았고, 고객 주소를 수정하는 작업은 번거롭고 오류가 발생하기 쉬운 거래였습니다.
또한 데이터를 조회하고 조작하는 소프트웨어 시스템은 여러 데이터 그룹을 연결하는 처리 알고리즘을 세심하게 다루어야 했기 때문에 점점 복잡하고 난잡해졌습니다. 결국 테이블 간 조인(join)에 특화된 데이터베이스 시스템이 필요해졌고, 이것이 데이터베이스가 오직 이 한 가지 작업에 집중하는 관계형 데이터베이스 혁명의 길을 열었습니다.
ER 모델링의 핵심 목표: 데이터 중복 완전 제거
엔터티-관계 모델링은 데이터 요소들 사이의 세밀한 관계를 명확히 드러내는 체계적인 설계 기법입니다. ER 모델링의 가장 큰 설계 목표는 데이터 속 모든 중복을 제거하는 것입니다. 이는 트랜잭션 처리에 매우 유용한데, 각 트랜잭션을 단순하고 결정론적으로 만들어 주기 때문입니다.
트랜잭션 처리 성능의 열쇠
예컨대 고객 주소를 갱신하는 트랜잭션은 고객 주소 마스터 테이블에서 단 한 번의 데이터 조회만으로 처리될 수 있습니다. 이 조회는 고객 주소 데이터의 고유성을 나타내는 키(key)로 수행되며, 인덱싱된 조회를 통해 매우 빠른 속도를 보장합니다. 관계형 데이터베이스에서 트랜잭션 처리가 성공한 것은 엔터티-관계 모델링 기법의 발전 덕분이라고 해도 과언이 아닙니다.
기업 환경에서의 엔터티-관계 모델
대규모 기업의 엔터티-관계 모델은 수천 개의 논리적 엔터티를 포함합니다. SAP와 같은 고급 ERP(전사적 자원 관리) 시스템 역시 수천 개의 엔터티를 보유하고 있습니다. 데이터베이스가 실제 구현될 때 각 엔터티는 일반적으로 물리적 테이블로 변환됩니다.
엔터티-관계 모델의 한계
그러나 ER 모델에는 분명한 한계도 존재합니다. 최종 사용자는 엔터티-관계 모델을 이해하거나 직접 다루기 어렵습니다. 또한 일반적인 ER 모델을 최종 사용자가 쉽게 접근할 수 있도록 만들어 주는 GUI(그래픽 사용자 인터페이스)도 없습니다.
더욱이 소프트웨어가 일반적인 ER 모델을 자유롭게 쿼리하기도 쉽지 않습니다. 이를 시도하는 비용 기반 옵티마이저(cost-based optimizer)는 잘못된 실행 계획을 선택하는 것으로 악명이 높으며, 성능 면에서 재앙적인 결과를 초래하곤 했습니다. 직관적이면서도 고성능의 정보 검색을 지향하는 데이터 웨어하우징의 취지와 달리, ER 모델링 기법의 특성은 오히려 이러한 목적을 저해하는 요소가 되기도 합니다.