[오답 풀이] 38회차 기출 변형
1. 다음 중 데이터베이스 논리 모델에 대한 설명으로 올바으지 않은 것은?
- 개념 데이터 모델은 사용자 관점에서 데이터 요구사항을 식별한다.
- 논리 데이터 모델은 M:N 관계해소, 식별자 확정, 정규화, 무결성 정의 등을 수행한다.
- 논리 모델은 데이터베이스를 구축을 위해서만 사용되는 것이다.
- 데이터가 물리적으로 저장되는 방법을 정의하는 것이 물리적 모델이다.
1. “개념 데이터 모델은 사용자 관점에서 데이터 요구사항을 식별한다.”
• 개념 데이터 모델은 비즈니스 요구사항을 기반으로 주요 엔터티와 관계를 정의하며, 기술적 세부사항 없이 사용자 관점에서 데이터를 추상적으로 표현합니다.
2. “논리 데이터 모델은 M:N 관계 해소, 식별자 확정, 정규화, 무결성 정의 등을 수행한다.”
• 논리 데이터 모델은 개념 모델을 기반으로 더 상세한 구조를 정의하며, M:N 관계를 해소하고, 정규화를 통해 데이터 중복을 제거하며, 무결성 제약 조건(예: Primary Key, Foreign Key)을 설정합니다.
3. “논리 모델은 데이터베이스를 구축을 위해서만 사용되는 것이다.”
• 논리 데이터 모델은 특정 데이터베이스 시스템(DBMS)에 종속되지 않으며, 데이터 구조와 관계를 기술적으로 정의하는 데 사용됩니다. 이는 데이터베이스 구축뿐 아니라 비즈니스 요구사항 분석 및 시스템 설계 단계에서도 활용됩니다.
4. “데이터가 물리적으로 저장되는 방법을 정의하는 것이 물리적 모델이다.”
• 물리적 데이터 모델은 특정 DBMS에 맞춰 데이터를 실제로 저장하는 방식(예: 테이블 구조, 인덱스, 파티셔닝)을 정의합니다.
[왜 “논리 모델은 데이터베이스를 구축을 위해서만 사용되는 것이다.“가 틀렸는가?]
• 논리 데이터 모델은 특정 DBMS에 의존하지 않으며, 비즈니스 요구사항과 기술적 구현 사이의 다리를 제공합니다.
• 이는 데이터베이스 설계뿐 아니라 비즈니스 프로세스 최적화와 정보 시스템 설계에도 활용됩니다.
• 논리 모델은 독립적인 데이터 구조와 관계를 정의하므로 다양한 프로젝트와 시스템 간의 통합에도 유용합니다.
2. 릴레이션을 정규화하는 목적에 관한 설명 중 가장 거리가 먼 것은?
- 정보의 갱신 이상이 생기지 않도록 한다.
- 정보의 보안을 목적으로 한다.
- 정보의 손실을 막는다.
- 정보의 중복을 막는다.
정규화의 목적
데이터베이스 정규화는 데이터 구조를 체계적으로 조직하여 데이터 중복을 줄이고, 데이터 무결성을 유지하며, 삽입, 갱신, 삭제 시 발생할 수 있는 이상현상(anomalies)을 방지하는 데 목적이 있습니다. 주요 목적은 다음과 같습니다:
1. 정보의 갱신 이상 방지:
• 정규화를 통해 삽입, 갱신, 삭제 시 발생할 수 있는 데이터 불일치 문제를 방지합니다.
2. 정보의 손실 방지:
• 데이터가 논리적으로 잘 조직되어 있어야 하며, 잘못된 설계로 인해 데이터가 손실되는 것을 방지합니다.
3. 정보의 중복 방지:
• 데이터를 중복 저장하지 않도록 설계하여 저장 공간을 최적화하고 관리 효율성을 높입니다.
[왜 “정보의 보안을 목적으로 한다”가 부적절한가?]
• 정규화는 데이터 구조를 개선하고 이상현상을 방지하기 위한 과정입니다.
• 정보 보안은 정규화와 직접적인 연관이 없습니다. 정보 보안은 데이터 암호화, 접근 제어, 인증과 같은 별도의 기술과 정책으로 관리됩니다.
• 따라서 “정보의 보안을 목적으로 한다”는 정규화의 주요 목적과는 거리가 있습니다.
다른 선택지와 비교
1. 정보의 갱신 이상이 생기지 않도록 한다:
• 정규화는 삽입, 갱신, 삭제 시 발생할 수 있는 데이터 불일치를 방지하므로 올바른 설명입니다.
2. 정보의 손실을 막는다:
• 잘못된 데이터베이스 설계로 인해 정보가 손실되는 것을 방지하는 것은 정규화의 목표 중 하나입니다.
3. 정보의 중복을 막는다:
• 정규화는 데이터 중복을 제거하여 저장 공간을 절약하고 관리 효율성을 높이는 데 기여합니다.
3. 다음 주어진 그림에 해당하는 ERD 표기법으로 알맞은 것은?

