✔️ 데이터베이스 종류
데이터를 보존하는 형식에 따라 나뉨
1. 계층형 데이터베이스
데이터를 폴더와 파일등의 계층 구조로 데이터를 저장하는 방식
하드디스크나 DVD 파일시스템, IMS
최초로 등록된 데이터베이스 타입
2. 관계형 데이터베이스
데이터를 2차원 표 형식으로 관리하는 데이터베이스
데이터를 Column과 row를 이루는 하나 이상의 테이블로 정리해 Primary key가 각 row를 식별
row는 레코드나 튜플로 부르며, 일반적으로 각테이블[관계]는 하나의 엔티티 타입을 대표
Column은 엔티티 종류의 인스턴스의 속성이 되는 값을 대표
예 : Oracle, MySQL, Access
3. 객체지향 데이터베이스
'가능하면 객체 그대로를 데이터베이스의 데이터로 저장하는 것'이 객체지향 데이터베이스
객체란 유형이나 무형으로 존재하는 개체를 추상화한 것을 의미
사용자 정의 데이터 및 멀티미디어 데이터 등 복잡한 데이터 구조를 표현, 관리할 수 있음
예 : ONTOS, GemStone
관계형 DBMS | 객체지향 DBMS |
테이블[행의 집합] | 클래스 |
행[Row] | 객체 |
테이블 정의[사용자 정의 데이터 타입] | 타입 |
비적용[내장 프로시저] | 메소드 |
인덱스 | 인덱스 |
비적용[내장 프로시저] | 객체식별자 |
비적용[배열 Array] | 콜렉션 |
비적용 | 상속성 |
비적용 | 캡슐화 |
내장 프로시저를 갖는 SQL | 계산 완전성 |
SQL을 통한 상호 호환적*이식성 | 비적용 |
수학적 모델에 기초 | 비적용 |
4. XML 데이터베이스
XML 형식으로 기록된 데이터를 저장하는 데이터베이스
XML이란 자료 형식을 가리키는 용어로, 태그를 이용해 마크업 문서를 작성할 수 있게 정의한 것
태그: HTML과 비슷한 형식으로 <data>데이터</data>와 같은 형식으로 표현한다.
XML 데이터베이스에서는 SQL 명령을 사용할 수 없고, XQuery라는 전용 명령어를 사용해야 한다.
5. 키-밸류 스토어(KVS)
키와 그에 대응하는 값(밸류)이라는 단순한 형태의 데이터를 저장하는 데이터베이스( 연상배열이나 해시 테이블(hash table))
NoSQL(Not only SQL)이라는 슬로건으로부터 생겨난 데이터베이스로, 열 지향 데이터베이스라고도 불린다.
연상배열(associative array): 키 하나와 값 하나가 연관되어 있으며 키를 통해 연관되는 값을 얻을 수 있다. 연상 배열, 결합성 배열, 맵(map), 딕셔너리(dictionary)로 부르기도 한다.
관계형 데이터베이스에 있는 기능 일부를 버려서 성능[처리속도]을 높인 데이터베이스
SNS 등에서 발생하는 비정형 데이터를 보다 쉽게 저장하고 처리 가능해 최근 각광받음
대량의 데이터를 고속으로 처리해야 하는 웹 서비스와 잘 맞아서 최근 자주 이용되는 데이터베이스
그 외 : 네트워크 DBMS(IDS)
✔️ DBMS의 장단점
1. DBMS의 장점
- 데이터 중복 및 불일치 최소화
- 데이터의 표준화 데이터의 보안 향상
- 데이터의 일관성 및 무결성 유지
- 다양한 유형의 장애로부터 DB 복구 가능
- 시스템 개발 및 유지보수 비용 절감
- 동시 접근 가능
2. DBMS의 단점
- 높은 비용 및 고급 인력 필요
- 자료 처리의 복잡화
- 복잡한 백업 및 복구
- 시스템의 취약성(DBMS는 통합된 시스템이기 때문에 그 일부의 고장이 전체 시스템을 정지시켜 시스템 신뢰성과 가용성을 저해할 수 있다)
✔️ 정규화
1. 이상 현상의 종류
- 삽입 이상: 새 데이터 삽입 위해 불필요한 데이터도 함께 삽입해야 하는 문제
- 갱신 이상: 중복 투플 중 일부만 변경해 데이터가 불일치하게 되는 모순의 문제
- 삭제 이상: 투플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제
2. 함수 종속
- X가 Y를 함수적으로 결정한다
- X → Y로 표현 (X: 결정자, Y: 종속자)
- 완전 함수 종속(FFD; Full Functional Dependency)
- 릴레이션에서 속성 집합 Y가 속성 집합 X에 함수적으로 종속되어 있지만, 속성 집합 X의 전체가 아닌 일부분에는 종속되지 않음
- 일반적으로 함수 종속은 완전 함수 종속을 의미
- 부분 함수 종속(PFD; Partial Functional Dependency)
- 릴레이션에서 속성 집합 Y가 속성 집합 X의 전체가 아닌 일부분에도 함수적으로 종속됨
3. 정규화
- 이상 현상이 발생하기 않도록, 릴레이션을 관련 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정
- 함수성 종속성을 판단해 정규화 수행
※ 정규화 주의 사항
정규화를 통해 릴레이션은 무손실 분해되어야 함
- 릴레이션이 의미상 동등한 릴레이션들로 분해되어야 하고, 분해로 인한 정보 손실이 발생하지 않아야 함
- 분해된 릴레이션들을 자연 조인하면 분해 전의 릴레이션으로 복원 가능해야 함
4. 정규형(NF; Normal Form)
- 릴레이션이 정규화된 정도 [ 원 부 이 결 다 조 ]
1정규화 (1NF) - 도메인이 원자값
2정규화 (2NF) - 부분적 함수 종속 제거 (완전 함수 종속 상태), 완전 함수 종속이라는 것은 기본키의 부분집합이 결정자가 되어선 안된다는 것
3정규화 (3NF) - 이행적 함수 종속 제거 , 이행적 종속이라는 것은 A -> B, B -> C가 성립할 때 A -> C가 성립되는 것
BCNF (보이스코드 정규화) - 결정자 (모든 결정자가 후보키인 상태)
4정규화 (4NF) - 다치 종속 제거 (다중 종속 제거), 완전 함수 종속이라는 것은 기본키의 부분집합이 결정자가 되어선 안된다는 것
5정규화 (5NF) - 조인종속 제거
제 1 정규형
- 릴레이션의 모든 속성이 더는 분해되지 않은 원자 값만 가지면 만족
- 제 1 정규형을 만족해야 관계 데이터베이스의 릴레이션이 될 자격이 있다.
제 2 정규형
- 릴레이션이 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 만족
- 제 1 정규형의 릴레이션에서 부분 함수 종속을 제거하고, 모든 속성이 기본키에 완전 함수 종속되도록 분해
제 3 정규형
- 릴레이션이 제 2 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 만족
※ 이행적 함수 종속
릴레이션을 구성하는 3개의 속성 집합 X, Y Z에 대해 함수 종속 관계 X → Y와 Y → Z가 존재하면 논리적으로 X → Z가 성립되는데 이 때 Z가 X에 이행적으로 함수 종속되었다고 함
보이스/코드 정규형(BCNF; Boyce/Codd Normal Form)
- 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 보이스/코드 정규형
- 필요성: 하나의 릴레이션에 여러 개의 후보키가 존재하는 경우, 제 3 정규형까지 모두 만족해도 이상 현상이 발생할 수 있음
- 의미: 강한 제 3 정규형
- 후보키를 여러 개 가지고 있는 릴레이션에 발생할 수 있는 이상 현상을 해결하기 위해 제 3 정규형보다 좀 더 엄격한 제약 조건 제시
- 보이스/코드 정규형에 속하는 모든 릴레이션은 제 3 정규형에 속하지만, 제 3 정규형에 속하는 모든 릴레이션이 보이스/코드 정규형에 속하는 것 아님
제 4 정규형
- 릴레이션이 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속을 제거하면 만족
제 5 정규형
- 릴레이션이 제 4 정규형 만족하면서, 후보키를 통하지 않는 조인 종속을 제거하면 만족
✔️ 릴레이션(relation) / NULL
1. 릴레이션(relation)의 특성
- 튜플의 유일성: 투플들은 모두 상이
- 튜플의 무순서성: 투플 사이에는 순서가 없음
- 애트리뷰트의 무순서성: 애트리뷰트 사이에는 순서가 없음
- 애트리뷰트의 원자성: 모든 애트리뷰트 값은 원자값
2. Null 값 특성
- NULL 값은 아직 정의되지 않은 값으로 0 또는 공백과 다르다. 0은 숫자이고, 공백은 문자이다.
- 테이블을 생성할 때 NOT NULL 또는 PRIMARY KEY로 정의되지 않은 모든 데이터 유형은 널 값을 포함할 수 있다.
- NULL 값을 포함하는 연산의 경우 결과 값도 NULL이다. 모르는 데이터에 숫자를 더하거나 빼도 결과는 마찬가지로 모르는 데이터인 것과 같다.
- 결과값을 NULL이 아닌 다른 값을 얻고자 할 때 NVL/ISNULL 함수를 사용한다. NULL 값의 대상이 숫자 유형 데이터인 경우는 주로 0(Zero)으로, 문자 유형 데이터인 경우에는 블랭크보다는 'x' 같은 해당 시스템에서 의미없는 문자로 바꾸는 경우가 많다.
✔️ 트랜젝션(transaction)
1. 트랜젝션의 4가지 특성(ACID)
- 원자성(Automicity) : 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. (All or Nothing)
- 일관성(Consistency) : 트랜잭션이 실행 되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다. 일관적인 DB 상태를 유지한다.
- 고립성(Isolation) :트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
- 지속성(Durability) :트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장되며, 그 값을 참조할 수 있다.
병행 제어
- 사용자에 대한 응답 시간 최소화
- 데이터베이스의 공유 최대화
- 시스템 활용도의 최대화
- 데이터베이스의 일관성 유지
- Locking이 예시
https://mangkyu.tistory.com/110
https://iingang.github.io/posts/DB-DBMS/
https://2030bigdata.tistory.com/19
https://opentutorials.org/module/1225/8011
출처: https://noil0816.tistory.com/149 [혼자공부하기]
'전공 > DB' 카테고리의 다른 글
[CS면접 질문 정리] 데이터베이스 (0) | 2022.04.26 |
---|---|
MySQL튜닝6) 튜닝 심화 예제 (0) | 2022.02.16 |
MySQL튜닝5) 튜닝 기본 예제 (0) | 2022.02.08 |
MySQL튜닝4) 실행계획 살펴보기2 (0) | 2022.01.26 |
MySQL튜닝3) 실행계획 살펴보기1 (0) | 2022.01.19 |