정규형
- 분석, 설계시점에 수행한다
용어정리
- 슈퍼키: 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합, 유일성만 만족
- 후보키: 테이블에서 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합, 기본키가 될 수 있는 후보들. 유일성과 최소성을 동시에 만족
- 기본키: 후보키 들 중에서 하나로 최소성과 유일성을 만족하는 속성, NULL과 중복값을 가질 수 없다.
- 대체키: 기본키로 지정한 것 외의 후보키들
- 결정자: x가 Y에 대응한다고 할 때, X는 결정자, Y는 종속자.
제1정규형 (1NF)
- 릴레이션에 속하는 속성의 속성 값이 모두 원자값으로만 구성
- 테이블 R에 속한 모든 도메인이 원자값만으로 구성되어 있다.
제2정규형 (2NF)
- 후보키가 아닌 속성들이 후보키에 대해 완전 함수적 종속인 경우
- 📌 테이블 R에서 키가 아닌 모든 필드가 키에 대해 함수적으로 종속되며, 키의 부분 집합이 결정자가 되는 부분 종속이 존재하지 않는다.
제3정규형 (3NF)
- 이행적 함수 종속을 제거한 정규형
- A->B, B->C일 때, A->C 관계를 제거
- X->Y : Y는 X에 함수 종속
BCNF(Boyce and Codd Normal Form)
- 📌 결정자가 항상 후보키가 되도록 릴레이션 분리
- 📌 테이블 R에 존재하는 모든 함수적 종속에서 결정자가 후보키이다.
제5정규형
- 📌 어떤 릴레이션 R의 모든 조인 종속성의 만족이 R의 후보 키를 통해서만 만족될 때
- 📌 후보키를 통하지 않는조인 종속(JD : Join Dependency) 제거해야 만족하는 정규형
정규형 과정에서 발생할 수 있는 문제
이상(Anomaly)
- 데이터의 중복으로 인하여 관계연산을 처리할 때 예기치 못한 곤란한 현상이 발생하는 것
인덱스
- 문헌의 색인, 사전과 같이 데이터를 쉽고 빠르게 찾을 수 있도록 만든 데이터 구조이다.
- 테이블에 붙여진 색인으로 데이터 검색 시 처리속도 향상에 도움이 된다.
- 📌 인덱스의 추가, 삭제 명령어는 각각 CREATE, DELETE 이다.
- 대부분의 데이터베이스에서 테이블을 삭제하면 인덱스도 같이 삭제된다.
동시성제어(병행제어)를 위한 직렬화 기법
타임스탬프 기법
- 트랜잭션 간의 처리 순서를 미리 정하는 기법
로킹 기법
- 📌 로킹 단위가 크면 로크 수가 작아지고, 제어기법이 간단해진다. 그리고 병행성 수준이 낮아진다.
- 종류
- shared lock: 읽기만 가능
- exclusive lock: 읽기와 기록 모두 불가능, 배타 로크 기법
- 2 phase locking: 모든 트랜잭션들이 lock과 unlock 연산을 확장 단계와 수축 단계로 구분하여 수행
Validation 낙관적 검증
- 트랜잭션 수행이 끝난 뒤 일괄 검사
MVCC 다중버전 동시성 제어
- 트랜잭션 타임스탬프와 접근 데이터의 여러 버전 타임스탬프 비교하여 직렬 가능성 보장되는 버전으로 선택
데이터베이스 설계
📌 요구조건 분석 > 개념적 설계(정보 모델링, 개념화) > 논리적 설계(데이터 모델링) > 물리적 설계(데이터 구조화) > 구현
1. 개념 데이터베이스 설계
- DBMS 독립적 개념 스키마 설계, 📌 트랜잭션 모델링
트랜잭션
- . 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
2. 논리 데이터베이스 설계
- 📌 목표 DBMS에 맞는 스키마 설계, 트랜잭션 인터페이스 설계, 스키마의 평가 및 정제
- 관계 데이터 모델의 구성요소
- 릴레이션, 튜플(행), 속성(열), 카디널리티, 차수, 스키마, 인스턴스
- Cardinality: 튜플의 수
- Degree: 속성의 수
릴레이션
데이터 관계를 중심으로 구현한 데이터베이스
- 📌 모든 튜플은 서로 다른 값을 가지고 있다.
- 동일한 값이 저장될 수 있으나 별개의 값으로 해석한다
- 📌 하나의 릴레이션에서 튜플의 순서는 무의미하며, 보장되지 않는다.
- 각 속성은 릴레이션 내에서 유일한 이름을 가진다.
- 모든 속성 값은 원자값(atomic value)을 가진다.
뷰
- 📌 뷰는 다른 뷰를 기반으로 새로운 뷰를 만들 수 있다.
- 뷰는 일종의 가상테이블이며, update에는 제약이 따른다.
- 구성된 내용에 대한 삽입, 갱신, 삭제 연산에는 제약이 따른다.
- 뷰는 기본 테이블을 만드는 것처럼 create view를 사용하여 만들 수 있다.
- 📌 뷰는 논리적으로 존재하는 기본 테이블과 다르게 물리적으로 구현되어 있지 않다.
- 독자적인 인덱스를 가질 수 있다.
- 논리적 독립성을 제공한다.
- 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.
- 접근 제어를 통한 자동 보안이 제공된다.
무결성(Integrity)
- 데이터의 정확성, 일관성, 유효성이 유지되는 것
- 무결성 규정의 대상으로는 도메인, 키, 종속성 등이 있다.
- 무결성 규정에는 데이터가 만족해야 될 제약 조건, 규정을 참조할 때 사용하는 식별자 등의 요소가 포함될 수 있다.
- 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 의미한다.
- 릴레이션 무결성 규정(Relation Integrity Rules)
- 릴레이션을 조작하는 과정에서의 의미적 관계(Semantic Relationship)를 명세한 것이다
- 무결성 제약 조건
- DB에 들어 있는 데이터의 정확성을 보장하기 위해 부정확한 자료가 DB 내에 저장되는 것을 방지하기 위한 제약조건을 말한다.
- 개체 무결성(실체 무결성)
- 📌 기본키는 NULL 값을 가져서는 안되며 릴레이션 내에 오직 하나의 값만 존재해야 한다.
- 기본키는 중복값을 가질 수 없다.
- 도메인 무결성(영역 무결성)
- 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정이다.
- 참조 무결성
- 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다.
- 외래키가 참조하려는 테이블의 기본키는 도메인과 속성 개수가 같아야 한다. 없는거 입력할 수 없다는 뜻.
- 사용자 정의 무결성
관계대수와 관계해석
- 관계대수는 절차적 언어이고, 관계해석은 비절차적 언어이다.
- 관계해석 기호
연산자기호연산자기호연산자기호
SELECT | σ | UNION | ∪ | OR | ∨ |
PROJECT | π | INTERSECTION | ∩ | AND | ∧ |
JOIN | ▷◁ | DIFFERENCE | - | NOT | ¬ |
DIVISION | ÷ | CARTESIAN PRODUCT | X | FOR ALL (전칭 정량자) | ∀ |
THERE EXISTS (존재 정량자) | ∃ |
- 관계대수 연산
- 📌 SELECT, PROJECT, JOIN, DIVISION
- 📌 합집합, 교집합, 차집합, 카티션프로덕트(곱하기 연산)
- 카티션 프로덕트 (Cartesian product) - cross join 형태 생각하면 될 듯
3. 물리 데이터베이스 설계
- 논리적 구조로 표현된 논리적 데이터베이스를 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 📌 응답시간, 저장공간의 효율화, 트랜잭션 처리량
- 물리적 설계의 목적은 효율적인 방법으로 데이터를 저장하는 것이다.
- 📌 저장 레코드 집합
- 물리적 데이터베이스 구조의 기본적인 단위
저장 레코드 양식 설계시 고려사항
- 📌 데이터 타입, 데이터 값의 분포, 접근 빈도
SQL의 기능에 따른 분류
DDL(Data Definition Language)
- 데이터 정의어, 데이터를 생성, 수정, 삭제하는 등의 데이터 전체의 골격을 결정하는 역할을 하는 언어
- CREATE, ALTER, DROP, TRUNCATE
- CREATE TABLE
- 📌 속성 타입의 변경은 해당하지 않는다. 정의와 지정 위주
- CREATE TABLE
DML(Data Manipulation Language)
- 데이터 조작어, 정의된 데이터베이스에 입력된 레코드를 조회하거나 수정하거나 삭제하는 역할을 하는 언어
- SELECT, INSERT, UPDATE, DELETE
DCL(Data Control Language)
- 📌 데이터베이스에 접근하거나 객체에 권한을 주는 등의 역할을 하는 언어
- 📌 데이터의 보안과 무결성을 정의한다.
- GRANT, REVOKE, COMMIT, ROLLBACK
- GRANT CREATE TABLE TO SOMEONE;
- ROLLBACK: 데이터베이스 조작 작업이 비정상적으로종료되었을 때 원래 상태로 복구한다.
트랜잭션
트랜잭션의 성질
원자성 Atomicity
- 📌 트랜잭션의 모든 연산들이 정상적으로 수행 완료되거나 아니면 전혀 어떠한 연산도 수행되지 않은 원래상태가 되도록 해야 한다.
- ALL OR NOTHING
일관성 Consistency
- 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.
격리성 Isolation
- 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우, 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다.
영속성 Durability
- 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.
트랜잭션의 상태
활동(Active), 실패(Failed), 철회(Aborted), 부분완료(Partially Committed), 완료(Committed)
- 부분완료 (Partially Committed)
- 트랜잭션의 상태 중 트랜잭션의 마지막 연산이 실행된 직후의 상태로, 모든 연산의 처리는 끝났지만 트랜잭션이 수행한 최종 결과를 데이터베이스에 반영하지 않은 상태
데이터베이스 병행제어의 목적
- 📌 시스템 활용도 최대화
- 사용자에 대한 응답시간 최소화
- 📌 데이터베이스 공유 최대화
- 데이터베이스 일관성 유지
데이터 모델
- Operation
- 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현된 값들을 처리하는 작업
관계형 데이터 모델
E-R 모델
개체(Entity, 네모), 속성(Attribute, 원), 관계(Relation, 마름모)
- 📌 다중값 속성은 이중원으로 표기
계층형 데이터 모델
망형 데이터 모델
분산 데이터 시스템
- 📌 분산 데이터베이스는 논리적으로는 하나의 시스템에 속하지만 물리적으로는 여러 개의 컴퓨터 사이트에 분산되어 있다.
- 위치 투명성, 중복 투명성, 병행 투명성, 장애 투명성을 목표로 한다.
- 데이터베이스의 설계가 비교적 어렵고, 개발 비용과 처리 비용이 증가한다는 단점이 있다.
- 분산 데이터베이스 시스템의 주요 구성 요소는 분산 처리기, 분산 데이터베이스, 통신 네트워크 등이 있다.
- 📌 P2P 시스템, 단일 데이터베이스는 해당되지 않는다.
'자격증' 카테고리의 다른 글
[정보처리기사 필기] 소프트웨어 설계 (0) | 2023.02.20 |
---|---|
[정보처리기사 필기] 프로그래밍 언어 활용 (0) | 2023.02.20 |
[정보처리기사 필기] 정보시스템 구축관리 (1) | 2023.02.20 |
[정보처리기사] 시험범위 마지막 복습 (0) | 2022.05.09 |
[정보처리기사 실기] 2021년 2회 핵심내용 (1) (0) | 2022.04.14 |
댓글
최근에 올라온 글
TAG
- 배포
- git연동
- 노마드코더
- 정보처리기사 실기
- 정보처리기사 필기
- 독서후기
- SQLD
- jdbc
- 노개북
- EC2
- spring
- JIRA
- 정보처리기사
- 기술블로그
- 오늘의코딩
- filezila
- ubuntu
- 실용주의프로그래머
- AWS
- 호스팅영역
- IT 5분 잡학사전
- putty
- intellij
- 웹페이지만들기
- gradle
- LifecycleException
- 북클럽
- java
- gradle build
- 개발도서
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함