티스토리 뷰
2017.03.13 데이터베이스 스터디에서
정보처리기사 실기 범위 기준으로 데이터베이스 공부를 하였습니다.
이 글은 그 내용을 바탕으로 정리한 내용입니다.
참고로 정보처리기사 실기 시험을 위한 정리는 아닙니다ㅠ
[데이터베이스 개념]
- 데이터베이스 : 상호 관련된 데이터들의 모임.
- 데이터 언어
- DDL(Data Definition Language) : '정의어'라고 하며 / 데이터베이스 구축, 변경, 제약조건 정의를 위한 언어
- DML(Data Manipulation Language) : '조작어'라고 하며 / 데이터 처리, 검색, 삽입, 삭제 갱신 연산을 위한 언어
- DCL(Data Control Language) : '제어어'라고 하며 / 보안 및 권한 제어, 무결성, 회복, 병행제어를 위한 언어
- 스키마(Schema)
- 데이터의 구조적 특성 의미
- 데이터 사전(시스템 카탈로그)에 저장된다.
* 스키마의 3계층
- 외부 스키마 : 사용자나 응용 프래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의
- 개념 스키마 : 개체 간의 관계와 제약 조건 나타냄, DB접근 권한, 보안 정책 및 무결성 규정에 관한 명세 정의 (DBA에 의해 작성)
- 내부 스키마 : DB의 물리적 구조 정의 / 프로그래머나 시스템 설계자가 보는 관점의 스키마 / 데이터의 실제 저장 방법
[데이터베이스 설계]
- 데이터베이스 설계 : DB의 구조, 즉 DB 스키마를 개발하는 과정.
1. 요구 조건 분석
- 사용할 사람이 필요로 하는 용도 파악
=> 요구 조건 명세서
2. 개념적 설계
- 개념 스키마 모델링(데이터 중심 설계)과 트랜잭션 모델링(데이터 처리 중심 설계) 병행하여 수행
=> ER다이어그램
* ER도형 : 개념적 데이터 모델 / 개체, 속성, 관계등에 대해 용이하게 표현
3. 논리적 설계
- 논리 스키마 설계
- 정규화 과정 수행
=> ER도형 -> 릴레이션 스키마로 변환 / 테이블 정의서, 클래스 다이어그램, 시퀀스 다이어그램
4. 물리적 설계
- 특정한 저장 구조와 접근 경로를 결정하는 과정
- 물리 스키마 설계
5. 데이터베이스 구현
- 데이터베이스를 실제로 구축하는 과정
- DDL로 기술된 명령문 실행해서 데이터베이스 스키마와 데이터베이스 파일 생성
[관계형 데이터베이스]
- 관계형 데이터 모델 : 데이터를 table 또는 relation의 구조로 표현하는 논리적 데이터 모델
- 릴레이션(Relation) : 데이터를 원자값으로 갖는 이차원의 테이블로 표현
- 릴레이션 스키마 : 속성(컬럼)으로 나눠짐.
- 릴레이션 인스턴스 : 튜플(레코드)들의 집합
- 식별 관계 / 비식별 관계
- 식별 관계 : 개체 A, B사이의 관계에서 A 개체의 기본키가 B개체의 외래키이면서 동시에 기본키인 관계 => 반드시 B가 존재하면 A도 존재해야 한다.
- 비식별 관계 : 개체 A, B사이의 관계에서 A 개체의 기본키가 B 개체의 비기본키 영역에서 외래키가 되는 관계(ER도형에서 점선으로 표시) => B가 존재해도 A가 존재하지 않을 수 있다.
- 키(key)의 개념
- 슈퍼키 : 유일성 o, 최소성 x / 한 릴레이션 내에 있는 속성들의 집합으로 구성 된 키
- 후보키 : 유일성 o, 최소성 o / 튜플들을 유일하게 식별하기 위해 사용되는 속성들의 부분 집합
- 기본키 : 유일성 o, 최소성 o / 후보키 중에서 특별히 선정된 키, 중복된 값 가질 수 없음. / null 값을 가질 수 없음
- 대체키 : 후보키 중에서 기본키를 제외한 나머지 후보키
- 외래키 : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합 / 릴레이션 간의 관계를 표현할 때 사용
- 무결성
- 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성
- 쉽게 말하자면, 저장된 DB에 잘못된 데이터가 없다! 라는 것을 의미한다.
- 무결성 제약 조건
- DB내에 정확하지 않은 데이터가 저장되는 것을 방지하기 위한 제약 조건.
* NULL 무결성 : 특정 속성 값이 null일 수 없다.
* 고유 무결성 : 특정 속성 값에 대해 각 튜플이 갖는 속성 값들이 서로 달라야 한다.
* 도메인 무결성 : 특정 속성의 값이 그 속성에 정의된 도메인에 속한 값이어야 한다.
* 키 무결성 : 하나의 릴레이션에 적어도 하나의 키가 존재해야 한다.
* 관계 무결성 : 두 릴레이션 사이에서 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정.
* 참조 무결성 : 외래키 값은 null이거나 참조 릴레이션의 기본키와 동일해야 한다.
* 개체 무결성 : 기본키를 구성하는 어떤 속성도 null일 수 없다.
- 뷰(View)
- 하나 이상의 기본 테이블에서 유도되는 가상 테이블
- 물리적으로는 존재하지 않음. (사용자에게는 있는 것처럼 보인다.)
[정규화]
- 이상(Anomaly) : 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복 발생 -> 이 중복으로 테이블 조작 시 문제 발생하는 현상.
* 삽입 이상 : 테이블에 데이터를 삽입할 때 의도와는 상관 없이 삽입할 수 없게 되는 현상.
* 삭제 이상 : 연쇄 삭제가 발생하는 현상.
* 갱신 이상 : 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상.
- 정규화 : 테이블을 무손실 분해하는 과정으로, 가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생가능성을 줄이는 것.
1. 제 1정규형(1NF)
- 모든 속성의 도메인이 원자 값으로만 되어 있는 정규형.
2. 제 2정규형(2NF)
- 제 1정규형을 만족하고, 기본키가 아닌 모든 속성이 기본키에 대해 완전 함수적 종속을 만족하는 정규형.
3. 제 3정규형(3NF)
- 제 2정규형을 만족하고, 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형.
* 이행적 함수적 종속 : A -> B 이고 B -> C 일 때 A -> C를 만족하는 관계
4. BCNF
- 모든 결정자가 후보키인 정규형
5. 제 4정규형(4NF)
- 다중 값 종속이 존재하는 경우 모든속성이 함수적 종속 관계를 만족하는 정규형
6. 제 5정규형(5NF)
- 모든 조인 종속이 후보키를 통해서만 성립되는 정규형
[데이터베이스 기타, 응용]
- 시스템 카탈로그(데이터 사전)
- DBA의 도구
- DB에 저장되어 있는 모든 데이터 개체들에 대한 정의나 명세 정보 수록되어 있는 테이블
- 기본 릴레이션, 인덱스, 뷰, 사용자, 접근 권한등 데이터베이스 구조 및 통계 정보 저장
- 저장 된 내용을 메타데이터라고 한다.
- 인덱스
- 데이터 레코드(튜플)에 빠르게 접근하기 위함이다.
- <키 값, 포인터> 쌍으로 구성
- 없다면, 특정한 값 찾을 때 table scan(full table scan, 모든 데이터 페이지를 뒤지는) 현상 발생.
- 트랜잭션
- DB에서 하나의 논리적 기능을 수행하기 위한 일련의 연산 집합으로서 작업의 단위
- 정상 종료 시 commit 연산 수행
- 비정상 종료 시 rollback 연산 수행
참고) 시나공, 정보처리기사 실기책(2015)
'programming > 데이터베이스' 카테고리의 다른 글
[2017.03.13] 데이터베이스 기초 문제(스터디) (1) | 2017.03.18 |
---|---|
[oracle] 쿼리문(select NVL, DECODE) (0) | 2017.02.26 |
- Total
- Today
- Yesterday
- 비식별
- 백준
- 알고리즘문제해결전략
- 낭만적연애와그후의일상
- 요나스요나슨
- 킬러안데르스와그의친구둘
- Spring
- 클러스터인덱스
- url mapping
- 익명중첩클래스
- 연애가끝났다
- 백준저지
- tcp/ip monitor
- 익명클래스
- 중첩클래스
- jsp
- smarteditor2
- 알고스팟
- Eclipse
- static클래스
- 데이터베이스 문제
- boj
- servlet
- 지역중첩클래스
- 시스템 카탈로그
- 알고리즘
- 인스턴스클래스
- 넌클러스터인덱스
- aoj
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |