[8주차] 모델링, DB Tuning

이맑음·2024년 1월 24일

Java 수업 필기

목록 보기
11/15

개념적 모델링

  • 업무의 핵심 개념을 구분 전체적인 레이아웃을 만드는 과정
  • 핵심개념
    1. 개체 추출
    2. 개체들 사이의 관계 정의 - PK 표현
      를 토대로 ER 다이어그램을 그린다

  • book 도서개체
  • customer 고객개체
  • orders 주문개체
  • 요구사항
  1. 서점은 출판사에서 도서를 공급받아 판매한다
  2. 판매 내역은 매일 기록으로 남겨야한다-->고객서비스와 매출 관리에 활용
  3. 서점은 판매하는 도서의 도서번호, 도서이름, 출판사, 도서단가를 가진다
  4. 구매한 도서들은 납품한 출판사와 출판사 담당자 이름, 전화번호를 가진다
  5. 고객이 책을 주문할 때마다 주문번호를 기록해야 한다
  6. 고객에게 판매한 도서는 판매한 날, 고객별 주문 금액 추가로 관리해야 한다
  7. 고객들은 여러번에 걸쳐 다양한 도서를 구매할 수 있다

개념설계/논리설계 (개체와 관계를 구분하여 정리한다)

  • 개체 entity
  • 도서(도서번호, 도서이름, 출판사, 도서단가)
  • 고객(고객번호, 고객이름, 주소, 전화번호)
  • 출판사(출판사 이름, 담당자 이름, 전화번호)
  • 관계 relation
  • 출판사 : 도서 = 1 : N (서점은 출판사로부터 공급한 도서만 등록하여 관리) -> 비식별 관계
  • 고객 : 도서 = N : M -> 식별 관계 --> 주문 관계 표현(도서와 고객의 pk)
  • 주문관계(교차 테이블) :
    고객이 도서를 구입한 날(주문일자), 구매한 가격(주문금액) 을 따로 저장한다 = 고객과 도서의 관계에 속성이 존재

논리적 모델링


물리적 모델링

  • 모델링 시 트랜잭션, 저장 공간 설계 측면에서 고려해야 할 사항
  1. 응답시간 최소화
  2. 얼마나 많은 트랜잭션을 동시에 발생시킬 수 있는지 검토
  3. 데이터가 저장될 공간을 효율적으로 배치

Database Tuning

  • 성능 향상 = 응답 시간 단축(최소화)
  • 인덱스가 속도에 가장 많은 영향을 준다

Index

  • 컬럼에 인덱스를 건다
  • 하나의 컬럼에 하나의 인덱스를 건다
  • 데이터 조회시 무조건 pk로 하지 말고 자주 검색하는 컬럼에 인덱스를 걸어서 사용
-- 인덱스 생성 
create index 인덱스이름 on 테이블명(컬럼명);
-- 인덱스 제거
drop index 인덱스이름;
-- 인덱스 조회
show index from 테이블명;

Clustered Index

  • 테이블 생성시 제약조건 pk를 사용하면 자동으로 인덱스가 생성된다
  • 테이블 당 하나
  • 행 데이터를 자신의 열(pk)을 기준으로 정렬한다
  • pk와 unique not null로 지정한 열이 두개가 있다면 pk의 열이 우선 클러스터형 인덱스가 생성된다
  • pk로 지정한 열로 데이터가 asc 오름차순 정렬된다

Secondary Index

  • 테이블 생성시 제약조건 unique(not null)를 사용하면 자동으로 보조 인덱스가 생성된다
  • 보조 인덱스는 여러 개 생성될 수 있다
  • unique로 생성된 index(=보조 인덱스)는 pk와 다르게 null 값을 허용한다
  • not null 조건을 추가하면 clustered index로 만들 수 있다

0개의 댓글