본문 바로가기

Study/SQLD

SQLD 완전 요약본 (시간이 없을 때... 이것만 보고 들어가자...)

핵심 개념(Key Concept)


 * 데이터 모델링 유의점 (아래의 것들을 피해야한다)

- 중복 (Duplication)

같은 정보를 여러번 저장하는 것

- 비유연성 (Inflexibility)

데이터의 정의와 데이터의 사용 프로세스를 분리하지 않은 것

- 비일관성 (Inconsistency)

데이터 간 일관성이 떨어지는 것

 

 * 데이터베이스 스키마 구조 3단계

- 외부스키마 (External Schema)

사용자 단계에서 접근하는 스키마. 사용자가 보는 DB니까 외부라고 생각하자.

- 개념스키마 (Conceptual Schema)

사용자 관점을 통합한 조직 전체의 DB. 통합관점이라는 게 중요하다.

- 내부스키마 (Internal Schema)

DB가 물리적으로 저장된 형식. 내부 단계라서 내부 스키마라고 생각하자.

 

 * 엔터티 (Entity)의 특징

- 해당 업무에서 반드시 다루고자 하는 정보여야 한다.

- 유일한 식별자에 의해 식별이 가능해야한다.

- 인스턴스가 '두 개 이상' (절대로 '한 개 이상' 아니다..) 존재하는 집합

- 반드시 속성이 존재

- 다른 엔터티와의 관계가 반드시 하나 이상 존재해야한다. (없으면 안됨)

 

 * 데이터 모델링의 세가지 요소

- 업무가 관여하는 어떤 것 (Things)

- 어떤 것이 가지는 성격 (Attributes)

- 업무가 관여하는 어떤 것들의 관계 (Relationship)

 

* 엔터티, 인스턴스, 속성, 속성값 간의 관계

- 한 개의 엔터티는 두 개 이상의 인스턴스의 집합

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

- 한 개의 속성은 두 개 이상의 속성값을 갖는다.

 

* 속성의 특성에 따른 분류

- 기본속성

 기본적인 모든 속성을 일컫는다.

- 설계속성

 코드성 속성을 말한다.

- 파생속성

 빠른 검색을 위해 미리 계산된 값을 저장한 속성

 

* 도메인 (Domain)

- 각 속성이 가질 수 있는 값의 범위

 

* 속성의 명칭 부여

- 서술식 속성명은 지양한다.

- 약어 사용 또한 지양한다.

- 유일성을 확보해야한다.

 

* 관계의 표기법

- 관계명

 관계의 이름

- 관계차수

 1:1, 1:M, N:M

- 관계선택사양

 필수관계, 선택관계

 

* 동사는 관계를 서술하는 업무기술서의 가장 중요한 사항

 

* 식별자의 종류

- 주식별자 / 보조식별자

 엔터티 내에서 대표성을 가지는가?

- 내부식별자 / 외부식별자

 엔터티 내에서 스스로 생성되었는가?

- 단일식별자 / 복합식별자

 단일 속성으로 식별이 되는가?

- 본질식별자 / 인조식별자

 원래 업무적으로 의미가 있던 식별자 속성을 대체하여 새로만든 식별자인가? (ex. 일련번호)

 

* 주식별자의 특징

- 유일성

 인스턴스들 사이에서 유일하게 구별됨

- 최소성

 주식별자를 구성하는 속성의 수는 최소의 수가 되어야한다.

- 불변성

 한 번 식별자가 되면, 값이 변하면 안된다.

- 존재성

 반드시 데이터 값이 존재 (Not Null)

 

* 식별자(식)와 비식별자관계(비식) 비교

- 식은 강한 연결관계, 비식은 약한 연결관계

- 식은 자식 주식별자 구성에 포함, 비식은 자식 일반 속성에 포함

- 식은 실선 표기, 비식은 점선 표기

 

* 성능을 고려한 데이터 모델링의 순서

1. 데이터 모델링을 할 때 정규화를 정확하게 수행

2. 데이터베이스 용량산정을 수행

3. DB에 발생되는 트랜잭션의 유형을 파악

4. 반정규화 수행

5. 이력모델의 조정, PK/FK조정, 슈퍼타입/서브타입 조정 등을 수행

6. 성능관점에서 데이터 모델을 검증

 

* 정규화가 항상 조회 성능을 저하시키는 것은 아니다. 테이블 간 잦은 조인이 없다면 정규화가 조회 성능을 향상시킬 수 있다. 

 

 * 반정규화

- 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능 향상과 개발과 운영의 단순화를 위해 정규화를 고의로 제거하는 것

- 데이터 무결성이 깨질 수 있음에도 I/O 를 줄이기 위해서 쓰인다.

- 반정규화 대신 뷰 (View) 사용, 클러스터링 적용, 파티셔닝 등의 기법을 사용할 수 있다.

 

* 파티셔닝 (Partitioning)

- 논리적으로는 하나의 테이블이지만 물리적으로는 여러 개의 테이블로 분리하는 기법

- 데이터 엑세스 성능을 개선시키기 위해 사용

 

 * '='로 들어온 조건에 해당하는 컬럼이 인덱스의 가장 앞에 위치할 때, 인덱스의 효율이 가장 높다.

 

 * SQL 문장들의 종류

- 데이터 조작어 (DML)

 SELECT, INSERT, UPDATE, DELETE

- 데이터 정의어 (DDL)

 CREATE, ALTER, DROP, RENAME

- 데이터 제어어 (DCL)

 GRANT, REVOKE

- 트랜잭션 제어어 (TCL)

 COMMIT, ROLLBACK

 

* PK = UNIQUE & NOT NULL (단, UNIQUE는 NULL 가능)

 

* NULL은 오라클에서는 가장 큰 값, SQL 서버에서는 가장 작은 값

 

 

참고(Reference)


 SQL 자격시험 실전문제

 

 

※ 정확하고 부드러운 태클은 언제나 환영입니다.