[면접준비] 데이터베이스(mysql)

bej_ve·2022년 4월 5일
1

일상이야기

목록 보기
4/4

* mysql

  1. 트랜잭션

    데이터베이스의 상태를 변환시키는 하나의 논리적인 작업 단위를 구성하는 연산들의 집합이다.

  1. 하나의 트랜잭션은 Commit 되거나 Rollback 된다.

    1. Commit 연산
      한개의 논리적 단위(트랜잭션)에 대한 작업이 성공적으로 끝나 데이터베이스가 다시 일관된 상태에 있을 때, 이 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산이다.
    2. Rollback 연산
      하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성을 깨뜨렸을 때, 이 트랜잭션의 일부가 정상적으로 처리되었더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행한 모든 연산을 취소(Undo)하는 연산이다.
      Rollback 시에는 해당 트랜잭션을 재시작하거나 폐기한다
  2. 트랜잭션 특징

    1. 원자성(Atomicity), All or nothing
      트랜잭션의 모든 연산들은 정상적으로 수행 완료되거나 아니면 전혀 어떠한 연산도 수행되지 않은 상태를 보장해야 한다.
    2. 일관성(Consistency)
      트랜잭션 완료 후에도 데이터베이스가 일관된 상태로 유지되어야 한다.
    3. 독립성(Isolation)
      하나의 트랜잭션이 실행하는 도중에 변경한 데이터는 이 트랜잭션이 완료될 때까지 다른 트랜잭션이 참조하지 못한다
    4. 지속성(Durability)
      성공적으로 수행된 트랜잭션은 영원히 반영되어야 한다.
  3. commit과 rollback

    1. commit : 해당 트랜잭션으로 반영된 DB 변경사항을 저장하는 것입니다.
    2. ROLLBACK : 해당 트랜잭션으로 반영된 DB 변경사항을 취소하는 것입니다.
  4. 무결성

    무결성이란 데이터의 정확성, 일관성, 유효성을 유지하는 것을 말합니다.

    1. 개체 무결성 : 기본키로 선택된 필드는 빈 값을 허용하지 않습니다.
    2. 참조 무결성 : 서로 참조 관계에 있는 두 테이블의 데이터는 항상 일관된 값을 유지합니다.
    3. 도메인 무결성 : 특정 속성의 값이 그 속성이 정의된 도메인에 속한 값이어야 한다는 규정(도메인 '남', '여')
    4. 고유 무결성 : 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우 그 속성값은 모두 고유한 값을 가집니다.
    5. NULL 무결성 : 특정 속성값에 NULL이 올 수 없다는 조건이 주어진 경우 그 속성값은 NULL이 될 수 없다는 제약조건
    6. 키 무결성 : 한 릴레이션에는 최소한 하나의 키가 존재해야하는 제약조건
      -무결성을 유지하려는 이유? : 무결성이 유지가 되어야 DB에 저장된 데이터 값과 거기에 해당하는 현실 세계의 실제값이 일치하는지 신뢰할 수 있기 때문입니다.
  5. 정규화

    -여러개의 릴레이션으로 분해하는 과정. 정규화를 통해 이상현상 제거. 이상현상으로는 크게 세가지 삽입 이상, 삭제 이상, 갱신 이상이 있습니다.

  6. 정규화 종류

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

    반정규화란 데이터베이스의 사용 성능향상을 위해 의도적으로 데이터에 중복을 허용하고,데이터를 합치는 것을 의미합니다.
    반정규화를 하면 성능상의 이점은 있으나, 무결성을 깰 수 도 있다는 단점이있습니다.

  8. 데드락(교착상태)이란 무엇이며, 어떻게 발생할까요?

    데드락은 상호배제, 점유와 대기, 환형 대기, 비선점이 모두 충족될 경우 발생합니다.

  9. SQL injection이란 무엇인가요?

    해커에 의해 조작된 쿼리문이 DB에 그대로 전달되어 비정상적 명령을 실행시키는 공격 기법입니다.
    주로 사용자가 입력한 데이터를 제대로 필터링하지 못했을 경우에 발생합니다.

  10. DML,DDL,DCL

    1. DML은 데이터에 변형을 가하는 명령어로 select,insert,delete,update가 있습니다.
    2. DDL은 데이터 구조를 정의하는 명령어로 create, alter, drop 등이 있습니다.
    3. DCL은 데이터에 대한 접근을 제어하는 명령어로 grant, revoke 등이 있습니다.
  11. NoSQL이란 무엇인가요?

    NoSQL이란 sql이 아닌 나머지 DB전체를 의미합니다.
    NoSQL을 SQL과 비교하여 유연한 데이터 모델링, 수평적 스케일링(분산저장), 빠른 쿼리 지원, 직관적인 이해가 가능하다는 장점이 있습니다.

  12. 어떤 상황에서 No SQL을 쓰는 것이 적절한가요?

    No sql은 정확한 데이터 구조를 알 수 없거나 변경 / 확장 될 수 있는 경우와 읽기(read)처리를 자주하지만, 데이터를 자주 변경(update)하지 않는 경우에 사용하면 좋습니다.

  13. ORM이란 무엇인가요?

    ORM이란 object releational mapping의 약자로 객체와 데이터를 자동으로 매핑해주는 것을 의미합니다.
    객체지향프로그래밍과 DB의 패러다임의 불일치를 해결하기 위한 부분을 객체간의 관계를 바탕으로 자동으로 sql연산을 수행하여 해결해줍니다.
    대표적인 orm에는 jpa와 hibernate가 있습니다.

  14. 스키마(Schema)

    데이터베이스의 전체적인 구조와 제약조건에 대한 명세를 기술 정의한 것

  15. 인덱스

    데이터를 논리적으로 정렬하여 검색과 정렬의 속도를 높이기 위해 사용.
    인덱스는 B-Tree방식(이진법)구조를 사용하는데 이진법은 0과1로만 탐색/ 속도가 빨라서 사용
    -장점:기본키(PK)에 대해서는 DBMS가 내부적으로 정렬된 목록을 관리하기에 특정 행을 가져올 때 빠르게 처리됨
    But 다른열의 내용을 검색하거나 정렬시에는 하나하나 대조하기 때문에 시간이 오래걸림
    -단점 : 인덱스를 사용하면 데이터를 가져오는 작업의 성능은 향상시킬 수 있지만 데이터 삽입, 변경등이 일어날 때 매번 인덱스가 변경되기 때문에 성능이 떨어짐

  16. PK(Primary Key)

    테이블에서 각 Row(행)을 유일하게 구분하는 컬럼키

  17. FK(Foreign Key) 외래키

    하나의 테이블에 있는 Column(열)으로는 그 의미를 표현할 수 없는 경우 , 다른테이블의 Primary key의 값을 반드시 참조해야하는 키
    한테이블을 다른 테이블과 연결해주는 역할을 한다. 외래키가 설정이 되면 기준이 되는 테이블의 내용을 참조하여 레코드가 입력된다.

18.조인

join : SELECT 할때 2개 이상의 테이블을 합쳐 하나의 행으로 조회하기 위한 것
INNER JOIN : 내부 조인으로 교집합의 개념, 널 값이 없음
OUTER JOIN : 외부조인으로 합집합의 개념, 널 값도 포함 한쪽 테이블의 행들을 모두 사용하고 다른쪽 테이블은 조인조건을 만족하는 행만 합친다.

0개의 댓글