[자격증] SQL 개발자 소개 및 공부
📜 𝗖𝗲𝗿𝘁𝗶𝗳𝗶𝗰𝗮𝘁𝗲

[자격증] SQL 개발자 소개 및 공부

인턴십 하면서 SQLD 자격증을 따려고 했었는데 턱걸이로 불합격했었습니다. 그래서 할 것도 없는데 다시 한번 도전해보려구요. 🥸

저번에는 사실 수능 5일의 기적마냥 이틀도 채 못채우고 시험을 치러갔었는데 이번에는 시험까지 대략 한달 반 정도 남아있습니다.

이번에야말로 합격을 제대로 노려보겠습니다.

이상하게 한달 정도 남으면 묘하게 마음이 안심이 되면서 합격할 수 있을 것 같은 의욕이 샘솟습니다. 왜일까요?

 

이번 포스팅에서는 SQLD 자격증에 대해서 알아보고 1과목 / 2과목 정리를 해보도록 하겠습니다.

아마 정리는 시험치러 가기 전까지 복습 삼아서 계속 할 것 같습니다.


 

 SQLD 자격증 

국가공인 SQL 개발자 자격증

자격증의 풀네임은 위와 같습니다.

데이터 자격 검정 (Kdata) 에서 운영하는 SQL 자격증은 총 2개가 있는데 그 중에 하나가 SQLD이고 다른 하나가 SQLP 자격증입니다.

SQLD는 응시제한이 없고 SQLP는 학사학위가 있는 등 응시제한이 있습니다.

둘 모두 실기 없이 그냥 필기만 따면 됩니다.

 

SQLD는 총 2과목으로 구성되어 있으며 객관식 40문항 / 주관식 단답형 10문항으로 이루어져 있습니다.

시간은 1시간 30분이 주어집니다.

 

📚 출제문항 수 및 배점

SQLD 출제문항수

 

📚 세부 내용별 문항수

1과목 같은 경우는 2장으로 이루어져 있고 2과목은 3장으로 이루어져 있습니다.

 

📚 합격기준

합격기준은 다음과 같습니다.

1. 과목별 40% 이상 취득
2. 총점 60점 이상

즉슨 1과목 데이터 모델링의 이해에서 10문항 중에서 4개 이상 맞아야하고

2과목 SQL 기본 및 활용에서 40문항 중에서 16개 이상 맞아야합니다.

총점으로 치면 각각 8점 / 32점 이상 맞아야함. 즉 과락기준을 지키면서 10문제 더 맞춰야합니다.

 

 


 

 

 

 1과목 : 데이터 모델링의 이해 

10문항 출제 / 2장으로 구성

 

📚 과목 개요

 1장 데이터 모델링의 이해  2장 데이터 모델과 성능
  • 데이터모델의 이해
  • 엔터티
  • 속성
  • 관계
  • 식별자
  • 정규화와 성능
  • 반정규화와 성능
  • 대용량 데이터에 따른 성능
  • DB 구조와 성능
  • 분산DB 데이터에 따른 성능

 

📚 1장 데이터 모델링의 이해

