2. 데이터 입출력 구현 (2)

RushBsite·2022년 7월 6일
0

정보처리기사

목록 보기
2/7

10. 관계형 데이터베이스의 구조/ 관계형 데이터 모델

관계형 데이터베이스

를 이용해서 데이터 상호관계를 정의하는 데이터베이스

  • 장점 : 보기편함
  • 단점 : 성능 저하

관계형 데이터베이스의 릴레이션 구조

튜플 : 각 행
속성 : 데이터베이스를 구성하는 가장 작은 논리적 단위
도메인 : 하나의 속성이 취할 수 있는 같은 타입의 원자값의 집합

릴레이션의 특징

  • 릴레이션에 포함된 모든 튜플들은 상이함
  • 한 릴레이션 안에 포함된 튜플간에는 순서가 없음
  • 릴레이션 스키마를 구성하는 속성들간의 순서는 중요하지 않음
  • 속성의 명칭은 유일, 구성값은 동일 가능
  • 속성의 부분집합 = key
  • 속성의 값은 논리적으로 더 이상 쪼갤 수 없는 원자값만을 저장

관계형 데이터 모델

2차원 표를 이용해서 데이터 상호 관계를 정의하는 DB 구조


11. 관계형 데이터베이스의 제약 조건 - key

key(키)

후보키 : 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합 = 기본키 로 사용 가능한 속성들을 말함
[후보키의 두가지 속성]

  • 유일성 : 하나의 키값으로 하나의 튜플만을 유일하게 식별
  • 최소성 : 꼭 필요한 최소의 속성으로 구성되어야함*

기본키 : 후보키 중에서 특별히 선정된 주키(Main key) , 중복과 null 이 불가능

대체키: 후보키가 둘 이상일때 기본키를 제외한 나머지 키 = 보조키

슈퍼키: 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키. 유일성은 만족하지만 최소성은 만족하지 못함.

외래키: 다른 릴레이션의 기본키 를 참조하는 속성 또는 속성들의 집합


12. 관계형 데이터베이스이 제약조건 - 무결성(Integrity)

무결성

데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실세계의 실제 값이 일치하는 정확성을 의미

무결성의 종류

종류내용
개체 무결성기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값은 가질 수 없다는 규정
참조 무결성릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정
도메인 무결성주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정
사용자 정의 무결성속성 값들이 사용자가 정의한 제약조건에 만족되어야 한다는 규정

데이터 무결성 강화

  • 어플리케이션 : 데이터 생성,수정,삭제 시 무결성 조건을 검증하는 코드를 프로그램내에 추가함
  • 데이터베이스 트리거: 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가함
  • 제약 조건 : 데이터베이스에 제약 조건을 설정하여 무결성을 유지함

13. 관계대수 및 관계 해석

관계대수

관계대수는 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
[관계대수 특징]

  • 피연산자와 연산결과가 모두 릴레이션
  • 연산의 순서를 명시
  • 순수 관계 연산자와 일반 집합 연산자로 나뉨
  • 일반 집합 연산중 합/교/차 집합연산을 처리하기 위해선 합병조건을 만족해야함

    합병조건 : 릴레이션 R의 i번째 속성과 릴레이션 S의 i번째 속성의 도메인이 서로 같아야한다.(속성의 이름이 같아야하는 것은 아님)

관계해석

관계 데이터의 연산을 표현하는 방법, 비절차적 특성을 지님

14. 이상 / 함수적 종속

이상

삽입이상 : 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
삭제이상 : 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 연쇄삭제가 발생하는 현상
갱신이상 : 테이블에서 튜플에 있느 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보의 불일치성이 생기는 현상

함수적 종속

속성 X의 값 각각에 대하여 속성 Y의 값이 시간에 관계없이 오직 하나만 연관되어 있을경우 Y는 X에 함수적 종속이라 표현.

15. 정규화

정규화

테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이요하여 테이블을 무손실 분해 하는 과정이다. = 가능한 중복을 제거하여 삽입/삭제/갱신 이상의 발생 가능성을 줄이는 것

16. 반정규화

반정규화

시스템 성능 향상/ 편의성 높이기 위해 정규화된 데이터 모델을 의도적으로 통합,중복,분리 하여 정규화 원칙을 위배하는 행위

테이블 통합

2개의 테이블이 join되어 사용되는 경우가 많을 경우 성능 향상을 위해 하나의 테이블로 만들어 사용하는 경우
1:1 관계 테이블 통합 / 1:N 관계 테이블 통합/ 슈퍼타입/서브타입 테이블 통합이 있음

테이블 분할

테이블을 수직 또는 수평으로 분할하는 것

  • 수평 분할 : 레코드 기준으로 테이블 분할, 레코드별 사용빈도에 영향
  • 수직 분할 : 속성이 하나의 테이블에 너무 많을 경우 사용, 갱신위주, 자주 조회되는 속성, 크기가 큰 속성, 보안을 적용해야 하는 속성 등의 종류로 나눌 수 있음

중복 테이블 추가

