본문 바로가기
학교/데이터베이스

MS SQL Server 기반 데이터베이스 배움터 2장 (관계 데이터 모델과 제약조건) 연습문제 풀이

by 코드 이야기 2021. 5. 20.
728x90

https://book.naver.com/bookdb/book_detail.nhn?bid=7000196 

 

데이터베이스 배움터

『데이터베이스 배움터』는 데이터베이스의 기본적인 개념과 실용적인 이론을 중심으로 한 학기 동안 가르치기에 적절한 주제들을 정선하여 저술하였고, 개념을 알기 쉽게 보여주는 그림들을

book.naver.com

 

 

1. 다음 용어들을 간략히 설명하라.

릴레이션(relation): 2차원의 테이블 (스프레드 시트와 유사하나 스프레드 시트는 각 셀에 함수, 서식도 지정할 수 있다. 각 셀은 여러 셀들의 합으로 구해지는 등 다른 셀들의 값에 의존한다.)

차수(degree): 한 릴레이션에 들어 있는 애트리뷰트들의 수 

카디날리티(cardinality): 릴레이션의 투플 수

릴레이션 스키마: 릴레이션의 이름과 릴레이션의 애트리뷰트들의 집합. 릴레이션을 위한 틀(framework). 내포(instension)라고 함

릴레이션 인스턴스(relation instance): 릴레이션에 어느 시점에 들어 있는 투플들의 집합. 시간의 흐름에 따라 계속 변함. 외면(extention)이라고 함

기본 키(primary key): 한 릴레이션 내의 모든 투플을 고유하게 식별할 수 있는 값. 한 릴레이션에 기본 키가 두 개 이상 있으면 데이터베이스 설계자 또는 관리자가 이들 중에서 하나를 기본 키로 선정한다.

(기본키 선정시 추가로 고려할 사항: 애트리뷰트가 항상 고유한 값을 가질 것인가, 애트리뷰트가 확실하게 널값을 갖지 않을 것인가, 애트리뷰트의 값이 변형될 가능성이 높은 애트리뷰트는 기본 키로 선정하지 말 것, 가능하면 작은 정수 값이나 짧은 문자열을 갖는 애트리뷰트, 가능하면 복합 기본 키를 피할 것)

후보 키(candidate key): 각 투플을 고유하게 식별하는 최소한의 애트리뷰트들의 모임. 모든 릴레이션에는 최소한 한 개 이상의 후보 키가 있음. 후보키가 두 개 이상일 경우 복합 키라고 부름.

대체 키(alternate key): 기본 키로 선정되지 않은 후보 키.

수퍼 키(superkey): 한 릴레이션 내의 특정 투플을 고유하게 식별하는 하나의 애트리뷰트 또는 애트리뷰트들의 집합. 최소한의 집합이 아니다. 불필요한 애트리뷰트도 포함할 수 있다.

외래 키(foreign key): 어떤 릴레이션의 기본 키를 참조하는 애트리뷰트. 관계 데이터베이스에서 릴레이션들 간의 관계를 나타내기 위해 사용한다.

 

 

 

 

6. 관계 데이터 모델이 무엇인가? 관계 데이터 모델의 기본적인 구성 요소들을 설명하라.

동일한 구조(릴레이션)의 관점에서 모든 데이터를 논리적으로 구성하며 선언적인 질의어를 통한 접근을 제공한다. 응용 프로그램들은 데이터베이스 내의 레코드들의 어떠한 순서와도 무관하게 작성된다.
기본적인 구성요소: 릴레이션, 행, 열, 튜플, 기본 키

 

 

11. 도메인 제약조건이 무엇인가? 

→ 각 애트리뷰트의 값이 반드시 원자값이어야 함.

→ 애트리뷰트 값의 디폴트 값, 가능한 값들의 범위 등을 지정할 수 있음.

 

 

12. 키 제약조건이 무엇인가?

→ 키 애트리뷰트에 중복된 값이 존재해서는 안됨.

 

 

13. 엔티티 무결성 제약조건이 무엇인가?

→ 릴레이션의 기본 키를 구성하는 어떤 애트리뷰트도 NULL 값을 가질 수 없음. 

→ 대체 키에는 적용되지 않음

→ 사용자는 릴레이션을 생성하는 데이터 정의문에서 어떤 애트리뷰트가 릴레이션의 기본 키의 구성요소인가를 DBMS에게 알려줌.

 

 

14. 참조 무결성 제약조건이 무엇인가?

→ 외래 키의 값은 릴레이션 1의 어떤 튜플의 기본 키 값과 같다.

→ 외래 키가 자신을 포함하고 있는 릴레이션의 R1 기본 키를 구성하고 있지 않으면 널값을 가진다.

→ 릴레이션 R2의 외래 키가 릴레이션 R1의 기본 키를 참조할 때 참조 무결성 제약조건은 아래의 두 조건 중 하나가 성립되면 만족된다.

    - 외래 키의 값은 R1의 어떤 투플의 기본 키 값과 같다.

    - 외래 키가 자신을 포함하고 있는 릴레이션의 기본 키를 구성하고 있지 않으면 널값을 가진다.

 

 

 