◾ 모델링의 특징
- 추상화 : 현실세계를 일정한 형식에 맞추어 표현
- 단순화 : 복잡한 현실을 제한된 언어나 표기법을 통해 이해하기 쉽게 함
- 명확화 : 애매모호함을 배제하고 누구나 이해가 가능하도록 정확하게 현상을 기술
◾ 데이터 모델링이 필요한 주요 이유
- 업무정보를 구성하는 기초가 되는 정보들에 대해 일정한 표기법에 의해 표현
- 분석된 모델을 가지고 DB 생성하여 개발 및 데이터 관리에 사용
- 데이터 모델링 자체로서 업무의 흐름을 설명하고 분석
- 단지 DB를 구축하기 위한 용도가 아님.
◾ 데이터 모델링을 할 때 유의해야할 사항
1. 중복 (Duplication)
- 여러 장소의 DB에 중복된 정보를 저장하지 않도록 한다.
2. 비유연성 (Inflexibility)
- 데이터의 정의를 데이터의 사용 프로세스와 분리한다.
- 데이터 혹은 프로세스의 작은 변화가 앱과 DB에 중대한 변화를 일으킬 수 있는 가능성을 줄인다.
- 프로그램과 테이블간의 연계성을 높이지 않는다.
3. 비일관성 (Inconsistency)
- 데이터간의 상호 연관관계를 명확하게 정의하여 일관성 있게 데이터가 유지되도록 한다.
- 데이터와 데이터 간의 상호 연관 관계에 대해 명확하게 정의한다.
◾ 개념 - 논리 - 물리 데이터 모델
1. 개념적 데이터 모델링
- 추상화 수준이 높고 업무 중심적임.
- 포괄적인 수준의 모델링 진행.
- 전사적 데이터 모델링
- EA수립시 많이 이용
2. 논리적 데이터 모델링
- 시스템으로 구축하고자 하는 업무에 대해 key, 속성, 관계 등을 정확하게 표현.
- 재사용성이 높음.
3. 물리적 데이터 모델링
- 실제로 데이터 베이스에 이식할 수 있도록 성능 및 저장
- 물리적인 성격을 고려하여 설계
◾ ANSI_SPARC에서 정의한 3단계 구조 (Three-level architecture) : 데이터 독립성 요소
1. 외부 스키마 (External Schema)
- View 단계 여러 개의 사용자 관점으로 구성
- 개개 사용자 단계로서 개개 사용자가 보는 개인적 DB 스키마
- DB의 개개 사용자나 응용프로그래머가 접근하는 DB 정의
2. 개념 스키마 (Conceptual Schema)
- 개념단계 하나의 개념적 스키마로 구성
- 모든 사용자 관점을 통합한 조직 전체의 DB를 기술
- 모든 응용시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 DB를 기술
- DB에 저장되는 데이터와 그들간의 관계를 표현하는 스키마
3. 내부 스키마 (Internal Schema)
- 내부단계, 내부 스키마로 구성
- DB가 물리적으로 저장된 형식
- 물리적 장치에서 데이터가 실제적으로 저장되는 방법을 표현하는 스키마
◾ 데이터 모델링의 세가지 요소
1. Things (엔터티)
2. Attributes (속성)
3. Relationships (관계)
◾ ERD에 대한 설명
- 1976년 피터첸에 의해 Entity-Relationship Model (E-R Model)이라는 표기법이 만들어졌다.
- 일반적으로 ERD를 작성하는 방법은
엔터티 도출 -> 엔터티 배치 -> 관계 설정 -> 관계명 기술의 흐름으로 작업을 진행한다.
- 관게의 명칭은 관계 표현에 있어서 매우 중요한 부분에 해당한다.
◾ 엔터티의 특징
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다.
- 유일한 식별자에 의해 식별이 가능해야 한다.
- 영속적으로 존재하는 두개 이상의 인트턴스의 집합이어야 한다.
- 엔터티는 업무 프로세스에 의해 이용되어야 한다.
- 엔터티는 반드시 속성이 있어야 한다.
- 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다. 통계성 엔터티나 코드성 엔터티의 경우는 관계를 생략할 수 있다.
- 데이터로서 존재하지만 업무에서 필요로 하지 않으면 해당 업무의 엔터티로 성립될 수 없다.
◾ 기본 엔터티 설명
- 다른 엔터티로부터 주식별자를 상속받지 않고 자신의 고유한 주식별자를 가진다.
- 해당 업무에 원래 존재하는 정보로서 독립적으로 생성이 가능하다.
- 자신은 타 엔터티의 부모의 역할을 하게 된다.
- 사원, 부서, 고객, 상품, 자재 등이 기본 엔터티가 될 수 있다.
◾ 엔터티에 이름을 부여하는 방법
- 가능하면 약어를 사용하지 않고 현업업무에서 사용하는 용어를 사용한다.
- 모든 엔터티에서 유일한 이름이 부여되어야 한다.
- 엔터티가 생성되는 의미대로 자연스럽게 부여하도록 한다.
◾ 엔터티, 인스턴스, 속성, 속성값의 관계
- 한 개의 엔터티는 두 개 이상인스턴스의 집합이어야 한다.
- 한 개의 엔터티는 두 개 이상속성을 갖는다.
- 한 개의 속성은 한 개의 속성값을 갖는다.
◾ 엔터티의 분류
a. 유무에 따른 분류
- 유형 엔터티 : 물리적인 형태가 있고 안정적이며 지속적으로 활용 ex) 사원, 물품, 강사
- 개념 엔터티 : 물리적인 형태 존재 X, 관리해야할 개념적 정보로 구분 ex) 조직, 보험상품
- 사건 엔터티 : 업무를 수행함에 따라 발생하는 엔터티, 각종 통계자료에 이용 가능 ex) 주문, 청구, 미납
b. 발생시점에 따른 분류
- 기본/키엔터티 : 그 업무에 원래 존재하는 정보, 독립적으로 생성 가능 ex) 사원, 부서, 고객, 상품, 자재
- 중심엔터티 : 기본엔터티로부터만 발생. 업무에 있어서 중심적인 역할을 함 ex) 계약, 사고, 예금원장, 청구
- 행위엔터티 : 두 개 이상의 부모 엔터티로부터 발생. 자주 내용이 바뀌거나 데이터량이 증가. ex) 주문목록, 사원변경이력
◾ 속성의 개념
- 업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위
◾ 속성에 대한 설명
- 엔터티에 대한 자세하고 구체적인 정보를 나타낸다.
- 하나의 엔터티는 두 개 이상의 속성을 갖는다.
- 하나의 인스턴스에서 각각의 속성은 한 개의 속성값을 가진다. (하나 이상 가지면 안됨)
- 속성도 집합이다.
- 정규화 이론에 근간하여 정해진 주식별자에 함수적 종속성을 가져야한다.
◾ 속성의 분류
a. 특성에 따른 분류
- 기본 속성 (Basic Attribute) : 업무로부터 추출한 모든 속성
- 설계 속성 (Designed Attribute) : 업무상 필요한 데이터 이외에 데이터 모델링을 위해, 업무를 규칙화하기 위해 속성을 새로 만들거나 변형하여 정의하는 속성
- 파생 속성 (Derived Attribute) : 다른 속성에 영향을 받아 발생하는 속성, 보통 계산된 값들이 이에 해당. 데이터를 조회할 때 빠른 성능을 내기 위하여 원래 속성값을 계산
b. 엔터티 구성방식에 따른 분류
- PK 속성 : 엔터티를 식별할 수 있는 속성
- FK 속성 : 다른 엔터티와의 관계에서 포함된 속성
- 일반속성 : 엔터티에 포함되어 있고, PK, FK에 포함되지 않은 속성
◾ 도메인
- 각 속성에서 가질 수 있는 값의 범위
- 각 속성은 따라서 도메인 이외의 값은 갖지 못한다.
- 속성에 대한 데이터 타입과 크기, 그리고 제약사항을 지정하는 것
◾ 속성의 명명
- 현업업무에서 사용하는 이름을 부여한다.
- 서술식의 속성명은 사용하지 말아야 한다.
- 공용화되지 않은 업무에서 사용하지 않는 약어는 사용하지 않는 것이 좋다.
- 가능하면 모든 속성의 이름은 유일하게 작성하는 것이 좋다. 이로써 유일성을 확보한다.
유일성을 확보하게 되면 반정규화, 통합 등의 작업을 할 때 혼란을 방지할 수 있는 방법이 된다.
◾ 관계에 대한 설명
- 관계는 존재에 의한 관계행위에 의한 관계로 구분될 수 있으나 ERD에서는 관계를 연결할 때, 존재와 행위를 구분하지 않고 단일화된 표기법을 사용한다.
- UML에는 클래스다이어그램의 관계 중 연관관계의존관계가 있고 이것은 실선과 점선의 표기법으로 다르게 표현이 된다.
◾ 관계의 표기법
1. 관계명 : 관계의 이름
2. 관계차수 : 1:1, 1:M, M:N
3. 관계선택사양 : 필수관계, 선택관계
◾ 두 개의 엔터티 사이에 정의한 관계를 체크하는 사항
1. 두 개의 엔터티 사이에 관심 있는 연관규칙이 존재하는가?
2. 두 개의 엔터티 사이에 정보의 조합이 발생하는가?
3. 업무기술서, 장표에 관계연결을 가능하게 하는 동사(Verb)가 있는가?
4. 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
◾ 식별자의 특징
- 유일성 : 주식별자에 의해 엔터티내에 모든 인스턴스들이 유일하게 구분되어야 한다.
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
- 불변성 :  지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다.
- 존재성 : 주식별자가 지정이 되면 반드시 값이 들어와야 한다.
◾ 식별자의 분류 체계
a. 대표성 여부
- 주식별자 : 타 엔터티와 참조관계를 연결할 수 있는 식별자
- 보조식별자 : 구분자나 대표성을 가지지 못해 참조관계를 연결못하는 식별자
b. 스스로 생성 여부
- 내부식별자 : 엔터티 내부에서 스스로 만들어지는 식별자
- 외부식별자 : 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자
c. 속성의 수
- 단일식별자 : 하나의 속성으로 구성된 식별자
- 복합식별자 : 둘 이상의 속성으로 구성된 식별자
d. 대체 여부
- 본질식별자 : 업무에 의해 만들어지는 식별자
- 인조식별자 : 업무적으로 만들어지지는 않지만, 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자
◾ 주식별자의 도출 기준
- 해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.
- 복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.
◾ 식별자관계
- 부모로부터 받은 식별자를 자식엔터티의 주식별자로 이용하는 경우는 NULL값이 오면 안된다.
반드시 부모엔터티가 생성되어야 자기 자신의 엔터티가 생성되는 경우이다.
- 부모로부터 받은 식별자를 자식 엔터티가 모두 사용하고 그것만으로 주식별자로 사용한다면 부모엔터티와 자식엔터티와의 관계는 1:1이 된다.
- 부모로부터 받은 속성을 포함하여 다른 부모 엔터티에서 받은 속성을 포함하거나 스스로 가지고 있는 속성과 함계 주식별자로 구성되는 경우는 1:M 관계가 된다.

