1. 데이터 모델링의 특징으로 적절하지 않은 것은?
① 현실 세계를 일정한 형식에 맞추어 표현하는 추상화의 의미를 가질 수 있다.
② 시스템 구현만을 위해 진행하는 사전단계의 작업으로서 데이터베이스 구축을 위한 사전작업의 의미가 있다.
③ 복잡한 현실을 제한된 언어나 표기법으로 이해하기 쉽게 하는 단순화의 의미를 가지고 있다.
④ 애매모호함을 배제하고 누구나 이해가능하도록 정확하게 현상을 기술하는 정확화의 의미를 가진다.
2. 데이터 모델링에 대한 설명으로 가장 적절하지 않은 것은?
① 업무 정보를 구성하는 기초가 되는 정보들을 일정한 표기법으로 표현한다.
② 분석된 모델로 데이터베이스를 생성하여 개발 및 데이터 관리에 사용하기 위한 것이다.
③ 데이터베이스를 구축하는 목적으로 데이터 모델링을 수행하며 업무에 대한 설명은 별도의 표기법을 이용한다.
④ 데이터 모델링 자체로서 업무의 흐름을 설명하고 분석하는 부분에 의미를 가지고 있다.
3. 데이터 모델링을 할 때 유의해야 할 사항으로 가장 적절하지 않은 것은?
① 여러 장소의 데이터베이스에 같은 정보를 저장하지 않도록 하여 중복성을 최소화한다.
② 데이터의 정의를 데이터의 사용 프로세스와 분리하여 유연성을 높인다.
③ 사용자가 처리하는 프로세스나 장표 등에 따라 매핑이 될 수 있도록 프로그램과 테이블 간의 연계성을 높인다.
④ 데이터 간의 상호 연관관계를 명확하게 정의하여 일관성 있게 데이터가 유지되도록 한다.
4. 아래에서 설명하는 데이터 모델링의 유의점은?
데이터 모델을 어떻게 설계했느냐에 따라 사소한 업무변화에도 데이터 모델이 수시로 변경되어 유지보수의 어려움을 가중시킬 수 있다. 데이터의 정의를 데이터의 사용 프로세스와 분리하여 데이터 모델링은 데이터 혹은 프로세스의 작은 변화가 어플리케이션과 데이터베이스에 중대한 변화를 일으킬 수 있는 가능성을 줄인다. |
① 중복
② 비유연성
③ 비일관성
④ 일관성
5. 데이터 독립성의 구성요소에 대한 설명으로 가장 적절하지 않은 것은?
① 통합된 모든 사용자의 관점은 개념스키마와 관련이 있다.
② 물리적인 저장구조를 표현하는 스키마는 내부스키마이다.
③ View 단계는 여러 사용자 관점으로 구성하는 개념스키마에 해당한다.
④ 논리적인 데이터 독립성을 고려하는 단계는 외부단계와 개념적 단계이다.
(참고)
이름 | 설명 |
외부 스키마(External Schema) | 사용자나 응용 프로그래머가 보는 개인적 DB 스키마이다. |
전체 DB의 한 논리적인 부분을 표현한다. | |
서브 스키마라고도 불린다. | |
각 사용자 그룹에 따라 다른 외부 스키마가 존재할 수 있다. | |
동일한 데이터도 사용자에 따라 다르게 보일 수 있다. | |
개념 스키마(Conceptual Schema) | 조직 전체의 관점에서 DB를 정의한다. |
모든 응용 시스템과 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 DB 구조이다. | |
개체간의 관계, 제약조건, 접근권한, 보안정책 등을 포함한다. | |
데이터베이스 관리자(DBA)가 관리한다. | |
내부 스키마(Internal Schema) | 물리적 저장장치의 관점에서 보는 DB이다. |
실제 데이터가 저장되는 방법을 기술한다. | |
데이터 저장 구조, 레코드 구조, 필드 크기, 인덱스 등을 정의한다. | |
시스템 프로그래머나 시스템 설계자가 보는 관점이다. | |
논리 스키마(Logical Schema) | 데이터베이스의 논리적 구조를 기술한다. |
개념 스키마와 유사하지만, 더 구체적인 데이터 모델링 단계이다. | |
테이블, 뷰, 관계 등을 정의한다. | |
데이터의 독립성을 보장하는 중요한 역할을 한다. |
6. 아래에서 설명하는 스키마 구조로 가장 적절한 것은?
- 모든 사용자 관점을 통합한 조직 전체 관점의 통합적 표현 |
- 모든 응용 시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 DB를 기술한 것으로 DB에 저장되는 데이터와 그들 간의 관계를 표현한 스키마 |
① 외부스키마 (External Schema)
② 개념스키마 (Conceptual Schema)
③ 내부스키마 (Internal Schema)
④ 논리스키마 (Logical Schema)
7. 아래 ERD에 대한 설명으로 가장 적절하지 않은 것은?
① 한 명의 고객은 여러 개의 제품을 주문할 수 있다.
② 하나의 주문은 반드시 한 명의 고객에 의해 주문된다.
③ 하나의 고객은 주문을 할 수도 있고 안 할 수도 있다.
④ 하나의 주문은 고객이 있을 수도 있고 없을 수도 있다.
8. ERD에 대한 설명으로 가장 적절하지 않은 것은?
① 1976년 피터 첸(Peter Chen)에 의해 Entity-Relationship Model (E-R Model)이라는 표기법이 만들어졌다.
② 일반적으로 ERD를 작성할 때 엔터티 도출, 엔터티 배치, 관계 설정, 관계명 기술의 흐름으로 작업을 진행한다.
③ 관계의 명칭은 관계 표현에서 매우 중요한 부분에 해당한다.
④ 가장 중요한 엔터티를 오른쪽 상단에 배치하고 추가로 발생되는 엔터티들을 왼쪽 편과 하단에 배치하는 것이 원칙이다. (엔터티 배치에 대한 절대적인 원칙은 없다.)
(참고)
ERD 작성 순서
- 엔터티 도출: 업무 분석을 통해 핵심 엔터티를 파악한다.
- 엔터티 배치: 도출된 엔터티들을 다이어그램에 배치한다.
- 관계 설정: 엔터티 간의 관계를 정의한다.
- 관계명 기술: 관계의 의미를 명확히 표현한다.
9. 아래 시나리오에서 엔터티로 가장 적절한 것은?
S 병원은 여러 명의 환자가 존재하고 각 환자의 이름, 주소 등을 관리해야 한다. (단, 업무범위와 데이터의 특성은 위 시나리오에 기술되어 있는 사항만을 근거하여 판단해야 한다.) |
① 병원
② 환자
③ 이름
④ 주소
10. 엔터티의 특징으로 가장 적절하지 않은 것은?
① 속성이 없는 엔터티는 있을 수 없다. 엔터티는 반드시 속성을 가져야 한다.
② 엔터티는 다른 엔터티와 관계가 있어야 한다. 단, 통계성 엔터티나, 코드성 엔터티의 경우 관계를 생략할 수 있다.
③ 객체 지향의 디자인 패턴에는 싱글턴 패턴이 있어서 하나의 인스턴스를 가지는 클래스가 존재한다. 이와 유사하게 한 개의 인스턴스를 가지는 것 만으로도 충분한 의미를 부여할 수 있다.
④ 데이터로서 존재하지만 업무에서 필요로 하지 않으면 해당 업무의 엔터티로 성립될 수 없다.
(참고)
엔터티의 특징
- 엔터티의 기본 정의
- 업무에서 관리해야 하는 데이터 단위이다.
- 영속적으로 존재하는 것이다.
- 식별자로 구분이 가능한 것이다.
- 반드시 속성과 인스턴스를 가져야 한다.
- 엔터티의 필수 특징
- 반드시 속성을 가져야 한다.
- 2개 이상의 인스턴스가 존재해야 한다.
- 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다.
- 업무적으로 필요한 정보여야 한다.
- 유일한 식별자가 있어야 한다.
11. 엔터티의 일반적인 특징으로 가장 적절하지 않은 것은?
① 다른 엔터티와의 관계를 가지지 않는다.
② 유일한 식별자에 의해 식별이 가능해야 한다.
③ 엔터티는 업무 프로세스에 의해 이용되어야 한다.
④ 엔터티는 반드시 속성을 포함해야 한다.
12. 발생 시점에 따라 구분할 수 있는 엔터티의 유형으로 적절하지 않은 것은?
① 관계 엔터티 (Relation Entity) (관계 엔터티는 발생 시점이 아닌 엔터티 간의 관계성에 따른 분류이다.)
② 행위 엔터티 (Active Entity)
③ 중심 엔터티 (Main Entity)
④ 기본 엔터티 (Fundamental Entity)
(참고)
이름 | 설명 |
기본 엔터티(Fundamental Entity) | 독립적으로 생성 가능한 엔터티이다. |
다른 엔터티의 생성에 의존적이지 않다. | |
부모 엔터티라고도 한다. | |
ex) 고객, 상품, 부서, 사원 | |
중심 엔터티(Main Entity) | 기본 엔터티로부터 발생하는 엔터티이다. |
업무의 중심적인 역할을 하는 엔터티이다. | |
데이터의 양이 많고 자주 이용된다. | |
ex) 계좌, 주문, 예약, 프로젝트, 계약 | |
행위 엔터티(Active Entity) | 두 개 이상의 엔터티로부터 발생한다. |
업무 프로세스의 실행 결과로 생성된다. | |
트랜잭션 엔터티라고도 한다. | |
ex) 주문내역, 계좌이체내역, 수강신청내역, 결제내역 | |
관계 엔터티(Relation Entity) | 두 개 이상의 엔터티 간 M:N(다대다) 관계를 해소하기 위한 엔터티이다. |
각 엔터티의 관계에서 발생하는 정보를 포함한다. | |
교차 엔터티(Intersection Entity) 라고도 한다. | |
ex) 수강신청, 주문상세, 게시판첨부파일 |
13. 엔터티에 이름을 부여하는 방법으로 가장 적절하지 않은 것은?
① 가능하면 약어를 사용하여 엔터티의 이름을 간결하고 명확하게 한다.
② 현업의 업무 용어를 사용하여 업무상의 의미를 분명하게 한다.
③ 모든 엔터티에서 유일한 이름이 부여되어야 한다.
④ 엔터티가 생성되는 의미대로 자연스럽게 부여하도록 한다.
14. 업무에서 필요로 하는 인스턴스에서 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위는?
① 도메인
② 속성
③ 엔터티
④ 관계
(참고)
속성(Attribute)
- 개념
- 업무에서 필요한 최소 데이터 단위이다.
- 엔터티가 가지는 구체적인 정보이다.
- 더 이상 분리될 수 없는 정보의 단위이다.
- 하나의 값만 가질 수 있다.
- 특징
- 업무적으로 의미가 있어야 한다.
- 정규화 원칙에 따라 최소단위로 분리된다.
- 한 엔터티 내에서 유일한 이름을 가진다.
- 하나의 속성은 한 개의 값만 가진다.
- 분류
- 특성에 따른 분류
- 기본속성
- 업무로부터 추출한 일반적인 속성
- ex) 이름, 주소, 전화번호
- 설계 속성
- 업무를 규칙화하기 위해 만든 속성
- ex) 회원번호, 주문번호
- 파생 속성
- 다른 속성에서 계산되어 생성되는 속성
- ex) 나이(생년월일로부터), 주문총액(단가x수량)
- 기본속성
- 구성방식에 따른 분류
- 단일 속성
- 하나의 의미로 구성된 속성
- ex) 이름, 나이
- 복합 속성
- 여러 개의 속성이 모여있는 속성
- ex) 주소(시/구/동)
- 다중값 속성
- 여러 개의 값을 가질 수 있는 속성
- ex) 전화번호, 이메일
- 단일 속성
- 특성에 따른 분류
- 속성값의 특징
- 원자성: 더 이상 분해할 수 없는 단위이다.
- 단일성: 하나의 속성은 한 개의 값만 가진다.
- 고유성: 각 속성은 한 개의 의미만 가진다.
- 시간성: 시간에 따라 변할 수 있다.
15. 속성에 대한 설명으로 가장 적절하지 않은 것은?
① 엔터티에 대한 자세하고 구체적인 정보를 나타낸다.
② 하나의 엔터티는 두 개 이상의 속성을 갖는다.
③ 하나의 인스턴스에서 각각의 속성은 하나 이상의 속성값을 가질 수 있다.
(하나의 속성은 하나의 인스턴스에서 단일 값만 가질 수 있다.
다중값을 가질 경우 정규화를 통해 별도의 엔터티로 분리해야 한다.)
④ 속성도 집합이다.
16. 아래에서 수행한 정규화 작업으로 가장 적절한 것은? (단, 이후 필요한 정규화 작업은 계속 수행될 예정)
① 1차 정규화
② 2차 정규화 (1NF를 만족하고, 모든 Non-key 컬럼들이 기본키 전체에 종속되어야 한다.)
③ 3차 정규화
④ 4차 정규화
(참고)
완전 함수적 종속 (Full Functional Dependency)
- 제2정규형을 만족시키기 위한 조건이다.
- 속성 집합 X와 Y가 있을 때, X →Y의 함수적 종속성이 존재하고,
- X의 어떤 속성을 제거하면 더 이상 함수적 종속성이 성립하지 않는 경우를 말한다.
- 즉, Y가 X의 모든 속성에 종속되어 있는 경우를 의미한다.
- ex)
- (학번, 과목번호) → 성적
- 학번과 과목번호가 모두 있어야만 성적을 결정할 수 있다.
- 학번이나 과목번호 중 하나만으로는 성적을 결정할 수 없다.
이행적 함수 종속 (Transitive Functional Dependency)
- 제3정규형을 만족시키기 위한 조건이다.
- X → Y이고 Y → Z인 경우, X → Z가 성립하는 것을 말한다.
- 직접적인 종속관계가 아닌 간접적인 종속관계가 존재하는 경우를 말한다.
- ex)
- 학번 → 학과코드
- 학과코드 → 학과명
- 따라서 학번 → 학과명이 성립된다.
이름 | 설명 |
제1정규형(1NF) |
모든 속성값이 원자값을 가지는 형태이다. |
테이블의 모든 컬럼이 단일값을 가진다. | |
반복되는 그룹이 없어야 한다. | |
비정규화: 고객(고객ID,이름,전화번호[02,123,4567, 010-1234,5678]) 1NF: 고객(고객ID,이름) + 고객전화(고객ID,전화번호) |
|
제2정규형(2NF) |
1NF 이면서 부분적 함수 종속을 제거한 형태이다. |
완전 함수적 종속 관계만 허용한다. | |
기본키가 복합키일 때 의미있다. | |
모든 비주요 속성이 주요 속성에 완전 종속이다. | |
비정규화: 주문(주문번호,상품번호,상품명,주문수량) - (기본키가 (주문번호, 상품번호)의 복합키이다.) - 상품명은 주문번호와는 무관하고, 성품번호로만 결정된다. - 주문수량은 (주문번호, 상품번호) 전체에 종속적이다. (완전 함수적 종속, 주문번호와 상품번호가 있어야 주문수량이 결정되기 때문) 2NF: 주문(주문번호,상품번호,주문수량) + 상품(상품번호,상품명) |
|
제3정규형(3NF) |
2NF 이면서 이행적 함수 종속을 제거한 형태이다. |
비주요 속성 간의 종속성을 제거한 형태이다. | |
모든 속성이 기본키에 직접 종속적이다. | |
비정규화: 주문(주문번호,고객번호,고객등급,할인율) 3NF: 주문(주문번호,고객번호) + 고객등급(고객등급,할인율) |
|
보이스-코드 정규형(BCNF) |
3NF이면서 결정자가 모두 후보키인 정규형이다. |
모든 결정자가 후보키여야 한다. | |
가장 엄격한 제3정규형이다. | |
비정규화: 수강신청(학번,과목번호,교수,성적) BCNF: 과목교수(과목번호,교수) + 수강신청(학번,과목번호,성적) |
17. 데이터를 조회할 때 빠른 성능을 낼 수 있도록 하기 위해 원래 속성값을 계산하여 저장할 수 있도록 만든 속성은?
① 파생 속성 (Derived Attribute)
② 기본 속성 (Basic Attribute)
③ 설계 속성 (Designed Attribute)
④ PK 속성 (PK Attribute)
18. 아래 설명이 나타내는 데이터 모델의 개념으로 가장 적절한 것은?
주문이라는 엔터티가 있을 때, 단가라는 속성값의 범위는 100에서 10,000 사이의 실수 값이며 제품명이라는 속성은 길이가 20자리 이내의 문자열로 정의할 수 있다. |
① 시스템 카탈로그 (System Catalog)
② 용어 사전 (Word Dictionary)
③ 속성 사전 (Attribute Dictionary)
④ 도메인 (Domain)
(참고)
도메인
- 하나의 속성이 가질 수 있는 모든 가능한 값들의 집합이다.
- 속성의 데이터 타입과 크기, 제약조건 등을 정의한다.
- 데이터의 무결성을 보장하는 중요한 요소이다.
시스템 카탈로그
- 데이터베이스의 구조와 제약조건에 대한 정보를 포함한다.
- 메타데이터를 저장하는 시스템 테이블이다.
용어 사전
- 업무에서 사용되는 용어들을 정의하고 설명한다.
- 비즈니스 용어의 표준화를 위한 도구이다.
속성 사전
- 속성들의 정의와 설명을 담고 있는 문서이다.
- 속성의 의미와 용도를 설명한다.
19. 데이터 모델링을 할 때, 속성의 명칭을 부여하는 방법으로 가장 적절하지 않은 것은?
① 속성의 이름에 약어를 사용할 경우 그 의미를 명확하게 이해할 수 없고 혼돈을 초래하여 커뮤니티에 혼란을 야기할 수 있으므로 지나친 약어 사용은 가급적 제한하도록 한다.
② 속성의 이름에는 서술식 용어는 사용하지 않도록 한다.
③ 직원 엔터티의 이름, 고객 엔터티의 이름과 같이 엔터티별로 동일한 속성명을 사용하여 데이터 모델의 일관성을 유지하는 것이 좋다.
④ 데이터 모델링 대상에서 사용하는 용어도 있고 외부에서 사용하는 용어도 있어 중복이 있을 때, 가급적 해당 업무에서 자주 사용하는 이름을 이용하도록 한다.
20. 데이터 모델링의 관계에 대한 설명으로 가장 적절하지 않은 것은?
① 관계는 존재에 의한 관계와 행위에 의한 관계로 구분될 수 있으나 ERD에서는 관계를 연결할 때, 존재와 행위를 구분짓지 않고 단일화된 표기법을 사용한다.
② UML(Unified Modeling Language)에는 클래스 다이어그램의 관계 중 연관관계(Association)와 의존관계(Dependency)가 있고 이것은 실선과 점선의 표기법으로 다르게 표현이 된다.
③ 연관관계는 항상 이용하는 관계로 존재적 관계에 해당하고, 의존관계는 상대방 클래스의 행위에 의해 관계가 형성되는 행위적 관계에 해당한다.
④ 연관관계는 오퍼레이션에서 파라미터 등으로 이용할 수 있고, 의존관계는 소스코드에서 멤버변수로 선언하여 사용할 수 있다.
(연관관계는 소스코드에서 멤버변수로 선언하여 사용할 수 있고 의존관계는 오퍼레이션에서 파라미터 등으로 이용할 수 있다.)
21. 데이터 모델링의 관계에 대한 설명으로 가장 적절하지 않은 것은?
① 관계는 존재적 관계와 행위에 의한 관계로 나누어볼 수 있다.
② 관계의 표기법은 관계명, 관계차수, 식별성의 3가지 개념을 사용한다.
(관계의 표기법은 관계명, 관계차수, 선택성(선택사양)의 3가지 개념을 사용한다.)
③ 부서와 사원 엔터티 간의 '소속' 관계는 존재적 관계의 사례이다.
④ 주문과 배송 엔터티 간의 '배송근거' 관계는 행위에 의한 관계의 사례이다.
22. 아래에서 설명하는 데이터 독립성은?
- 데이터베이스의 파일 구조의 변화가 논리스키마(Schema)에 영향을 주지 않음 |
- 데이터베이스의 색인 구조의 변화가 응용 프로그램에 영향을 주지 않음 |
① 논리적 독립성
② 물리적 독립성
③ 개념적 독립성
④ 내부적 독립성
(참고)
DBMS 3계층 구조
이름 | 설명 |
1. 외부단계 (External Level) | 사용자/응용 프로그램 관점 |
외부 스키마로 표현 | |
2. 개념단계 (Conceptual Level) | 전체 DB를 추상화 |
논리 스키마로 표현 | |
3. 내부단계 (Internal Level) |
물리적 저장 구조, 파일 구조, 색인 구조 등 포함 |
내부 스키마로 표현 |
DBMS 독립성
이름 | 설명 |
물리적 독립성 (Physical Independence) | 물리적 저장장치의 구조 변경이 논리적 구조에 영향을 주지 않는 특성이다. |
저장장치의 변경, 파일 구조의 변경, 인덱스(색인) 구조의 변경, 접근 방법의 변경 | |
ex) 하드디스크에서 SSD로 변경해도 데이터베이스 사용에는 영향이 없다. | |
논리적 독립성 (Logical Independence) | 개념스키마가 변경되어도 외부스키마에 영향을 주지 않는 특성이다. |
논리적 구조 변경이 가능, 응용 프로그램 수정 불필요, 테이블 추가/변경 가능 | |
ex) 테이블에 새로운 칼럼을 추가해도 기존 응용프로그램은 영향을 받지 않는다. | |
개념적 독립성 (Conceptual Independence) |
데이터의 논리적 정의와 응용프로그램 간의 독립성이다. |
데이터 모델의 독립성 보장, 개념적 설계 변경 가능, 전체 데이터베이스 구조 관점 | |
ex) 데이터 모델을 관계형에서 객체지향형으로 변경해도 응용프로그램 영향 최소화 | |
내부적 독립성 (Internal Independence) |
내부 스키마 레벨에서의 독립성이다. |
데이터 저장소의 내부 구조 변경 가능, 시스템 성능 최적화 가능, 물리적 저장소 구조 관련 | |
ex) 데이터베이스 내부 저장 구조를 최적화해도 외부 인터페이스는 변경이 없다. |
23. 1:1, 1:M과 같이 두 엔터티 간의 관계에서 참여자의 수를 나타내는 것은?
① 관계명 (Relationship Membership)
② 관계차수 (Relationship Degree/Cardinality)
③ 관계선택사양 (Relationship Optionality)
④ 관계정의 (Relationship Definition)
24. 두 개의 엔터티 사이에 정의한 관계에 대해 확인해야 할 사항으로 가장 적절하지 않은 것은?
① 두 개의 엔터티 사이에 관심 있는 연관규칙이 존재하는가?
② 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
③ 업무기술서, 장표에 관계연결을 가능하게 하는 명사(Noun)가 있는가?
(단순히 명사의 존재만으로는 관계를 정의하기 어렵다. 동사나 서술어가 더 중요하다.)
④ 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
25. 두 개의 엔터티 사이에서 관계를 도출할 때 확인해야 할 사항을 모두 고른 것은?
(가) 두 개의 엔터티 사이에 관심 있는 연관규칙이 존재하는가? |
(나) 두 개의 엔터티 사이에 정보의 조합이 발생되는가? |
(다) 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가? |
(라) 업무기술서, 장표에 관계연결을 가능하게 하는 동사(Verb)가 있는가? |
① (가), (나), (다)
② (가), (나), (라)
③ (가), (다), (라)
④ (가), (나), (다), (라)
26. 주식별자를 지정할 떄 고려해야 할 사항을 모두 고른 것은?
(가) 주식별자에 의해 엔터티 내의 모든 인스턴스들이 유일하게 구분되어야 한다. |
(나) 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다. |
(다) 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다. |
(라) 주식별자가 지정이 되면 반드시 값이 들어와야 한다. |
① (가), (나), (다)
② (가), (나), (라)
③ (나), (다), (라)
④ (가), (나), (다), (라)
27. 아래에서 사원 엔터티의 특성에 해당하지 않는 것은?
① 주식별자 (사번이 메인 식별자로 사용된다.)
② 단일식별자 (사번 하나만으로 식별이 가능하다.)
③ 내부식별자 (업무적으로 발생되는 일련번호(사번)를 사용한다.)
④ 인조식별자 (인조식별자는 임의로 만든 식별자이다.)
(참고)
식별자
- 1. 대표성에 따른 분류
- 주식별자
- 엔터티 내에서 대표로 사용되는 식별자이다.
- PK로 지정된다.
- ex) 사번, 학번
- 보조식별자
- 대체 가능한 식별자이다.
- Alternate Key
- ex) 주민번호, 여권번호
- 주식별자
- 2. 속성의 수에 따른 분류
- 단일식별자
- 하나의 속성으로 구성된다.
- ex) 사번, 학번
- 복합식별자
- 두 개 이상의 속성으로 구성된다.
- ex) (주문번호 + 상품번호)
- 단일식별자
- 3. 식별자 생성 위치에 따른 분류
- 내부식별자
- 엔터티 내부에서 생성되는 식별자이다.
- 업무적 의미를 가진다.
- ex) 사번, 주문번호
- 외부식별자
- 다른 엔터티로부터 받아오는 식별자이다.
- FK로 사용된다.
- ex) 부서코드(사원 엔터티에서)
- 내부식별자
- 4. 업무적 의미에 따른 분류
- 본질식별자
- 업무적으로 의미가 있는 식별자이다.
- ex) 주민번호, 계좌번호
- 인조식별자
- 업무적 의미 없이 임의로 부여한 식별자이다.
- 일련번호 형태가 많다.
- ex) SEQUENCE로 생성된 ID
- 본질식별자
- 5. 원천에 따른 분류
- 업무식별자
- 시스템식별자
- 시스템에서 자동으로 생성하는 식별자이다.
- ex) auto_increment로 생성된 ID
28. 식별자로 가장 적절하지 않은 것은?
①
②
(사람이름은 주식별자로 부적합하다.)
③
④
29. 주식별자의 특징과 그에 대한 설명으로 가장 적절하지 않은 것은?
① 유일성: 주식별자에 의해 엔터티 내의 모든 인스턴스들은 유일하게 구분된다.
② 존재성: 주식별자는 데이터 값이 없을 수 있다. (NULL 존재 가능)
③ 불변성: 주식별자가 한번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 한다.
④ 최소성: 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
30. 데이터 모델링에서 비식별자 관계로 연결하는 경우로 가장 적절하지 않은 것은?
① 엔터티와 엔터티가 1:M 관계의 부모와 자식관계에서 데이터가 부모 없이 자식쪽 엔터티의 인스턴스가 먼저 생성될 수 있을 경우, 비식별자 관계로 연결해야 한다.
(비식별자 관계는 부모의 PF가 자식의 FK로는 전달되지만 자식의 PK 구성에 참여하지 않는 것이다.
ex.
비식별자 관계:부서(부서번호(PK)) (부모테이블) - 사원(사원번호(PK), 부서번호(FK))
식별자 관계: 부서(부서번호(PK)) (부모테이블) - 사원(사원번호(PK), 부서번호(PK,FK))
)
② 부모 엔터티의 인스턴스가 자식 엔터티의 인스턴스보다 먼저 소멸하는 경우 비식별자 관계로 연결해야 한다.
③ SQL 문의 조인 관계를 최소화 하는 경우, 비식별자 관계로 연결해야 한다.
④ 자식 엔터티의 식별자가 부모 엔터티의 주식별자를 상속받아 생성하는 것보다 별도의 주식별자를 생성하는 것이 더 유리하다고 판단되는 경우 비식별자 관계로 연결해야 한다.
(참고)
식별자와 비식별자 관계 비교
항목 | 식별자 관계 | 비식별자 관계 |
목적 | 강한 연결관계 표현 | 약한 연결관계 표현 |
자식 주식별자 영향 | 자식 주식별자의 구성에 포함됨 | 자식 일반 속성에 포함됨 |
표기법 | 실선 표현 | 점선 표현 |
연결 고려사항 | 반드시 부모 엔터티에 종속 | 약한 종속관계 |
자식 주식별자 구성에 부모 주식별자 포함 필요 | 자식 주식별자 구성을 독립적으로 구성 | |
상속받은 주식별자 속성을 타 엔터티에 이전 필요 | 자식 주식별자 구성에 부모 주식별자 부분이 필요 | |
상속받은 주식별자 속성을 타 엔터티에 차단 필요 | ||
부모쪽의 관계 참여가 선택관계 |
31. 아래 식별자에 대한 설명이 올바르게 짝지어진 것은?
(가) 대표성을 가지며, 엔터티 내의 여러 인스턴스 중 하나를 유일하게 구분할 수 있는 식별자 |
(나) 엔터티 내의 여러 인스턴스 중 하나를 유일하게 구분할 수 있으나, 대표성을 가지지 못하는 식별자 |
(다) 엔터티 내의 집합을 명확하게 설명할 수 있는 업무적으로 의미가 부여된 식별자 |
(라) 다른 엔터티로부터 상속되어 정의된 식별자 |
① (가) 보조식별자 (나) 실질식별자 (다) 인조식별자 (라) 복합식별자
② (가) 보조식별자 (나) 인조식별자 (다) 본질식별자 (라) 복합식별자
③ (가) 주식별자 (나) 보조식별자 (다) 본질식별자 (라) 외부식별자
④ (가) 주식별자 (나) 보조식별자 (다) 인조식별자 (라) 외부식별자
32. 속성이 가질 수 있는 값의 범위를 지칭하는 용어는?
① 제약 사항
② 도메인
③ 데이터 타입
④ 데이터 크기
33. 아래 빈칸 ㉠, ㉡, ㉢ 에 해당하는 것은?
업무분석을 통해 바로 정의한 속성을 ( ㉠ ), 원래 업무상 존재하지는 않지만 설계를 하면서 도출해내는 속성을 ( ㉡ ), 다른 속성으로부터 계산이나 변형이 되어 생성되는 속성을 ( ㉢ )이라고 한다. |
① ㉠ 기본 속성 ㉡ 설계 속성 ㉢ 파생 속성
② ㉠ 기본 속성 ㉡ 일반 속성 ㉢ 설계 속성
③ ㉠ 일반 속성 ㉡ 기본 속성 ㉢ 파생 속성
④ ㉠ 일반 속성 ㉡ 설계 속성 ㉢ 파생 속성
34. 속성 (a, b, c, d, e)로 구성된 릴레이션에서 아래와 같은 함수 종속성 (Functional Dependency)이 존재할 때, 이 릴레이션의 후보 키로 가장 적절하지 않은 것은?
ab 🠒 cde, e 🠒 b, d 🠒 ab |
(설명)
d 🠒 ab 🠒 cde 이므로, d로부터 모든 속성이 결정된다.
① d (모든 속성 결정 가능)
② ab (모든 속성 결정 가능)
③ ac
④ ae ( ae 🠒 ab 🠒 cde )
35. 아래 주문 엔터티의 주식별자가 (주문번호, 상품번호) 일 때, 이 엔터티가 만족하지 않는 정규형은?
[주문상세]
주문번호 | 상품번호 | 상품명 |
10001 | 901 | DB 전문가 가이드 |
10001 | 876 | 딥러닝 전문가 가이드 |
10002 | 901 | DB 전문가 가이드 |
10003 | 901 | DB 전문가 가이드 |
10004 | 876 | 딥러닝 전문가 가이드 |
(설명)
(주문번호, 상품번호) 🠒 상품명
상품번호 🠒 상품명
부분 함수적 종속이 존재하므로 제2정규형을 만족하지 않는다.
① 제1정규형
② 제2정규형
③ 제3정규형
④ 제4정규형
36. 아래 엔터티에 필요한 정규화와 분리된 스키마 구조로 가장 적절한 것은?
함수종속성 (FD): [ 관서번호, 납부자번호 ] ➝ [ 직급명, 통신번호 ] [ 관서번호 ] ➝ [ 관리점번호, 관서명, 상태, 관서등록일자 ] |
① 2차 정규화 - 정규화테이블 {관서번호, 납부자번호, 관리점번호, 관서명, 상태, 관서등록일자}
② 3차 정규화 - 정규화테이블 {관서번호, 납부자번호, 관리점번호, 관서명, 상태, 관서등록일자}
③ 2차 정규화 - 정규화테이블 {관서번호, 관리점번호, 관서명, 상태, 관서등록일자}
(모든 Non-key 컬럼들이 기본키 전체에 종속되어야 한다. 관서번호 만으로 결정되는 속성이 있다.)
④ 3차 정규화 - 정규화테이블 {관서번호, 관리점번호, 관서명, 상태, 관서등록일자}
37. 정규화와 성능에 대한 설명으로 가장 적절하지 않은 것은?
① 정규화를 수행하면 중복 속성을 제거하여 용량을 최소화시킬 수 있다.
② 일반적으로 정규화 수행 시 데이터처리 성능이 향상된다.
③ 반정규화가 조회 성능을 항상 향상시키는 것은 아니며, 때로는 정규화에 의해 성능이 향상될 수도 있다.
④ 정규화를 수행하면 조회 성능을 보장받을 수 있다.
38. 아래와 같이 전제조건이 있을 때, 테이블에서 나타날 수 있는 현상으로 가장 적절한 것은?
전제조건: 유형기능분류코드에 해당하는 속성들은 분포도가 양호하며, SQL WHERE 절에서 각각의 값이 상수 값으로 조건 입력될 수 있는 특징을 가진다. |
(설명)
컬럼이 A-I까지 반복되는 구조로, 제1정규형을 위반하고 있다.
제1정규형은 1.도메인이 원자값이어야 하고, 2.속성이 반복되지 않아야 한다.
① 조회 조건이 유형기능분류코드에 따라 반복되는 그룹이 컬럼단위로 되어 있으므로 제1정규형이라고 할 수 있다.
(컬럼에 의한 반복적인 속성값을 갖는 형태인 1차 정규화 대상)
② 유형기능분류코드에 대해 where 절에 조건으로 들어오는 값이 있으므로 PK와 이에 대한 인덱스만 있으면 SQL 문장은 빠르게 수행될 수 있다고 할 수 있다.
③ 유형기능분류코드가 일반속성 안에서 반복적으로 속성이 구분되어 있기 때문에 이전종속을 수행해야 하는 제2정규형이라 할 수 있다.
④ 조회 성능을 위해 유형기능분류코드 각각에 대하여 개별로 인덱스를 모두 생성할 경우 입력, 수정, 삭제 때 성능이 저하되므로 제1차 정규화를 수행한 후 인덱스를 적용하는 것이 좋다.
39. 아래 논리 데이터 모델을 3차 정규화까지 수행했을 때 도출되는 엔터티 수로 가장 적절한 것은? (하나의 대출자에 대해 하나의 대출번호로 여러개의 도서 대출 / 반납을 관리하고자 한다고 가정하고, 엔터티 통합은 고려하지 않음)
(설명)
"엔터티 통합을 고려하지 않는다"는 것의 의미
- 정규화 과정에서 도출된 엔터티들을 비즈니스 관점이나 효율성을 위해 다시 합치는 과정을 하지 않는다는 의미이다.
LAB실습이 1~4까지 반복되는 패턴이 보인다.
- 학생 엔터티
- 제1정규화
- 반복그룹을 제거한다.
- LAB실습1~4까지 반복되는 구조를 분리해야한다.
- 학생(학번,성명,학과번호,학과명)
- LAB실습(학번,이용차수,이용신청일,이용시작일,이용만기일,이용승인교수번호,이용승인교수명)
- 제2정규화
- 이미 학생 테이블의 모든 속성이 기본키(학번)에 완전 함수적 종속이다.
- LAB실습 테이블도 기본키(학번,이용차수)에 완전 함수적 종속이다.
- 제3정규화
- 이행적 종속성을 제거한다.
- 학과명은 학과번호에 종속된다.
- 교수명은 교수번호에 종속된다.
- 학생(학번,성명)
- 학과(학과번호,학과명)
- 교수(교수번호,교수명)
- LAB실습(학번,이용차수,이용신청일,이용시작일,이용만기일)
- 제1정규화
- 도서대출 관련 엔터티
- 제1정규화
- 도서대출 테이블은 모든 속성이 원자값을 가지고 있어서 1차 정규화는 완료된 상태이다.
- 제2정규화
- 부분 함수적 종속성을 제거한다.
- 도서명, ISBN, 출판사명은 도서번호에만 종속된다.
- 대출일자는 대출번호에만 종속된다.
- 대출(대출번호, 대출일자)
- 대출도서(대출번호, 도서번호, 반납일자)
- 도서(도서번호, 도서명, ISBN, 출판사명)
- 부분 함수적 종속성을 제거한다.
- 제3정규화
- 이행적 종속성을 제거한다.
- 대출번호 🠒 도서번호 🠒 {도서명,ISBN,출판사명}의 이행적 종속이 존재하고 있다.
- 하나의 대출에 여러 도서가 포함될 수 있다.
- 대출(대출번호(PK),대출일자)
- 대출도서(대출번호(PK/FK),ISBN(PK/FK),반납일자)
- 도서(ISBN(PK),도서명,출판사명)
- 이행적 종속성을 제거한다.
- 제1정규화
① 5
② 6
③ 7
④ 8
40. 아래에서 빈칸 ㉠, ㉡에 들어갈 용어로 가장 적절한 것은?
어떤 릴레이션 R이 ㉠ 이고, 기본키에 속하지 않은 속성 모두가 기본키에 이행적 함수종속이 아닐 때, ㉡ 에 속한다. |
① ㉠: 제1정규형, ㉡: 제2정규형
② ㉠: 제1정규형, ㉡: 제3정규형
③ ㉠: 제2정규형, ㉡: 제3정규형
④ ㉠: 제3정규형, ㉡: 제2정규형
41. 데이터 모델링의 정규화에 대한 설명으로 가장 적절하지 않은 것은?
① 정규화는 개념 데이터 모델의 일관성을 확보하고 중복을 제거하여 속성들이 가장 적절한 엔터티에 배치되도록 한다. (개념 데이터 모델이 아닌 논리 데이터 모델이다.
정규화는 논리적 데이터 모델링 단계에서 수행되는 작업이다.)
② 제1정규형은 모든 인스턴스가 반드시 하나의 값을 가져야 함을 의미한다.
③ 제3정규형을 만족하는 엔터티의 일반속성은 주식별자 전체에 종속적이다.
④ 반정규화는 성능을 위해 데이터 중복을 허용하는 것이지만 성능의 향상을 항상 보장하는 것은 아니다.
42. 관계 (Relationship)와 조인(Join)에 대한 설명으로 가장 적절하지 않은 것은?
① 조인(Join)이란 식별자를 상속하고, 상속된 속성을 매핑키로 활용하여 데이터를 결합하는 것을 의미한다.
② 부모의 식별자를 자식의 일반속성으로 상속하면 식별(X, 비식별) 관계, 부모의 식별자를 자식의 식별자에 포함하면 비식별(X, 식별) 관계라고 할 수 있다.
③ 관계(Relationship)를 맺는다는 것은 식별자를 상속시키고 해당 식별자를 매핑키로 활용해 데이터를 결합해 보겠다는 것을 의미한다.
④ "SELECT B.고객명 FROM 주문 A, 고객 B WHERE A.고객번호 = B.고객번호" 쿼리에서 조인키(Join Key)는 "고객번호"이다.
43. 아래에서 설명하는 정규형으로 가장 적절한 것은?
엔터티의 일반속성은 주식별자 전체에 종속적이어야 한다. |
① 제1정규형
② 제2정규형
③ 제3정규형
④ 보이스-코드 정규형
44. 아래와 같이 수강지도 엔터티를 만들었을 때, 이에 해당하는 정규형과 정규화의 대상으로 가장 적절한 것은?
함수종속성 (FD) 1. 학번 || 과목코드 ➝ 성적 2. 학번 ➝ 지도교수명 3. 학번 ➝ 학과명 |
① 1차 정규형, 2차 정규화 대상 (학번만으로 결정되는 지도교수명, 학과명 속성이 있다.)
② 2차 정규형, 3차 정규화 대상
③ 3차 정규형, 보이스-코드 정규화 대상
④ 보이스-코드 정규형, 4차 정규화 대상
45. 고객번호를 식별자로 하는 아래 엔터티에서 필요한 정규화 작업으로 가장 적절한 것은?
고객번호 | 고객명 | 주민등록번호 | 취미코드 | 취미명 |
10 | 김OO | 123456-7890123 | 10, 11 | 노래, 댄스 |
20 | 이OO | 234567-8901234 | 12, 13 | 검도, 게임 |
30 | 박OO | 345678-9012345 | 11, 15, 16 | 댄스, 등산, 수영 |
① 1차 정규화
② 2차 정규화
③ 3차 정규화
④ 4차 정규화
46. NULL에 대한 설명으로 가장 적절하지 않은 것은?
① 모르는 값을 의미한다.
② 값의 부재를 의미한다.
③ 공백문자 (Empty String) 혹은 숫자 0을 의미한다.
④ NULL과의 모든 비교 (IS NULL 제외)는 알 수 없음 (Unknown)을 반환한다.
47. 아래와 같이 테이블을 변환하였을 때 이에 대한 설명으로 가장 적절하지 않은 것은? (단, (A)에서 주식별자는 사번이며, 함수 종속성 부서➝사무실이 존재한다고 가정)
사번 | 부서 | 사무실 |
001 | 총무 | 서울 |
002 | 영업 | 부산 |
003 | 총무 | 서울 |
004 | 연구 | 대전 |
005 | 영업 | 부산 |
(A)
사번 | 부서 |
001 | 총무 |
002 | 영업 |
003 | 총무 |
004 | 연구 |
005 | 영업 |
(B)
부서 | 사무실 |
총무 | 서울 |
영업 | 부산 |
연구 | 대전 |
(설명)
부분 함수 종속성이 존재하고 있다.
제2정규형이 필요한 테이블이다.
① 제1정규화를 수행한 것에 해당한다.
② 제2정규화를 수행한 것에 해당한다.
③ (B)는 제3정규형을 만족한다.
④ 주어진 사번의 사무실을 검색하는 작업의 성능이 저하된다.
48. 순차적으로 수행되는 작업 A, B가 반드시 모두 수행되거나 모두 수행되지 않아야 한다고 할 때, 이에 대한 설명으로 가장 적절한 것은?
① A와 B는 하나의 트랜잭션으로 묶여 처리되어야 한다.
② A와 B를 수행한 후 각각 커밋(COMMIT)을 해주어야 한다.
③ A와 B에 주어진 조건은 트랜잭션의 원자성(ATOMICITY)에 해당한다.
④ A까지만 수행되고 시스템 장애가 발생했다면 A를 undo해야 한다.
49. NULL 값에 대한 설명으로 가장 적절한 것은?
① NULL 값에 어떤 숫자를 더해도 결과는 항상 NULL이다.
② NULL 값과 어떤 숫자의 크기를 비교해도 결과는 항상 NULL이다. (UNKNOWN을 반환한다.)
③ "NULL = NULL" 연산의 결과는 TRUE이다. (UNKNOWN을 반환한다.)
④ 집계 함수를 계산할 때 NULL 값은 0으로 처리된다. (NULL을 제외하고 집계한다.)
50. 본질식별자와 인조식별자에 대한 설명으로 가장 적절하지 않은 것은?
① 인조식별자는 대체로 본질식별자가 복잡한 구성을 가질 때 만들어진다.
② 인조식별자를 사용하면 중복 데이터를 막기 어려워진다.
③ 인조식별자를 사용하면 본질식별자를 사용할 때와 비교하여 추가적인 인덱스가 필요해진다.
④ 인조식별자는 개발 편의성을 높여주기 때문에 되도록 사용하는 것이 바람직하다.
'Archive > SQLD' 카테고리의 다른 글
[SQLD] SQL 기본 및 활용 문제 (1 ~ 40) (1) | 2024.11.04 |
---|---|
[SQLD] 데이터 모델링의 이해 문제 (81-126) (2) | 2024.10.19 |
[SQLD] 데이터 모델링의 이해 문제 (41-80) (6) | 2024.10.17 |
[SQLD] SQL 기본 (0) | 2024.02.24 |
[SQLD] 데이터 모델과 성능 (0) | 2024.02.21 |