16. 학생, 수강, 과목 릴레이션을 사용하여 다음 연산자들에 대해 어떻게 참조 무결성 제약조건을 시행하는지 답하라. 각 문항이 아래의 관계 데이터베이스 인스턴스에 독립적으로 적용되었다고 가정한다.

(1) 학생 릴레이션에서 '24036' 투플을 삭제

  참조 무결성 제약조건을 위배한다.

  학생 릴레이션의 기본 키인 학번을 수강 릴레이션의 학번이 참조하고 있다. 따라서

  (제한 옵션시) 거절.

  (연쇄 옵션시) 수강 릴레이션에서 학생 릴레이션 '24036'을 참조하기때문에 삭제 시 삭제 연산 거절.
  (널값) 거절. 기본 키를 널값으로 바꾸기 때문

  (디폴트 값) 거절. 기본 키가 중복 값이 나올 수 있기 때문

(2) 학생 릴레이션에서 '30419' 투플을 삭제 

  (제한 옵션시) 거절. 수강 릴레이션에서 학생의 30419를 참조하고있기 때문에 안됨.

  (1)번과 동일한 이유로 불가능

(3) 학생 릴레이션에서 '11002' 를 '13452'로 수정

  (제한 옵션시) 수강 릴레이션에서 학번을 참조중이어서 거절됨.

  (연쇄 옵션시) 학생, 수강 릴레이션에서 모두 수정되어 성립됨.

(4) 학생 릴레이션에 새로운 '42531' 투플을 삽입

  거절

(5) 수강 릴레이션에 새로운 투플 (30419, CS366, A0)을 삽입

  과목에 CS366이 없어서 거절

(6) 수강 릴레이션에 새로운 투플 (24036, CS313, B+)을 삽입 

  성립

(7) 수강 릴레이션에 새로운 투플 (32517, CS313, B0)을 삽입 

  학생에 32517이 없어서 거절

(8) 과목 릴레이션에서 'CS326' 투플을 삭제

  과목에서밖에 안쓰이기 때문에 연쇄여도, 제한이여도 성립

(9) 과목 릴레이션에서 'CS313' 투플을 삭제

  제한시 위배되어 거절.

  연쇄시 모두 삭제

(10) 과목 릴레이션에서 'CS345'를 'CS321'로 수정

  제한시 위배되어 거절.

  연쇄시 모두 수정

 

 

 

17. 아래의 세 릴레이션 스키마에서 기본 키와 외래 키를 모두 찾아내라.

비행기 스케쥴 (비행기#, 출발지, 도착지, 총좌석수)

고객 (고객#, 고객 이름)

예약 (비행기#, 고객#, 날짜)

→ 기본키: 비행기 스케쥴(비행기#),  고객(고객#),  예약(비행기#),  예약(고객#)

→ 외래키: 예약(비행기#), 예약(고객#)

 

 

 

18. 아래의 학생 릴레이션에서 학번이 기본 키이다.
(1) (학번, 이름)이 수퍼 키인가? → 수퍼 키이다.

    → 학번은 학생만의 고유 번호이기 때문에 학생을 구분하는데에 부족함이 없다. 
(2) 이름이 후보 키인가? 그 이유를 설명하라. → 후보키가 될 수 없다.

    → 동명이인일 경우 구분할 수 없다.
(3) (이름, 이메일)이 수퍼 키인가? → 수퍼 키이다.

    → 이메일이 중복될 수 없다는 특징을 가지고 있어 구분함에 부족함이 없다.

(4) 차수가 얼마인가? → 3개이다.

    → 차수란 애트리뷰트(열)의 개수이다. 학번, 이름, 이메일 3개이다.

(5) 카디날리티가 얼마인가? → 3개이다.

    → 카디날리티란 투플(행)의 개수이다.

 

 

 

19. 릴레이션 스키마 사원(주민등록번호, 사원번호, 사원이름, 주소, 생년월일)가 있다. 기본 키가 (사원이름, 생년월일)이고, 그 밖의 대체 키1은 주민등록번호, 대체 키2는 사원번호라고 가정하자.

(1) (주민등록번호, 주소)는 후보키인가? 그 이유는 무엇인가?

→ 후보키가 아니다.

→ 고유하게 식별할 수는 있지만, 최소한의 집합이 아니다.

 

(2) 사원번호는 수퍼 키인가? 그 이유는 무엇인가?

→ 수퍼 키이다.

→ 사원번호는 고유하게 식별하기에 충분하기 때문이다.

 

(3) 생년월일이 널값을 가질 수 있는가?

→ 가질 수 없다.

→ 생년월일은 기본키이고, 기본키는 null값을 가질 수 없기 때문에 참조 무결성 제약조건에 위배된다.

 

(4) 주소가 널값을 가질 수 있는가?

→ 가질 수 있다.

→ 주소는 기본 키가 아니기 때문이다.

 

 

 

 

 

 

 

 

 

 

 

728x90

댓글