데이터 전환 c
- 운영 중인 기존 정보 시스템에 축적되어 있는 데이터를 추출 (Extraction)하여 새로 개발할 정보 시스템에서 운영할 수 있도록 변환 (Transformation)한 후 적재(Loading)하는 일련의 과정을 말한다.
- ETL(Extraction.Transformation,Load). 추출, 변환, 적재 과정이라고 한다.
- 데이터 이행(Data Migration) 또는 데이터 이관이라고도 한다.
데이터 품질 분석 → 오류 데이터 측정 → 오류 데이터 정제순으로 진행한다.
통합된 데이터(Intergrated Data) | 자료의 중복을 배제한 데이터의 모임 |
---|---|
저장된 데이터(Stored Data) | 컴퓨터가 접근할 수 있는 저장메체에 저장된 자료 |
운영 데이터(Operational Data) | 조직의 고유한 업무를 수행하는데 반드시 필요한 자료 |
공용데이터(Shared Data) | 여러 응용시스템들이 공동으로 소유하고 유지하는 자료 |
정의(Definition)기능 | 데이터의 형(Type)과 구저에 대한 정의, 이용방식, 제약 조건 등을 명시하는 기능 |
---|---|
조작(Manipulation)기능 | 데이터베이스 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공하는 기능 |
제어(Control)기능 | 데이터의 무결성, 보안, 권한 검사, 병행제어를 제공하는 기능 |
데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
종류 | 내용 |
---|---|
외부 스키마 | 사용자가 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것 |
개념 스키마 |
|
내부 스키마 |
|
1 | 요구조건 분석 | 요구조건 명세서 작성 |
---|---|---|
2 | 개념적 설계 | 개념 스키마, 트랜잭션 모델링, E-R 모델 |
3 | 논리적 설계 | 목표 DBMS에 맞는 논리 스키마 설계, 트랜젝션 인터페이스 설계 |
4 | 물리적 설계 | 목표 DBMS에 맞는 물리적 구조의 데이터로 변환 |
5 | 구현 | 목표 DBMS의 DDL(데이터 정의어)로 데이터베이스 생성, 츠랜잭션 작성 |
요소 | 내용 |
---|---|
구조(Structure) | 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 |
연산(Operation) | 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구 |
제약 조건(Constraint) | 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건 |
형태 | 내용 |
---|---|
일 대 일(1:1) | 개체 집합 A의 각 원소가 개체 집합 B의 원소 한개와 대응하는 관계 |
일 대 다(1:N) | 개체 집합 A의 각원소는 개체 집합 B의 원소 여러개와 대응하고 있지만, 개체 집합 B의 각 원소는 개체집합 A의 원소 한개와 대응하는 관계 |
다 대 다(N:M) | 개체집합 A의 각 원소는 개체 집합 B의 원소 여러 개와 대응하고, 개체집합 B의 각 원소도 개체집합 A의 원소 여러개와 대응하는 관계 |
기호 | 기호이름 | 의미 |
---|---|---|
사각형 | 개체(Entity)타입 | |
마름모 | 관계(Relationship)타입 | |
타원 | 속성 (Attribute) | |
이중 타원 | 다중값 속성 (복합 속성) | |
밑줄 타원 | 기본키 속성 | |
복수 타원 | 복합속성 (예) 성명은 성과 이름으로 구성 | |
관계 | 1:1, 1:N, N:M 등의 개체간 관계에 대한 대응수를 선위에 기술함 | |
선,링크 | 개체 타입과 속성을 연결 |
릴레이션(Relation)은 데이터들을 표(Table)의 형태로 표현한 것으로, 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성된다.
속성(Attribute) | |||||||
---|---|---|---|---|---|---|---|
학번 | 이름 | 학년 | 신장 | 학과 | 릴레이션 스키마 | 릴레이션 | |
튜플(Tuple) | 19001 | 김예소 | 2 | 170 | CD | 릴레이션 인스턴스 | |
20002 | 고강민 | 1 | 168 | CD | |||
19012 | 이향기 | 2 | 180 | ID | |||
17032 | 김동준 | 4 | 174 | ED | |||
학년의 도메인 (domain) |
성별애트리뷰트의 도메인은
남과
여로, 그 외의 값은 입력될 수 없다.
유일성 (Unique) | 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함 |
---|---|
최소성 | 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함 |
이상이란 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 예기치 않게 발생하는 곤란한 현상을 의미한다.
테이블에 데이터를 삽입할 때 의도와 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
테이블에서 튜플을 삭제할 때 의도와 상관없는 값들도 함께 삭제되는, 즉 연쇄 삭제가 발생하는 현상
테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성(Inconsistency)이 생기는 현상
아래의 주문목록 테이블을 가지고 정규화 과정을 살펴보자. 주문목록 테이블의 기본키 (Primary Key)는 제품번호이다.
주문목록 (비정규 릴레이션)
제품번호 | 제품명 | 재고수량 | 주문번호 | 고객번호 | 주소 | 주문수량 |
---|---|---|---|---|---|---|
1001 | 모니터 | 2000 | A345, D347 |
100, 200 |
서울, 부산 |
150, 300 |
1007 | 마우스 | 9000 | A210, A345, B230 |
300, 100, 200 |
광주, 서울, 부산 |
600, 400, 700 |
1201 | 키보드 | 2100 | D347 | 200 | 부산 | 300 |
제품
제품번호 | 제품명 | 재고수량 |
---|---|---|
1001 | 모니터 | 2000 |
1007 | 마우스 | 9000 |
1201 | 키보드 | 2100 |
제품주문
주문번호 | 제품번호 | 고객번호 | 주소 | 주문수량 |
---|---|---|---|---|
A345 | 1001 | 100 | 서울 | 150 |
D347 | 1001 | 200 | 부산 | 300 |
A210 | 1007 | 300 | 광주 | 600 |
A345 | 1007 | 100 | 서울 | 400 |
B230 | 1007 | 200 | 부산 | 700 |
D347 | 1201 | 200 | 부산 | 300 |
주문목록 테이블에서 반복되는 주문 관련인 주문번호, 고객번호, 주소, 주문수량을 분리하면 위와같이 제1정규형인 제품테이블과 제품주문 테이블이 만들어진다.
주문번호, 제품번호 | → | 고객번호, 주소, 주문수량 |
주문번호 | → | 고객번호, 주소 |
고객번호 | → | 주소 |
제품주문 테이블에서 함수적 종속이 되는 속성들을 분리하여 제2정규형을 만들 수 있다.
주문목록
주문번호 | 제품번호 | 주문수량 |
---|---|---|
A345 | 1001 | 150 |
A347 | 1001 | 300 |
A210 | 1007 | 600 |
A345 | 1007 | 400 |
B200 | 1007 | 700 |
D347 | 1201 | 300 |
주문
주문번호 | 고객번호 | 주소 |
---|---|---|
A345 | 100 | 서울 |
D347 | 200 | 부산 |
A210 | 300 | 광주 |
B230 | 200 | 부산 |
제품주문 테이블에서 주문번호에 함수적 종속이 되는 속성인 고객번호와 주소를 분리 (즉 부분 함수적 종속을 제거)해내면 위와 같이 제2정규형인 주문목록 테이블과 주문 테이블로 무손실 분해된다.
주문번호 | → | 고객번호, 주소 |
고객번호 | → | 주소 |
주문 테이블에서 이행적 함수적 종속을 제거하여 제3정규형을 만들 수 있다.
주문
주문번호 | 고객번호 |
---|---|
A345 | 100 |
D347 | 200 |
A210 | 300 |
B230 | 200 |
고객
고객번호 | 주소 |
---|---|
100 | 서울 |
200 | 부산 |
300 | 광주 |
주문 테이블에서 이행적 함수적 종속(주문번호 → 주소)을 제거하여 무손실 분해함으로서 위와 같이 제3정규형인 주문 테이블과 고객 테이블이 생성된다.
수강_교수
학번 | 과목명 | 담당교수 |
---|---|---|
211746 | 데이터베이스 | 홍길동 |
211747 | 네트워크 | 유관순 |
211748 | 인공지능 | 윤봉길 |
211749 | 데이터베이스 | 홍길동 |
211747 | 데이터베이스 | 이순신 |
211749 | 네트워크 | 유관순 |
수강_교수테이블에서 결정자가 후보키가 아닌 속성을 분리하여 BCNF를 만들 수 있다.
수강
학번 | 담당교수 |
---|---|
211746 | 홍길동 |
211747 | 유관순 |
211748 | 윤봉길 |
211749 | 홍길동 |
211747 | 이순신 |
211749 | 유관순 |
교수
담당교수 | 과목명 |
---|---|
홍길동 | 데이터베이스 |
이순신 | 데이터베이스 |
윤봉길 | 인공지능 |
유관순 | 네트워크 |
수강_교수 테이블에서 BCNF를 만족하지 못하게 하는 속성(즉 담당교수 → 과목명)을 분리해내면 위와 같이 BCNF인 수강 테이블과 교수 테이블로 무손실 분해된다.
제 4정규형은 테이블 R에 다중값 종속(MVD : Multi Valued Dependency) A →→ B 가 존재할 경우 R의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형이다.
다중 값 종속(다치 종속) : A, B, C 3개의 속성을 가진 테이블 R에서 어떤 복합 속성 (A,C)에 대응하는 B값의 집합이 A값에만 종속되고 C값에는 무관하면 B는 A에 다중 값 종속이라 하고 A →→ B로 표기함
제 5정규형은 테이블 R의 모든 조인 종속(JD : Join Dependency)이 R의 후보키를 통해서만 성립되는 정규형이다.
조인 종속 : 어떤 테이블 R의 속성에 대한 부분집합 X,Y, ..., Z가 있다고 하자. 이때 만일 테이블R이 자신의 프로젝션(Projection) X, Y, ..., Z를 모두 조인한 결과와 동일한 경우 테이블 R은 조인 종속 JD(X, Y, ..., Z)를 만족한다고 함
집계 테이블의 추가 | 집계 데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거(Trigger)를 설정하여 사용하는 것 |
---|---|
진행 테이블의 추가 | 이력 관리 등의 목적으로 추가하는 테이블 |
특정 부분만을 포함하는 테이블의 추가 | 데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성 |
특성 | 의미 |
---|---|
Atomicity (원자성) | 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않도록 복구(Rollback)되어야 함. |
Consistency (일관성) | 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함. |
Isolation (독립성, 격리성, 순차성) | 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없다. |
Durability (영속성, 지속성) | 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함. |