식별자와 비식별자관계 비교

◾ 비식별자 관계로 연결하는 것을 고려해야하는 경우
- 부모엔터티에 참조값이 없어도 자식엔터티의 인스턴스가 생성될 수 있는 경우

- 여러 개의 엔터티를 하나로 통합하면서 각각의 엔터티가 갖고 있던 여러 개의 개별관계가 통합되는 경우
- 자식쪽 엔터티의 주식별자를 부모엔터티와는 별도로 생성하는 것이 유리하다고 판단하는 경우
- 부모와 자식이 같이 소멸되는 경우는 식별자관계로 정의

 

 

📚 2장 데이터 모델과 성능

◾ 성능 데이터 모델링에 대한 설명
- 분석/설계 단계에서 DB 처리 성능을 향상 시킬 수 있는 방법을 주도 면밀하게 고려한다.
- 데이터 증가가 빠를수록 성능저하에 따른 성능개선비용은 (기하급수적으로) 증가한다.
- 데이터모델은 성능을 튜닝하면서 변경이 될 수 있는 특징이 있다.
- 분석/설계 단계에서 성능을 고려한 데이터모델링을 수행할 경우 성능저하에 따른 Rework(재업무) 비용을 최소화 할 수 있는 기회를 가지게 된다.
- 분석/설계 단계 데이터 모델을 대충하여 성능 저하 SQL 문장 튜닝, 부족한 하드웨어 증설 등 추가적인 비용을 소진하도록 하지 않는다.
◾ 성능이 저하되는 데이터 모델의 세가지 경우
1. 데이터 모델 구조에 의한 성능 저하
2. 데이터가 대용량이 됨으로 인한 불가피한 성능 저하
3. 인덱스 특성을 충분히 고려하지 않고 인덱스를 생성함으로 인해 나타나는 성능 저하
◾ 성능 데이터 모델링 고려사항
1. 데이터 모델링을 할 때 정규화를 정확하게 수행한다.
2. 데이터베이스 용량산정을 수행한다.
3. 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.
4. 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.
5. 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행한다.
- 이력데이터는 시간에 따라 반복적으로 발생이 되기 때문에 대량 데이터일 가능성이 높아 특별히 성능을 고려하여 칼럼 등을 추가하도록 설계해야한다.

