자격증/sqld

[데이터베이스] sqld 데이터 모델링의 이해

Ellie67 2021. 6. 21. 14:39

-데이터베이스 개론 2판, SQL 자격검정 실전문제 학습 후 정리한 내용입니다-

데이터베이스 개론 2판
 

IT CookBook, 데이터베이스 개론(2판)

데이터베이스로 첫 항해를 떠나는 이들에게 지도와 돛이 되어주는 책입니다. 마인드맵으로 생소한 개념 간의 관계를 한눈에 보여주고, 친근한 예와 비유를 들어 명료하게 풀어내, 데이터베이스

www.hanbit.co.kr

SQL 자격검정 실전문제
 

SQL 자격검정 실전문제 - YES24

SQL 자격검정 실전문제는 국가공인 SQL 전문가 및 국가공인 SQL 개발자 자격시험 대비 수험서로 SQL 전문가 가이드에서 다루고 있는 데이터 모델링의 이해, SQL기본 및 활용, SQL 고급 활용 및 튜닝 등

www.yes24.com

 

데이터베이스: 필요한 데이터만 선별하여 컴퓨터에 저장한 것

 

데이터 모델링

- 현실세계를 일정한 양식에 맞추어 표현하는 추상화의 의미를 가진다. [추상화]

- 시스템 구현을 포함한 업무분석 및 업무형상화를 위해 진행하는 사전단계의 작업으로 데이터베이스 구축을 위한 사전작업의 의미가 있다.

- 복잡한 현실을 이해하기 쉽게 하는 단순화의 의미가 있다. [단순화]

- 누구나 이해 가능하도록 정확하게 현상을 기술하는 정확화의 의미를 가진다. [정확화]

 

발생시점에 따른 엔터티 분류

- 기본/키엔터티(Fundamental entity, key entity): 업무에 원래 존재하는 정보. 엔터티와의 관계에 의해 생성되지 않고 독립적으로 생성 가능하다. 타 엔터티의 부모 역할. 다른 엔터티로부터 주식별자를 상속받지 않고 자신의 고유한 주식별자를 갖는다.

() 사원, 부서, 고객, 상품, 자재

 

- 중심엔터티(main entity): 기본엔터티로부터 발생. 업무에서 중심적인 역할을 한다. 데이터의 양이 많이 발생되고 다른 엔터티와의 관계를 통해 많은 행위엔터티를 생성한다.

() 계약, 사고, 예금원장, 청구, 주문, 매출

 

- 행위엔터티(active entity): 두 개 이상이 부모엔터티로부터 발생되고 자주 내용이 바뀌거나 데이터량이 증가된다. 분석초기 단계에서는 잘 나타나지 않으며 상세 설계단계나 프로세스와 상관모델링을 진행하면서 도출될 수 있다.

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

 

데이터 모델링을 하는 이유

1. 업무정보를 구성하는 기초가 되는 정보들에 대해 일정한 표기법에 의해 표현함으로써 정보시스템 구축의 대상이 되는 업무 내용을 정확하게 분석하기 위함

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

=> 단지 데이터베이스만을 구축하기 위한 용도로 쓰이는 것이 아니라 데이터모델링 자체로서 업무를 설명하고 분석하는 부분에서도 매우 중요한 의미를 가지고 있다.

 

데이터모델링 유의할 사항

- 중복성: 데이터모델은 같은 데이터를 사용하는 사람, 시간, 그리고 장소를 파악하는데 도움을 줌으로써 데이터베이스가 여러 장소에 같은 정보를 저장하지 않도록 한다.

 

- 비유연성: 데이터모델을 어떻게 설계했느냐에 따라 사소한 업무변화에도 데이터 모델이 수시로 변경되면서 유지보수 어려움. 데이터 정의를 데이터 사용 프로세스와 분리해서 데이터 모델링을 변화가 애플리케이션과 데이터베이스에 중대한 변화를 일으킬 가능성 줄임

 

- 비일관성: 개발자가 서로 연관된 다른 데이터와 모순된다는 고려 없이 일련의 데이터를 수정할 수 있다. 데이터와 데이터 간의 상호 연관 관계에 대해 명확하게 정의해서 예방한다. 사용자가 처리하는 프로세스 혹은 관련된 프로그램과 테이블의 연계성을 높이는 것은 업무 변경을 취약하게 만든다.

 

 

개념적 데이터 모델링: 추상화 수준 높고, 업무중심적, 포괄적인 수준의 모델링 진행. 전사적 데이터 모델링(전사적 데이터 모델링: 데이터 모델링 과정이 전 조직에 걸쳐 이루어짐), EA 수립시 많이 이용

 

