SQLD 이론 정리 - 1과목
업데이트:
비전공자로서 데이터 분석 분야로 취업하려니 내 실력을 객관적으로 증명할 길은 자격증(혹은 공모전 수상)밖에 없는 것 같다.
7월에 ADSP는 취득했고, 11월 30일 SQLD 시험 접수를 해두었다.
SQLD 시험범위는 두 부분으로 나뉘며 1부에는 데이터 모델의 이해 및 분석 부분을 요약해 보겠다.
1. 데이터 모델링의 이해
데이터 모델링의 특징
- 추상화 : 현실세계를 간략하게 표현한다.
- 단순화 : 누구나 쉽게 이해할 수 있도록 표현한다.
- 명확성 : 명확하게 의미가 해석되어야 하고 한 가지 의미를 가져야 한다.
데이터 모델링 단계
데이터 모델링은 개념적 → 논리적 → 물리적 모델링 단계로 이루어진다.
- 개념적 모델링
- 전사적 관점
- 추상화 수준이 가장 높음
- 업무 측면에서 모델링
- 논리적 모델링
- 특정 데이터베이스 모델에 종속
- 식별자 정의
- 정규화를 통한 재사용성
- 물리적 모델링
- 데이터베이스 구축
데이터 모델링 관점
- 데이터 : 구조분석, 정적분석
- 프로세스 : 시나리오 분석, 도메인 분석, 동적 분석
- 데이터와 프로세스 : CRUD 분석
ERD 작성절차
- 엔터티를 도출하고 그린다
- 엔터티를 배치한다
- 엔터티 간의 관계를 설정한다
- 관계명을 서술한다
- 관계 참여도를 표현한다
- 관계의 필수 여부를 표현한다
데이터 모델링 고려사항
- 데이터 모델의 독립성
- 중복된 데이터가 없어야한다(정규화를 통해 제거 가능)
- 고객 요구사항의 표현
- 간결하게 표현 가능해야 한다
- 데이터 품질 확보
3층 스키마
- 사용자, 설계자, 개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술하고 관계를 정의한 ANSI 표준
- 데이터베이스의 독립성 확보를 위한 방법
- 논리적 독립성 : 저장구조가 변경되어도 응용 프로그램 및 개념 스키마에 영향이 없다
- 물리적 독립성 : 데이터베이스 논리적 구조가 변경되어도 응용 프로그램에 변화가 없다
3층 스키마 구조
- 외부 스키마(사용자 관점)
- 데이터베이스의 뷰를 표시한다
- 응용 프로그램이 접근하는 데이터베이스를 정의한다
- 개념 스키마(설계자 관점)
- 통합 데이터베이스의 구조이다
- 내부 스키마(개발자 관점)
- 물리적 저장구조이다
엔터티
엔터티는 저장되고 관리되어야 하는 데이터이다
- 식별자 : 유일한 식별자가 있어야 한다
- 인스턴스 집합 : 2개 이상의 인스턴스가 있어야 한다
- 속성 : 반드시 속성을 가지고 있다
- 관계 : 다른 엔터티와 최소 한 개 이상 관계가 있어야 한다
- 업무 : 업무에서 관리되어야 하는 집합이다
엔터티 종류
- 유형과 무형에 따른 엔터티 종류
- 유형 엔터티 : 지속적으로 사용되는 엔터티
- 개념 엔터티 : 물리적 형태가 없는 엔터티
- 사건 엔터티 : 비즈니스 프로세스를 실행하면서 생성되는 엔터티
- 발생시점에 따른 엔터티 종류
- 기본 엔터티(키 엔터티) : 독립적으로 생성되는 엔터티
- 중심 엔터티 : 기본 엔터티로부터 발생되고 행위 엔터티를 생성하는 것
- 행위 엔터티 : 2개 이상의 엔터티로부터 발생하는 엔터티
속성
- 속성은 업무에서 관리되는 정보이다
- 속성은 하나의 값만 가진다
- 기본키가 변경되면 속성값도 변경된다
속성의 종류
- 분해여부에 따른 속성의 종류
- 단일 속성 : 하나의 의미로 구성된 것
- 복합 속성 : 여러개의 의미로 구성된 것
- 다중값 속성 : 여러 개의 값을 가질 수 있는 것
- 특성에 따른 속성의 종류
- 기본 속성 : 본래의 속성
- 설계 속성 : 데이터 모델링 과정에서 발생되는 속성 (유일한 값을 부여)
- 파생 속성 : 다른 속성에 의해서 만들어지는 속성
관계
- 관계는 엔터티 간의 관련성을 의미한다
- 존재 관계와 행위 관계로 나누어진다
관계의 종류
- 존재 관계 : 엔터티 간의 상태를 의미한다.
- 행위 관계 : 엔터티 간에 어떤 행위가 있는 것을 말한다.
관계 차수
관계 차수는 두 개의 엔터티 간에 관계를 참여하는 수를 의미한다
- 1대1 관계
- 완전 1대1 : 하나의 엔터티에 관계되는 엔터티의 관계가 하나 있는 경우(반드시 존재)
- 선택적 1대1 : 하나의 엔터티에 관계되는 엔터티가 하나이거나 없을 수도 있다
- 1대N 관계
- 엔터티에 행이 하나 있을 때 다른 엔터티의 값이 여러 개 있는 관계
- M대N 관계
- 두 개 엔터티가 서로 여러 개의 관계를 가지고 있는 것
- 필수적 관계와 선택적 관계
- 필수적 관계 : 반드시 하나가 있어야 하는 관계 (‘l’로 표현)
- 선택적 관계 : 없을 수도 있는 관계(‘O’로 표현)
식별 관계와 비식별 관계
-
식별 관계
- 식별 관계란 강한 개체의 기본키를 하나로 공유하는 것 - 강한 개체는 어떤 다른 엔터티에 의존하지 않고 독립적으로 존재한다
- 강한 개체는 다른 엔터티에게 기본키를 공유한다
- 강한 개체는 식별 관계로 표현된다
-
비식별 관계
- 비식별 관계란 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 칼럼으로 관계를 가지는 것
주식별자(기본키, Primary key)
- 유일성과 최소성을 만족
- 엔터티를 대표
- 엔터티의 인스턴스를 유일하게 식별
- 자주 변경되지 않아야 한다
키의 종류
- 기본키 : 후보키 중에서 엔터티를 대표할 수 있는 키이다
- 후보키 : 후보키는 유일성과 최소성을 만족하는 키이다
- 슈퍼키 : 슈퍼키는 유일성은 만족하지만 최소성(Not Null)을 만족하지 않는 키이다
- 대체키 : 대체키는 여러 개의 후보키 중에서 기본키를 선정하고 남은 키이다
식별자의 종류
- 대표성 여부에 따른 식별자의 종류
- 주식별자 : 엔터티를 대표하는 식별자, 다른 엔터티와 참조 관계로 연결 가능
- 보조 식별자 : 유일성과 최소성은 만족하지만 대표성을 만족하지 못하는 식별자
- 생성 여부에 따른 식별자의 종류
- 내부 식별자 : 엔터티 내부에서 스스로 생성하는 식별자이다
- 외부 식별자 : 다른 엔터티의 관계로 인하여 만들어지는 식별자이다
- 속성의 수에 따른 식별자의 종류
- 단일 식별자 : 하나의 속성으로 구성
- 복합 식별자 : 두 개 이상의 속성으로 구성
- 대체 여부에 따른 식별자의 종류
- 본질 식별자 : 비즈니스 프로세스에서 만들어지는 식별자
- 인조 식별자 : 인위적으로 만들어지는 식별자
2. 데이터 모델과 성능
정규화
- 정규화는 데이터 중복을 제거하고 데이터 모델의 독립성을 확보하는 방법
- 정규화는 데이터를 분해하는 과정
- 정규화는 제1정규화부터 제5정규화까지 있지만, 실질적으로 제3정규화까지만 수행
- 정규화를 수행하면 데이터 모델의 변경 최소화 가능
- 정규화된 모델은 테이블이 분해된다
정규화 절차
- 제1정규화 : 속성의 원자성 확보, 기본키를 설정
- 제2정규화 : 기본키가 2개 이상의 속성으로 이루어진 경우, 부분 함수 종속성을 제거한다
- 제3정규화 : 기본키를 제외한 칼럼 간에 종속성을 제거한다(= 이행 함수 종속성 제거)
- BCNF : 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해한다
- 제4정규화 : 여러 칼럼들이 하나의 칼럼을 종속시키는 경우 분해하여 다중 값 종속성을 제거한다
- 제5정규화 : 조인에 의해서 종속성이 발생되는 경우 분해한다
함수적 종속성
X→Y이면 Y는 X에 함수적으로 종속한다고 말한다. 함수적 종속성은 X가 변화하면 Y도 변화하는지 확인한다
정규화의 문제점
- 정규화는 데이터를 분해해서 중복을 제거하기 때문에 데이터 모델의 유연성을 높인다
- 정규화는 데이터 조회시에 조인을 유발하기 때문에 CPU와 메모리를 많이 사용한다
- 정규화는 조인으로 인하여 성능이 저하된다. 그래서 이 문제를 해결하기 위해 반정규화를 사용한다
반정규화
- 데이터베이스의 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법이다
- 반정규화는 조회 속도를 향상하지만, 데이터 모델의 유연성은 낮아진다
반정규화를 수행하는 경우
- 정규화에 충실하면 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우
- 다량의 범위를 자주 처리해야 하는 경우
- 특정 범위의 데이터만 자주 처리하는 경우
- 요약/집계 정보가 자주 요구되는 경우
반정규화 절차
- 대상 조사 및 검토 : 데이터 처리 범위, 통계성 등을 확인해서 반정규화 대상을 조사한다
- 다른 방법 검토 : 반정규화 수행 전 다른 방법을 검토한다
- 반정규화 수행 : 테이블, 속성, 관계 등을 반정규화 한다
반정규화 기법
- 계산된 칼럼 추가 : 결과를 미리 계산하여 칼럼에 추가한다
- 테이블 수직분할 : 하나의 테이블을 두 개 이상의 테이블로 분할한다
- 테이블 수평분할 : 하나의 테이블에 있는 값을 기준으로 테이블을 분할한다
- 테이블 병합
- 1대1 관계의 테이블을 하나의 테이블로 병합하여 성능을 향상
- 1대N 관계의 테이블을 병합하여 성능을 향상 (하지만 중복이 많이 발생)
- 슈퍼 타입과 서브 타입 관계가 발생하면 테이블을 통합하여 성능을 향상
슈퍼 타입 및 서브 타입 변환 방법
- OneToOne Type : 슈퍼 타입과 서브 타입을 개별 테이블로 도출한다 (조인이 많이 발생하고 관리가 어렵다)
- Plus Type : 슈퍼 타입과 서브 타입 테이블로 도출한다 (조인이 발생하고 관리가 어렵다)
- Single Type : 슈퍼 타입과 서브 타입을 하나의 테이블로 도출한다 (조인 성능이 좋고 관리가 편리하지만, I/O 성능이 나쁘다)
분산 데이터베이스
- 물리적으로 떨어진 데이터베이스에 네트워크로 연결하여 단일 데이터베이스 이미지를 보여 주고 분산된 작업 처리를 수행하는 데이터베이스를 분산 데이터베이스라고 한다.
- 데이터베이스는 투명성을 제공해야 한다
분산 데이터베이스 투명성의 종류
- 분할 투명성 : 고객은 하나의 논리적 릴레이션이 여러 단편으로 분할되어 각 단편의 사본이 여러 시스템에 저장되어 있음을 인식할 필요가 없다
- 위치 투명성 : 고객은 사용하려는 데이터의 저장 장소를 명시할 필요가 없다, 고객은 어느 위치에 있더라도 동일한 명령을 사용하여 데이터에 접근할 수 있어야 한다
- 지역 사상 투명성 : 지역 DBMS와 물리적 데이터베이스 사이의 사상이 보장됨에 따라 각 지역 시스템 이름과 무관한 이름이 사용 가능하다
- 중복 투명성 : 데이터베이스 객체가 여러 시스템에 중복되어 존재함에도 고객과는 무관하게 데이터의 일관성이 유지된다
- 장애 투명성 : 데이터베이스가 분산되어 있는 각 지역의 시스템이나 통신망에 이상이 발생해도, 데이터의 무결성은 보장된다
- 병행 투명성 : 여러 고객의 응용 프로그램이 동시에 분산 데이터베이스에 대한 트랜잭션을 수행하는 경우에도 결과에 이상이 없다
분산 데이터베이스 설계 방식
- 상향식 설계방식 : 지역 스키마 작성 후 향후 전역 스키마를 작성하여 분산 데이터베이스를 구축한다
- 하향식 설계방식 : 전역 스키마 작성 후 해당 지역 스키마를 작성하여 분산 데이터베이스를 구축한다
분산 데이터베이스 장점과 단점
장점 | 단점 |
---|---|
데이터베이스 신뢰성과 가용성이 높다 | 데이터베이스가 여러 네트워크를 통해서 분리되어 있기 때문에 관리와 통제가 어렵다 |
분산 데이터베이스가 병렬 처리를 수행하기 때문에 빠른 응답이 가능하다 | 보안관리가 어렵다 |
분산 데이터베이스를 추가하여 시스템 용량 확장이 쉽다 | 데이터 무결성 관리가 어렵다 |
데이터베이스 설계가 복잡하다 |
댓글남기기