IT/정보처리기사실기 공부

실기 정리 노트 2

phobi-k 2020. 11. 25. 18:39

3. 데이터 입/출력 구현

  • 데이터 모델: 현실 세계의 정보를 컴퓨터에 표현하기 위해 단순화, 추상화 하여 체계적으로 표현한 개념적 데이터 모형이다.
    • 데이터 모델 구성 요소: 개체, 속성, 관계
    • 데이터 모델 종류
      • 개념적 데이터 모델: 인간의 이해를 돕기 위해 표현
      • 논리적 데이터 모델(defalut): 컴퓨터의 이해를 돕기 위해 표현
      • 물리적 데이터 모델: 개체->테이블, 속성->컬럼, ->관계->기본키,외래키
    • 데이터 모델 표시할 요소: 구조(개체들간의 관계), 연산(db의 데이터 처리, db조작하는 기본 도구), 제약조건
  • 이상: 테이블에서 일부 속성의 종속으로 인해 데이터의 중복이 발생하고 중복으로 인해 테이블 조작에 문제가 발생하는 것
    • 삽입 이상: 원치 않는 값으로 인해 삽입을 못하는 것
    • 삭제 이상: 연쇄 삭제
    • 갱신 이상: 일부만 갱신되어 정보의 불일치성 오는거
  • 함수적 종속: 속성 X(결정자)의 값에 대해 속성 Y(종속자)의 값이 오직 하나만 연관되어 있는 경우 X(결정자)->Y(종속자)
    • 완전 함수적 종속: 기본키(X,Y)(복합키)가 모두 있어야 종속 되는 경우
    • 부분 함수적 종속: 기본키(X,Y)중 하나에만 종속 되는 경우
  • 정규화: 테이블의 속성이 종속적인 관계를 갖는 특성을 이용해 테이블을 무손실 분해하는 것
    • 도부이결다조
    • 도메인이 원자값
    • 부분함수적종속제거: 기본키가 2개인 테이블이 2개로 나뉘어지고 한쪽은 기본키2개 한쪽은 기본키1개로 나뉨
    • 이행종속제거: 기본키가 1개이고, 기본키가 아닌애가 기본키가 됨. A->B이고,B->C일때 A->C이다
    • BCNF : 기본키가 2개이고, 기본키가 아닌애가 기본키가 됨. 기본키 였던애는 기본키속성 제거 결정자이면서 후보키가 아닌 것 제거(모든 결정자가 후보키)
    • 다치종속(Aㅡ>->B) : 기본키가 (A,B,C)일 때 (A,C)에 대응하는 B가 A에만 종속되고 C에는 무관하면 B는 A에 다치종속 Aㅡ>->B
    • 조인종속이용
    •  
  • 반정규화: 성능향상, 편의성을 위해 정규화된 데이터 모델을 통합, 분리, 중복하는 것으로 의도적으로 정규화 원칙을 위배하는 행위
    • 테이블 통합: 두 테이블이 조인 되는 경우가 많을 때 사용
    • 테이블 분할: 수직분할(속성이 많아서 속성을 기준으로 분할), 수평분할(레코드기준으로 분할)
    • 중복테이블 추가: 특정범위, 넓은범위의 데이터를 자주 처리하는 경우, 정규화로 인해 느려진 경우
    • 중복속성 추가: 데이터를 조회하는 경로를 단축하기위해 사용 (조인이 자주발생하는 경우, 접근 경로가 복잡한 속성인 경우에 사용)
  • 물리 데이터모델
    • 로우(튜플, 인스턴스, 어커런스)
    • 컬럼, 기본키, 외래키
    • 슈퍼타입 기준 테이블 변환: 서브타입을 슈퍼타입에 병합
    • 서브타입 기준 테이블 변환: 슈퍼타입을 각각의 서브타입에 추가
    • 개별타입 기준 테이블 변환: 슈퍼타입, 서브타입 각각의 개별적인 테이블로 변환
    • O가 있는 쪽에 외래키 추가
  • 인덱스 설계: 레코드에 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조
    • 분포도가 좁은 테이블 (분포도 = 컬럼값의 평균 ROW 수/ 테이블의 ROW수) * 100)
    • table scan: 모든 테이블을 확인 하는 것
    • 클러스터드 인덱스: 인덱스의 순서와 레코드의 순서가 일치하는 것 (<-> 넌클러스터드 인덱스 :인덱스의 키값만 정렬되어 있고 실제 데이터는 정렬되어 있지 않은 것)
    • 트리 기반 인덱스: 인덱스를 저장하고 있는 블록들이 트리 구조임 (B+ 트리, B 트리)
    • 비트맵 인덱스: 인덱스 컬럼의 데이터를 Bit값(0,1)로 변환하여 인덱스 키로 사용
    • 함수 기반 인덱스: 특정함수나 수식 이용, B+트리 인덱스 또는 비트맵 인덱스 생성해서 사용
    • 비트맵 조인 인덱스: 조인된 객체로 구성된 인덱스
    • 도메인 인덱스: 개발자가 직접 인덱스를 만들어 사용
  • 뷰 설계: 접근이 허용된 자료만 제한적으로 보여주기 위한 가상 테이블, 물리적으로 존재하지는 않지만 데이터의 논리적 독립성을 제공한다 (create view 뷰이름 (뷰속성) as select (컬럼명) from~)
  • 클러스터: 데이터 저장 시 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 방법
    • 분포도가 넓은 테이블 , 자주 조인되는 테이블
    • 데이터 조회속도는 향상, 데이터 입력, 수정, 삭제 성능은 저하
  • 파티션 설계 : 대용량의 테이블이나 인덱스를 나누는 것
    • 범위 분할: 지정한 열의 값 기준으로 나눔
    • 해시 분할: 해시 함수를 적용한 값을 기준으로 나눔(고르게 분산됨)
    • 조합 분할: 범위 분할 + 해시 분할