- Barker
- IE
- IE Notation
- IDEFIX
ERD 표기법에 대한 설명
ERD(Entity-Relationship Diagram)는 데이터베이스를 설계할 때 사용하는 시각적 도구로, 엔티티(Entity), 속성(Attribute), 관계(Relationship)를 표현합니다. 다양한 표기법이 존재하며, 각각의 표기법은 데이터 모델링의 목적과 사용 환경에 따라 적합하게 선택됩니다. 주요 ERD 표기법은 다음과 같습니다:
1. Barker Notation
• 개발자: Richard Barker가 개발한 표기법으로, Oracle에서 널리 사용됩니다.
• 특징:
• 엔티티: 둥근 모서리를 가진 사각형으로 표시되며, 엔티티 이름은 상단에 위치.
• 속성: 엔티티 내부에 위치하며, 속성은 필수(Mandatory), 선택(Optional), 고유 식별자(Unique Identifier)로 구분됩니다.
• 관계:
• 필수 관계는 실선, 선택 관계는 점선으로 표시됩니다.
• 관계의 방향성과 카디널리티(1:1, 1:N, N:N)를 명확히 표현합니다.
• 서브타입(Subtype): 엔티티 간 상속 관계를 표현하며, 슈퍼타입과 서브타입을 그룹화하여 나타냅니다.
• 사용 사례:
• 대규모 데이터베이스 설계 및 정부/기업 프로젝트.
2. Information Engineering (IE) Notation
• 개발자: IE 표기법은 정보 공학 방법론에서 파생되었습니다.
• 특징:
• 엔티티: 직사각형으로 표시되며, 속성은 엔티티 내부에 위치.
• 관계:
• 까마귀 발(Crow’s Foot)을 사용하여 관계의 카디널리티를 시각적으로 표현합니다.
• 식별 관계(Identifying Relationship)는 실선으로, 비식별 관계(Non-identifying Relationship)는 점선으로 표시됩니다.
• 식별자: 엔티티 상단에 위치하며, 수평선 아래에 표시됩니다.
• 서브타입(Subtype):
• 배타적(Exclusive) 또는 포괄적(Inclusive) 서브타입을 지원합니다.
• 사용 사례:
• 대규모 기업 데이터베이스 설계 및 정보 시스템 개발.
3. IDEF1X Notation
• 개발자: 미국 국방부와 ICAM 프로그램에서 개발된 표준화된 데이터 모델링 기법.
• 특징:
• 엔티티:
• 독립 엔티티는 직사각형으로, 종속 엔티티는 둥근 모서리를 가진 직사각형으로 표시됩니다.
• 속성:
• 기본 키는 엔티티 상단에 위치하며, 외래 키(FK)와 대체 키(AK)를 명시적으로 구분합니다.
• 관계:
• 식별 관계는 실선으로, 비식별 관계는 점선으로 표시됩니다.
• 카디널리티는 원(circle)과 다이아몬드(diamond)로 표현됩니다.
• No-Null Rule: 모든 속성은 값이 있어야 하며, NULL을 허용하지 않습니다.
• 사용 사례:
• 정부 기관 및 대규모 프로젝트에서 데이터 모델링 표준으로 사용.
4. IE Notation (Information Engineering Notation)
• IE 표기법은 ERD 설계에서 가장 직관적인 방식 중 하나로, 까마귀 발(Crow’s Foot)을 사용하여 관계를 시각적으로 표현합니다.
• 주요 특징은 위의 Information Engineering 설명과 동일하며, 관계의 카디널리티와 방향성을 명확히 보여줍니다.
4. 아래의 내용은 주식별자의 어떤 특징을 설명한 것인가?
학생의 학번으로 고유한 구조를 표현할 수가 있다.
하지만 ABC대학교의 학생 엔터티의 주식별자를 학번과 입학일자로 해서 잘못된 모델링을 했다.
- 유일성
- 최소성
- 불변성
- 존재성
[주식별자의 특징]
주식별자는 데이터베이스 테이블에서 각 행을 고유하게 식별할 수 있는 속성(또는 속성 집합)으로, 다음과 같은 주요 특징을 가집니다
1. 유일성:
• 주식별자는 테이블의 모든 행을 고유하게 식별할 수 있어야 합니다.
• 예: 학번은 학생 테이블에서 각 학생을 고유하게 식별할 수 있습니다.
2. 최소성:
• 주식별자는 데이터를 고유하게 식별하기 위해 필요한 최소한의 속성으로 구성되어야 합니다.
• 불필요한 속성을 포함하면 설계가 비효율적이며, 데이터 무결성을 유지하기 어려워질 수 있습니다.
• 예: 학번만으로 학생을 고유하게 식별할 수 있는데, 학번과 입학일자를 함께 사용하는 것은 잘못된 모델링입니다.
3. 불변성:
• 주식별자는 생성된 이후 변경되지 않아야 합니다.
• 예: 학번은 학생이 졸업하거나 전학을 가더라도 변하지 않아야 합니다.
4. 존재성:
• 주식별자는 항상 값이 존재해야 하며, NULL 값을 허용하지 않습니다.
[문제 분석]
• “ABC대학교의 학생 엔터티의 주식별자를 학번과 입학일자로 해서 잘못된 모델링을 했다”는 내용은 주식별자에 불필요한 속성을 추가하여 최소성을 위반한 사례를 설명하고 있습니다.
• 학번만으로 학생을 고유하게 식별할 수 있음에도 불구하고, 입학일자를 추가로 포함하면 데이터 모델링이 비효율적이고 설계가 잘못된 것으로 간주됩니다.
[다른 선택지와 비교]
1. 유일성:
• 유일성은 모든 행을 고유하게 식별할 수 있는 특성을 의미하며, 문제에서 언급된 “잘못된 모델링”은 유일성이 아닌 최소성과 관련이 있습니다.
2. 불변성:
• 불변성은 주식별자가 생성된 이후 변경되지 않는 특성을 의미합니다. 문제에서 언급된 내용은 불변성과는 직접적인 관련이 없습니다.
3. 존재성:
• 존재성은 주식별자가 NULL 값을 허용하지 않는 특성을 의미합니다. 문제에서 언급된 내용은 존재성과는 직접적인 관련이 없습니다.
5. 주어진 테이블에 대해서 아래의 SQL문을 수행한 결과로 적절한 것은?
[TEST11]
COL1 COL2 COL3
--------------------
A 1
B A 2
C A 3
D B 4
[SQL]
SELECT COUNT(*) FROM TEST11
WHERE COL3 <> 3
START WITH COL3 = 4
CONNECT BY COL1 = PRIOR COL2;
- 0
- 1
- 2
- 3
CONNECT BY 절은 다음에 전개될 자식 데이터 지정한다.
PRIOR로 상위 행을 참조한다.
여기서는 COL1 값이 이전 행의 COL2 값이 된다.
SELECT COUNT(*)
FROM TEST11
WHERE COL3 <> 3 (WHERE 절에 COL3이 3인행은 제외.)
START WITH COL3 = 4 (COL3 이 4인것부터 시작)
CONNECT BY COL1 = PRIOR COL2;
결과는 아래와 같다.
따라서 개수는 3개이다.
COL1/COL2/COL3 D/B/4 B/A/2 A/NULL/1
6. 다음 보기 중 SQL 명령어가 올바르지 않은 것은?
- DDL : TRUNCATE
- DDL : ALTER
- DCL : REVOKE
- DML : RENAME
[각 SQL 명령어의 분류와 설명]
1. DDL (Data Definition Language):
• 데이터베이스의 구조를 정의하거나 변경하는 데 사용됩니다.
• 주요 명령어: `CREATE`, `ALTER`, `DROP`, `TRUNCATE`, `RENAME`.
• TRUNCATE와 ALTER는 DDL에 속하며, 주어진 설명은 올바릅니다.
2. DCL (Data Control Language):
• 데이터베이스의 권한을 제어하는 데 사용됩니다.
• 주요 명령어: `GRANT`, `REVOKE`.
• REVOKE는 DCL에 속하며, 주어진 설명은 올바릅니다.
3. DML (Data Manipulation Language):
• 데이터를 조작(삽입, 수정, 삭제, 조회)하는 데 사용됩니다.
• 주요 명령어: `SELECT`, `INSERT`, `UPDATE`, `DELETE`.
• RENAME는 테이블 이름을 변경하는 명령으로, 이는 DDL에 속하며 DML이 아닙니다.
[왜 “DML : RENAME”이 잘못되었는가?]
• RENAME은 테이블이나 객체의 이름을 변경하는 명령으로, 데이터베이스의 구조를 변경합니다.
• 이러한 작업은 데이터 조작(DML)이 아닌 데이터 정의(DDL)에 해당합니다.
[다른 선택지와 비교]
1. DDL : TRUNCATE:
• TRUNCATE는 테이블의 모든 데이터를 삭제하지만 테이블 구조는 유지합니다.
• 이는 데이터 정의 작업이므로 DDL에 속하며 올바른 분류입니다.
2. DDL : ALTER:
• ALTER는 테이블의 구조(컬럼 추가/삭제 등)를 변경하는 명령으로, DDL에 속합니다.
3. DCL : REVOKE:
• REVOKE는 사용자 권한을 제거하는 명령으로, 데이터 제어 작업(DCL)에 속합니다.
7. 다음 주어진 테이블들에 대해서 아래의 SQL문을 수행하였을때 결과의 행수로 올바른 것은?
[TEST36_1]
EMPNO ENAME
---------------
1000 조조
2000 관우
3000 조훈
[TEST36_2]
NO CONDITION
-----------------
1 조%
2 %우%
[SQL]
SELECT COUNT(*) ROWCNT
FROM TEST36_1 A, TEST36_2 B
WHERE A.ENAME LIKE B.CONDITION;
• 이 쿼리는 `TEST36_1`과 `TEST36_2`를 **카티션 곱(Cartesian Product)**으로 결합한 후, `WHERE` 조건을 만족하는 행을 필터링합니다.
• 조건: `A.ENAME LIKE B.CONDITION`
• `ENAME` 값이 `CONDITION` 패턴과 일치하는 경우만 결과에 포함됩니다.