6. 성능관점에서 데이터 모델을 검증한다.
◾ 정규화를 수행한다는 것
- 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반속성을 의존자로 하여 입력/수정/삭제 이상을 제거하는 것이다.
- 데이터 중복속성을 제거하고 결정자에 의해 동일한 의미의 일반속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다.
- 따라서, 정규화된 테이블을 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있는 특성이 있다.
◾ 반정규화에 대한 설명
- 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합/중복/분리하는 과정
- 의도적으로 정규화 원칙을 위배하는 행위
- 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가 등이 있음.
◾ 동일한 속성 형식을 두 개 이상의 속성으로 나열하여 반정규화 했을 때
- 한 테이블에서 인덱스가 많아지면 조회 성능은 향상되지만 데이터 입력/수정/삭제 성능은 저하된다.
- 일반 업무처리에서 인덱스 수를 가급적 7-8개가 넘지 않도록 하는 것이 좋다.
- 원자성을 위배한 제 1차 정규화의 대상
- 로우단위도, 칼럼단위도 중복되면 1차 정규화의 대상이 된다.
◾ 함수적 종속성(Functional Dependency)에 근거한 정규화 수행 필요
- 함수적 종속성은 데이터들이 어떤 기준값에 의해 종속되는 현상을 지칭한다.
이 때, 기준값을 결정자라고 하고 종속되는 값을 종속자라고 한다.
ex) 주민등록번호 (결정자) ➡️ [이름, 출생지, 주소] (종속자)
- 함수적 종속성은 데이터가 가지고 있는 근본적인 속성으로 인식되고 있다.
- 기본적으로 데이터는 속성간의 함수적 종속성에 근거하여 정규화되어야 한다.
◾ 정규형
1. 제1정규형 - 도메인이 원자값
2. 제2정규형 - 부분 함수 종속 제거
3. 제3정규형 - 이행 함수 종속 제거 (X ➡️ "Y이고 Y ➡️ Z이면 X ➡️ Z이다.)
◾ 데이터 모델에 대한 반정규화를 고려할 때 판단요소
- 반정규화 정보에 대한 재현의 적시성으로 판단한다.
예를 들어, 빌링의 잔액은 다수 테이블에 대한 다량의 조인이 불가피하므로 데이터 제공의 적시성 확보를 위한 필수 반정규화 대상 정보이다.
- 하나의 결과셋을 추출하기 위해서 다향의 데이터를 탐색하는 처리가 반복적으로 빈번하게 발생한다면 반정규화를 고려하는 것이 좋다.
- 반정규화 테이블은 다양한 테이블 유형에 적용한다.
◾ 반정규화를 적용할 시
- 반정규화의 대상을 조사한다.
- 반정규화의 대상에 대해 다른 방법으로 처리할 수 있는지 검토한다.
- 반정규화를 적용한다.
◾ 반정규화 기법
- 테이블 반정규화
- 칼럼 반정규화
- 관계 반정규화

반정규화 기법 - 테이블 반정규화
반정규화 기법 - 칼럼 반정규화
반정규화 기법 - 관계 반정규화

 

 


 

 

 

 2과목 : SQL 기본 및 활용 

40문항 출제 / 3장으로 구성

 

📚 과목 개요

◾ 1장 SQL 기본  2장 SQL 활용
  • 정보 요구 사항
  • DDL
  • DML
  • TCL
  • WHERE 절
  • FUNCTION
  • GROUP BY, HAVING 절
  • ORDER BY 절
  • 조인
  • 표준조인
  • 집합연산자
  • 계층형 질의
  • 서브쿼리
  • 그룹 함수
  • 윈도우 함수
  • DCL
  • 절차형 SQL
 3장 SQL 최적화 기본 원리  
  • 옵티마이저와 실행계획
  • 인덱스 기본
  • 조인 수행 원리
 

 

 

 

[1과목] 1. 모델링 - 모델링의 이해

다양한 현상에 대해서 일정한 표기법에 의해 표현해 놓은 모형사람이 어떤 목적을 달성하기 위해 커뮤니케이션의 효율성을 극대화한 고급화된 표현 방법모델에 대한 표기법에 의해 규칙을 가

velog.io

나머지 공부는 위 링크를 참조해주시길 바랍니다.

 

 

 

 

 

 

 

 

 

# SQLD 자격증 # SQLD 자격증 과목 # sqld 자격증 공부하는 법 

 


 

728x90