티스토리 뷰

cs/데이터베이스

데이터베이스 정리

안양사람 2021. 4. 21. 20:45
728x90
SMALL

데이터 정의어 data definition language DDL

스키마를 정의하거나 기존 스키마의 정의를 삭제 또는 수정하기 위해 사용하는 데이터 언어

데이터 조작어 data manipulation language DML

사용자가 데이터의 삽입 삭제 수정 검색 등의 처리를 데이터베이스 관리 시스템에 요구하기 위해 사용하는 데이터 언어

데이터 제어어 data control language DCL

데이터베이스에 저장된 데이터를 여러 사용자가 무결성과 일관성을 유지하며 문제없이 공유할 수 있도록, 내부적으로 필요한 규칙이나 기법을 정의하는 데 사용하는 데이터 언어

 

스키마 : 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것

인스턴스 : 정의된 스키마에 따라 데이터베이스에 실제로 저장된 값

속성 : 릴레이션의 열

투플 : 릴레이션의 행

도메인 : 속성 하나가 가질 수 있는 모든 값의 집합

널 값 : 릴레이션에 있는 특정 투플의 속성을 모르거나, 적합한 값이 없는 경우에는 널null을 사용할 수 잇다.

차수 : 하나의 릴레이션에서 속성의 전체 개수

카디널리티 : 하나의 릴레이션에서 투플의 전체 개수

SQL(Structured Query Language) : 관계 데이터베이스를 위한 표준 질의어로 많이 사용되는 언어

 

키의 종류를 설명하라

슈퍼키

유일성을 만족하는 속성 또는 속성들의 집합

후보키

유일성과 최소성을 만족하는 속성 또는 속성들의 집합

기본키

기본적으로 사용할 키, 후보키 중 선택한다.

대체키

기본키가 되지 못한 후보키

외래키

어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키

참조하는 릴레이션 : 외래키를 가진 릴레이션

참조되는 릴레이션 : 기본키를 가진 릴레이션

 

무결성 제약조건에 대해 설명하라

무결성 제약조건은 데이터를 일관성 있게 유지하기 위한 제약조건이다.

1. 개체 무결성

기본키는 null이나 중복값 불가

2. 참조 무결성

외래키는 null이거나 참조 릴레이션의 기본키

3. 도메인 무결성

특정 속성의 값이 그 속성에 정의된 도메인에 속한 값이여야 한다.

4. 고유 무결성

특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우, 그 속성값은 모두 달라야 한다.

5. null 무결성

특정 속성값에 null이 올 수 없다는 조건이 주어진 경우, 그 속성값은 null 값이 올 수 없다.

6. 키 무결성

한 릴레이션(테이블)에는 최소한 하나의 키가 존재해야 한다.

 

정규화란 무엇인가

관계형 데이터베이스의 설계에서 중복을 최소화하기 위해(이상현상을 막기 위해) 데이터를 구조화하는(테이블을 분리) 프로세스를 정규화라고 한다.

정규화 된 정도를 정규형(Normal Form) 으로 표현하는데, 정규형에는 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF 까지 있다. 비공식적 표현으로는 3NF 가 되었으면 정규화 되었다고 말한다. 3NF 테이블의 대부분이 삽입, 변경, 삭제 이상이 없으며, 3NF 테이블의 대부분이 BCNF, 4NF, 5NF이다.

각 정규형이 되기 위해서는 만족시켜야 할 제약조건들이 있다. 높은 차수의 정규형으로 갈 수록 조건이 까다롭다.

 

이상현상이 무엇인가?

데이터베이스 내에 데이터들이 중복되어 릴레이션 조작 시 문제가 발생하는데 이를 이상이라 하며,

종류로는 삽입, 삭제, 갱신이상이 있다.

삽입이상 : 새 데이터를 삽입하기 위해 다른 데이터도 추가해야 하는 문제

삭제이상 : 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제

갱신이상 : 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제

 

함수적 종속성이 무엇인가?

테이블 속성들간의 관계에 대한 제약조건으로 속성A가 속성B를 결정할 때 B는 A에 함수적으로 종속된다고 한다.

부분 함수적 종속 (Partial Functional Dependency)
속성집합 Y 가 속성집합 X 의 전체가 아닌 일부분에도 함수적으로 종속됨을 의미한다.
완전 함수적 종속 (Full Functional Dependency)
속성집합 Y 가 속성집합 X 전체에 대해서만 함수적으로 종속된 경우를 말한다.

일반적으로 함수적 종속성을 말하면 완전함수종속을 의미한다.

 

정규형의 종류에 대해 설명하라

제1정규형(1NF 또는 최소형) : 각 컬럼들의 값이 원자값을 가진다.

