데이터베이스 기술 면접 기본 개념(1)

2024. 4. 2. 20:31기술 면접/데이터베이스

데이터베이스 특성

    1) 실시간 접근성

    2) 지속적인 변화(동적 특성) : 즉 새로운 데이터 삽입,삭제,갱신이 지속적으로 일어난다

    3) 동시 공용 : 여러 사용자가 동시에 사용할 수 있다.

    4) 내용에 의한 참조 : 데이터 참조 시 사용자가 요구하는 데이터 내용으로 탐색.

동시공용의 이점과 문제점

    이점: 공용도 증가, 응답시간 단축, 시스템 활용도 증대

    문제점: DBMS가 제어를 안할시(무제어) 갱신 분실, 모순성 발생, 연쇄 Commit or Rollback 발생

**따라서 DBMS가 스케쥴로 제어를 해야한다. 직렬 or 비직렬

 

 

데이터베이스 언어 3가지

    1) DDL(Data Definition Language) : 데이터베이스 구조(스키마)를 정의 및 수정,삭제하는 언어

        - Create, Drop, Alter (생성,삭제,수정) 명령어.

    2) DML(Data Manipulation Language) : 데이터베이스 내 자료를 조작하는 언어

        - Select, Insert, Delete, Update (선택,삽입,삭제,갱신) 명령어

    3) DCL(Data Control Language) : 데이터에 대해 무결성 유지, 병행 수행 제어, 보호 관리를 위한 언어

        - commit, rollback, grant 등

**SQL은 비 절차적 DML로 사용자가 주로 사용. DCL은 DBA(관리/운영 총 책임자)가 사용

 

 

관계형 데이터베이스에서 꼭 지켜야할 조건 : 무결성 제약 조건

    1) 개체 무결성: 기본 키 값은 null 값을 가질 수 없다

    2) 참조 무결성 : 참조할 수 없는 외래 키 값을 가져서는 안된다.

**DBMS는 DB의  변화에도 항상 무결성 제약을 만족시켜야함.

 

 

관계연산자 수행 순서

FROM - ON - JOIN > WEHRE - GROUP BY - HAVING > SELECT > DISTINCT > ORDER BY > LIMIT

 

 

이상현상이란? 종류는? 해결방법은?

이상현상이란 테이블을 잘못 설계하여 데이터 삽입,삭제,수정 시에 오류가 발생하는 현상을 말합니다.

    1) 삽입 이상 : 데이터를 삽입 시 특성 column의 값이 없어 null 값을 입력해야 하는 현상

    2) 삭제 이상 : 어떤 데이터를 삭제 시 의도하지 않은 다른 데이터까지 삭제되는 현상

    3) 수정 이상 : 데이터 수정 시 중복 데이터 중 일부만 수정되는 현상

**이상 현상을 예방하고 효과적인 연산을 하기 위해 데이터 정규화를 진행합니다.

 

 

정규화란? 과정은?

정규화란 하나의 relation에 하나의 의미를 담은 데이터만 존재하도록 relation을 분해하는 과정입니다.

데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위해 실행됩니다.

 

    1) 제 1 정규형(First Normal Form) : 모든 도메인이 원자값으로 된 relation이 되도록 분해

    2) 제 2 정규형(1NF + 부분함수 종속 제거) : 기본키가 아닌 attribute는 모두 기본 키에 완전 함수 종속이 되도록 분해

    3) 제 3 정규형(2NF + 이행적 함수 종속 제거) : 키가 아닌 모든 attribute는 기본 키에 이행적 함수 종속이 없도록 분해

**3NF의 한계:

    - 기본 키가 여러 개인 경우

    - 후보 키들이 두 개 이상 attribute로 구성되어 있을 때

    - 후보 키들의 attribute가 중첩되는 경우

→ BCNF(Boyce Codd Normal Form) 적용

 

    4) BCNF : 3NF + 결정자는 모두 후보키가 되도록 분해

    5) 제 4 정규형(3NF + 멀티값), 제 5 정규형 : 여기까지는 몰라도 된다!

 

 

함수의 종속성이란? 종류는?

결정자 → 종속자 관계. 즉 결정자 column의 값에 따라 종속자의 column은 지정되는 형태. 집합형태로도 가능

    ex) 학번 → 이름 or (학번,과목번호) → (이름,성적)

 

완전 함수 종속 : 더 이상 결정자를 쪼갤 수 없는 경우

    ex) 학번 → 이름 : 결정자는 1개로 더이상 쪼갤 수 없음.

    ex) (학번,과목번호) → (성적) : 결정자가 2개이나 더 이상 쪼갤 수 없음

        - 학번 만으로는 해당 과목의 성적을 알 수 없고 과목번호만으로는 해당 학생의 성적을 알 수 없음

부분 함수 종속 : 기본키가 아닌 다른 속성에 종속 or 기본키가 여러 속성인 경우 일부에만 종속되는 경우

    ex) 이름 → 학년 : 이때 기본키는 '학번'인 경우

    ex) (학번,과목번호) → (학년) : 학년은 학번에만 종속됨. 과목번호와는 연관 없음.

이행 함수 종속 : 3단 논법이 적용되는 경우

    ex) 학번 → 이름 → 성별 : 학번 → 성별 추론 가능.

 

 

트랙잭션이란?

작업의 완전성을 보장하기 위한 기능. 작업들을 모두 처리할 때 반영 or 처리하지 못할 때 복구하여 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능

    - commit: 작업이 완료되었을 때 모두 반영

    - rollback: 작업이 완료되지 못했을 때 일부 반영 없이 모두 취소

**트랜잭션의 특성(ACID 암기)

    1) 원자성(Atomicity) : 작업이 모두 반영되던지 아니면 모두 취소하던지 둘중 하나.

    2) 일관성(Consistency) : 실행 후에도 일관성 유지

    3) 격리성(Isolation) : 중간결과에 다른 트랙잭션 x. 동시에 실행될 경우에도 서로의 연산에 낄 수 없다.

    4) 영속성(Durability) : 결과는 영속적이다.