논리적 데이터 모델링: 시스템으로 구축하고자 하는 업무에 대해 키속성, 관계 등을 정확하게 표현. 재사용성 높음

 

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

 

 

ANSI-SPARC 3단계 구조

- 외부스키마 = 서브 스키마 = 사용자 뷰

: 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조 정의. 하나의 데이터베이스 시스템에는 여러 개의 외부 스키마가 존재할 수 있고, 하나의 외부 스키마를 여러 개의 응용 프로그램이나 사용자가 공용할 수 있음. 같은 데이터베스에 대해서도 서로 다른 관점을 정의할 수 있도록 허용. 일반 사용자는 질의어(SQL)를 사용하여 DB 사용

- 개념스키마 = 전체적인 뷰

: 데이터베이스의 전체적인 논리적 구조. 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존제. 기관이나 조직체 관점에서 데이터베이스를 정의한 것. 관리자에 의해 구성됨

- 내부스키마

: 물리적 저장장치 입장에서 본 데이터베이스 구조. 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마

 

데이터베이스에서 가장 중요한 엔터티를 왼쪽 상단에 배치

 

ERD 작성 순서

1. 엔터티를 적절하게 배치

2. 엔터티간 관계 설정

3. 관계명 기술

4. 관계의 참여도 기술

5. 관계의 필수여부 기술

 

엔터티 특징

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

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

- 영속적으로 존재하는 인스턴스의 집합

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

- 속성이 있어야 한다.

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

 

엔터티를 명명하는 일반적인 기준

- 현업업무에서 사용하는 용어 사용

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

- 단수명사 사용

- 유일한 이름

- 엔터티 생성의미대로 이름 부여

 

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

 

엔터티, 인스턴스, 속성, 속성값의 관계

- 한 개의 엔터티는 두 개 이상의 인스턴스 집합

- 한 개의 엔터티는 두 개 이상의 속성을 갖는다.

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

 

속성의 특성에 따른 분류

- 기본 속성: 업무 분석을 통해 정의한 속성

() 제품이름, 제조원가, 제조년월, 원금, 예치기간, 이자율

- 설계 속성: 원래 업무상 존재하지 않지만 설계를 하면서 도출해내는 속성

() 001- 식품용기, 002- 약품용기, 예금분류

- 파생 속성: 다른 속성으로부터 계산이나 변형이 되어 생성되는 속성

() 이자

 

pk 속성(식별자 속성): 엔터티에 존재하는 인스턴스의 유일성을 보장해 주는 속성이나 속성 집합

 

속성의 도메인: 각 속성이 가질 수 있는 값의 범위. 엔터티 내에서 속성에 대한 데이터타입과 크기, 제약사항 지정

 

시스템 카탈로그: 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스

 

속성 명칭 부여

- 해당업무에서 사용하는 이름을 부여

- 서술식 속성명은 사용하지 않는다.

- 약어 사용 가급적 제한

- 유일성 확보

 

데이터모델링(ERD)에서는 존재적 관계와 행위에 희한 관계를 구분하는 표기법이 없으며, UML에서는 연관관계와 의존관계에 대해 다른 표기법을 가지고 표현하게 되어 있다.

 

관계 표기법

- 관계명: 관계의 이름

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

- 관계선택사양: 필수관계, 선택관계

 

두 개의 엔터티 사이에 정의한 관계를 체크하는 사항

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

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

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

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

 

관계 읽기

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

- 대상 엔터티의 관계참여도 즉 개수를 읽는다.

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

 

식별자 종류

분류 식별자 설명
대표성 여부 주식별자 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자. 타엔터티와 참조관계를 연결할 수 있는 식별자
보조식별자 주식별자 역할을 못해서 참조관계 연결을 못함
스스로 생성여부 내부식별자 엔터티 내부에서 스스로 만들어지는 식별자
외부식별자 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자
속성의 수 단일식별자 하나의 속성으로 구성된 식별자
복합식별자 둘 이상의 속성으로 구성된 식별자
대체 여부 본질식별자 업무에 의해 만들어지는 식별자
인조식별자 업무적으로 만들어지지는 않지만 원조 식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자

 

주식별자 지정시 고려사항

- 주식별자에 의해 엔터티 내의 모든 인스턴스들이 유일하게 구분되어야 한다.

- 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.

- 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다.

- 주식별자가 지정이 되면 반드시 값이 들어와야 한다.

 

주식별자 특징

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

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

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

- 존재성: 주식별자가 되면 반드시 데이터 값이 존재해야 한다.

 

식별자의 분류체계

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