용's
[DB] 예상 문제 본문
1. 트랜잭션(Transaction)에 대해 설명하라
▶ 데이터베이스의 상태를 변화시키는 논리적 연산의 집합. 즉, 여러 개의 작업이 발생할 때 하나의 단위로 묶어 '일괄 실행(Commit)', '일괄 취소(Rollback)'를 할 수 있게 해주는 것.
2. 트랜잭션(Transaction)의 ACID에 대해 설명하라
▶ ACID는 각각 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 지속성(Durability)을 의미한다.
원자성: 모두 반영되거나 아니면 전혀 반영되지 않아야 함 (부분 실행 안됨)
일관성: 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있게 DB상태로 변환.
시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 수행 완료 후에 같아야 함.
독립성: 둘 이상의 트랜잭션이 동시에 병행 실행될 시, 또 다른 하나의 트랜잭션의 연산이 끼어들 수 없음.
지속성: 트랜잭션의 결과는 영구적으로 반영
3. View 테이블을 사용하는 경우는 어떤 경우인가
▶ 가상의 테이블이라 하며, View에는 데이터가 들어있는 것이 아닌 SQL에만 저장되어 있음.
▶ View를 사용하는 이유는 보안과 사용자의 편의성 때문. 만약 어떤 테이블에 대해 다른 사용자가 봐서는 안되는 칼럼이 있다면 view를 사용하여 정의된 쿼리의 결과만 볼 수 있게 할 수 있다.
4. 정규화에 간단히 설명하라
▶ 정규화를 하는 이유는 데이터의 중복을 방지하여 보다 효율적으로 데이터를 저장하기 위함
- Relation을 분리함으로써 삽입, 삭제, 이상현상의 발생가능성을 줄이는 것
- 데이터베이스 구조 확장시 재 디자인 최소화
- 사용자에게 데이터모델을 더욱 의미(informative)있게 만듦
- 정규형들은 1~5차수를 가지며, 차수가 높아질수록 만족시켜야 할 제약조건이 증가
▶ 단점으로는 연산 시간이 증가하게 됨
정규화 종류 | 내용 | 함수종속성 |
---|---|---|
1차 정규화 | 모든 속성은 원자값을 가짐 복수의 속성 값을 갖는 속성을 분리 | |
2차 정규화 | 주식별자에 종속적이지 않은 속성의 분리 부분 종속 속성을 분리 | 부분함수종속성 |
3차 정규화 | 속성에 종속적인 속성의 분리 이전 종속 속성의 분리 | 이행함수종속성 |
보이스-코드 정규화 | 다수의 주식별자 분리 | |
4차 정규화 | 속성간의 다중종속성 제거 | 다중종속성 |
5차 정규화 | Join 종속성 제거 | Join 종속성 |
5. Outer Join과 Inner Join의 차이는?
▶ Join은 각각의 테이블에 분리되어 있는 연관성 있는 데이터들을 연결하거나 조합하여 사용하기 위한
▶ INNER JOIN: 단순 교집합이라기 보다, 두 테이블간의 조인 조건(where)을 만족하는 ROW만 리턴하는 것
▶ OUTER JOIN: LEFT/RIGHT/FULL이 있음
- LEFT: 조인문 왼쪽에 있는 테이블의 모든 결과를 가져온 후 오른쪽테이블의 데이터를 매칭하며, 매칭되지 않는 데이터는 NULL
- RIGHT: LEFT의 반대
6. Oracle에서 varchar과 varchar2의 차이는?
▶ 데이터의 유형은 동일한 의미의 '가변길이 문자열'
▶ 길이의 상한치는 4000바이트
▶ 하지만 varchar는 차후에 별도의 데이터 유형으로 제정될 예정으로 사용하지 않을 것을 권장함
'Computer Science > 예상면접' 카테고리의 다른 글
[JAVA] BigDecimal (0) | 2015.10.12 |
---|---|
[Network #4] TCP 제어 알고리즘 (0) | 2015.10.12 |
[Network #3] 기타 예상 질문 (0) | 2015.06.04 |
[Network #2] Blocking VS non-Blocking (0) | 2015.06.04 |
[Network #1] TCP와 UDP (0) | 2015.06.04 |