MySQL로 배우는 데이터베이스 개론과 실습 답안 Part 01(Chapter 02)

2020. 4. 9. 18:01에듀포스트

개인적으로 푼것들 것들과 검색해 본것들입니다.

 

 

오답이 있을 시 댓글 달아주시면 감사하겠습니다 !!

 

01. 관계 데이터 모델의 릴레이션에 대한 설명 중 옳지 않은 것은 ? 2번

1. 릴레이션은 릴레이션 스키마와 릴레이션 인스턴스로 구성된다.

2. 릴레이션 스키마를 외연(extension)이라고 한다.

3. 릴레이션 스키마는 정적인 성질을 가진다.

4. 릴레이션 인스턴스는 동적인 성질을 가진다.

 

해설 

릴레이션 스키마는 내포라고 한다. 릴레이션 인스턴스를 외연이라고 한다.

 

02. 릴레이션의 특징으로 알맞은 것은? 4번

1. 중복된 튜플이 존재한다.

2. 튜플 간의 순서가 정의된다.

3. 속성 간의 순서가 정의된다.

4. 모든 속성의 값은 원자값이다.

 

해설

1. 하나의 릴레이션 인스턴스 내에서 모든 투플은 서로 값이 달라야 한다.

2. 투플의 순서가 달라도 같은 릴레이션이다. 관계 데이터 모델의 투플은 실제적인 값을 가지고 있으면 이 값은 시간이 지남에 따라 데이터의 삭제, 수정, 삽입에 따라 순서가 바뀔 수 있다.

3. 속성의 순서가 달라도 릴레이션 스키마는 같다.

 

03. 하나의 속성이 가질 수 있는 값을 총칭하여 무엇이라 하는가? 3번

1. 튜플

2. 릴레이션

3. 도메인

4. 엔티티

 

해설

1. 투플은 릴레이션의 한 행이다.

2. 릴레이션은 관계 데이터 모델에서 행과 열을 가진 테이블이다.

4. 개소리

 

04. 외래키(FK)에 대한 설명으로 옳은 것은? 1번

1. 릴레이션 R1에 속한 속성 집합 FK가 다른 릴레이션 R2의 기본키인 것을 말한다.

2. 외래키와 기본키가 정의된 도메인은 다를 수도 있다.

3. 외래키는 NULL 값을 가질 수 없다.

4. 둘 이상의 후보키 중에서 하나를 선정하여 대표로 삼은 키를 말한다.

 

해설

2. 참조하고 참조되는 양쪽 릴레이션의 도메인은 서로 같아야 한다.

3. 외래키는 NULL, 중복값을 허용한다.

4. 기본키에 대한 설명이다

 

05. 한 릴레이션의 기본키를 구성하는 어떠한 속성 값도 NULL 값이나 중복값을 가질 수 없다는 것을 의미하는 제약조건은? 1번

1. 개체 무결성 제약조건

2. 참조 무결성 제약조건

3. 보안 무결성 제약조건

4. 정보 무결성 제약조건

 

해설

2. 외래키 제약이라고도 한다. 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 속성의 도메인이 동일해야 하며, 자식 릴레이션의 값 변경 시 부모 릴레이션의 값에 제약을 받는다.

 

 

06. 릴레이션에서 특정 속성에 해당하는 열을 선택하는 데 사용하며, 릴레이션의 수직적 부분 집합을 반환하는 관계대수 연산자는? 1번

1. projection

2. join

3. division

4. selection

 

해설

2. 두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 투플을 수평으로 결합하는 연산이다.

3. 속성 A와 B로 이루어진 릴레이션 R과 속성 B로 이루어진 릴레이션 S의 디비전 연산은, 릴레이션 S의 속성 B값과 서로 동일하게 대응하는 릴레이션 R의 속성 A의 투플들을 반환한다.

4. 릴레이션의 투플을 추출하기 위한 연산이다.

 

07. 릴레이션 C가 릴레이션 A(X,Y)와 B(Y,Z)를 자연조인한 결과일 때 다음 중 맞는 설명을 모두 고르시오. 3번

1. C의 카디날리티는 A의 카디날리티보다 많다.

2. C의 카디날리티는 A의 카디날리티보다 적다.

