[DB/SQLD] SQLD 기출문제 1과목 데이터 모델링의 이해 중요개념

4 분 소요

1

서브타입, 슈퍼타입이 있을 때 항상 동시에 조회할 때는 single type으로 변환하는 것이 좋다.

2

M:N 관계를 해소하기 위해서 인위적으로 만들어진 엔터티를 교차 엔터티(Association Entity)라고 한다.

3

ERD 표기법 중 IE 표기법은 관계의 1:N 관계에서 N쪽에 새발을 표시하고 선택, 필수 참여관계에서 선택참여에 O 필수 참여에 로 표시한다.

4

변환방법 설명
One To One Type 슈퍼타입과 서브타입을 개별 테이블로 도출. 테이블의 수가 많아서 조인이 많이 발생하고 관리하기 어려움.
Plus Type 슈퍼타입과 서브타입 테이블로 도출. 조인이 발생하고 관리가 어렵다.
Single Type 슈퍼타입과 서브타입을 하나의 테이블로 도출하는 것. 조인성능이 좋고 관리가 편하지만, IO 성능이 나쁘다.

5

  식별자 관계 비식별자 관계
목적 강한 연결관계 약한 연결관계
기본키 부모 릴레이션의 기본키가 자식 릴레이션의 기본키로 사용됨 부모 릴레이션의 기본키가 자식 릴레이션의 일반 속성으로 사용됨.
표기법 실선 점선

6

성능을 고려한 데이터베이스 모델링 시에도 가장 먼저 정규화를 수행해서 데이터 모델의 독립성을 향상시켜야 한다. 그리고 필요에 따라서 트랜잭션 유형, 반정규화 등을 수행하고 제일 마지막에는 성능관점에서 데이터 모델을 검증해야 한다.

7

분산데이터베이스 장단점

장점 단점
지역 자치성, 점증적 시스템 용량 확장 소프트웨어 개발 비용
신뢰성과 기용성 오류의 잠재성 증대
효용성과 융통성 처리 비용의 증대
빠른 응답 속도와 통신비용 절감 설계, 관리의 복잡성과 비용
데이터의 가용성과 신뢰성 증가 불규칙한 응답 속도
시스템 규모의 적절한 조절 통제의 어려움
각 지역 사용자의 요구 수용 증대 데이터 무결성에 대한 위협

8

개념 스키마 : 모든 사용자 관점을 통합한 조직 전체 관점의 통합적 표현이다.

9

테이블 설계 시 인덱스

  • 주로 B-tree 인덱스로 되어있음
  • 외래키가 설계되어 있지만 인덱스가 없는 상태에서는 입력/삭제/수정의 부하가 덜 생긴다.
  • 테이블에 만들 수 있는 인덱스의 수는 제한이 없으나, 너무 많이 만들면 오히려 성능부하가 발생한다.
  • 조회는 일반적으로 인덱스가 있는 것이 유리하다.

10

구분 Row Chaining Row Migration
정의 하나의 row를 하나의 블록에 저장할 수 없어서 여러 블록에 걸쳐서 저장하는 현상 update로 인하여 늘어나는 공간을 저장할 공간이 없어서 다른 블록으로 row를 옮기는 현상
특성 initial row piece(행조각)와 row pointer로 블록내에 저장 기존 블록에는 migration되는 데이터의 row header와 블록 주소값을 갖게 되고, 새로운 블록에는 migration되는 데이터가 저장됨
문제점 row의 정보를 검색하기 위해 하나 이상의 데이터 블록을 scan 해야 하기 때문에 성능이 감소됨 migration된 row를 읽기 전에 기존 블록에서 헤더를 통해 migration된 row를 읽기 때문에 성능이 감소됨
해결책 블록의 크기를 크게 만듬 pctfree를 크게 설정. 객체를 export하고 삭제한 후 import. 객체를 migration하고 truncate

11

테이블의 반정규화