8. 다음 보기 중 순수 관계 연산자에 해당하지 않는 것은?
- SELECT
- DELETE
- JOIN
- DIVISION
순수 관계 연산자: SELECT, PROJECT, JOIN, DIVISION
9. 다음은 ORACLE 데이터베이스에서 사용하는 SQL문과 SQL server 데이터베이스의 SQL의 차이점에 대한 문제이다. ( )에 올바른 것은?
[ORACLE]
CREATE TABLE TEAM_EMP
AS SELECT * FROM EMP;
[SQL server]
SELECT * ( ) FROM EMP;
- INTO TEAM_EMP
- INSERT TEAM_EMP
- ALTER TEAM_EMP
- AS TEAM_EMP
1. SELECT * INTO TEAM_EMP:
• SQL Server에서 새로운 테이블을 생성하고 데이터를 복사할 때 사용하는 올바른 구문입니다.
2. INSERT TEAM_EMP:
• `INSERT`는 기존에 존재하는 테이블에 데이터를 삽입하는 데 사용됩니다. 새로운 테이블을 생성하지 않으므로 정답이 아닙니다.
3. ALTER TEAM_EMP:
• `ALTER`는 기존 테이블의 구조(예: 컬럼 추가/삭제)를 변경할 때 사용하는 명령어입니다. 새로운 테이블 생성과는 관련이 없습니다.
4. AS TEAM_EMP:
• `AS`는 SQL Server에서 테이블 생성과 관련된 명령어로 사용되지 않습니다. 정답이 아닙니다.