데이터 모델 ⭐⭐⭐
데이터 모델(Data Model) 개념
· 현실 세계의 정보를 인간과 컴퓨터가 이해할 수 있도록 추상화하여 표현한 모델
· 데이터 모델 표시요소 (연구해서 제시해!)
표시요소 | 설명 |
연산 (Operation) |
· 데이터베이스에서 실제 데이터를 처리하는 작업에 대한 명세 · 릴레이션을 조작하기 위한 연산을 나타냄 (SELECT, PROJECT, JOIN, DIVISION) |
구조 (Structure) |
· 데이터베이스에 논리적으로 표현될 대상으로서의 개체 타입과 개체 타입 간의 관계 · 데이터 구조 및 정적 성질을 표현하는 요소 |
제약조건 (Constraint) |
· 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건 · 데이터 무결성 유지를 위한 DB의 보편적 방법 · 릴레이션의 특정 컬럼에 설정하는 제약을 의미(개체 무결성, 참조 무결성 등) |
데이터 모델 절차 ( 요놈말은 개념도 없고 논리도 없고!! 물먹이네!)
단계 | 모델 | 설명 |
요구조건 분석 | - | · 도출된 요구사항 간 상충 해결, 범위 파악하여 외부 환경과의 상호작용을 분석을 통해 데이터에 대한 요구 분석 |
개념적 설계 | 개념적 데이터 모델 | · 사용자의 요구에 대한 트랜잭션을 모델링 하는 단계 · 현실 세계에 대한 인식을 추상적, 개념적으로 표현하여 개념적 구조를 도출하는 데이터 모델 · 트랜잭션 모델링, View 통합방법 및 Attribute 합성 고려 · DB의 종류와 관계가 없음 · 주요 산출물 : 개체관계 다이어그램(ERD) |
논리적 설계 | 논리적 데이터 모델 | · 트랜잭션의 인터페이스를 설계하는 단계 · DBMS에 맞는 논리적 스키마를 설계하는 단계 · 업무의 모습을 모델링 표기법으로 형상화하여 사람이 이해하기 쉽게 표현한 데이터 모델 · 논리적 설계 단계에서 정규화를 수행 · 논리적 데이터베이스 구조로 매핑(Mapping) · 스키마의 평가 및 정제 · 논리적 데이터 모델을 통해 '관계 데이터 모델', '계층 데이터 모델', '네트워크 데이터 모델', '객체 지향 데이터 모델', '객체-관계 데이터 모델' 중 하나의 모델에 맞게 설계 · 관계형 데이터베이스에서는 테이블을 설계하는 단계 |
물리적 설계 | 물리적 데이터 모델 | · 논리 데이터 모델을 특정 DBMS의 특성 및 성능을 고려하여 물리적인 스키마를 만드는 단계 · 무논리 데이터 모델을 사용하고자 하는 각 DBMS의 특성을 고려하여 데이터베이스 저장구조(물리 데이터 모델)로 변환하는 과정 · 테이블, 인덱스, 뷰, 파티션 등 객체를 생성 · 응답시간, 저장 공간의 효율화, 트랜잭션 처리를 고려하여 설계 · 성능 측면에서 반 정규화를 수행 · 레코드 집중의 분석 및 설계 · 저장 레코드 양식 설계 · 접근 경로(Access Path) 설계 · 주요 산출물 : 테이블 정의서 |
* 정규화
관계형 데이터 모델에서 데이터의 중복성을 제거하여, 이상 현상을 방지하고, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해를 하는 과정
* 반정규화
정규화된 엔티티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등 수행하는 데이터 모델링의 기법
논리 데이터 모델 검증⭐⭐⭐
논리 데이터 모델링 개념
- 업무의 모습을 모델링 표기법으로 형상화하여 사람이 이해하기 쉽게 표현하는 프로세스
- 개념 모델로부터 업무 영역의 업무 데이터 및 규칙을 구체적으로 표현한 모델
* 개념 모델
주제 영역과 핵심 데이터 집합 간의 관계를 정의하는 모델, 전체 모델에서 중요한 골격이 되는 개체와 관계위주의 모델
논리적 데이터 모델링 종류
종류 | 설명 |
관계 데이터 모델 | · 논리적 구조가 2차원 테이블 형태로 구성된 모델 · 기본 키(PK)와 이를 참조하는 외래 키(FK)로 관계 표현 · 1:1, 1:N, N:M 관계를 자유롭게 표현 |
계층 데이터 모델 | · 논리적 구조가 트리 형태로 구성된 모델 · 상하관계가 존재한다(부모-자식) · 1:N 관계만 허용 |
네트워크 데이터 모델 | · 논리적 구조가 그래프 형태로 구성된 모델 · CODASYL DBTG모델이라고 불림 · 상위와 하위 레코드 사이에 다대다(N:M) 관계를 만족하는 구조 |
관계 데이터 모델
1. 관계 데이터 모델
- 관계 데이터 모델 개념
└ 데이터를 행과 열로 구성된 2차원 테이블 형태로 구성한 모델
└ 수학자 E.F.Codd 박사가 제안한 모델
- 관계데이터 모델의 구성요소
구성요소 | 설명 |
릴레이션(Relation) | 행(Row)과 열(Column)로 구성된 테이블 |
튜플(Tuple) | 릴레이션의 행(Row)에 해당되는 요소 |
속성(Attribute) | 릴레이션의 열(Column)에 해당되는 요소 |
카디널리티(Cardinality) | 튜플(Row)의 수 |
차수(Degree) | 애트리뷰트(Column)의 수 |
스키마(Schema) | 데이터베이스의 구조, 제약 조건 등의 정보를 담고 있는 기본적인 구조 |
인스턴스(Instance) | 정의된 스키마에 따라 생성된 테이블에 실제 저장된 데이터의 집합 |
2. 관계 데이터 모델의 표현
- 데이터 간의 관계를 기본 키와 이를 참조하는 외래 키로 표현
- 테이블 간 관계를 1:1, 1:N, N:M 관계로 목적에 맞게 표현
3. 관계 대수
- 관계 대수 개념 : 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어
- 관계 대수 연산자의 종류
└ 일반 집합 연산자 : 수학적 집합 개념을 릴레이션에 적용한 연산자 (힙합과 발라드가 교차하는 마이카~)
연산자 | 기호 | 표현 | 설명 |
합집합(Union) | ∪ | R∪S | 합병 가능한 두 릴레이션 R과 S의 합집합 |
교집합(Intersection) | ∩ | R∩S | 릴레이션 R과 S에 속하는 모든 튜플로 결과 릴레이션 구성 |
차집합(Difference) | - | R-S | R에 존재하고 S에 미 존재하는 튜플로 결과 릴레이션 구선 |
카티션 프로덕트 | × | R×S | R과 S에 속한 모든 튜플을 연결해 만들어진 새로운 튜플로 릴레이션 구성 |
└ 순수 관계 연산자 : 관계 데이터베이스에 적용할 수 있도록 특별히 개발한 관계 연산자(셀프조인하면 디진다!)
연산자 | 기호 | 표현 | 설명 |
셀렉트(Select) | σ | σ조건(R) | · 릴레이션 R에서 조건을 만족하는 튜플을 반환 |
프로젝트(Project) | π(파이) | π속성리스트(R) | · 릴레이션 R에서 주어진 속성들의 값으로만 구성된 튜플 반환 |
조인(Join) | ⋈ | R⋈S | · 공통 속성을 이용해 R과 S의 튜플들을 연결해 만든어진 튜플 반환 |
디지번(Division) | ÷ | R÷S | · 릴레이션 S의 모든 튜플과 관련 있는 R의 튜플 반환 · 릴레이션 A, B가 있을 때 릴레이션 B 조건에 맞는 것들만 릴레이션 A에서 튜플을 꺼내 프로젝션하는 관계 |
4. 관계 해석
- 관계 해석 개념 : 튜플 관계 해석과 도메인 관계 해석을 하는 비절차적 언어
- 관계 해석 특징 : 프레디킷 해석에 기반한 언어이며 비절차적 언어(원하는 정보가 무엇이라는 것만 선언)이다.
논리 데이터 모델링 속성 (개속관)
구조 | 설명 |
|
개체 (Entity) |
· 관리할 대상이 되는 실체 (사물 또는 사건) · 피터 챈 모델 개체 표시 : 사각형(ㅁ) · 까마귀발 모델 개체 표시 : 표 형식 |
|
속성 (Attributes) |
· 관리할 정보의 구체적 항목 (요소 또는 성질) · 피터 챈 모델 속성 표시 : 타원형(O) · 까마귀발 모델 속성 표시 : 표 내부 · 속성명은 단수형으로 명명, 개체명을 사용하지 않는다. · 속성이 필수 사항(Not Null)인지, 아닌지(Null) 고려하여 작성한다. |
|
관계 (Relationship) |
· 개체 간의 대응 관계 (두 객채의 관계를 정의) · 피터 챈 모델 관계 표시 : 마름포(◇) |
|
까마기발 모델 관계 표시 | 의미 | |
1:1 관계를 표시한다. | ||
1:m 관계를 표시한다. | ||
n:m 관계를 표시한다. |
개체-관계(E-R) 모델
1. 개체-관계(E-R) 모델 개념
- 현실 세계에 존재하는 데이터와 그들 간의 관계를 사람이 이해할 수 있는 형태로 명확하게 표현하기 위해서 가장 널리 사용되고 있는 모델
- 논리 데이터 모델링에서는 모든 이해당사자와 의사소통의 보조 자료로 활용한다.
- 요구사항으로부터 얻어낸 정보들을 개체, 속성, 관계로 기술한 모델이다.
2. 개체-관계(E-R) 다이어그램 기호
구성 | 기호 | |
개체 | □ | 사각형 |
관계 | ◇ | 마름모 |
속성 | ○ | 타원 |
다중 값 속성 | ◎ | 이중타원 |
관계-속성 연결 | ― | 선 |
정규화
1. 정규화(Normalization)의 개념
- 관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상현상을 방지하고, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정
2. 이상현상 (삽삭갱)
- 데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적 현상
이상 현상 | 설명 |
삽입 이상 | 정보 저장 시 해당 정보의 불필요한 세부정보를 입력해야 하는 경우 |
삭제 이상 | 정보 삭제 시 원치 않는 다른 정보가 같이 삭제되는 경우 |
갱신 이상 | 중복 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우 |
3. 정규화의 단계 (도부이결다조)
단계 | 조건 |
1정규형(1NF) | · 도메인이 원자값으로 구성 · 원자값으로 구성, 반복 속성/중복 제거가 필요하다. |
2정규형(2NF) | · 부분 함수 종속 제거(완전 함수적 종속 관계) · 주식별자가 아닌 속성을 분리한다. |
3정규형(3NF) | · 이행함수 종속 제거 · 속성에 종속적인 속성을 분리한다. |
보이스-코드 정규형(BCNF) | · 결정자 후보 키가 아닌 함수 종속 제거 · 모든 결정자가 후보 키가 되도록 하여 결정자 함수 종속성을 제거 · 3차 정규형을 만족하면서 모든 결정자가 후보키 집합에 속한 정규형 · 3차 정규형으로 해결할 수 없는 이상 현상을 해결할 수 있다. |
4정규형(4NF) | · 다치(다중 값) 종속 제거 · 특정 속성값에 따라 선택적인 속성을 분리한다. |
5정규형(5NF) | · 조인 종속 제거 |
반 정규화 (비정규화, 역정규화)
1. 반 정규화 개념
- 정규화된 엔티티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법이다.
2. 반 정규화 특징
장점 | 단점 |
· 반 정규화된 데이터 구조는 성능 향상과 관리의 효율성이 증가 | · 데이터의 일관성 및 정합성 저하 · 유지를 위한 비용이 별도로 발생하여 성능에 나쁜 영향을 미칠 수 있음 |
우선순위 비교 조정 과정 중요 : 데이터의 일관성과 무결성 OR 데이터베이서의 성능과 단순화 |
3. 비 정규화 절차
절차 | 설명 |
대량 조사 | 범위 처리 빈도수, 대량 범위 처리, 통계성 프로세스, 테이블 조인 수를 고려한다. |
다른방법 유도 | 뷰 테이블, 클러스터링, 인덱스의 조정, 어플리케이션의 변경 등을 유도한다. |
반 정규화를 적용한다. |
4. 반 정규화 기법 (테병분중 컬중 관중)
구분 | 수행 방법 | 설명 | |
테이블 | 테이블 병합 | · 1:1 관계, 1:M 관계를 통합하여 조인 횟수를 줄여 성능을 향상 · 슈퍼타입/서브타입 테이블 통합 통해 성능 향상 |
|
테이블 분할 | · 테이블을 수직 또는 수평으로 분할하는 것으로 파티셔닝이라고 함 | ||
종류 | 설명 | ||
수평 분할 | · 테이블 분할에 레코드를 기준으로 활용 | ||
수직 분할 | · 하나의 테이블이 가지는 컬럼의 개수가 증가하는 경우 사용 · 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 보안을 적용해야하는 속성 분할 |
||
중복 테이블 추가 | · 대량의 데이터들에 대한 집계합수를 사용하여 실제 통계정보를 계산하는 경우에 효과적인 수행을 위해 별도의 통계 테이블을 두거나 중복 테이블을 추가 | ||
종류 | 설명 | ||
집계 테이블 | 집계 데이터를 위한 테이블을 생성하고 각 원본 테이블에 트리거를 설정하여 사용하는 것으로, 트리거의 오버헤드에 유의 필요 | ||
진행 테이블 | 이력 관리 등의 목적으로 추가하는 테이블로, 적절한 데이터양의 유지와 활용도를 높이기 위해 기본키를 적절히 설정 | ||
특정 부분만을 포함하는 테이블 | 데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블을 생성 | ||
컬럼 | 컬럼 중복화 | · 조인 성능 향상을 위한 중복 허용 | |
관계 | 중복관계 추가 | · 데이터를 처리하기 위한 여러 경로를 거쳐 조인이 가능하지만, 이때 발생할 수 있는 성능 저하를 예방하기 위해 추가적 관계를 맺는 방법 |
※ 해당 글은 수제비 2022 도서 참고하였습니다.
'정보처리기사' 카테고리의 다른 글
Ⅲ 데이터 입출력 구현 - 데이터베이스 기초 활용하기 (0) | 2023.02.28 |
---|---|
Ⅲ 데이터 입출력 구현 - 물리 데이터 저장소 설계 (0) | 2023.02.20 |
Ⅱ 화면설계 - UI 설계 (1) | 2023.01.31 |
Ⅱ 화면설계 - UI 요구사항 확인 (0) | 2023.01.30 |
[2023] 정보처리기사 시험 일정 (0) | 2023.01.05 |