본문 바로가기
공부/SQLD

데이터 모델링

by Wanado 2022. 8. 22.
728x90

모델링은 현실세계에 대해서 표현하는 것으로 이해할 수 있다.

               정보시스템 구축을 위한 데이터 관점, 프로세스관점의 업무 분석

               데이터베이스 구축을 위한 분석 및 설계하는 과정의 의미

 

-추상화 : 현실세계를 일정한 형식에 맞추어 표현

              

-단순화: 복잡한 현실을 제한된 언어나 표기법을 이해하기 쉽게 함

 

-명확화: 애매모호함을 배제하고 누구나 이해 가능하도록 정확하게 현상을 기술

 

필요성)

업무정보를 구성하는 기초가 되는 정보들에 대해 일정한 표기법에 의해 표현한다.

분석된 모델을 가지고 데이터베이스를 생성하여 개발 및 데이터 관리에 사용하기 위함.

데이터베이스를 구축하기 위한 용도를 위해 데이터 모델링을 수행하고

업무에 대한 설명을 (데이터가 무엇인지 어떤 프로세스가 발생하는지 데이터와 프로세스의 상관관계가 어떤 것인지 약속된 표기법으로 함)

데이터 모델링 자체로서 업무의 흐름을 설명하고 분석하는 부분에 의미를 가짐.

 

 

ANSI-SPARC에서 정의한 3단계 구조

*DB구축을 위한 추상적인 설계표준

외부- 개별 사용자들의 관점 기술

개념 - 모든 사용자 관점을 통합한 조직 전체 관점의 통합적 표현
           모든 응용시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 DB를 기술한 것으로 DB에 저장되는             데이터와 그들간의 관계를 표현하는 스키마

           전체 데이터 베이스의 논리적 구조를 기술, 개념 스키마가 존재

내부 - 데이터베이스에 어떤 데이터가 어떻게 저장되어 있는가 기술

 

 

데이터 모델링

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

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

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

업무정보를 구성하는 기초가 되는 정보들에 대해 일정한 표기법에 의해 표현함으로써 정보시스템 구축의 대상이 되는 업무 내용을 정확하게 분석.
분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터 관리에 사용
즉, 데이터베이스마늘 구축하기 위한 용도로만이 아니라 데이터모델링 자체로서 업무를 설명하고 분석하는 부분에서도 매우 중요한 의미를 가짐.

유의사항>>

-중복

-비유연성: 데이터의 정의를 데이터의 사용프로세스와 분리함으로써 데이터 모델링은 데이터 혹은 프로세스의 작은 변화가 애플리케이션과 데이터베이스에 중대한 변화를 일으킬 수 있는 가능성을 줄인다.

-비일관성: 데이터와 데이터 간의 상호 연관관계에 대해 명확하게 정의. 

                  사용자가 처리하는 프로세스 혹은 이와 관련된 프로그램과 테이블의 연계성을 높이는 것은 데이터 모델이 업무변경에 대해 취약하게 만듦.

 

1. 개념적 데이터 모델링

 추상화 수준이 높고 업무중심적이고 포괄적인 수준의 모델링 진행. 

 전사적 데이터 모델링, EA수립시 많이 이용

2. 논리적 데이터 모델링

 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현, 재사용성이 높음.

3. 물리적 데이터 모델링

 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계

 

데이터베이스 스키마 구조 3단계 (ANSI-SPARC)

외부스키마

개념스키마 - 통합관점의 뷰. 

 모든 사용자 관점을 통합한 조직 전체 관점의 통합적 표현

 모든 응용시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 DB 를 기술한 것으로 DB에 저장되는 데이터와 그들간의 관계를 표현하는 스키마

내부스키마

 

ERD

피터첸에 의해 만들어짐 (Entity-Relationship Model)

엔터티 도출 > 엔터티 배치 > 관계설정 > 관계명 기술

관계의 명칭은 관계 표현에 있어서 매우 중요하다.

가장 중요한 엔터티는 왼쪽 상단(에서 조금 아래쪽 중앙)에 배치, 이것을 중심으로 다른 엔터티 나열.

가능하면 약어를 사용하여 이름을 짓지 않음.

 

작성순서)

엔터티를 그림 > 적절하게 배치 > 관계설정 > 관계명 기술 >관계의 참여도 기술 > 관계의 필수여부

 

특징)

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

-유일한 식별자에 의해 식별이 가능해야 한다.

-영속적으로 존재하는 인스턴스의 집합이어야 한다. (두개 이상)

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

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

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

 

엔터티

<<발생시점>>

기본엔터티(키엔터티)

그 업무에 원래 존재하는 정보로서 다른 엔터티와의 관계에 의해 생성되지 않고 독립적으로 생성 가능하고,

자신은 타 엔터티의 부모 역할을 하게 된다.

다른 엔터티로부터 주식별자를 상속받지 않고 자신의 고유한 주식별자를 가지게 된다( 사원,부서,고객,상품,자재 등)

 

중심엔터티(메인엔터티)

기본엔터티로부터 발생, 업무에서 중심적인 역할을 한다.

데이터의 양이 많이 발생되고 다른 엔터티와의 관계를 통해 많은 행위 엔터티를 생성 (계약,사고,청구,주문)

 

행위엔터티

