For job interview, about DB 면접 공부하기-데이터베이스 3

1 minute read

1. MyBatis 마이바티스

  • Definition 정의 : XML 언어 또는 어노테이션 annotations 을 사용하여 개발자가 지정한 SQL, 저장 프로시저 그리고 몇 가지 고급 매핑을 지원하는 자바 지속성 프레임워크 persistence framework이다.
  • Features 특징
    • 자바의 메소드를 SQL문에 매핑시킨다.
    • 저장 프로시저, 뷰 등과 같은 DB 기능을 모두 지원한다.
    • SQL문을 한 줄의 코드로 실행시키므로 JDBC와 비교해 단순하다.
    • Spring Framework와 연동이 가능하다. (MyBatis API 사용)
    • 자바 해시맵 HashMap 기반의 평서문 데이터 캐싱 declarative data caching 을 지원한다.



2. 정규화

관계형 데이터베이스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업

  • 제 1 정규화 : 튜플의모든 어트리뷰트 attribute 의 도메인이 오직 하나의 값만을 포함해야 한다.

    Student Age Subject
    Adam 15 Biology, Maths
    Alex 14 Maths

    ‘Adam’은 ‘Subject’ 어트리뷰트 값이 두 가지 이므로 1차 정규형을 만족하지 못 한다. 따라서 다음과 같이 한 개의 튜플을 더 생성한다.

    Student Age Subject
    Adam 15 Biology
    Adam 15 Maths
    Alex 14 Maths
  • 제 2 정규화 : 테이블의 모든 어트리뷰트가 완전 함수적 종속을 만족해야 한다.

    Employee Skill Office
    Jones Typing 114 Main Street
    Jones Shorthand 114 Main Street
    Jones Whittling 114 Main Street
    Bravo Light Cleaning 73 Industrial Way
    Ellis Alchemy 73 Industrial Way
    Ellis Flying 73 Industrial Way
    Harrison Light Cleaning 73 Industrial Way

    ‘Employee’와 ‘Skill’은 테이블에 동일한 값이 한 차례 이상 나타나기 때문에 후보키가 아니지만, ‘Employee, Skill’은 후보키이다. 그런데 ‘Office’는 ‘Employee’에만 영향을 받는데, 만약 Jones가 근무지를 변경했을 때 Typing과 Shorthand의 레코드는 수정했으나 Whittling을 수정하지 않았을 경우 ‘Jones의 근무지는 어디인가’ 쿼리에 에러가 생긴다. 따라서 ‘Employee, Skill’과 ‘Employee, Office’의 두 가지 테이블로 나눈다.

  • 제 3 정규화
  • 제 4 정규화
  • 제 5 정규화