
Q. 다음 중 데이터 모델링이 필요한 주요 이유로 가장 부적절한 것은?
1. 업무정보를 구성하는 기초가 되는 정보들에 대해 일정한 표기법에 의해 표현한다.
2. 분석된 모델을 가지고 데이터베이스를 생성하여 개발 및 데이터관리에 사용하기 위한 것이다.
3. 데이터베이스를 구축하기 위한 용도를 위해 데이터모델링을 수행하고 (O) / 업무에 대한 설명은 별도의 표기법을 이용한다. (X)
4. 데이터모델링 자체로서 업무의 흐름을 설명하고 분석하는 부분에 의미를 가지고 있다.
📌
데이터 모델링이란?
- 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
- 현실세계의 데이터에 대해 약속된 표기법에 의해 표현하는 과정
- 데이터베이스를 구축하기 위한 분석/설계의 과정
모델링이 갖추어야 할 조건
- 현실세계 반영
- 단순화하여 표현
- 관리하고자 하는 데이터를 모델로 설계
모델링 유의사항
- 중복 : 데이터의 중복 저장
- 비유연성 : 데이터가 지나치게 프로세스에 종속적인 경우로서 빈번한 모델에 대한 수정/변경이 일어나는것
- 비일관성 : 데이터간의 연관된 정보가 있는데 이를 무시하고 데이터가 갱신되는 것
Q. 다음 중 ERD에 대한 설명으로 옳지 않은 것은 무엇인가?
1. 관계명으로 엔터티 간의 관계를 알 수 있다.
2. 1:1의 관계 차수를 갖는 엔터티들은 관계에 참여하는 각각의 엔터티에 대해 단지 하나의 관계만을 가지고 있다.
3. 존재에 의한 관계와 행위에 의한 관계를 구분해서 표현한다.
4. 관게 차수로는 1:1, 1:M , M:N이 있을 수 있다.
📌 ERD에서는 존재에 의한 관계와 행위에 의한 관계를 구분하지 않고 표현하며 클래스 다이어그램에서는 이것을 구분하여 연관 관계와 의존 관계로 표현한다.
Q. 다음 중 엔터티의 특징으로 가장 부적절한 것은?
1. 속성이 없는 엔터티는 있을 수 없다. 엔터티는 반드시 속성을 가져야 한다.
2. 엔터티는 다른 엔터티와 관계가 있을 수 밖에 없다. 단,통계성 엔터티나, 코드성 엔터티의 경우 관계를 생략할 수 있다.
3. 객체지향의 디자인패턴에는 싱글턴패턴이 있어 하나의 인스턴스를 가지는 클래스가 존재한다. 이와 유사하게 엔터티는 한 개의 인스턴스를 가지는 것만으로도 충분한 의미를 부여할 수 있다.
4. 데이터로서 존재하지만 업무에서 필요로 하지 않으면 해당 업무의 엔터티로 성립될 수 없다.
Q. 다음 중 보기의 내용이 설명하는 것은 무엇인가?
의미상 분리되지 않는 최소의 데이터 레벨로 프로세스에 필요한 항목이어야 한다.
A. 속성
Q. 다음 중 속성에 대한 설명으로 가장 부적절한 것은?
1. 엔터티에 대한 자세하고 구체적인 정보를 나타낸다.
2. 하나의 엔터티는 두 개 이상의 속성을 갖는다.
3. 하나의 인스턴스에서 각각의 속성은 하나 이상의 속성값을 가질 수 있다.
4. 속성도 집합이다.