3. C의 차수는 A의 차수보다 많다.

4. C의 차수는 A의 차수보다 적다.

5. 모두 틀리다.

 

해설

C의 카디날리티는 A의 카디날리티보다 많을 수도 있고 적을 수도 있다.

C의 차수는 (A,X,Y) 이므로 A(X,Y)의 차수보다 많다.

 

8. 다음 용어를 설명하시오.

(1) 릴레이션

  - 관계 데이터 모델의 핵심적인 개념으로 행과 열로 구성된 테이블이다.

(2) 스키마

  - 관계 데이터베이스의 릴레이션이 어떻게 구성되는지 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의한다.

(3) 릴레이션 인스턴스

 - 릴레이션 스키마에 실제로 저장되는 데이터의 집합이다.

(4) 릴레이션 차수와 카디날리티

 - 릴레이션의 차수는 릴레이션의 속성(attribute/column)의 개수이다.

 - 릴레이션의 카디날리티는 릴레이션의 투플(tuple/row)의 개수이다.

(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) 

 

 

(2) πA,B (R)

 

 

(3) R ⋈R.c=S.c S

 

 

 

13. 다음 수강신청 관련 릴레이션에 대한 질의문을 관계대수식으로 표현하시오.

(1) 과목코드가 1234이고 성적이 A인 모든 학생의 학번을 보이시오.

π학번 과목코드=’1234’ AND 성적=‘A’ (수강))

(2) 과목코드가 1234인 과목을 등록한 학생의 이름과 전공을 보이시오.

π이름, 전공 과목코드=’1234’ (학생 ⋈학생.학번=수강.학번 수강))

(3) 과목 1234에 등록하지 않은 학생의 이름을 보이시오.

π이름 과목코드!=’1234’ (학생 ⋈학생.학번=수강.학번 수강))

(4) 모든 과목에 등록한 학생의 이름을 보이시오.

π이름 (수강 ÷ π과목코드 (과목))

 

14. [극장 데이터베이스] 다음은 4개의 지점을 둔 극장 데이터베이스다. 밑줄 친 속성은 기본키다.

극장(극장번호, 극장이름, 위치)

상영장(극장번호, 상영관번호, 영화제목, 가격, 좌석수)

예약(극장번호, 상영관번호, 고객번호, 좌석번호, 날자)

고객(고객번호, 이름, 주소)

(1) 각 테이블에서 외래키를 찾아보시오.

상영관: (극장번호)

예약: (극장번호, 상영관번호, 고객번호)

(2) 각 테이블에 저장될 데이터를 세 개씩 적어보시오. 예를 들면 극장의 경우는 다음과 같다.

 

 

(3) 다음 관계대수식이 나타내는 릴레이션은 무엇인지 설명하시오.

  ① π극장번호 (σ가격 > 6000 (상영관))

     6000원보다 비싼 영화를 상영하는 극장번호를 찾아라.

  ② σ극장.극장번호=상영관.극장번호 (극장X상영관)

     극장의 이름, 위치, 상영관번호, 영화제목, 가격, 좌석수를 찾아라.

  ③ π극장이름 (극장 극장.극장번호=상영관.극장번호 (σ가격 > 6000 (상영관)))

     6000원보다 비싼 영화를 상영하는 극장이름을 찾아라.

  ④ 고객 ⟕ (σ날짜 > ‘20140101’(예약))

     2014년 1월 1일 이후에 예약한 고객과 예약정보를 찾아라.

  ⑤ π고객이름, 극장번호 (예약 예약.고객번호=고객.고객번호 고객) ÷ π극장번호 (σ위치=‘강남’ (극장))

    강남에 있는 극장에 예약한 고객의 고객이름과 극장번호를 찾아라.

 

