데이터 모델 표시요소는 3가지(연산, 구조, 제약조건)으로 구성되어 있다.
연산(Operation)은 DB에 저장된 실제 데이터를 처리하는 작업에 대한 명세로 릴레이션을 조작하기 위한 관계 연산을 나타낸다
구조(Structure)은 DB에 논리적으로 표현될 대상으로서 개체 타입과, 개체 타입의 값의 관계로 구조 및 정적 성질을 표현하는 요소
제약 조건(Constraint)은 실제 데이터의 논리적인 제약 조건으로 데이터 무결성 유지를 위한 DB의 보편적 방법이다.
데이터 모델 절차는 요개논물 (요구조건 분석, 개념적 모델링, 논리적 모델링, 물리적 모델링) 순서로 절차가 진행된다.
개념적 설계는 사용자의 요구에 대한 트랜잭션을 모델링 하는 단계로 현실 세계에 대한 인식을 추상적, 개념적으로 표현 후 개념적 구조를 도출하는 데이터 모델이다.
논리적 설계는 트랜잭션의 인터페이스를 설계하는 단계로 DBMS에 맞는 논리적 스키마를 설계하는 단계이다. 이 단계에서 정규화를 수행한다.
물리적 설계는 논리 데이터 모델을 특정 DBMS의 특성 및 성능을 고려해 물리적인 스키마를 만드는 단계로 실질적으로 코드를 이용하 테이블 및 인덱스 등을 생성하고 반 정규화를 수행한다.
논리적 데이터 모델링의 종류에는 관계네(관계 데이터 모델, 계층 데이터 모델, 네트워크 데이터 모델)이 있다.
관계 데이터 모델은 논리적 구조가 2차원 테이블 형태로 구성괸 모델로 PK값과 FK값으로 관계를 포현하며 1:1, 1:N, N:M 관계를 자유롭게 표현한다.
계층 데이터 모델은 논리적 구조가 트리 형태로 구성된 모델로 상하관계(부모, 자식)가 존재하고 1:N 관계만 허용한다
네트워크 데이터 모델은 구조가 그래프 형태로 구성된 모델로 CODASYL DBTG 모델이라고도 불리며 상위, 하위 레코드 사이에 N:M(다대다) 관계를 만족하는 구조이다.
관계 데이터 모델
관계 데이터 모델은 위에서 언급한 것처럼 2차원 테이블 형태(행(row)과 열(column))로 구성되어 있는데, 가끔 기출 문제에 보면 카디널리티와 차수를 구하라고 한다. 카디널리티(Cardinality)는 튜플(Tuple)=row의 숫자를 말하고, 차수(Degree)는 애트리뷰트(Column)의 수를 말한다.
관계 대수는 RDB(Relationship DataBase, 관계형 데이터베이스)에서 원하는 정보와 그 정보를 유도하는 과정을 기술하는 절차적 정형 언어로 일반 집합 연산자와 순수 집합 연산자로 구성되어 있다.
일반 집합 연산자는 수학의 집합 개념을 릴레이션에 적용한 연산자로 합교차카(합집합, 교집합, 차집합, 카티션 프로덕트)로 구성되어 있다.
- 합집합 : U (말 그대로 두 릴레이션 합한 것)
- 교집합 : n (두 릴레이션의 공통 부분을 이용해 결과 릴레이션 구성)
- 차집합 : - (예를들어 R-S이라면 R에는 존재하고 S에는 존재하지 않는 튜플로 결과 릴레이션을 구성)
- 카티션 프로덕트 : X (각 릴레이션에 존재하는 모든 튜플을 연결해 새로운 튜플로 릴레이션 구성)
순수 집합 연산자는 셀프조디(셀렉트, 프로젝트, 조인, 디비전)으로 구성되어 있다.
- 셀렉트(select)
기호 : σ
표현 : σ조건(R) -> 릴레이션 R에서 조건을 만족하는 튜플 반환
- 프로젝트(Project)
기호 : π
표현 : π속성리스트(R) -> 릴레이션 R에 주어진 속성들의 값으로만 구성된 튜플 반환
- 조인(Join)
기호 : ▷◁
표현 : R ▷◁ S => 공통 속성을 이용해 R과 S의 튜플들을 연결해 만들어진 튜플 반환
- 디비전(Division)
기호 : ÷
표현 : R ÷ S => 릴레이션 S의 모든 튜플과 관련있는 R의 튜플을 반환
관계 해석은 프레디킷 해석에 기반했으며, 비절차적 언어(원하는 정보가 무엇이라는 것만 선언)로 튜플의 관계 해석과 도메인 관계 해석을 진행한다.
논리 데이터 모델링
논리 데이터 모델링의 속성은 3가지로 개체(Entity), 속성(Attribute), 관계(Relationship)로 구성된다
개체(Entity)는 사물, 사건 등으로 관리할 대상이 대는 실체
속성(Attribute)는 개체가 가지고 있는 성질, 요소를 말한다.
관계(Relationship)은 두 개체간의 관계를 정의한다.
정규화
정규화는 앞서 논리적 설계 단계에서 진행한다고 했었는데, 정규화를 통해 데이터의 중복성을 제거 및 이상 현상 방지, 데이터의 일관성과 정확성을 유지하기 위한 과정이다.
이때 이상 현상은(Annomaly) 크게 3가지로 삽삭갱(삽입, 삭제, 갱신 이상)이 있는데, 데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는비합리적 현상을 말한다.
삽입 이상은 정보 저장 시 해당 정보의 불필요한 정보를 입력해야 하는 경우를 말한다.
삭제 이상은 정보 삭제 시 원치 않은 다른 정보가 같이 삭제되는 경우를 말한다.
갱신 이상은 중복 데이터 중 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우를 말한다.
정규화의 단계는 6단계로 구성되어 있는데 원부이결다조 순서이다
1 정규형(1NF) : 테이블 내의 속성 값은 원자값을 가지고 있어야 한다. (속성값 1개만 가지고 있어야 함.)
2 정규형(2NF) : 부분 함수 종속 제거 (완전 함수적 종속 관계) - 별도의 데이블이 필요함.
고객명 | 서비스 이름 | 서비스 가격 | 서비스 이용 기간 |
홍길동 | 헬스 | 70,000 | 1달 |
장길산 | 수영 | 100,000 | 2달 |
홍길동 | 수영 | 100,000 | 2달 |
고객명과 서비스 이름이 서비스 이용 기간에 영향을 주고, 서비스 이름이 서비스 가격에 영향을 주는 관계를 부분함수 종속 관계라 하는데, 이 4개의 속성을 한 테이블에 두는 것은 부분함수 종속성으로 인해 2차 정규화를 만족하지 못해 부분 함수의 종속을 제거해야만 한다. 그래서 부분 관계인 서비스 이름과, 가격 관계를 별도의 테이블로 두면 함수 종속 관계가 제거되 2차 정규화를 만족하게 된다.
고객명 | 서비스 이름 | 서비스 이용 기간 |
홍길동 | 헬스 | 1달 |
장길산 | 수영 | 2달 |
홍길동 | 수영 | 2달 |
서비스 이름 | 서비스 가격 |
헬스 | 70,000 |
수영 | 100,000 |
3 정규화(3NF) : 이행함수 종속 제거
예를 들어 영향을 주는 관계가 A=>B, B=>C이면서 A=>C의 관계가 있는 경우 이행함수 종속 관계라 하는데, 이러한 이행함수 종속 관계를 제거하는 정규화가 3정규화이다.
예를들어 책번호가 출판사에 영향을 주고(A-B) 출판사는 홈페이지에 영향을 주는(B-C) 이러한 관계를 이행함수 종속 관계라 한다.
그럼 이 3 속성(책번호, 출판사, 홈페이지)를 한 테이블에 두는 것은 종속성으로 인해 3차 정규화를 만족하지 못한다. 그래서 테이블을 분리해야 하는데, 책번호, 출판사//출판사, 홈페이지 이렇게 테이블을 분리해야 한다.
보이스 -코드 정규화(BCNF) : 결정자 후보 키가 아닌 함수 종속 제거
학번과 과목명이 교수명에 영향을 주고, 교수명이 과목명에 영향을 줄 때, 교수명은 과목명에 영향을 주지만, 한 테이블에 같이 존재하고 교수명은 키가 아닌 상황이라 결정자인 교수명이 후보키가 아니다. 그래서 이 3 속성을 한 테이블에 두는 것은 교수명이 결정자이지만 후보 키가 아니기에 보이스- 코드 종규화를 만족하지 못한다. 그래서 테이블을 분리 해 교수명이 후보 키 역할을 하도록 보이스- 코드 정규화를 만족해야 한다.
4 정규형(4NF) : 다중 값 종속 제거(다치)
개발자 | 자격증 | 언어 |
홍길동 | 정처기 | C |
홍길동 | 빅분기 | C++ |
장길산 | 정보기 | Java |
개발자마다 자격증과 다양한 언어를 가질 수 있다. 특정 개발자마다 언어 값들이 여러 개 존재하는 경우 다치 종속 관계라 하는데 개발자별로 자격증, 개발자별로 언어를 가지고 있어, 테이블을 분리해 관리해야 다치 종속을 제거할 수 있다.
개발자 | 자격증 |
홍길동 | 정처기 |
홍길동 | 빅분기 |
장길산 | 정보기 |
개발자 | 언어 |
홍길동 | C |
홍길동 | C++ |
장길산 | Java |
5 정규형(5NF) : 조인 종속 제거
만약 조금 전 4차 정규화를 진행한 테이블에 ㄷ해ㅐ 조인 연산을 수행하게 되면 그 전과 데이터가 달라질 것이다. 때문에 이 테이블을 <개발자 자격증> <개발자 언어> <자격증 언어> 이렇게 3 테이블로 나눠야 한다.
반 정규화(De-Normalization)
비 정규화, 역정규화라고도 불리며 정규화된 개체, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 분리 등을 수행하는 데이터 모델링의 기법이다.
반 정규화의 기법에는 크게 3가지로 구분할 수 있는데, 테이블, 컬럼, 관계로 구분한다
테이블에는 테이블 병합, 분할, 중복 테이블 추가
컬럼에는 컬럼의 중복화
관계는 중복관계의 추가
'자격증 > 정보처리기사' 카테고리의 다른 글
3장 데이터 입출력 구현 - (3) 데이터베이스 기초 활용하기 (0) | 2022.07.08 |
---|---|
3장 데이터 입출력 구현 - (2) 물리 데이터 저장소 설계 (0) | 2022.07.08 |
2장 화면 설계-(2) UI 설계 (0) | 2022.07.03 |
2장 화면 설계-(1) UI 요구사항 확인 (0) | 2022.07.01 |
정보처리기사 - 1장 요구사항 확인(현행 시스템 분석) (0) | 2022.06.25 |