| 구분 | 설명 |
| 엔터티 | 데이터를 용도별로 분류한 그룹 - 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 함. - 유일한 식별자에 의해 식별이 가능해야 함. - 반드시 속성이 있어야 함. - 다른 엔터티와 최소 한 개 이상의 관계가 있어야 함. - 두 개 이상(영속적으로 존재)의 인스턴스 집합 |
| 인스턴스 | - 데이터베이스에 저장된 데이터 내용의 전체 집합 |
| 속성 | - 사물이나 개념의 특징을 설명해줄 수 있는 항목 - 엔터티의 특징을 나타내는 최소의 데이터 단위 |
| 속성값 | 앤터티에 속한 하나의 인스턴스를 구체적으로 나타내주는 데이터 |
| 트랜잭션 | 데이터를 조작하기 위한 하나의 논리적인 작업 단위 |
Q. 다음 중 관계에 대한 설명으로 가장 부적절한 것은?
1. 관계는 존재적 관계와 행위에 의한 관계로 나누어볼 수 있다.
2. 관계의 표기법은 관계명,관계차수,식별성의 3가지 개념을 사용한다.
3. 부서와 사원 엔터티 간의 '소속'관계는 존재적 관계의 사례이다.
4. 주문과 배송 엔터티 간의 '배송근거' 관계는 행위에 의한 관계의 사례이다.
📌
관계 표기법
- 관계명 : 관계의 이름
- 관계차수 : 관계 내 투플의 전체 개수 ( 1:1 / 1:N / N:M)
- 관계선택사양 : 필수&선택 관계
관계 유형
존재 관계 : 존재 자체로 연관성이 있는 관계 (ex. 직원 - 부서 / 학생 - 학과)
행위 관계 : 특정한 행위를 함으로써 연관성이 생기는 관계 ( ex. 회원 - 주문 / 학생 - 출석부)
관계 체크사항
- 두 개의 엔터티 사이에 관심 있는 연관규칙이 존재하는가?
- 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
- 업무기술서,장표에 관계연결을 가능하게 하는 동사가 있는가?
- 업무기술서,장표에 관계연결에 대한 규칙이 서술되어 있는가?
Q. 다음 중 아래 주식별자의 특징 중에서 옳은 것을 모두 묶은 것은?
가. 주식별자에 의해 엔터티 내에 모든 인스턴스들은 유일하게 구분되어야 한다. ➡️ 유일성
나. 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다. ➡️ 최소성
다. 주식별자가 지정된 속성의 값은자주 변경되어야 한다. ➡️ 불변성
라. 주식별자가 지정되면 반드시 데이터 값이 존재해야 한다. ➡️ 존재성
A. 가,나,라
Q. 다음 중 보기의 내용이 설명하는 것은 무엇인가?
주식별자의 속성이 두 개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 식별자이다.
A. 대리식별자(인조식별자)
| 분류 기준 | 구분 | 설명 |
| 단일 속성 여부 | 단일식별자 | 하나의 속성으로 구성된 식별자 |
| 복합식별자 | 두 개 이상의 속성으로 구성된 식별자 | |
| 대표성 여부 | 보조식별자 | 인스턴스를 식별할 수는 있지만 대표 식별자가 아님. 다른 엔터티와 참조 관계로 연결되지 않음 |
| 주식별자 | 유일성,최소성,불변성,존재성을 가진 대표 식별자 다른 엔터티와 참조 관계로 연결 |
|
| 스스로 생성되었는지 여부 | 외부식별자 | 다른 엔터티에서 온 식별자. 다른 엔터티와의 연결고리 역할 |
| 내부식별자 | 엔터티 내부에서 스스로 생성된 식별자 | |
| 대체 여부 | 원조식별자 | 업무 프로세스에 존재하는 식별자 가공되지 않은 원래의 식별자 |
| 대리식별자 | 주식별자의 속성이 두 개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 식별자(인조식별자) |
Q. 다음 데이터 모델에 대한 설명으로 가장 적절한 것은 무엇인가?
[상품]
| 상품코드 |
| 상품명 가격 카테고리1 카테고리2 카테고리3 |
1. 특정 카테고리에 해당하는 상품을 조회하는 경우에 대비하여 카테고리 컬럼 모두 인덱스를 생성해주면 성능상의 문제는 발생하지 앟는다.
2. 하나의 속성이 여러 개의 속성값을 가질 일이 없으므로 제 1정규형이다.
3. 특정 카테고리에 해당하는 상품을 조회하는 경우에 대비하여 1차 정규화를 통해 카테고리 속성을 분류한 다음 인덱스를 생성해주는 것이 좋다.
4. 유사한 속성이 반복되는 반복그룹이 있으므로 2차 정규화 대상이다.
📌
1. 인덱스를 모두 생성할 경우 조회 성능은 향상될지 모르나 입력,수정,삭제 성능은 오히려 저하될 수 있음. 무분별한 인덱스 생성은 지양.
2. 표에 나와있는 속성은 여러 개의 속성값을 가질 수 있음.
3. 카테고리 속성을 별도의 엔터티로 분리하면 속성 1개에만 인덱스를 생성할 수 있음.
4. 유사한 속성 반복 ➡️ 1차 정규화 대상
Q. 다음 중 성능 데이터 모델링을 위한 유의사항으로 가장 바람직한 것은 무엇인가?
1. 하나의 속성이 여러 개의 속성값을 갖는 데이터 모델은 2차 정규화 대상이 된다.
2. 중복 테이블을 추가함으로써 성능을 향상시킬 수 있다.
3. 테이블 병합은 정규화 기법 중 하나이다.
4. 조회 성능의 저하를 막기 위해 정규화보다는 반정규화를 우선시해야 한다.
📌
1. 하나의 속성이 여러 개의 속성값 / 유사한 속성 반복 ➡️ 1차 정규화 대상
3. 반정규화 기법
| 테이블 병합 | 1:1 관계 테이블 병합 |
| 1:M 관계 테이블 병합 | |
| 슈퍼 서브 타입 테이블 병합 | |
| 테이블 분할 | 테이블 수직 분할 |
| 테이블 수평 분할 | |
| 테이블 추가 | 중복 테이블 추가 |
| 통계 테이블 추가 | |
| 이력 테이블 추가 | |
| 부분 테이블 추가 |
4. 정규화가 항상 조회 성능을 저하시키는 것은 아님. 반정규화를 함으로써 조회 성능이 확실히 좋아지는 상황에서만 반정규화를 하는 것이 바람직함.
Q. 다음 중 성능을 고려한 데이터 모델링의 순서로 가장 적절한 것은?
(ㄱ) 데이터 모델링을 할 때 정규화를 정확하게 수행한다.
(ㄴ) 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.
(ㄷ) 데이터베이스 용량 산정을 수행한다.
(ㄹ) 이력 모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행한다.
(ㅁ) 성능 관점에서 데이터 모델을 검증한다.
(ㅂ) 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.
A. (ㄱ) - (ㄷ) - (ㄴ) - (ㅂ) - (ㄹ) - (ㅁ)
📌
반정규화의 과정은 정규화가 끝난 후 성능상 이슈가 있을 때만 고려하는 것이 원칙이다.
Q. 다음 중 NULL연산에 대한 설명으로 옳지 않은 것은 무엇인가?
1. NULL이 포함된 사칙연산의 결과는 항상 NULL이다.
2. 데이터를 집계할 때 NULL은 집계 대상에서 제외된다.
3. WHERE COL IS NULL 조건은 WHERE COL = NULL 조건과 같다.
4. WHERE COL IS NOT NULL 조건은 COL이 NULL이 아닌 행만 출력하는 조건이다.
📌 WHERE COL IS NULL 조건은 COL값이 NULL인 행을 반환하지만 COL = NULL의 결과는 항상 False 이므로 WHERE COL=NULL 조건은 아무 행도 반환하지 앟는다. ➡️ NULL은 연산자로 사용이 불가!
출처 : SQL 과외노트 , SQL 자격검정 실전문제