-
[오라클로 배우는 데이터베이스 개론과 실습] 2장 연습문제Database 2020. 4. 27. 02:49
오라클로 배우는 데이터베이스 개론과 실습 2장 연습문제(교재 p.120-125) 풀이입니다.
오류가 있다면, 댓글로 알려주세요 :)
(연습문제)
1. 관계 데이터 모델의 릴레이션에 대한 설명 중 옳지 않은 것은?
② 릴레이션 스키마를 외연(extension)이라고 한다.
[풀이] 릴레이션 스키마는 내포라고한다. 릴레이션 인스턴스가 외연이다.
2. 릴레이션의 특징으로 알맞은 것은?
④ 모든 속성의 값은 원자값이다.
[풀이]
① 하나의 릴레이션에서 중복된 투플은 존재할 수 없다.
② 투플 순서가 달라도 같은 릴레이션이다.
③ 속성 순서가 달라도 릴레이션 스키마는 같다.
3. 하나의 속성이 가질 수 있는 값을 총칭하여 뭐라고 부르는가?
③ 도메인
[풀이]
① 투플 : 릴레이션의 한 행.
② 릴레이션 : 행과 열로 구성된 테이블
③ 도메인 : 속성이 가질 수 있는 값의 집합
4. 외래키(FK, Foreign Key)에 대한 설명으로 옳은 것은?
① 릴레이션 R1에 속한 속성 집합 FK가 다른 릴레이션의 R2의 기본키인 것을 말한다.
[풀이]
② 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 한다.
③ 외래키는 NULL값과 중복값이 허용된다.
④ 둘 이상의 후보키 중에서 하나를 선정하여 대표로 삼는 키 : 기본키
5. 한 릴레이션의 기본키를 구성하는 어떠한 속성 값도 NULL값이나 중복 값을 가질 수 없다는 것을 의미하는 제약조건은?
① 개체 무결성 제약조건
[풀이]
② 참조 무결성 제약조건 : 외래키 제약이라고도 하며, 릴레이션 간의 참조 관계를 선언하는 제약조건이다. 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 동일해야 하며, 자식 릴레이션 값이 변경될 때 부모 릴레이션의 제약을 받는다는 것이다.
6. 릴레이션에서 특정 속성에 해당하는 열을 선택하는 데 사용하며, 릴레이션의 수직적 부분 집합을 반환하는 관계대수 연산자는?
① projuction
[풀이]
② join : 두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 투플을 수평으로 결합하는 연산
③ division : 릴레이션 속상 값의 집합으로 연산을 수행
④ selection : 릴레이션의 투플을 추출하기 위한 연산
7. 릴레이션 C가 릴레이션 A(X, Y)와 B(Y, Z)를 자연조인한 결과일 때 다음 중 맞는 설명을 모두 고르시오.
③ C의 차수는 A의 차수보다 많다.
[풀이]
① C의 카탈리나는 A의 카탈리나보다 많거나 적다.
② C의 카탈리나는 A의 카탈리나보다 많거나 적다.
④ C의 차수는 3으로 A의 차수보다 많다. : C(X,Y, Z)
8. 다음 용어를 설명하시오.
(1) 릴레이션 : 행과 열로 구성된 테이블
(2) 스키마 : 테이블의 첫 행인 헤더(header)에 나타나며 각 데이터의 특징을 나타내는 속성, 자료 타입 등의 정보를 담고 있다.
(3) 릴레이션 인스턴스 : 정의된 스키마에 따라 테이블에 실제로 저장되는 데이터의 집합을 의미
(4) 릴레이션 차수와 카디날리티 : 차수는 속성의 개수이며, 카디날리티는 투플의 수이다.
(5) 도메인 : 속성이 가질 수 있는 값의 집합
(6) 투플 : 릴레이션의 행
9. 릴레이션에 대한 다음 물음에 답하시오.
(1) 릴레이션 스키마와 릴레이션 인스턴스의 차이점을 설명하시오.
- 릴레이션 스키마 : 릴레이션에 어떤 정보가 담길지를 정의한 것.
- 릴레이션 인스턴스 : 릴레이션 스키마에 실제로 저장된 데이터의 집합
(2) 도메인 제약 조건(도메인 무결성 제약조건)을 설명하시오.
: 릴레이션 내의 투플들이 각 속성의 도메인에 지정된 값만을 가져야 한다는 조건이다. 예를 들어 주문 릴레이션에서 주문일자는 날짜 데이터만 사용해야 한다.
(3) 기본키 제약조건과 외래키 제약조건을 설명하시오.
- 기본키 제약조건(개체 무결성 제약조건) : 기본키는 NULL값을 가져서는 안되며, 릴레이션 내에 오직 하나의 값만 존재해야한다.
- 외래키 제약조건(참조 무결성 제약조건) : 릴레이션 간의 참조 관계를 선언하는 제약조건. 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다.
(4) 참조 무결성 제약조건의 옵션 네가지를 설명하시오.
(부모 릴레이션에서 투플을 삭제할 경우)
- RESTRICTED : 자식 릴레이션에서 참조하고 있을 경우 부모 릴레이션의 삭제 작업을 거부함.
- CASCADE : 자식 릴레이션의 관련 투플을 같이 삭제 처리함.
- DEFAULT : 자식 릴레이션의 관련 투플을 미리 설정해둔 값으로 변경함.
- NULL : 자식 릴레이션의 관련 투플을 NULL값으로 설정함(NULL값을 허가한 경우)
(5) 후보키와 기본키의 차이점을 설명하시오.
- 후보키 : 투플을 유일하게 식별할 수 있는 속성의 최소 집합
- 기본키 : 여러 후보키 중 하나를 선정하여 대표로 삼는 키
10. 사원(주민등록번호, 사원번호, 사원이름, 주소, 생년월일) 릴레이션이 있다. 기본키는 (사원이름, 생년월일)이고, 그 밖의 대체키 1은 주민등록번호, 대체키 2는 사원번호다. 다음 물음에 답하시오.
(1) (주민등록번호, 주소)는 후보키인가? 그 이유는 무엇인가?
아니다. 주민등록번호만으로도 투플 식별이 가능하므로 후보키의 '식별가능한 속성의 최소 집합'이라는 정의에 어긋난다.
(2) 사원번호는 슈퍼키인가? 그 이유는 무엇인가?
사원번호는 슈퍼키이다. 투플을 유일하게 식별할 수 있는 속성이기 때문이다.
(3) 생년월일은 NULL값을 가질 수 있는가?
생년월일은 기본키로 NULL값을 가질 수 없다.
(4) 주소는 NULL값을 가질 수 있는가?
있다.
11. 다음 릴레이션에서 더 이상 삽입되는 데이터가 없다고 가정한다. 다음 물음에 답하시오.
(1) 릴레이션 R과 S의 후보키를 모두 보이시오.
R : A
S : (C,D), (C,E)
(2) 릴레이션 R과 S의 기본키는 어떤 것이 좋을지 선택하시오.
R : A
S : 둘 다 가능하지만 보기 편한 (C,D)를 선택
12. 다음 릴레이션에서 관계대수식의 결과를 작성하시오.
(1) σA=a2(R)
A
B
C
a2
b1
c1
(2) πA,B(R)
A
B
a1
b1
a2
b1
a3
b1
a3
b1
(3) R⋈R.c=S.cS
A
B
C
C
D
E
a1
b1
c1
c1
d2
e1
a2
b1
c1
c1
d1
e2
a3
b1
c2
c2
d3
e3
a3
b1
c3
c3
d3
e3
13. 다음 수강신청 관련 릴레이션에 대한 질의문을 관계대수식으로 표현하시오.
학생(학번, 이름, 전공, 학년)
수강(과목코드, 학번, 수강학기, 성적)
과목(과목코드, 과목이름, 강의실, 요일, 담당교수)(1) 과목코드가 1234이고 성적이 A인 모든 학생의 학번을 보이시오.
π학번 (σ과목코드='1234' AND 성적='A' (수강))
(2) 과목코드가 1234인 과목을 등록한 학생의 이름과 전공을 보이시오.
π이름, 전공 (σ과목코드='1234' (학생⋈학생.학번=수강.학번 (수강)))
(3) 과목 1234에 등록하지 않은 학생의 이름을 보이시오.
π이름 (σ과목코드!='1234' (학생⋈학생.학번=수강.학번 (수강)))
(4) 모든 과목에 등록한 학생의 이름을 보이시오.
π이름(수강 ÷ π과목코드(과목))
(심화문제)
14. [극장 데이터베이스] 다음은 4개의 지점을 둔 극장 데이터베이스다. 밑줄 친 속성은 기본키다.
극장(극장번호, 극장이름, 위치)
상영관(극장번호, 상영관번호, 영화제목, 가격, 좌석수)
예약(극장번호, 상영관번호, 고객번호, 좌석번호, 날짜)
고객(고객번호, 이름, 주소)(1) 각 테이블에서 외래키를 찾아보시오.
- 극장 : 없음
- 상영관 : 극장번호
- 예약 : 극장번호, 상영관번호, 고객번호
- 고객 : 없음
(2) (생략)
(3) 다음 관계대수식이 나타내는 릴레이션은 무엇인지 설명하시오
① π극장번호 (σ가격>6000(상영관))
가격이 6000원을 초과하는 영화의 극장번호를 보이시오.
② σ극장.극장번호=상영관.극장번호 (극장×상영관)
극장번호, 극장이름, 위치, 상영관번호, 영화제목, 가격, 좌석수를 보이시오.
③ π극장이름 (극장⋈극장.극장번호=상영관.극장번호(σ가격>6000(상영관)))
가격이 6000원을 초과하는 영화의 극장이름을 보이시오.
④ 고객 ⟕ (σ날짜>'20140101'(예약))
20140101이후로 예약된 고객과 예약 정보를 보이시오.
⑤ π고객이름, 극장번호 (예약⋈예약.고객번호=고객.고객번호고객) ÷ π극장번호(σ위치='강남' (극장))
강남에 있는 극장에서 예약한 고객의 이름과 극장번호를 보이시오.
(4) 다음 물음에 대하여 관계대수식을 작성하시오.
① 모든 극장의 이름과 위치를 보이시오.
σ극장이름, 위치 (극장)
② 가격이 7,000원 이하인 영화제목을 보이시오
π영화제목 (σ가격<=7000 (상영관))
③ 모든 고객의 이름과 주소를 보이시오.
σ고객이름,주소 (고객)
④ '강남'에 위치한 극장에서 상영중인 영화제목을 보이시오.
π영화제목 (상영관⋈상영관.극장번호=극장.극장번호 (극장)) ÷ π극장번호(σ위치='강남'(극장))
⑤ '강남'에 위치한 극장에 예약을 한 고객의 이름을 보이시오.
π고객이름(예약⋈예약.고객번호=고객.고객번호 (고객)) ÷ π극장번호(σ위치='강남'(극장))
π σ ⋈
'Database' 카테고리의 다른 글
[오라클로 배우는 데이터베이스 개론과 실습] 7장 연습문제 (2) 2020.06.15 [오라클로 배우는 데이터베이스 개론과 실습] 6장 연습문제 (6) 2020.06.14 [오라클로 배우는 데이터베이스 개론과 실습] 4장 연습문제 (0) 2020.04.28 [오라클로 배우는 데이터베이스 개론과 실습] 3장 연습문제 (2) 2020.04.27 [오라클로 배우는 데이터베이스 개론과 실습] 1장 연습문제 (2) 2020.04.26