정보처리기사 필기 3과목 - 데이터베이스 구축 (빈출 요점 정리)
정보처리기사 필기 빈출 개념과 기출문제를 정리하였습니다.
공부할 시간이 부족할 경우 아래의 개념을 먼저 학습해보시고, 기출문제들을 최소 3회차를 풀어볼 것을 권장합니다.
(기출문제: https://www.comcbt.com/xe/iz)
(전체 목차 및 다른 과목 링크: https://computer-choco.tistory.com/437)
(기출문제 출처는 위의 링크와 같습니다 - comcbt.com)
정보처리기사 필기 3과목 - 데이터베이스 구축 빈출 개념 & 기출 문제
1. 기초 개념 (릴레이션, 튜플, 애트리뷰트, 도메인)
2. DDL, DCL, DML
3. SELECT 문
4. 슈퍼키, 후보키
5. 로킹
6. 정규화
7. 원자성
8. 개체 무결성
9. 관계 대수 연산
10 .뷰
보너스. E-R 모델
보너스. 투명성
1. 기초 개념 (릴레이션, 튜플, 애트리뷰트, 도메인) ★★
교재 단원: 논리 데이터베이스 설계
정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 2번 출제된 개념입니다.
데이터베이스 기초 개념들의 의미에 대해서 시험에서 많이 출제가 됩니다. 각각의 의미와 이름을 매칭할 수 있으면 됩니다.
가장 먼저는 릴레이션입니다. 릴레이션 (Relation) 은 데이터를 표의 형태로 표현한 것입니다. 다음과 같이 표의 형태로 표현하면 릴레이션이 됩니다.
속성 (Attribute; 애트리뷰트) 는 정의는 데이터베이스를 구성하는 가장 작은 논리적 단위입니다. 쉽게 Column; 열 (혹은 필드; Field 라고도 함) 이라고 보시면 됩니다. 아래 표에서 학번, 이름, 학년 같이 열에 해당하는 게 속성입니다.
문제에서 차수 (Degree) 를 물을 수가 있는데, 그러면 속성의 수가 몇 개냐? = 차수가 몇이냐? 로 받아들이시면 됩니다. 아래 표에서는 학번, 이름, 학년, 신장, 학과이므로 차수는 5가 되겠네요.
튜플 (Tuple) 은 릴레이션을 구성하는 각각의 행을 뜻합니다. 아래 표에서 가로 행 하나를 말합니다. (Row; 행 혹은 Record; 레코드 라고도 합니다.) 학번이 89001, 홍길동, 2 학년, 170 cm 키, CD 과인 한 줄이 하나의 튜플입니다. 그래서 속성의 모임으로 구성된다고 표현하기도 합니다. 문제에서 카디널리티 (Cardinality) 가 몇이냐 (혹은 기수가 몇이냐)? 라고 묻는다면 튜플이 몇 개냐? 로 받아들이시면 됩니다. 그러면 아래 표에서 카디널리티는 4가 되겠군요.
※ 속성은 차수, 튜플은 기수인데, 잘 안 외워진다면 투기꾼할 때 투기 (튜플은 기수) 로 외우는 것도 좋을 것 같습니다.
도메인 (Domain) 은 하나의 속성 (Attribute) 가 취할 수 있는 같은 타입의 원자값들의 집합입니다. 너무 복잡한가요? 문제에서 나왔을 때 맞추기 위해서는 도메인은 원자값들의 집합이다! 하고 외우시면 되고, 도메인이 무엇인지 이해하기 위해서는 성별 속성 (Attribute) 의 도메인은 '남'과 '여' 이다 로 보시면 됩니다. 속성 안에 들어갈 수 있는 값의 집합들을 뜻합니다. 학과라는 속성이 있다면 경영학과, 수학과, 법학과 등이 또 도메인이 될 수 있겠죠.
[그림 출처] https://powerdev.tistory.com/40
요약하면 다음과 같습니다.
이름 | 뜻 |
릴레이션 | 표 |
속성 (애트리뷰트) | 열 (Column) |
튜플 | 행 (Row) |
도메인 | (속성 안에 들어가는) 원자값의 집합 |
개념들이 헷갈리지 않으신다면 다음의 문제로 연습해보겠습니다.
42. 다음 관계형 데이터 모델에 대한 설명으로 옳은 것은? (1) relation 3개, attribute 3개, tuple 5개 (2) relation 3개, attribute 5개, tuple 3개 (3) relation 1개, attribute 5개, tuple 3개 (4) relation 1개, attribute 3개, tuple 5개 (2020.08.22 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
표가 1개니까 릴레이션은 1개이고, 속성은 고객 ID, 고객이름, 거주도시로 3개입니다. 튜플은 고객이 5이 있으므로 5개가 되겠네요. 답은 4번입니다.
이번에는 개념들이 많으니까 보너스로 문제를 몇 개 더 넣어보았습니다. 개념 문제는 아래와 같이 출제됩니다.
48. 하나의 애트리뷰트가 가질 수 있는 원자값들의 집합을 의미하는 것은? (1) 도메인 (2) 튜플 (3) 엔티티 (4) 다형성 (2020.06.06 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
아까 나온 개념들의 의미를 잘 외우셨나요? 답은 1번입니다.
다른 문제도 풀어보겠습니다.
60. 릴레이션에 대한 설명으로 거리가 먼 것은? (1) 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변한다. (2) 한 릴레이션에 포함된 튜플들은 모두 상이하다. (3) 애트리뷰트는 논리적으로 쪼갤 수 없는 원자값으로 저장한다. (4) 한 릴레이션에 포함된 튜플 사이에는 순서가 있다. (2020.08.22 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
릴레이션은 표를 의미하고, 1번에서 말하는대로 튜플들이 달라지면 표의 생김새도 당연히 달라질 것입니다. 2번에서 튜플들은 모두 상이한 것이 맞습니다. 각 행은 서로 다 다른 데이터를 가지고 있습니다. 3번은 애트리뷰트는 원자값으로 저장한다인데, 속성과 도메인을 외우실 때 보셨겠지만 성별의 '남' 이런 것이 원자값입니다. 속성 안에는 원자값이 들어가는 것이 맞습니다. (그것들의 집합을 정리하면 도메인이 됩니다.) 그런데 4번 튜플에는 순서가 있다? 는 이상하죠. 튜플의 자리를 바꿔도 아무 상관이 없습니다. 순서에 의미를 두지는 않습니다.
본 문제를 풀 때 사실 헷갈릴 수 있습니다. 1번도 이게 변했다고 해야하나? 표 자체는 변하지 않은 것으로 볼 수 있지 않을까? 할 수 있고, 2번도 기존에 이 문제를 보지 못했다면 같은 행이 또 있을 수 있는 거 아닌가? 할 수도 있을 것입니다. 정보처리기사 필기 문제는 대개는 확실히 아닌 보기가 있기 때문에 헷갈리는 경우 보류하고 확실히 아닌 4번 같은 답을 찾는 것이 좋습니다.
2. DDL, DCL, DML ★★★
교재 단원: SQL 응용
정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 100% 출제된 개념입니다.
SQL 기초 명령어에 대한 문제는 항상 출제가 되었습니다. 문제는 DDL, DCL, DML 명령어들이 각각 어디에 속하는지 구별할 수 있는지 (예를 들어, UPDATE 문은 셋 중 어디에 속하는지?) 혹은 실제로 해당 명령어들을 이용한 빈칸 채우기 SQL 문제가 많이 출제됩니다.
일단 명령어들을 설명하자면, DDL은 Data Definition Language 즉, 데이터 정의어입니다. 데이터베이스에는 스키마, 도메인, 테이블, 뷰, 인덱스 이런 개념들이 있는데 이런 것들을 만들 때 (정의, 변경, 삭제) 할 때 사용합니다!
DDL은 CREATE / ALTER / DROP 이 있네요. 정의하고 변경하고 삭제할 때 각각 사용합니다.
SQL 명령어 | 예문 |
CREATE | (1-1) CREATE SCHEMA 대학교 AUTHORIZATION 홍길동; (1-2) CREATE VIEW 서울고객(성명, 전화번호) AS SELECT 성명, 전화번호 FROM 고객 WHERE 주소 = '서울시'; (1-2) CREATE UNIQUE INDEX 고객번호_idx ON 고객(고객번호 DESC); |
ALTER | (2-1) ALTER TABLE 학생 ADD 학년 VARCHAR(3); (2-2) ALTER TABLE 학생 ALTER 학번 VARCHAR(10) NOT NULL; (2-3) ALTER TABLE 학생 DROP COLUMN 주소 CASCADE; |
DROP | (3-1) DROP SCHEMA 대학교; (3-2) DROP DOMAIN 성별 RESTIRCTED; (3-3) DROP TABLE 학생 CASCADE; |
DML은 Data Manipulation Language 로 데이터 조작어입니다. 위의 DDL을 통해 데이터를 만들었다면 이번에는 DML을 통해 처리할 수 있습니다. SELECT / INSERT / UPDATE / DELETE가 해당합니다. 원하는 튜플을 검색하고, 새로운 튜플을 삽입하고, 특정 튜플의 내용을 변경하고, 기존 튜플을 삭제합니다.
SQL 명령어 | 예문 |
SELECT | SELECT 학번, 이름 FROM 학생 WHERE 학년 IN(3,4); |
INSERT | INSERT INTO 사원 VALUES ('장보고', '기획', #05/03/73#, '홍제동', 90); |
UPDATE | UPDATE 사원 SET 주소 = '역삼동' WHERE 이름 = '홍길동'; |
DELETE | DELETE FROM 사원 WHERE 이름 = '홍길동'; |
※ 이 구문들을 항상 세트로 다니기 때문에, 애초에 외울 때부터 SELECT FROM, INSERT INTO VALUES, UPDATE SET, DELETE FROM 으로 외우는 것이 좋습니다!!!! (특히 빈칸 채우기 문제 풀 때 중요합니다)
DCL은 Data Control Language 로 데이터 제어어입니다. 아무나 데이터에 접근할 수 없게 권한을 관리하거나 오류가 발생할 때 복구할 수 있도록 데이터 관리를 하는 것입니다. (Control 이라는 단어만 보고는 별로 와닿지 않네요. 만드는 DDL이나 데이터를 조작하는 DML을 제외한 나머지 작업이라고 이해해도 괜찮을 것 같습니다.) GRANT / REVOKE / COMMIT / ROLLBACK 이 해당합니다. 각각 사용권한을 부여, 사용권한 부여한 걸 다시 취소해서 빼앗기, 수행한 결과를 실제 물리적 디스크에 저장, 데이터베이스 조작 작업이 비정상적으로 종료된 경우 원래 상태로 복구에 해당합니다.
SQL 명령어 | 예문 |
GRANT | GRANT INSERT ON 고객 TO 맹구; |
REVOKE | REVOKE GRANT OPTION FOR UPDATE ON 고객 FROM 짱구; |
COMMIT | COMMIT; (너무 간단해서 문법 문제는 출제가 안 됩니다...) |
ROLLBACK | ROLLBACK; |
※ DML 에서 강조했던 것처럼 GRANT와 REVOKE 또한 GRANT ON TO, REVOKE ON FROM으로 외우는 것이 좋습니다!! (빈칸 채우기 문제를 위해서요!)
DDL, DML, DCL 의 구분이 잘 되시나요? 다음의 문제를 풀어보겠습니다.
41. SQL의 분류 중 DDL 에 해당하지 않는 것은? (1) UPDATE (2) ALTER (3) DROP (4) CREATE (2020.06.06 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
답이 바로 보이셨나요? 답은 1번입니다. UPDATE는 DML 에 해당합니다.
이런 구분 문제도 많이 출제되지만, 실제로 빈칸을 채워야하는 문제도 출제가 됩니다.
47. 다음 SQL 문에서 빈칸에 들어갈 내용으로 옳은 것은? UPDATE 회원 ( ) 전화번호 = '010-14' WHERE 회원번호 = 'N4'; (1) FROM (2) SET (3) INTO (4) TO (2020.09.26 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
답은 2번입니다. 이런 문제는 대개 UPDATE나 SET 을 빈칸으로 비워둘 테니, 앞서 빨간 글씨로 표시해둔 것처럼 SQL문을 외울 때 항상 합쳐서 외우는 것이 중요합니다. (실기를 준비하실 때는 문장 전체를 쓸 수 있게 외우셔야합니다!!)
3. SELECT 문 ★★★
교재 단원: SQL 응용
정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 100% 출제된 개념입니다.
SELECT 문의 경우 2번에서 본 DML 의 한 명령어이지만, 시험 문제에서 실제 출력 결과를 고르도록 하는 문제가 별도로 출제가 되기 때문에 개념을 따로 뺐습니다. (SELECT 문 작성은 실기에서도 매번 출제됩니다!!)
SELECT 문은 검색하기 위해서 사용되는 것으로, 어떤 조건으로 검색하는지 해석할 수 있으면 됩니다. SELECT ~ FROM ~ WHERE 형식을 따르고 있으며, 주로 WEHRE 뒤에 나온 거를 꼼꼼히 보고 해석하시면 됩니다. 실제 구문 해석은 아래의 문제를 보면서 해보겠습니다.
때때로, SELECT DISTINCT 학년 FROM R1; 과 같이 DISTINCT 옵션이 추가되는 경우가 있는데, distinct는 뚜렷하게 구별된다는 뜻이죠. 출력 결과를 보여줄 때 겹치는 데이터는 보여줄 필요가 없다는 뜻입니다.
이 문장을 실행하면 결과는 다음과 같이 나옵니다. (튜플이 여러 개여도 DISTINCT한 결과만 보여줍니다)
학년 |
1 |
2 |
3 |
문제를 풀어보겠습니다.
45. 다음 SQL 문의 실행 결과는? SELECT 가격 FROM 도서가격 WHERE 책번호 = (SELECT 책번호 FROM 도서 WHERE 책명='자료구조'); [도서] [도서가격] (1) 10,000 (2) 15,000 (3) 20,000 (4) 25,000 (2020.06.06 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
SQL 문을 해석해보면 다음과 같습니다. 가장 먼저 SELECT 가격 FROM 도서가격은 [도서가격] 표에서 가격을 출력해서 보여달라는 뜻이됩니다.
SELECT 가격 FROM 도서가격
WHERE 책번호 = (SELECT 책번호
FROM 도서 WHERE 책명='자료구조');
WHERE 뒤에 조건을 보건 책번호 = (); 가 있죠. 책번호가 특정 번호인 경우 가격을 보여달라는 뜻입니다.
SELECT 가격 FROM 도서가격
WHERE 책번호 = (SELECT 책번호
FROM 도서 WHERE 책명='자료구조');
() 괄호 안을 보면 SELECT 책번호 FROM 도서 WHERE 책명='자료구조' 네요. [도서] 표에서 책번호를 검색하는데, 책명이 자료구조인 책번호를 검색하는 것입니다. 그러면 () 안에 들어갈 숫자는 222가 되겠죠?
SELECT 가격 FROM 도서가격
WHERE 책번호 = (SELECT 책번호
FROM 도서 WHERE 책명='자료구조');
책번호 = 222 인 가격을 찾으면 25,000 원이므로, 답 4번입니다.
4. 슈퍼키, 후보키 ★★
교재 단원: 물리 데이터베이스 설계
정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 2번 출제된 개념입니다.
데이터베이스에서 조건에 맞는 튜플을 찾거나 순서대로 정렬하고 싶을 때 기준이 되는 '키' 입니다. 각 튜플들이 서로 구별되도록 해주는 역할을 합니다. 키의 종류에는 후보키, 기본키, 대체키, 슈퍼키, 외래키가 있는데, 시험에서 많이 물어보는 것이 슈퍼키와 후보키를 구분할 수 있느냐? 이기 때문에 이거에 집중해서 보겠습니다.
키의 종류 | 설명 |
후보키 (Candidate Key) | 튜플들을 식별할 수 있는 속성들입니다. 기본키로 사용 가능한 후보들이 됩니다. (유일성과 최소성을 모두 만족합니다.) |
기본키 (Primary Key) | 후보키 중에서 특별히 선정된 키이고, NULL 값이나 중복값은 가질 수 없습니다. ex. 학번, 주민번호 |
대체키 (Alternate Key) | 후보키가 둘 이상일 때 기본키를 제외한 나머지를 의미합니다. (기본키가 없을 때 그 자리를 대신해 줄 수 있으므로 대체키입니다.) |
슈퍼키 (Super Key) | 릴레이션 내에 있는 속성들의 집합으로 구성되는 키입니다. ex. 이름 + 주소 의 조합으로 키를 만들 수도 있는데, 그러면 슈퍼키가 됩니다. (유일성은 만족하지만 최소성은 만족하지 못합니다.) |
외래키 (Foreign Key) | 다른 릴레이션의 기본키를 참조하는 속성들입니다. 예를 들어 <학생> 릴레이션에 기본키가 주민번호이고, <수강> 릴레이션의 기본키는 학번 이라면, <학생> 릴레이션에 있는 학번은 남의 기본키, 나의 외래키가 됩니다. |
위의 키 종류 중 후보키와 슈퍼키를 볼 것입니다. 후보키는 유일성 (Unique) 과 최소성 (Minimality) 를 모두 만족합니다. 슈퍼키는 유일성 (Unique) 은 만족하지만 최소성 (Minimality) 는 만족하지 못합니다. 대체 유일성과 최소성이 무엇인데? 하는 의문이 들 것입니다. 유일성은 말 그대로 튜플을 유일하게 식별할 수 있게 해주는 거니까 아 유일한 거, 할 수 있는데, 최소성은 무엇일까요? 최소한의 정보로 키를 만들어야 최소성이 됩니다. 예를 들어, 중복이 없어서 이름으로만 사람을 식별할 수 있는데 (이름, 주민번호) 를 합해서 하나의 키를 만든다면 최소한의 정보가 사용된 것이 아니겠죠? 이런 슈퍼키는 최소성은 만족하지 못합니다.
구별이 잘 되시나요? 후보키는 최소성과 유일성이 모두 있지만, 슈퍼키는 유일성만 있습니다.
문제를 풀어보겠습니다.
48. 릴레이션에 있는 모든 튜플에 대해 유일성은 만족시키지만 최소성은 만족시키지 못하는 키는? (1) 후보키 (2) 기본키 (3) 슈퍼키 (4) 외래키 (2020.09.26 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
답은 3번입니다.
5. 로킹 ★★★
교재 단원: SQL 활용
정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 100% 출제된 개념입니다.
데이터베이스 병행제어 (Concurrency Control) 란 여러 개의 트랜잭션이 실행될 때 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않고 다른 트랜잭션에 영향을 주지 않도록 트랜잭션을 제어하는 것을 의미합니다. (여러 동작이 병행적으로 일어날 때 문제 생기지 않게 제어하는 것입니다.) 병행 제어 기법에는 로킹 (Locking), 타임스탬프 (Time Stamp) 등이 있는데, 로킹이 시험 문제에 많이 출제가 되었습니다.
※ 트랜잭션 (Transaction) 이란 데이터베이스 상태를 변화시키기 위해 수행하는 작업의 단위인데, SELECT, INSERT 이런 한 문장이 아니라 여러 문장들을 합친 작업 단위가 하나의 트랜잭션이 됩니다. (작업 단위는 사람이 정합니다.)
로킹 (Locking) 이란 데이터베이스 병행 제어를 위해 트랜잭션이 접근하고자 하는 데이터를 잠가서 (lock) 다른 트랜잭션이 접근하지 못하도록 하는 기법입니다. 이름 그대로 내가 일하는 동안 남이 접근 못하게 잠가둔다는 뜻인데, 시험에서는 로킹 단위가 커지고 작아지고에 따라 영향받는 것들을 묻습니다.
- 로킹 단위 크면, 로크 수 감소, 병행성 감소, 오버헤드 감소, 공유도 감소, 제어기법 간단하여 관리 수월
- 로킹 단위 작으면 로크 수 증가, 병행성 증가, 오버헤드 증가, 공유도 증가, 제어기법 까다로워 관리 복잡
[표 출처] https://devinus.tistory.com/25
필기 시험이니 이걸 달달 외울 필요는 없습니다. 자세히 보면, 로킹 단위가 크면 나머지가 다 작아지고, 로킹 단위가 작으면 나머지가 다 커지는 것을 볼 수 있습니다. 이것만 외우시면 됩니다. 로킹 단위가 크면 나머지는 작아지고, 작으면 커진다 입니다.
그럼 문제를 풀어보겠습니다.
46. 병행제어 기법 중 로킹에 대한 설명으로 옳지 않은 것은? (1) 로킹의 대상이 되는 객체의 크기를 로킹 단위라고 한다. (2) 데이터베이스, 파일, 레코드 등은 로킹 단위가 될 수 있다. (3) 로킹의 단위가 작아지면 로킹 오버헤드가 증가한다. (4) 로킹의 단위가 커지면 데이터베이스 공유도가 증가한다. (2020.08.22 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
1번은 로킹의 대상이 되는 것이 로킹 단위가 맞습니다. 2번으로 이런 다양한 것들이 로킹의 단위가 될 수 있는 것이 맞습니다. 3번은 로킹 단위가 작을 땐 다른 것들은 증가합니다. 맞습니다. 4번은 단위가 크면 감소합니다. 답은 4번입니다.
로킹 문제는 이것만 외우시면 됩니다.
- 로킹 단위가 크면 나머지가 다 작아짐
- 로킹 단위가 작으면 나머지가 다 커짐
6. 정규화 ★★★
교재 단원: 논리 데이터베이스 설계
정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 100% 출제된 개념입니다.
정규화 (Normalization) 은 데이터베이스 내부에 불필요한 중복으로 발생하는 이상 (Anomaly) 을 해결하기 위한 방법입니다. 중복성과 종속성을 제거하여 이런 이상 (Anomaly) 를 해결합니다. (실기 시험을 준비한다면 정규화와 반정규화를 모두 한 문장으로 설명할 수 있어야합니다.)
정규화는 제 1정규화, 제 2정규화, 제 3정규화, 보이스코드 (BCNF) 정규화, 제 4정규화, 제 5정규화 과정이 있습니다. 각 정규화를 할 때 어떤 작업을 하는지를 외우면 됩니다.
[정규화 과정] 비정규 릴레이션 ↓ 도메인이 원자값 1NF ↓ 부분적 함수 종속 제거 2NF ↓ 이행적 함수 종속 제거 3NF ↓ 결정자이면서 후보키가 아닌 것 제거 BCNF ↓ 다치 종속 제거 4NF ↓ 조인 종속성 이용 5NF |
앞글자를 따서 도-부-이-결-다-조 로 외우시면 되고, 더 쉽게는 시장에서 두부를 사는 상황을 상상하면서 두부 이걸 다줘요? 로 외우시면 됩니다. (유튜브 강의 출처: https://www.youtube.com/watch?v=rHq3ms88miU)
그런데 혹시 BCNF가 몇 번째인지 헷갈리시나요? 해리포터 9와 4분의 3 승강장 (3/4) 을 생각하면서 3 정규화 -> BCNF -> 4 정규화로 암기하시면 될 것 같습니다.
구체적인 예시로도 시험에 나오긴 했지만 복잡하다 보니 모든 정규화를 예시로 내기는 어렵습니다. 제 1 정규화가 예시로 내기 가장 좋은 문제입니다. 문제로 나오면 다음과 같습니다.
56. 다음과 같이 위쪽 릴레이션을 아래쪽 릴레이션으로 정규화를 하였을 때 어떤 정규화 작업을 한 것인가? ↓ (1) 제1정규형 (2) 제2정규형 (3) 제3정규형 (4) 제4정규형 (2020.08.22 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
릴레이션에서 뭐가 달라진 것인지 감이 오셨나요? 서울, 부산 으로 합쳐져있던 게 서울 / 부산 다른 튜플이 되었죠. 이것은 바로 제 1 정규화 과정입니다. 도메인이 원자값이 되도록 원자값 (더이상 쪼개질 수 없는 단위) 로 나누는 것입니다. 답은 1번입니다. (1, 2, 3 정규화를 더 공부해보고 싶다면 https://yaboong.github.io/database/2018/03/09/database-normalization-1/ 링크를 추천합니다.)
예시로 나오지 않고 단순 설명으로 출제된 문제도 풀어보겠습니다.
56. 제 3 정규형에서 보이스코드 정규형 (BCNF) 으로 정규화하기 위한 작업은? (1) 원자 값이 아닌 도메인을 분해 (2) 부분 함수 종속 제거 (3) 이행 함수 종속 제거 (4) 결정자가 후보키가 아닌 함수 종속 제거 (2020.09.26 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
도부이결다조를 다 외우셨나요? BCNF 정규형으로 가기 위해서는 결정자가 ~ 입니다. 답은 4번입니다.
7. 원자성 ★★★
교재 단원: SQL 활용
정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 100% 출제된 개념입니다.
트랜잭션의 특징은 ACID 라고 해서 다음과 같이 4가지가 있는데, 이 중 필기에서 가장 많이 출제된 것이 바로 원자성 (Atomicity) 개념입니다. (실기에도 ACID 각각을 약술형 혹은 단답형으로 많이 출제가 됩니다)
[그림 출처] https://dalsoon-jang.tistory.com/63
원자성은 모두 반영되든지 아니면 모두 반영이 안 되든지하는 특성을 의미합니다. 하나의 트랜잭션 작업이 실행되려면 다 실행되어야지 그 안에 UPDATE도 있고 SELECT도 있고 등등이 있는데 중간에 오류가 났다고 해서 UPDATE만 반영되면 안 된다는 것입니다. (위에 SQL 문 중 COMMIT 과 ROLLBACK을 기억하시나요? 이런 것들을 이용해서 문제 없으면 물리적으로 반영하고 = COMMIT, 혹시 문제가 생기면 문제 생기기 이전으로 복구시켜주는 = ROLLBACK 방법으로 원자성을 지킵니다.)
문제를 풀어보겠습니다.
51. 트랜잭션의 특징 중 다음 설명에 해당하는 것은? 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다. (1) Durability (2) Share (3) Consistency (4) Atomicity (2020.06.06 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
답은 바로 원자성이므로 4번에 해당합니다.
8. 개체 무결성 ★★
교재 단원: 물리 데이터베이스 설계
정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 2번 출제된 개념입니다.
무결성 (Integrity) 란 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성을 의미합니다. 시험 문제에는 무결성의 종류를 구별할 수 있는지를 물어보았습니다. 무결성의 종류는 개체 무결성, 도메인 무결성, 참조 무결성, 사용자 정의 무결성 등이 있습니다.
- 개체 무결성 (Entity Integrity): 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다. - 도메인 무결성 (Domain Integrity): 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다. - 참조 무결성 (Referential Integrity): 외래키 값은 Null 이거나 참조 릴레이션의 기본키 값과 동일해야한다. 즉, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다. - 사용자 정의 무결성: 속성 값들이 사용자가 정의한 제약조건에 만족해야한다. - NULL 무결성: 릴레이션의 특정 속성 값이 NULL 이 될 수 없도록 한다. - 고유 (Unique) 무결성: 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성값들이 서로 달라야한다. - 키 (Key) 무결성: 하나의 릴레이션에는 적어도 하나의 키가 존재해야한다. - 관계 (Relationship) 무결성: 릴레이션에 어느 한 튜플의 삽입 가능 여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정이다. |
이 중에서 중점적으로 외우면 좋을 것은 개체 무결성, 도메인 무결성, 참조 무결성입니다.
개체 무결성은 기본키는 NULL이나 중복값을 가질 수 없다는 것입니다. 개체 (Entity) 는 데이터베이스에서 표현하려는 현실세계의 대상입니다. 예를 들어, 학생이라는 개체를 표현하기 위해 데이터베이스 표에서 학번, 이름, 학과 속성으로 표현을 할 수 있습니다. 그러면 학생을 표현하는데, 그 기본키로 학번을 정했다면 NULL 값이 있는 것이 말이 안 되겠죠. 이것이 개체 무결성입니다. 그리고 시험에 2번 다 개체 무결성이 나왔기 때문에 무결성 종류 중 제일 중요합니다.
도메인 무결성은 주어진 속성값이 도메인에 속한 값이어야한다는 것입니다. 예를 들어 혈액형이라는 속성에 A, B, O, AB 형이 있는데 갑자기 C형이 나온다면 도메인에 속한 값이 아닌 것이겠죠.
참조 무결성은 외래키 값은 NULL 로 들어오거나 참조로 사용하는 다른 릴레이션의 기본키 값을 그대로 가져와야합니다. 이건 어찌보면 또 당연한 말입니다. 다른 릴레이션의 기본키를 참조로 가져와서 쓰는데, 거기에 없는 값을 가져올 수는 없을 것입니다.
다른 것들도 한번 읽어보면 사용자가 정의한 조건에 만족해야하는 사용자 정의 무결성, 특정 속성값이 NULL 이 될 수 없도록 하는 NULL 무결성, 각 튜플이 갖는 속성 값이 서로 달라야하는 고유 무결성, 적어도 하나의 키는 존재해야하는 키 무결성, 관계의 적절성 여부를 지정하는 관계 무결성이 있습니다. 이름 그대로가 설명과 연결되기 때문에 개체, 도메인, 참조 외에는 연결하기가 쉬울 것입니다.
문제를 풀어보겠습니다.
43. 데이터 무결성 제약조건 중 "개체 무결성 제약" 조건에 대한 설명으로 맞는 것은? (1) 릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만을 가져야 한다. (2) 기본키에 속해 있는 애트리뷰트는 널값이나 중복값을 가질 수 없다. (3) 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다. (4) 외래키 값은 참조 릴레이션의 기본키 값과 동일해야 한다. (2020.06.06 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
개체 무결성은 기본키 속성에 NULL이나 중복값을 가질 수 없다는 것이죠. 답은 2번입니다.
9. 관계 대수 연산 ★★★
교재 단원: 논리 데이터베이스 설계
정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 100% 출제된 개념입니다.
관계 대수란 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어입니다. 정의가 어렵게 느껴질 수 있지만 예를 들어, '평균이 90점 이상인 튜플을 검색하시오' 하는 것을 관계 대수로는 'σ평균 >= 90(성적)' 과 같이 표현할 수 있습니다. 여기서 사용된 σ 이런 기호들이 시험에 나오게 됩니다.
관계 대수 연산자는 다음과 같습니다.
[관계 대수 연산자] (1) 순수 관계 연산자 - SELECT: σ 튜플 구하기 - PROJECT: π 속성 구하기 - JOIN: ▷◁ 합치기 - DIVISION: ÷ 해당하는 튜플의 검색 대상 속성은 제거하고 보여주기 (2) 일반 집합 연산자 - UNION: ∪ 합집합 - INTERSECTION: ∩ 교집합 - DIFFERENCE: - 차집합 - CARTESIAN PRODUCT: × 교차곱 |
기호와 이름을 매칭할 수 있어야합니다.
SELECT 인 σ 는 평균이 90점 이상인 튜플 찾기 처럼 특정 조건에 부합하는 튜플을 찾는 것입니다.
PROJECT인 π는 특정 속성들만 추출하는 것입니다. 이름과 평균만 PROJECT로 추출하면 다음과 같습니다.
[그림 출처] https://powerdev.tistory.com/40
JOIN인 ▷◁ 은 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합치는 연산입니다. 아래와 같이 학번이 겹치는 것을 기준으로 두 개의 표를 합칩니다.
DIVISION 인 ÷ 은 A를 B로 나누면, B의 속성이 포함된 A 를 보여주는데, B 속성은 제외하고 보여줍니다. (글로 읽으면 너무 복잡할 수 있으니 예시로 보겠습니다)
[그림 출처] https://powerdev.tistory.com/40
코드가 A / B로 된 것을 찾는데, 거기에 해당하는 것은 고화식 A / 고화식 B와 김준용 A / 김준용 B가 있습니다. 그러면 No, 이름, 구입품 코드를 고화식, 김준용 으로 출력하는데, 찾기 위해 사용했던 A / B 자체는 출력하지 않는 것입니다. (단순히 속성을 선택하는 PROJECT와 구별이 되시나요?)
합집합, 교집합, 차집합은 위와는 달리 열이 아니라 행을 기준으로 이루어집니다. 예를 들어, 다음의 릴레이션에서 이름을 합집합을 하면 합해진 결과는 행 기준으로 다음과 같습니다.
[그림 출처] https://powerdev.tistory.com/40
그런데 교차곱은 조금 생소할 수 있을 것 같습니다. 하지만 예시로 보면 그렇게 어렵지 않습니다. 순서쌍을 구하는 것인데요, 바로 위에서 본 저 릴레이션의 순서쌍을 구하면 다음과 같습니다. 사원 릴레이션의 이름과 직원 릴레이션의 이름을 하나씩 다 연결해주는 모든 순서쌍을 다 구합니다.
[그림 출처] https://powerdev.tistory.com/40
관계대수 연산자들에 익숙해지셨나요? 이제 문제를 풀어보겠습니다. (구체적인 예시를 더 꼼꼼히 보고 싶다면 https://powerdev.tistory.com/40 링크를 추천드립니다)
50. 관계대수 연산에서 두 릴레이션이 공통으로 가지고 있는 속성을 이용하여 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산은? (1) ▷◁ (2) ⊃ (3) π (4) σ (2020.06.06 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
문제가 합치는 것을 물어보았는데, 합치는 것은 JOIN과 합집합이 가능하죠. 그런데 공통 속성 기준으로 두 개의 릴레이션을 합쳐서 새로운 릴레이션을 만든다? 는 JOIN입니다. 답은 1번입니다. 합집합은 두 릴레이션의 튜플의 합집합을 의미합니다.
10. 뷰 ★★★
교재 단원: SQL 활용
정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 100% 출제된 개념입니다.
뷰 (View) 란 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 가상 테이블을 말합니다. 간단하게 말해서 사용자가 편하게 볼 수 있도록 만들어진 가상 테이블입니다. 시험 문제에서는 뷰의 특징을 많이 물어보게 됩니다.
뷰는 가상의 테이블이기 때문에 저장장치에 물리적으로 존재하지 않습니다. 그리고 실제 있는 기본 테이블을 기반으로 만들었기 때문에 기본 테이블이 삭제되면 뷰도 자동으로 같이 삭제되게 됩니다.
또한 편의성을 위해 만든 가상의 테이블이다보니 제약 조건도 많습니다. 삽입 (CREATE) 나 삭제 (DROP) 문은 가능하지만, 만들어진 후에 변경은 되지 않습니다. 실제 테이블처럼 실체가 있어서 수정할 수 있는 게 아니기 때문입니다. 혹시나 시험 문제에서 틀린 것 고르기 보기 중 갱신 (ALTER) 이 가능하다가 보이게 보이면 씨익 웃으며 답으로 체크해주시면 됩니다.
뷰의 특징이나 장단점 등이 이해가 되셨나요? 문제를 풀어보겠습니다.
48. 뷰(View)의 장점이 아닌 것은? (1) 뷰 자체로 인덱스를 가짐 (2) 데이터 보안 용이 (3) 논리적 독립성 제공 (4) 사용자 데이터 관리 용이 (2020.08.22 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
답은 1번입니다. 뷰에 나타나지 않은 정보들은 사용자에게 보이지 않고 안전하게 보호되므로 데이터 보안이 용이합니다. 논리적 독립성이라는 것은 응용 프로그램에 영향을 주지 않고 논리적 구조를 변경한다는 의미입니다. (cf. 물리적 독립성). 뷰를 사용한다고 해서 뭔가 독립성에 악영향을 끼칠 일이 없을 것입니다. 데이터 관리가 용이하다는 것도 맞습니다. 뷰를 통해 데이터를 간소화해서 볼 수도 있기 때문에 용이합니다. 그런데 1번은 위에 설명에서 언급하지는 않았지만 가상의 테이블은 인덱스를 가질 수 없습니다. 위의 설명들을 토대로 2, 3, 4 번에서 딱히 틀린 점이 없다고 생각하고 1번을 고를 수 있으면 됩니다. (다른 기출 문제들은 쉽게 푸실 수 있을 것 같아서 제일 아리까리해보이는 문제로 골랐습니다.)
참고로, 인덱스는 책의 맨 뒤에 있는 단어와 페이지를 연결해놓은 (특히 대학교 전공책이 많이 이렇게 되어있죠) 색인 페이지 같은 역할을 합니다. 데이터를 빠르게 찾을 수 있도록 인덱스를 설정하는 것인데요, 물리적인 저장 공간을 활용해야만 하기 때문에 뷰는 인덱스를 가질 수 없습니다. (인덱스를 공부하고 싶다면? https://mangkyu.tistory.com/96)
보너스. E-R 모델 ★★
교재 단원: 논리 데이터베이스 설계
정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 2번 출제된 개념입니다.
위의 10가지 개념을 다 학습했다면 보너스로 이것도 외워두시면 좋을 것 같습니다.
E-R (Entity-Relationship, 개체-관계) 모델은 개념적 데이터 모델의 대표적인 모델입니다. 개체와 개체 간의 관계를 개념적인 논리 데이터로 표현하기 위한 방법입니다. 정의는 어려울 수 있는데, 개체와 관계를 표현하는 모델인 것입니다.
이러한 E-R 모델을 시각적으로 표현한 것이 E-R 다이어그램입니다. 시험에는 E-R 다이어그램의 기호의 의미를 아는지 묻는 문제가 출제되었습니다. 예를 들면 다음과 같이 생겼습니다.
외워야하는 기호를 정리하면 다음과 같습니다.
위에 보여드린 예시 그림과 매칭시켜보며 외우면 좋을 것 같습니다. 개체들은 사각형으로 표현되어 있고 그 개체들은 서로의 관계를 알려주는 마름모가 중앙에 있습니다. (잘 안 외워진다면 네모 로봇들이 집게 손을 내밀어서 맞잡은 것처럼 상상하며 외우면 될 것입니다.)
개체들의 속성은 타원으로 연결되어있고, 연결되는 선은 모두 - 단일한 선입니다. (이것도 도형이 잘 안 외워지고 헷갈린다면 네모 로봇의 속성이 곱슬 머리카락이어서 동글 동글한 원형 모양으로 외우면 될 것 같습니다.)
각 기호와 의미의 매칭이 잘 되셨다면 문제를 풀어보겠습니다.
46. 개체-관계 모델의 E-R 다이어그램에서 사용되는 기호와 그 의미의 연결이 틀린 것은? (1) 사각형 - 개체 타입 (2) 삼각형 - 속성 (3) 선 - 개체타입과 속성을 연결 (4) 마름모 - 관계 타입 (2020.09.26 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
개체타입은 사각형, 연결은 선, 관계는 마름모인데, 전혀 상관없는 삼각형이 나와있네요. 답은 2번입니다.
보너스. 투명성 ★★
교재 단원: 물리 데이터베이스 설계
정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 2번 출제된 개념입니다.
데이터베이스 과목이 여러 개념이 골고루 출제되는 경향이 있어서 보너스 개념을 하나 더 추가했습니다. 시간이 있으시다면 이 개념도 한 번 봐두시면 좋을 것 같습니다.
분산 데이터베이스란 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산되어있는 데이터베이스를 말합니다. (이름 그대로 여기저기 분산되어있다는 의미입니다)
분산 데이터베이스의 4대 목표는 바로 위치 투명성, 중복 투명성, 병행 투명성, 장애 투명성입니다. 각 투명성의 의미와 이름을 매칭 시킬 수 있으면 됩니다.
[그림 출처] https://liveyourit.tistory.com/219
위치 투명성은 물리적 위치를 몰라도 이름만 알면 접근 가능하다는 것입니다. 중복 투명성은 여러 곳에 중복되어있어도 사용자는 하나인 것처럼 사용할 수 있다는 것입니다. 병행 투명성은 다수의 트랜잭션이 병행적으로 일어나도 결과에 서로 영향을 미치지 않는 것입니다. 장애 투명성은 장애가 일어나도 트랜잭션이 정확히 처리된다는 것입니다.
분산 데이터베이스가 어떤 것들을 목표로 하고 있는지 잘 이해가 되시나요? 굳이 엄청 열심히 외우지 않아도 이름과 뜻의 매칭이 쉽게 되실 수 있을 것 같습니다.
잘 안 와닿는다면 한 번 더 읽어보신 후에 아래 문제를 풀어보세요.
52. 분산 데이터베이스 목표 중 "데이터베이스의 분산된 물리적 환경에서 특정 지역의 컴퓨터 시스템이나 네트워크에 장애가 발생해도 데이터 무결성이 보장된다" 는 것과 관계 있는 것은? (1) 장애 투명성 (2) 병행 투명성 (3) 위치 투명성 (4) 중복 투명성 (2020.06.06 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT) |
설명에 너무 정확한 단어가 하나 보이죠? 장애가 발생해도 문제 없어야하므로 답은 1번 장애 투명성입니다.
참고
정보처리기사 필기 전자문제집 CBT: https://www.comcbt.com/xe/iz