2021-12-3 데이터베이스 (12주차)

정규형

제 1정규형

  • 테이블 셀에 복합적인 값을 포함하지 않는다
  • 관계형 데이터베이스에서는 이 정의에 반하는 테이블을 작성하는 것이 기술적으로 불가능

제 2정규형

  • 기본키 중에 특정 칼럼에만 종속된 칼럼이 존재할 경우 2차 정규형에 위배

제 3정규형

  • 명백히 계층이 다른 집합들인 다른 테이블에서 관리해야 함

ER 다이어그램

  • Entity-Relationship Diagram

IE 표기법

  • 위 절반 부분에는 기본키를 아래 절반에는 기타 열을 기재

image

SQL 첫걸음

인덱스

  • 인덱스의 역할은 검색속도의 향상
  • 인덱스에는 검색 시에 쓰이는 키워드와 대응하는 데이터 행의 장소가 저장되어 있다

검색에 사용하는 알고리즘

  • 풀 데이터 스캔
    • 인덱스가 정의되기 않은 테이블을 검색할때 사용
  • 이진 탐색
    • 차례로 나열된 집합에 대해 유효한 검색 방법
    • 테이블에 인덱스를 작성하면 테이블 데이터와 별개로 이진트리 구조로 인덱스용 데이터가 저장장치에 만들어진다

인덱스 작성

CREATE INDEX 인덱스명 ON 테이블명 (열명1, 열명2, ...)

인덱스 삭제

DROP INDEX 인덱스명
DROP INDEX 인덱스명 ON 테이블명

EXPLAIN

  • 실제로 인덱스를 사용해 검색하는지를 확인하려면 EXPLAIN을 사용
EXPLAIN SELECT * FROM sample62 WHERE a = 'a';

  • 데이터베이스 객체 중 하나
  • SELECT 명령을 객체로서 이름을 붙여 관리할 수 있도록 한 것이 뷰
  • 뷰를 작성하는 것으로 복잡한 SELECT 명령을 간략하게 표현할 수 있다

뷰 작성

CREATE VIEW 뷰명 AS SELECT 명령

CREATE VIEW sample_view_67 AS SELECT * FROM sample54;
  • 뷰 삭제
DROP VIEW 뷰명

뷰의 약점

  • 테이블에 보관하는 데이터양이 많거나 집계처리를 할때도 뷰가 사용되면 속도가 많이 떨어진다
    • 이런 단점을 위해 머티리얼라이즈드 뷰 사용
    • 처음 참조한 데이터를 테이블처럼 저장장치에 저장해두고 사용
Written on December 3, 2021