기법분류 기법 내용
테이블 병합 1:1관계 테이블 병합 1:1관계를 통합하여 성능향상
테이블 병합 1:M관계 테이블 병합 1:M 관계를 통합하여 성능 향상
테이블 병합 슈퍼/서브타입 테이블 병합 슈퍼/서브 관계를 통합하여 성능향상
테이블 분할 수직 분할 칼럼 단위의 테이블을 디스크 I/O를 분산 처리하기 위해 테이블을 1:1로 분리하여 성능 향상(트랜잭션의 처리되는 유형파악이 선행되어야 함
테이블 분할 수평 분할 행 단위로 집중 발생되는 트랜잭션을 분석하여 디스크 I/O 및 데이터 접근의 효율성을 높여 성능을 향상하기 위해 행 단위로 테이블을 쪼갬(관계가 없음)
테이블 추가 중복 테이블 추가 다른 업무이거나 서버가 다른 경우 동일한 테이블 구조를 중복하여 원격조인을 제거하고 성능을 향상
테이블 추가 통계 테이블 추가 sum, avg 등을 미리 수행하여 계산해 둠으로써 조회 시 성능을 향상
테이블 추가 이력 테이블 추가 이력 테이블 중에서 마스터 테이블에 존재하는 레코드를 중복하여 이력 테이블에 존재하는 방법

12

식별자의 분류체계

대표성 여부

  • 주식별자 : 엔터테 내에서 각 어커런스를 구분할 수 있는 구분자이며, 타 엔터티와 참조관계를 연결할 수 있는 식별자
  • 보조식별자 : 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자이나 대표성을 가지지 못해 참조관계 연결을 못함

스스로 생성여부

  • 내부식별자 : 엔터티 내부에서 스스로 만들어지는 식별자
  • 외부식별자 : 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자

속성의 수

  • 단일 식별자 : 하나의 속성으로 구성된 식별자
  • 복합 식별자 : 둘 이상의 속성으로 구성된 식별자

대체 여부

  • 본질 식별자 : 업무에 의해서 만들어진 식별자
  • 인조 식별자 : 업무적으로 만들어지지 않지만 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자

13

식별자의 특징

  • 주식별자에 의해 엔터티 내에 모든 인스턴스가 유일하게 구분되어야 한다.
  • 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
  • 지정된 주식별자의 값은 자주 변하지 않아야 한다.
  • 주식별자가 지정이 되면 반드시 값이 들어와야 한다.

14

칼럼의 반정규화

반정규화 기법 내용
중복 칼럼 추가 조인에 의해 처리할 때 성능저하를 예방하기 위해, 즉 조인을 감소시키기 위해 중복된 칼럼을 위치시킴
파생 칼럼 추가 트랜잭션이 처리되는 시점에 계산에 의해 발생되는 성능저하를 예방하기 위해 미리값을 계산하여 칼럼에 보관함. derived column이라고 함
이력 테이블 칼럼 추가 대량의 이력 데이터를 처리할 때 불특정 날 조회나 최근 값을 조회할 때 나타날 수 있는 성능저하를 예방하기 위해 이력 테이블에 기능성 칼럼(최근값 여부, 시작과 종료일자 등)을 추가함
기본키에 의한 칼럼 추가 복합의미를 갖는 기본키를 단일 속성을 구성하였을 경우 발생됨. 단일 기본키 안에서 특정 값을 별도로 조회하는 경우 성능저하가 발생될 수 있음. 이 때 이미 기본키 안에 데이터가 존재하지만 성능향상을 위해 일반속성으로 포함하는 방법이 기본키에 의해 칼럼추가 반정규화임
응용시스템 오작동을 위한 칼럼 추가 업무적으로는 의미가 없지만 사용자가 데이터처리를 하다가 잘못처리하여 원래값으로 복구하기를 원하는 경우 이전 데이트를 임시적으로 중복하여 보관하는 기법. 칼럼으로 이것을 보관하는 방법은 오작동 처리를 위한 임시적인 기법이지만 이것을 이력데이터 모델로 풀어내면 정상적인 데이터 모델의 기법이 될 수 있음

15

한개의 엔터티에는 두 개 이상의 속성을 갖는다.

16

속성의 분류

1) 특성에 따른 분류 : 기본, 설계, 파생 속성

2) 엔터티 구성방식에 따른 분류 : 기본키, 외래키, 일반 속성

17

조인이 복잡한 여러 테이블이 존재할 경우

반정규화로 데이터를 처리할 때 여러 경로에 걸쳐서 발생하는 조인 연산에 의한 성능저하를 예방하기 위해서는 추가적인 관계를 맺는 관계의 반정규화 기법을 사용하는데 그중 하나가 중복 관계 추가이다.

18

Hash Join

  • 조인 칼럼의 인덱스가 존재하지 않을 경우에도 사용 가능
  • 해시함수를 이용하여 조인을 수행하기 때문에 =로 수행하는 조인인 동등조건에서만 사용가능
  • 선행테이블을 build input이라 하며 후행 테이블은 prove input이라고 한다.

19

테이블의 반정규화 기법 중 데이터 무결성을 깨뜨릴 위험을 갖지 않고서도 데이터 처리의 성능을 향상시킬 수 있는 기법은 중복관계 추가이다.

20

ERD로 구성된 엔터티 구조에서 전체 비율 중 98%에 해당하는 일반고객정보 엔터티와 2% 비율에 해당하는 법인고객정보 엔터티가 있으며 로그인 정보가 공통 속성으로 존재할 때 이 엔터티는 2개의 서브타입으로 나눠서 저장한다.