본문 바로가기

카테고리 없음

SQLD 오답 개념 노트 ① 데이터 모델링의 이해

반응형

 

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 자격검정 실전문제 

반응형