제2정규형(2NF) : 모든 비기본 속성(non-prime attribute; 후보 키에 속하지 않은 속성)들이 후보 키에 속한 속성들 전체에 함수 종속인 경우에 한해서 1NF 테이블은 2NF이다.(테이블의 모든 컬럼에서 부분 함수적 종속을 제거하는 것)

1NF 테이블은 복합 후보 키(한 개 이상의 속성들로 구성된 후보 키)가 없으면 자동으로 2NF이다.

제3정규형(3NF) : 테이블 내의 모든 속성이 기본 키에만 의존하며, 다른 후보 키에 의존하지 않는다.

릴레이션이 제 2 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제 3 정규형에 속한다. 

보이스/코드 정규형BCNF(Boyce/Codd Normal Form) : 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 보이스/코드 정규형에 속한다.

제4 정규형은 릴레이션이 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속을 제거해야 만족할 수 있다.

제5 정규형은 릴레이션이 제4정규형을 만족하면서 후보키를 통하지 않는 조인 종속을 제거해야 만족할 수 있다.

  • 제 1정규화 : 각 컬럼들은 값이 원자값을 가지게 바꾼다.
  • 제 2정규화 : 테이블의 모든 컬럼에서 부분 함수적 종속을 제거하는 것
  • 제 3정규화 : 기본키를 제외한 속성들 간의 이행적 함수 종속을 없애는 것
  • 제 BCNF화 : 결정자이면서 후보키가 아닌 것들 제거

역정규화를 하는 이유는 무엇인가?

정규화를 진행할 수록 테이블을 나누고, 만약 데이터 호출시 JOIN을 여러번 사용한다면 성능을 저하시킬 수 있기 때문 

 

뷰를 설명하시오?

다른 테이블을 기반으로 만들어진 가상 테이블이다.

 

뷰의 장단점을 설명하시오

장점

질의문을 쉽게 작성, 보안 유지에 도움, 데이터를 편리하게 관리, 리소스를 낭비하지 않고 출력

단점

인덱스를 가지지 않는다. 삽입, 삭제, 갱신에 제한

 

인덱스를 설명하시오

인덱스는 테이블 검색에 대한 속도를 높여주는 자료구조이다. b트리, b+트리 등이 있다.

B+Tree 인덱스는 Tree 구조로 된 인덱스다. 정상이 root 블록, 최하층이 leaf 블록이며, 그 사이에 branch 블록이 있다.

루트 블록과 브랜치 블록은 검색의 키인 사용자 ID에 대해 해당 블록이 어디에 있는지에 대한 정보를 가지고 있다. 그리고 최하층의 리프 블록은 실제 저장 위치의 정보를 가지고 있다. 루트 -> 브랜치 -> 리프 순으로 도달하여 데이터 얻음

 

트랜잭션에 대해 설명하시오

트랜잭션 : 데이터베이스가 일관성 있는 상태로 자동 복구해 주는 구조

커밋 : 마지막까지 처리를 마치고 결과를 확정시키는 것

롤백 : 커밋하지 않고 모든 작업을 원래대로 되돌리는 것

트랜잭션 성질

Atomicity(원자성) 는 트랜잭션의 연산이 DB에 모두 반영되던지 전혀 반영이되지 않던지 둘중에 하나만 수행해야한다.
Consistency(일관성) 는 트랜잭션이 성공적으로 완료된 후에는 언제나 일관성 있는 DB상태로 변환되어야한다.
Isolation(독립성) 은 수행중인 트랜잭션이 완전히 완료되기 전에는 다른 트랙잭션에서 수행 결과를 참조할 수 없다.
Durablility(지속성) 는 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.

1. 원자성 : 트랜잭션을 구성하는 연산들이 모두 정상적으로 실행되거나 하나도 실행되지 않아야 한다는 all or nothing 방식을 의미한다.

2. 일관성 : 트랜잭션이 성공적으로 수행된 후에도 데이터베이스가 일관된 상태를 유지해야 함을 의미한다. 즉, 트랜잭션이 수행되기 전에 데이터베이스가 일관된 상태였다면 트랜잭션의 수행이 완료된 후 결과를 반영한 데이터베이스도 또 다른 일관된 상태가 되어야 한다는 의미다.

3. 격리성 : 고립성이라고도 하는데, 현재 수행 중인 트랜잭션이 완료될 때까지 트랜잭션이 생성한 중간 연산 결과에 다른 트랜잭션들이 접근할 수 없음을 의미한다.

4. 지속성 : 영속성이라고도 하는데 트랜잭션이 성공적으로 완료된 후 데이터베이스에 반영한 수행 결과는 어떠한 경우에도 손실되지 않고 영구적이어야 함을 의미한다.

 

 

복구

회복

 

 

 

728x90
LIST
댓글
공지사항