두 개 이상의 부모엔터티로부터 발생되고 자주 내용이 바뀌거나 데이터량이 증가

분석 초기 단계에서는 잘 나타나지 않으며 상세 설계단계나 프로세스와 상관 모델링을 진행하면서 도출될 수 있다.

(주문목록,사원변경 이력)

 

<<유무형>>

유형엔터티

물리적인 형태가 있고 안정적이며 지속적으로 활용되는 엔터티로 업무로부터 엔터티를 구분하기가 가장 용이하다. 

(사원, 물품, 강사)

개념엔터티

물리적인 형태는 존재하지 않고 관리해야 할 개념적 정보로 구분이 되는 엔터티

(조직, 보험상품)

사건엔터티

업무를 수행함에 따라 발생되는 엔터티

비교적 발생량이 많으며 각종 통계자료에 이용될 수 있다. 

(주문, 청구, 미납)

 

▶속성

:업무에서 필요로 하는 인스턴스에서 관리하고자 하는 의미상 더이상분리되지 않는 최소의 데이터 단위

 

               엔터티 

- 인스턴스       -인스턴스

-속성(속성값)  -속성(속성값) 

                          한 개의 속성은 한 개의 속성값을 갖는다.

 

*기본속성: 사원이름, 직책이름, 고용일자 등 가장 일반적인 속성

 

*설계속성: 업무상 필요한 데이터 외에 데이터 모델링을 위해, 업무를 규칙화하기 위해 속성을 새로 만들거나 변형하여 정의하는 속성

 

*파생속성: 다른 속성에 영향을 받아 발생하는 속성으로, 계산된 값들이 해당.

                  다른속성에 영향을 받으므로 가급적 적게 정의하는 것이 좋음.

 

<도메인>
각 속성은 가질 수 있는 값의 범위가 있는데 이르 그 속성의 도메인 이라함.
엔터티 내에서 속성에 대한 데이터타입과 크기 그리고 제약사항을 지정한다.

<시스템카탈로그>
시스템 카탈로그는 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스이다.
시스템 카탈로그 내의 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블이다.

**속성의 명칭부여

  • 해당업무에서 사용하는 이름을 부여한다.
  • 서술식 속성명은 사용하지 않는다.
  • 약어사용은 가급적 제한한다.
  • 복합명사를 사용하여 구체적으로 명명함으로써 유일성을 확보하여 반정규화,통합 등의 작업시 혼란을 방지한다.

관계

-존재에 의한 관계

-행위에 의한 관계

ERD 표기는 단일화된 표기이다.

 

UML(Unified Modeling Language)에는 클래스다이어그램의 관계 중

연관관계    - 실선 표기

의존관계    -점선 표기

 

<관계의 표기법>

관계명 - 관계 시작점, 관계 끝점 (소속한다)

관계차수 - 1:1, 1:M, M:N

관계선택사양(선택성) - 필수관계, 선택관계

 

 두개의 엔터티 사이에서 관계를 도출 할 때 체크 사항
- 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?
- 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
- 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
- 업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가?

<관계읽기>

- 기준 엔터티를 한개 또는 각(Each)로 읽는다.

- 대상 엔터티의 관계참여도 즉 개수(하나, 하나 이상)를 읽는다.

-관계선택사양과 관계명을 읽는다.

 

 

식별자

- 엔터티 내에서 대표성을 가지는가         주식별자   vs   보조식별자

- 엔터티 내에서 스스로 생성되었는가     내부식별자  vs  외부식별자

- 단일 속성으로 식별이 되는가                단일식별자  vs  복합식별자

- 원래 업무적으로 의미가 있던      

식별자 속성을 대체하여 일련번호와 같이        본질식별자 vs 인조식별자

새롭게 만든 식별자를 구분하기 위해 

  • 주식별자에 의해 엔터티 내의 모든 인스턴스들이 유일하게 구분되어야 한다.
  • 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
  • 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다.
  • 주식별자가 지정이 되면 반드시 값이 들어와야 한다.

주식별자의 특징>

유일성: 주식벌자에 의해 엔터티내에 모든 인스턴스들을 유일하게 구분함

최소성: 주식별자를 구성하는 속성으 수는 유일성을 만족하는 최소의 수가 되어야 함

불변성: 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함

존재성: 주식별자가 지정되면 반드시 데이터 값이 존재(Null 안됨)

 

식별자와 비식별자관계 비교>

항목 식별자관계 비식별자관계
목적 강한 연결관계 표현 약한 연결관계 표현
자식 주식별자 영향 자식 주식별자의 구성에 포함됨 자식 일반 속성에 포함됨
표기법 실선 표현 점선 표현
연결고려사항 -반드시 부모엔터티 종속
-자식 주식별자구성에 부모 주식별자포함 필요
-상속받은 주식별자속성을 타 엔터티에 이전 필요
-약한 종속관계
-자식 주식별자구성을 독립적으로 구성
-자식 주식별자구성에 부모 주식별자 부분 필요
-상속받은 주식별자속성을 타 엔터티에 차단필요
-부모쪽의 관계참여가 선택관계

 

728x90

'공부 > SQLD' 카테고리의 다른 글

SQL기본 및 활용  (0) 2022.08.25
데이터 모델링의 이해  (0) 2022.08.24
SQL 기본  (0) 2022.08.23