무엇을 하나의 대상으로 볼 것인가
도서관에서 책을 관리할 때 제목 하나와 실제로 서가에 놓인 책 한 권은 같지 않다. 같은 판본을 여러 권 보유할 수 있고 각 권의 대출 상태는 다르다. 판본과 소장본을 별도 대상으로 구분하는 것은 데이터 모델의 결정이다.
모델은 현실을 그대로 복제하는 것이 아니라 목적에 필요한 구분을 선택한다. 독서 기록만 관리하는 서비스와 실물 대출을 관리하는 시스템은 같은 책을 다루더라도 필요한 속성과 관계가 다르다.
관계와 제약도 데이터의 일부
책 한 권에 여러 저자가 있을 수 있고 한 저자는 여러 책을 쓸 수 있다. 이런 다대다 관계를 어떻게 표현할지 정해야 한다. 제목이 비어 있어도 되는지, 소장본이 어떤 판본에 속해야 하는지 같은 제약도 모델에 포함된다.
이름처럼 바뀌거나 겹칠 수 있는 속성과 대상을 식별하는 값은 구분하는 편이 좋다. 식별 방식이 불명확하면 서로 다른 대상을 합치거나 같은 대상을 중복 등록할 수 있다.
개념에서 저장 구조로
개념적 관점에서는 관리할 대상과 관계를 중심으로 설명한다. 논리적 관점에서는 속성과 키, 상세한 관계를 정리한다. 물리적 관점에서는 선택한 저장 시스템의 자료형이나 인덱스 등 구현 조건을 구체화한다. 이 구분의 세부 용법은 방법론에 따라 달라질 수 있다.
관계형 모델은 테이블과 키를 이용하지만 모든 정보가 반드시 같은 방식으로 저장되는 것은 아니다. 문서형이나 그래프형 구조도 있다. 어떤 기술을 택하든 속성의 의미와 관계를 명확히 하는 작업은 필요하다.
변경과 공유를 견디는 설계
날짜 항목 하나도 시간대와 기준 시점을 정하지 않으면 시스템마다 다르게 해석할 수 있다. 데이터 모델은 항목의 이름뿐 아니라 의미와 허용 범위를 합의하는 도구이기도 하다.
요구 사항이 바뀌면 기존 자료를 어떻게 해석하고 옮길지도 검토해야 한다. 모델의 변경은 화면의 입력 칸을 하나 추가하는 일보다 넓은 영향을 줄 수 있다. 저장 구조, 검증 규칙, 교환 형식이 함께 달라질 수 있기 때문이다.
관련 문서
메타데이터 / 데이터베이스 정규화 / 관계형 데이터베이스 / 자료 구조