여러 테이블에서 데이터를 추출해서 사용해야 할 경우, 다른 서버에 저장된 테이블을 이용해야 하는 경우에 중복 테이블 추가를 고려 가능
[중복 테이블 추가 방법]

  • 집계 테이블의 추가 : 집계 데이터를 위한 테이블 생성하고, 각 원본 테이블에 트리거 걸어 사용
  • 진행 테이블의 추가 : 이력 관리 등의 목적으로 추가하는 테이블
  • 특정 부분만을 포함하는 테이블의 추가 : 데이터가 많은 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블을 형성

중복 속성 추가

조인해서 데이터를 처리시, 데이터 조회 경로를 단축하기 위해 사용.
[중복 속성을 추가하는 경우]

  • 조인이 자주 발생하는 속성
  • 접근 경로가 복잡한 속성
  • 엑세스의 조건으로 자주 사용되는 속성
  • 기본키의 형태가 적절하지 않거나 여러 개의 속성으로 구성된 경우

17. 시스템 카탈로그

시스템 카탈로그 : 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스(모든 객체에 대한 정의나 명세에 관한 정보를 유지/관리). 좁은 의미에서 데이터 사전이라고 함.

메타 데이터 : 시스템 카탈로그에 저장된 정보를 의미.
데이터베이스 객체 정보(테이블,인덱스,뷰)/ 사용자정보(아이디,패스워드)/ 테이블의 무결성 제약 조건 정보(기본키, 외래키) 등이 유형으로 존재.

데이터 디렉터리 : 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리유지하는 시스템


18. 데이터베이스 저장 공간 설계

데이터베이스 저장 공간 설계

3가지 를 정의

  • 테이블 객체
  • 컬럼 테이블의 열
  • 테이블 스페이스 (논리적인 영역), 한개의 테이블 스페이스에 한개 이상의 테이블 저장 가능

테이블 종류

종류내용
일반 테이블대부분의 DBMS에서 사용하는 표준
클러스터드 인덱스 테이블기본키나 인덱스키의 순서에 따라 데이터가 저장되는 테이블, 일반 테이블보다 접근 경로 단축
파티셔닝 테이블대용량의 테이블을 작은 논리적 단위인 파티션으로 나눈 테이블
외부 테이블일반테이블 처럼 이용 가능한 외부 파일
임시 테이블트랜잭션이나 세션 별로 데이터를 저장하고 처리가능한 테이블, 트랜잭션 종료되면 삭제됨

19. 트랜잭션 분석/ CRUD 분석

트랜잭션

CRUD 분석

프로세스와 테이블 간에 CRUD 매트릭스를 만들어서 트랜잭션을 분석하는 것

트랜잭션 분석

CRUD 매트릭스를 기반으로 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 한다.

트랜잭션 분석서

단위 프로세스와 CRUD 매트릭스를 이용하여 작성


20. 인덱스

데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조
레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스의 개수를 최소로 하는 것이 효율적

인덱스의 종류

종류내용
트리기반 인덱스인덱스를 저장하는 블록들이 트리 구조를이루고 있는것
비트맵 인덱스인덱스 컬럼의 데이터를 Bit 값으로 변환하여 인덱스 키로 사용하는 방법
함수 기반 인덱스컬럼의 값 대신에 컬럼에 특정 함수나 수식 적용하여 산출된 값을 사용하는 방법
비트맵 조인 인덱스다수의 조인된 객체로 구성된 인덱스
도메인 인덱스개발자가 필요한 인덱스를 직접 만들어 사용하는 것

클러스터드/넌클러스터드 인덱스

종류내용
클러스터드 인덱스인덱스의 키의 순서에 따라 데이터가 정렬되어 저장되는 방식, 검색 빠름
넌클러스터드 인덱스인덱스의 키값만 정렬되어 있고 실제 데이터는 정렬X 방식, 데이터 삽입,삭제 발생시 재정렬 필요

21. 뷰 / 클러스터

뷰(view)

사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 테이블로 부터 유도된 가상 테이블

  • 뷰는 물리적으로 저장장치내에 존재하지 X
  • 뷰에 나타나지 않는 데이터를 보호한다는 기법으로도 쓰임
  • 뷰가 정의된 테이블이나 뷰를 삭제하면 이를 기반으로 한 다른 뷰도 삭제됨
  • 정의시 CREATE, 삭제시 DROP

클러스터(Cluster)

데이터 엑서스 효율 향상을 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장방법

  • 처리범위가 넓을경우 : 단일 테이블 클러스터링
  • 조인이 많이 발생할 경우 : 다중 테이블 클러스터링


22. 파티션

DB에서 파티션은 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 의미

파티션의 장·단점

파티션의 종류

범위 분할 = 지정한 열의 값을 기준으로 분할 ex) 일별, 월별
해시 분할 = 해시 함수 적용, 데이터를 고르게 분산시킴, (특정 데이터가 어디에 있는지는 파악불가) ex) 주민번호, 고객번호
조합 분할 = 범위 + 해시, 범위 분할로 분할한 뒤 해시 함수를 적용해서 다시 분할, (분할한 파티션이 너무 커서 관리 어려울때

profile
게임 기획/개발 지망생

0개의 댓글