SQL - 데이터 모델링 기초
데이터 모델링
- 사람이 살아가면서 나타날 수 있는 다양한 현상에 대해서 일정한 표기법에 의해 규칙을 가지고 표기하는것 자체를 말한다.
- 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
- 현실세계의 데어터에 대해 약속된 표기법에 의해 표현하는 과정
- 데이터베이스 구축하기 위한 분석/설계의 과정
특징
추상화(다양한 현상을 일정한 양식의 표기법으로 표기) 단순화(약속된 규칙에 의해 제한된 표기법으로 쉽게 이해할 수 있도록 함) 명확화(애매모호함을 제거하고 정확하게 현상을 기술)
모델링의 관점
데이터 관점 : 업무-데이터, 데이터-데이터 의 관계에 대해서 모델링 프로세스 관점 : 업무가 무엇인지, 또는 무엇을 해야 하는지에 대한 모델링 데이터와 프로세스의 상관관점 : 업무가 처리하는 일의 방법에 때라 데이터가 어떻게 영향을 받는지 모델링
데이터 모델
- 데이터 모델을 잘 이해하면 기능과 성능적인 측면에서 효율적인 SQL 문장을 작성할 수 있다.
데이터 모델이 제공하는 기능
- 시스템 가시화
- 시스템의 구조와 행동 명세화
- 구조화된 틀을 제공
- 문서화
- 댜양한 관점 제공
- 특정 목표에 따라 상세 수준의 표현 방법 제공
데이터 모델링의 중요성 및 유의점
- 파급효과 : 시스템이 어느정도 완성되어가는 시점에서 많은 테스트들이 수행된다. 이러한 상황에서 데이터 구조가 변경되면 시스템 전체가 변경되어야 할 수도 있다. 이것은 데이터 설계가 중요한 과정이라는 것을 설명한다.
- 복잡한 정보 요구사항의 간결한 표현 : 데이터 모델은 시스템의 정보 요구사항과 한계를 가장 명확하고 간결하게 표현할 수 있다. 수많은 페이지의 요구사항을 파악하기 좋은 방법은 데이터 모델을 리뷰하면서 파악하는 것이다.
- 데이터 품질 : 데이터는 기간이 오래될 수록 활용가치가 큰 자산이 된다. 데이터 품질을 잘 유지할 수 있는 형태로 데이터 모델링을 해야한다.
- 중복 : 여러 장소에 같은 정보를 저장하면 안된다.
- 비유연성 : 데이터 정의-데이터의 사용 프로세스를 분리함으로써 프로세스의 변화가 데이터베이스에 영향을 최소화하도록 한다.
- 비일관성 : 데이터-데이터 간의 관계를 명확히 정의 해야 일련의 데이터를 모순 없이 수정가능해 진다.
데이터 모델링의 3단계 진행
- 개념적 데이터 모델링 : 추상적이고 포괄적인 수준, 전사적 데이터 모델링-조직의 데이터 요구를 공식화
- 논리적 데이터 모델링 : key, 속성, 관계 등을 정확하게 표현-누가, 어떻게 데이터에 접근하는지, 독립적 비지니스 데이터 기록, 정규화
- 물리적 데이터 모델링 : 실제 데이터베이스에 이식할 수 있도록 성능(속도), 저장(용량) 등을 고려하여 설계
프로젝트 생명 주기에서 데이터 모델링
- Waterfall : 분석(논리적 데이터 모델링)과 설계(물리적 데이터 모델링) 단계
- 나선형 모델 : 분석, 설계 과정에서 모두 수행. 분석단계에서 논리적 데이터 모델링이 더 많이 수행
데이터독립성의 필요성
- 유지보수 비용 절감
- 데이터 복잡도 감소
- 데이터 중복성 감소
- 요구사항 대응
데이터독립성 구조
- 데이터베이스 3단계 구조
데이터독립성 요소
- 외부스키마 : 여러개의 사용자 관점 스키마
- 개념스키마 : 조직 전체의 DB를 기술. DB에 저장되는 데이터와 그들간의 관계를 표현하는 스키마
- 내부스키마 : 물러적 장치에서 데이터가 실제로 저장되는 방법을 표현하는 스키마
데이터독립성
- 논리적독립성 : 개념스키마가 변경되어도 외부 스키마는 영향을 미치지 않도록 지원하는 것. 논리적 구조가 변경되어도 응용프로그램에 영향 없음.
- 물리적독립성 : 내부스키마가 변경되어도 외부/개념 스키마는 영향을 받지 않도록 지원하는 것. 저장장치의 변경은 응용 프로그램과 개념 스키마에 영향 없음.
사상
- 논리적사상 : 외부적 뷰와 개념적 뷰의 상호 관련성을 정의함.
- 물리적사상 : 개념적 뷰와 저장된 데이터베이스의 상호관련성을 정의
데이터 모델링의 세 가지 요소
- things : 지칭하는 용어
- attributes : 성격
- relationships : 다른 things와의 관계
단수/ 복수 용어 구분 정의
- 복수 : Entity Type, Entity Set -> 단수 : Entity
- 복수 : Entity -> 단수 : Instance, Occurrence
- 패어링은 잘 사용 안함.
- 복수 : Attribute -> 단수 : Attribute Value
데이터 모델 표기법
- IE(Information Engineering)/ 까마귀발 모양 표기법-가장 많이 사용함
ERD(Entity Relationship Diagram) 작업 순서
- 엔티티를 그린다.
- things 정의
- 엔티티를 적절하게 배치한다.
- 왼쪽 상단(중요한 것)->오른쪽하단(하위 모델)
- 엔티티간 관계를 설정한다.
- Primary Key 속성이 상속되는 식별자 관계 설정
- 중복 관계, Circle 관계 발생하지 않도록 주의
- 관계명을 기술한다.
- 관계 이름을 현재형, 지나치게 포괄적이지 않은 용어로 기술
- 관계의 참여도를 기술한다.
- 관계 차수 ex) 1:N
- 관계의 필수 여부
- 필수/선택 표시
좋은 데이터 모델의 요소
- 완전성 : 모든 데이터가 데이터 모델에 정의
- 중복배제
- 업무규칙 : 데이터 모델에 업무 규칙이 표시 되어 모든 사용자(개발자, 관리자)가 해당 규칙에 대해 이해할 수 있어야한다.
- 데이터 재사용 : 데이터독립성이 높아야 데이터 재사용성을 향상시킬 수 있다.
- 의사소통 : 데이터 모델의 역할에 대해 상세히 표시
- 통합성 : 전체 조직관점에서 보와도 중복된 데이터가 존재하지 않도록 해야한다.
참조
책 : SQL 전문가 가이드 2013 Edition , KODB(한국데이터베이스진흥원)