본문 바로가기

IT/SQL

SQL- 데이터 모델의 이해

1절 데이터 모델의 이해

-       모델링의 특징

1.     추상화(모형화, 가설화)는 현실세계를 일정한 형식에 맞추어 표현한다는 것으로.. 다양한 형상을 일정한 양식인 표기법에 의해 표현한다는 것

2.     단순화는 복잡한 현실세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현하여 쉽게 이해할 수 있도록 하는 개념

3.     명확화는 누구나 이해하기 쉽게 애매모호함을 제거하고 정확하게 현상을 기술하는 것

 

-       데이터 모델링이란

1.     정보시스템을 구축하기 위한 데이터관점의 업무 분석 기법

2.     현실세계의 데이터에 대해 약속된 표기법에 의해 표현하는 과정

3.     데이터베이스를 구축하기 위한 분석/설계 과정

-       데이터 모델링의 중요성

1.     파급효과(Leverage): 데이터 구조의 변경은 전체 시스템 구축 프로젝트에서 큰 위험요소이다.

2.     복잡한 정보 요구사항의 간결한 표현(Conciseness): 데이터 모델은 구축할 시스템의 정보 요구사항과 한계를 가장 명확하고 간결하게 표현할 수 있는 도구이다.

3.     데이터 품질(Data Quality): DB에 담겨 있는 데이터는 기업의 중요한 자산이다. 오랜 기간 숙성된 데이터를 전략적으로 활용 가능

-       데이터 모델링의 유의점

1.     중복(Duplication): 여러 장소에 같은 정보를 저장하는 것

2.     비유연성(Inflexibility): 사소한 업무변화에도 데이터 모델이 수시로 변경됨으로써 유지보수의 어려움을 가중시킬 수 있음. 그래서 처음부터 발생될 모든 사건을 염두하고 모델링을 해야 된다.

3.     비일관성(Inconsistency): 같은 정보를 두 곳에서 가지고 있는데 한 쪽만 업데이트 한 경우. 그래서 데이터간 상호 연관 관계에 대해 명확히 정의하고 모델링을 해야 한다.

 

-       데이터 모델링의 3단계

1.     개념적 데이터 모델링: 추상화 수준이 높고 업무중심적이며 포괄적인 수준의 모델링 진행. 전사적 데이터 모델링. EA 수립시 많이 이용. 사용자와 시스템 개발자가 데이터 요구 사항을 발견하는 것을 지원. 현 시스템이 어떻게 변형되어야 하는가를 이해하는데 유용함.

2.     논리적 데이터 모델링: 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현. 재사용성이 높음. 시스템 구축을 위해서 가장 먼저 시작할 기초적인 업무조사를 하는 초기단계에서부터 시스템 설계의 전 과정을 지원.

3.     물리적 데이터 모델링: 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계. 데이터 모델이 데이터 저장소로서 어떻게 컴퓨터 하드웨어에 표현될 것인가, 데이터가 물리적으로 컴퓨터에 어떻게 저장될 것인가 하는 정의.

-       데이터베이스의 3단계 구조

1.     외부스키마(External Schema): View 단계 여러 개의 사용자 관점으로 구성. 개개 사용자가 보는 개인적 DB 스키마. 사용자 관점 접근하는 특성에 따른 스키마 구성

2.     개념스키마(Conceptual Schema): 개념단계 하나의 개념적 스키마로 구성 모든 사용자 관점을 통합한 조직 전체의 DB를 기술하는 것

3.     내부스키마(Internal Schema): DB가 물리적으로 저장된 형식. 물리적 장치에서 데이터가 실제적으로 저장되는 방법을 표현하는 스키마

 

-       좋은 데이터 모델의 요소

1.     완전성(Completeness): 모든 데이터가 데이터 모델에 정의되어 있어야 한다.

2.     중복배제(Non-Redundancy): 하나의 데이터베이스 내에 동일한 사실은 한 번만 기록하여야 한다.

3.     업무규칙(Business Rule): 데이터 모델을 활용하는 모든 사용자가 공유할 수 있도록 업무규칙을 제공

4.     데이터 재사용(Data Reusability): 데이터의 재사용성을 향상시키고자 한다면 데이터의 통합성과 독립성에 대해서 충분히 고려해야 함

5.     의사소통(Communication): 데이터 모델은 대상으로 하는 업무를 데이터 관점에서 분석하고 이를 설계하여 나오는 최종 산출물이다. , 데이터 모델이 진정한 의사소통의 도구로서의 역할을 하게 된다.

6.     통합성(Integration): 동일한 데이터는 조직의 전체에서 한번만 정의되고 이를 여러 다른 영역에서 참조, 활용하는 것

 

-       엔터티의 특징

1.     반드시 해당 업무에서 필요하고 관리하고자 하는 정보

2.     유일한 식별자에 의해 식별이 가능해야 함

3.     영속적으로 존재하는 인스턴스의 집합이어야 한다.

4.     엔터티는 업무 프로세스에 의해 이용되어야 한다.

5.     엔터티는 반드시 속성이 있어야 한다.

6.     엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.

 

-       엔터티의 명명

1.     현업업무에서 사용하는 용어를 사용

2.     가능하면 약어를 사용하지 않는다.

3.     단수명사를 사용한다.

4.     모든 엔터터이에서 유일하게 이름이 부여되어야 한다.

5.     엔터티 생성의미대로 이름을 부여한다.

 

-       관계 체크사항

1.     두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?

2.     두 개의 엔터티 사이에 정보의 조합이 발생되는가?

3.     업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?

4.     업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가?

 

-       비식별자관계(부모엔터티로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 않고 일반적인 속성으로만 사용하는 경우)를 맺는 경우

1.     자식엔터티에서 받은 속성이 반드시 필수가 아니어도 무방하기 때문에 부모 없는 자식이 생성될 수 있는 경우

2.     자식만 남겨두고 먼저 소멸될 수 있는 경우

3.     여러 개의 엔터티가 하나의 엔터티로 통합되어 표현되었는데 각각의 엔터티가 별도의 관계를 가질 때

4.     자식엔터티에서 별도의 주식별자를 사용하는 것이 더 유리하다고 판단될 때

 

-       성능 데이터 모델링 고려사항

1.     데이터 모델링을 할 때 정규화를 정확하게 수행한다.

2.     데이터베이스 용량산정을 수행한다.(테이블(엔터티)별로 데이터가 대용량인지 구분하게 하기 때문에 테이블에 대한 성능고려를 엄격하게 적용해야 하는지 기준이 될 수 있음)

3.     데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.

4.     용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.

5.     이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행한다.

6.     성능관점에서 데이터 모델을 검증한다.

 

-       로우체이닝: 로우 길이가 너무 길이서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태

-       로우마이그레이션: 데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식

 

-       슈퍼/서브타입 데이터 모델의 변환타입 비교

1. one to one type: 개별테이블 유지, 확장성 우수함, 조인성능 나쁨, I/O 성능 좋음, 관리용이성 좋지 않음. 개별 테이블로 접근이 많은 경우 선택

2. Plus Type: 슈퍼+서브타입 테이블, 확장성 보통, 조인성능 나쁨, I/O 성능 좋음, 관리용이성 좋지않음. 슈퍼+서브 형식으로 데이터를 처리하는 경우 선택

3. Single Type: 하나의 테이블, 확장성 나쁨, 조인성능 우수함, I/O 성능 나쁨, 관리용이성 좋음, 전체를 일괄적으로 처리하는 경우 선택.


- 와일드카드의 종류

1. % : 0개 이상의 어떤 문자를 의미

2. _ : 1개인 단일 문자를 의미