(4) 다음 물음에 대하여 관계대수식을 작성하시오.

  ① 모든 극장의 이름과 위치를 보이시오.

    σ극장이름, 위치 (극장)

  ② 가격이 7,000원 이하인 영화제목을 보이시오.

    π영화제목 (σ가격 > 6000 (상영관))

  ③ 모든 고객의 이름과 주소를 보이시오.

    σ이름, 주소 (고객)

  ④ ‘강남’에 위치한 극장에서 상영 중인 영화제목을 보이시오.

    π영화제목 (상영관 ⋈상영관.극장번호=극장.극장번호 극장) ÷ π극장번호 (σ위치=‘강남’ (극장))

  ⑤ ‘강남’에 위치한 극장에 예약을 한 고객의 이름을 보이시오.

    π고객이름 (예약 ⋈예약.고객번호=고객.고객번호 고객) ÷ π극장번호 (σ위치=‘강남’ (극장))

 

15. [판매원 데이터베이스] 다음 릴레이션을 보고 물음에 답하시오. Salesperson은 판매원, Order는 주문, Customer는 고객을 나타낸다. 밑줄 친 속성은 기본키고 custname과 salesperson은 각각 Customer.name과 Salesperson.name을 참조하는 외래키다.

Salesperson(name, age, salary)

Order(number, custname, salesperson, amount)

Customer(name, city, industrytype)

(1) 모든 판매원(salesperson)의 이름을 보이시오.

  σname (Salesperson)

(2) 고객 ‘홍길동’의 주문을 수주한 판매원의 이름을 보이시오.

  πname (Salesperson ⋈Salesperson.name=Order.salesperson Order) ÷ πname (σname=‘홍길동’ (Customer))

(3) 주문이 있는 판매원의 이름을 보이시오.

  πname (Salesperson ⋈Salesperson.name=Order.number Order) (σnumber = NULL (Order))

(4) 주문이 없는 판매원의 이름을 보이시오.

  πname (Salesperson ⋈Salesperson.name=Order.number Order) (σnumber != NULL (Order))

(5) 고객 ‘홍길동’의 주문을 수주한 판매원의 나이를 보이시오.

  πage (Salesperson ⋈Salesperson.name=Order.salesperson Order) ÷ πname (σname=‘홍길동’ (Customer))

(6) 나이가 26살인 판매원에게 주문한 고객의 city 값을 보이시오.

  πcity (Order ⋈Order.custname=Salesperson.name Salesperson) ÷ πname (σage=26 (Salesperson))

(7) 판매원 이름과 그 판매원에게 주문을 한 고객의 이름을 보이시오. 단 주문이 없는 판매원도 포함하여 구한다.

  σSalesperson.name, Order.custname (Salesperson ⟕Salesperson.name=Order.salesperson Order)

16. [기업 프로젝트 데이터베이스] 다음 릴레이션을 보고 물음에 답하시오. Emloyee는 사원, Department는 부서, Project는 프로젝트 내용, Works는 사원이 프로젝트에 참여한 내용을 나타낸다. 한 사원이 여러 프로젝트에서 일하거나 한 프로젝트에서 여러 사원이 일할 수 있다. hours-worked 속성은 각 사원이 각 프로젝트에서 일한 시간을 나타낸다. Department의 manager 속성에는 empno 값이 저장되어 있다고 가정한다.

Employee(empno, name, phoneon, address, sex, position, deptno)

Department(deptno, deptname, manager)

Project(projno, projname, deptno)

Wkrs(empno, projno, hours-worked)

(1) 각 릴레이션에서 기본키를 정의하시오.

  (empno) / (manager) / (projno, deptno) / (empno)

(2) 릴레이션 간의 관계를 살펴보고 외래키를 찾아보시오.

  empno, deptno, projno

(3) 다음 질문에 대하여 관계대수식을 작성하시오.

  ① 모든 직원의 이름을 보이시오.

    σname (Employee)

  ② 여자 직원의 이름을 보이시오.

    σname Employee ÷ σsex=여자 (Employee)

  ③ 팀장(manager)의 이름과 주소를 보이시오.

    πname, address (σposition=’manager‘ (Employee))

  ④ IT 부서(Department)에서 일하는 직원의 이름과 주소를 보이시오.

    πname, address (Employee ⋈Employee.deptno=Department.deptno Department) ÷ σdeptname=’IT‘ (Department)

  ⑤ ‘미래’ 프로젝트에서 일하는 직원의 이름을 보이시오.

    πname (Employee ⋈Employee.deptno=Project.deptno Project) ÷ σprojname=’미래‘ (Project)