
본 게시글은 오라클로 배우는 데이터베이스 개론과 실습 2판 - 연습문제 2장 풀이입니다. 제가 이 책을 공부하면서 풀었던 풀이의 흔적이므로 정답이 아닐 수 있습니다. 혹여나 틀린 부분이 있어 오류를 댓글로 지적해주신다면 감사하겠습니다.
1. 관계 데이터 모델의 릴레이션에 대한 설명 중 옳지 않은 것은?
① 릴레이션은 릴레이션 스키마와 릴레이션 인스턴스로 구성된다.
② 릴레이션 스키마를 외연(extension)이라고 한다.
③ 릴레이션 스키마는 정적인 성질을 가진다.
④ 릴레이션 인스턴스는 동적인 성질을 가진다.
릴레이션 스키마: 릴레이션의 구조를 정의하는 부분으로, 릴레이션의 이름과 릴레이션에 포함된 속성들의 이름을 포함하고 있음
릴레이션 인스턴스: 릴레이션 스키마에 따라 각 시점에서의 릴레이션의 상태를 나타내며, 시간에 따라 변할 수 있는 동적인 성질을 가짐
2. 릴레이션의 특징으로 알맞은 것은?
① 중복된 투플이 존재한다.
② 투플 간의 순서가 정의된다.
③ 속성 간의 순서가 정의된다.
④ 모든 속성의 값은 원자값이다.
① 릴레이션에서 중복된 투플이 존재하지 않는 것이 원칙
② 투플의 순서가 달라도 같은 릴레이션이다. 관계 데이터 모델의 투플은 실제적인 값을 가지고 있으면 이 값은 시간이 지남에 따라 데이터의 삭제, 수정, 삽입에 따라 순서가 바뀔 수 있다.
③ 릴레이션에서 속성 간의 순서가 정의되지 않음
3. 하나의 속성이 가질 수 있는 값을 총칭하여 무엇이라 하는가?
① 투플
② 릴레이션
③ 도메인
④ 엔티티
① 투플은 릴레이션의 한 행을 나타내며 여러 속성 값들로 이루어져 있음
② 릴레이션은 테이블로 표현되며 투플들의 집합으로 구성됨
④ 엔티티는 데이터베이스에서 표현하려는 실세계의 개체 또는 대상을 의미함
4. 외래키(FK, Foreign Key)에 대한 설명으로 옳은 것은?
① 릴레이션 R1에 속한 속성 집합 FK가 다른 릴레이션 R2의 기본키인 것을 말한다.
② 외래키와 외래키가 참조하는 기본키가 정의된 도메인은 다를 수도 있다.
③ 외래키는 NULL 값을 가질 수 없다.
④ 둘 이상의 후보키 중에서 하나를 선정하여 대표로 삼은 키를 말한다.
② 외래키와 참조하는 기본키의 도메인은 동일해야 함
③ 외래키는 NULL값과 중복값을 가질 수 있음
④ 기본키에 대한 설명
5. 한 릴레이션의 기본키를 구성하는 어떠한 속성 값도 NULL값이나 중복 값을 가질 수 없다는 것을 의미하는 제약조건은?
① 개체 무결성 제약조건
② 참조 무결성 제약조건
③ 보안 무결성 제약조건
④ 정보 무결성 제약조건
① 개체 무결성 제약조건: 기본키(primary key)를 구성하는 어떠한 속성(attribute)도 NULL 값을 가질 수 없으며, 유일해야 함
② 참조 무결성 제약조건: 외래키(foreign key)를 사용하여 릴레이션들 사이의 관계를 설정할 때, 참조하는 릴레이션의 기본키 값이 참조되는 릴레이션의 외래키 값에 항상 존재해야 함
6. 릴레이션에서 특정 속성에 해당하는 열을 선택하는 데 사용하며, 릴레이션의 수직적 부분 집합을 반환하는 관계대수 연산자는?
① projection
② join
③ division
④ selection
② join: 두 개의 릴레이션을 결합하여 새로운 릴레이션을 형성하는 연산. 수평적으로 릴레이션을 확장
③ division: 하나의 릴레이션에서 다른 릴레이션에 있는 관계를 찾아내는 연산
④ selection: 릴레이션에서 특정 조건을 만족하는 투플(행)을 선택하는 연산. 릴레이션의 수평적 부분 집합을 반환함
7. 릴레이션 $C$가 릴레이션 $A(X, Y)$와 $B(Y, Z)$를 자연조인한 결과일 때 다음 중 맞는 설명을 모두 고르시오.
① $C$의 카디날리티는 $A$의 카디날리티보다 많다.
② $C$의 카디날리티는 $A$의 카디날리티보다 적다.
③ $C$의 차수는 $A$의 차수보다 많다.
④ $C$의 차수는 $A$의 차수보다 적다.
⑤ 모두 틀리다.
①: 자연조인의 결과로 나온 릴레이션 C의 카디날리티(투플의 수)는 A와 B의 카디날리티에 따라 달라짐. 그러므로 릴레이션 C의 카디날리티가 더 많다고 단정할 수 없음
②: 자연조인의 결과로 나온 릴레이션 C의 카디날리티는 A와 B의 카디날리티에 따라 달라짐
③ (O): 릴레이션 $A$는 $(X, Y)$ 두 개의 속성을 가지고 있으며, $B$는 $(Y, Z)$ 두 개의 속성을 가지고 있음. $A$와 $B$를 자연조인하면 결과 릴레이션 $C$는 $(X, Y, Z)$ 세 개의 속성을 가지게 됨
④: ③번과 반대의 내용이므로 정답이 아님
8. 관계형 데이터베이스에 대한 설명으로 옳지 않은 것만을 모두 고른 것은?
ㄱ. 기본키 속성이 복합 속성인 경우 그 속성의 일부 요소 속성에서 널(NULL) 값을 가질 수 있다.
ㄴ. 슈퍼키는 후보키가 되기 위한 필요충분조건이다.
ㄷ. 릴레이션 R이 릴레이션 S를 참조하는 경우 R의 외래키가 S의 기본키가 아닌 후보키 중 하나를 참조해야 한다.
ㄹ. 테이블에 투플 삽입 시 엔티티 무결성 혹은 키 제약조건, 도메인 제약조건, 참조 무결성 제약조건에 위배될 수 있다.
ㄱ (X): 기본키는 NULL 값을 허용하지 않음
ㄴ (X): 슈퍼키는 후보키가 될 수 있는 조건을 갖추고 있지만, 반드시 후보키가 되지는 않음. 후보키는 슈퍼키 중에서도 중복된 속성을 최소화한 키를 의미함
ㄷ (X): 외래키는 다른 릴레이션의 기본키 또는 후보키를 참조할 수 있음. 따라서 꼭 기본키가 아닌 후보키를 참조해야 하는 것은 아님
ㄹ. 투플을 삽입할 때, 여러 제약조건들을 위반할 가능성이 있음
9. 다음 관계형 데이터베이스 릴레이션의 특성으로 옳은 것만을 모두 고르면?
ㄱ. 한 릴레이션에는 동일한 값을 가지는 투플이 두 개 이상 존재할 수 없다.
ㄴ. 한 릴레이션에서 한 속성의 값은 모두 같은 도메인에 속해야 한다.
ㄷ. 한 릴레이션에서 투플의 순서는 중요하지 않다.
ㄹ. 한 릴레이션에서 속성의 순서는 중요하지 않다.
ㅁ. 한 릴레이션에서 속성은 다중값(multiple value)을 포함할 수 있다.
ㄱ (O): 기본키를 설정하여 유일성을 보장한다면 동일한 값을 가지는 투플이 두 개 이상 존재하지 않음
ㄴ (O): 속성의 모든 값은 해당 속성의 도메인에 속해야 함. 릴레이션의 기본적인 원칙 중 하나
ㄷ (O): 관계형 데이터베이스에서는 투플의 순서가 중요하지 않음
ㄹ (O): 관계형 데이터베이스에서는 속성(열)의 순서도 중요하지 않음
ㅁ: 관계형 데이터베이스에서는 한 속성이 여러 값을 가지는 것, 즉 다중값을 허용하지 않음. 이는 릴레이션의 원자성 원칙에 위배됨
10. 릴레이션 스키마(relation schema)와 무결성 제약조건에 대한 설명으로 옳은 것만을 모두 고른 것은?
ㄱ. 스키마에는 무결성 제약조건이 포함된다.
ㄴ. 스키마는 데이터베이스 상태(state)와 마찬가지로 변경될 수 있다.
ㄷ. 참조 무결성 제약조건(referential integrity constraint)은 두 릴레이션의 연관된 투플(tuple)들 사이의 무결성 유지와 관련이 있다.
ㄹ. 한 릴레이션에 외래키(foreign key)가 여러개 존재할 수 있다.
ㅁ. 외래키도 기본키(primary key)의 구성 요소가 될 수 있다.
ㄱ (O): 릴레이션 스키마는 릴레이션의 구조를 정의하며, 이 안에는 무결성 제약조건이 포함될 수 있음
ㄴ (O): 스키마는 데이터베이스 상태와 마찬가지로 변경될 수는 있음
ㄷ (O): 참조 무결성 제약조건은 외래키를 사용하여 릴레이션 간의 관계를 정의하며, 관련된 투플들 사이의 무결성을 유지하는 데 사용됨
ㄹ (O): 한 릴레이션에 여러 외래키가 존재할 수 있으며, 각 외래키는 다른 릴레이션의 기본키를 참조할 수 있음
ㅁ (O): 외래키는 다른 릴레이션의 기본키를 참조하는 속성이며, 동시에 자신이 속한 릴레이션의 기본키의 일부가 될 수 있음
11. 두 릴레이션 $R1(A, B, C)$, $R2(B, C, D)$를 오른쪽 외부조인(right outer join)을 한 결과에 나타나는 투플의 수는?
$A$ $B$ $C$
1 | 2 | 3 |
4 | 2 | 3 |
7 | 8 | 9 |
$B$ $C$ $D$
2 | 3 | 10 |
2 | 3 | 11 |
6 | 7 | 12 |
① 세 개
② 네 개
③ 다섯 개
④ 여섯 개
오른쪽 외부조인(right outer join)은 두 릴레이션에서 조인 조건을 만족하는 투플을 모두 포함하고, 두 번째 릴레이션(R2)에만 있는 투플도 포함함. 두 번째 릴레이션의 투플이 첫 번째 릴레이션의 어떠한 투플과도 조인되지 않으면 해당 투플은 NULL 값과 함께 결과에 포함됨
$A$ $B$ $C$ $D$
1 2 3 10 1 2 3 11 4 2 3 10 4 2 3 11 NULL 6 7 12
12. 두 릴레이션 $T_1$, $T_2$에 관계대수 연산 ㉠ ~ ㉢을 수행한 결과 릴레이션이 각각 $R_1$, $R_2$, $R_3$과 같다. 연산을 바르게 연결한 것은?
$T_1$
$A$ $B$
aa | 10 |
bb | 20 |
cc | 30 |
dd | 20 |
$T_2$
$B$ $C$
20 | xx |
30 | yy |
40 | zz |
$R_1$ ← $T_1$ ㉠ $T_2$
$A$ $B$ $C$
aa | 10 | |
bb | 20 | xx |
cc | 30 | yy |
dd | 20 | xx |
$R_2$ ← $T_1$ ㉡ $T_2$
$A$ $B$ $C$
aa | 10 | |
bb | 20 | xx |
cc | 30 | yy |
dd | 20 | xx |
40 | zz |
$R_3$ ← $T_1$ ㉢ $T_2$
$A$ $B$ $C$
bb | 20 | xx |
cc | 30 | yy |
dd | 20 | xx |
40 | zz |
① ㉠: 완전 외부조인 | ㉡: 오른쪽 외부조인 | ㉢: 왼쪽 외부조인
② ㉠: 완전 외부조인 | ㉡: 왼쪽 외부조인 | ㉢: 오른쪽 외부조인
③ ㉠: 오른쪽 외부조인 | ㉡: 완전 외부조인 | ㉢: 왼쪽 외부조인
④ ㉠: 왼쪽 외부조인 | ㉡: 완전 외부조인 | ㉢: 오른쪽 외부조인
㉠ 왼쪽 외부조인: $R_1$ 릴레이션을 보면 $T_1$의 모든 투플이 포함되어 있으며, $T_2$에서 일치하는 투플의 $C$ 속성 값이 추가되었으므로 왼쪽 외부조인에 해당함
㉡ 완전 외부조인: $R_2$ 릴레이션을 보면 $T_1$의 모든 투플과 $T_2$의 모든 투플이 포함되어 있으므로 완전 외부조인에 해당함
㉢ 오른쪽 외부조인: $R_3$ 릴레이션을 보면 조인 조건을 만족하는 투플들과 $T_2$에만 있는 투플이 포함되어 있으므로 오른쪽 외부조인에 해당함
13. 다음 용어를 설명하시오.
(1) 릴레이션
(2) 스키마
(3) 릴레이션 인스턴스
(4) 릴레이션 차수와 카디날리티
(5) 도메인
(6) 투플
(1) 릴레이션: 관계형 데이터베이스에서 데이터를 저장하는 기본 단위로, 일반적으로 테이블 형태로 표현됨. 행(투플)과 열(속성)으로 구성되며, 각 투플은 릴레이션에 저장된 개체를 나타내고 각 속성은 개체의 특성을 나타냄
(2) 스키마: 데이터베이스의 구조와 제약 조건을 정의하는 데 사용되는 메타데이터의 집합. 특정 릴레이션의 구조를 정의하는데 사용되며, 속성의 이름과 타입을 지정함
(3) 릴레이션 인스턴스: 릴레이션 스키마에 저장된 모든 투플의 집합
(4) 릴레이션 차수와 카디날리티: 릴레이션 차수는 릴레이션에 있는 속성의 수를 나타내며, 카디날리티는 릴레이션에 있는 투플의 수를 나타냄
(5) 도메인: 속성이 가질 수 있는 값의 범위를 나타냄
(6) 투플: 릴레이션의 한 행을 나타내며, 개체의 개별 인스턴스를 나타냄. 각 투플은 릴레이션의 모든 속성에 대한 값을 가지고 있음
14. 릴레이션에 대한 다음 물음에 답하시오.
(1) 릴레이션 스키마와 릴레이션 인스턴스의 차이점을 설명하시오.
(2) 도메인 제약조건을 설명하시오.
(3) 기본키 제약조건과 외래키 제약조건을 설명하시오.
(4) 참조 무결성 제약조건의 옵션 네가지를 설명하시오.
(5) 후보키와 기본키의 차이점을 설명하시오.
(1): 릴레이션 스키마 | 릴레이션의 논리적인 구조를 정의한 것임. 어떤 속성들로 이루어져 있는지, 그 속성들의 타입은 무엇인지 등을 명시함
릴레이션 인스턴스 | 릴레이션 스키마를 만족하는 데이터의 집합
(2): 도메인 제약조건 | 특정 속성이 가질 수 있는 값의 범위를 제한하는 제약조건
(3): 기본키 제약조건 | 릴레이션 내에서 튜플을 유일하게 식별할 수 있는 속성 혹은 속성들의 집합을 지정하는 제약조건. 기본키는 NULL 값을 허용하지 않으며 유일해야 함
외래키 제약조건 | 다른 릴레이션의 기본키를 참조하는 속성 혹은 속성들의 집합을 지정하는 제약조건. 외래키를 통해 릴레이션 간의 관계를 표현하며, 참조 무결성을 보장하기 위해 사용됨
(4): CASCADE | 자식 릴레이션의 관련 투플을 같이 삭제함
NULL | 자식 릴레이션의 관련 투플을 NULL 값으로 설정함 (NULL 값을 허가한 경우)
DEFAULT | 자식 릴레이션의 관련 투플을 미리 설정해둔 값으로 변경함
RESTRICTED | 자식 릴레이션에서 참조하고 있으면 부모 릴레이션의 삭제 작업을 거부함
(5): 후보키 | 릴레이션에서 투플을 유일하게 식별할 수 있는 속성들의 부분집합
기본키 | 후보키 중에서 선택된 키로, 릴레이션을 대표하는 주요 키로서 NULL 값을 가질 수 없고 유일한 값을 가져야 함
15. 사원(주민등록번호, 사원번호, 사원이름, 주소, 생년월일) 릴레이션이 있다. 기본키는 (사원이름, 생년월일)이고, 그밖의 대체키 1은 주민등록번호, 대체키 2는 사원번호다. 다음 물음에 답하시오.
(1) (주민등록번호, 주소)는 후보키인가? 그 이유는 무엇인가?
(2) 사원번호는 수퍼키인가? 그 이유는 무엇인가?
(3) 생년월일은 NULL 값을 가질 수 있는가?
(4) 주소는 NULL 값을 가질 수 있는가?
(1): 주민등록번호 자체가 대체키로 명시되어 있으므로 그 자체로 튜플을 유일하게 식별할 수 있음. 따라서 주민등록번호와 주소를 합한 (주민등록번호, 주소) 역시 튜플을 유일하게 식별할 수 있지만 후보키는 불필요한 속성을 포함하지 않는 최소한의 속성들로 이루어져야 하므로 (주민등록번호, 주소)는 후보키가 아님
(2): 사원번호는 대체키로 명시되어 있으므로, 사원번호 하나만으로도 튜플을 유일하게 식별할 수 있음. 이는 수퍼키의 정의를 만족하므로 사원번호는 수퍼키임
(3): 기본키의 일부로 사용되고 있으므로 NULL 값을 가질 수 없음. 기본키의 속성은 NULL 값을 허용하지 않음
(4): 기본키도 아니고 후보키의 일부도 아니므로, NULL 값을 가질 수 있음. 또한 주소 속성에 대한 별도의 제약 조건이 명시되지 않았으므로 이 속성은 NULL 값을 가질 수 있음
16. 다음 릴레이션에서 더 이상 삽입되는 데이터가 없다고 가정한다. 다음 물음에 답하시오.
(1) 릴레이션 $R$과 $S$의 후보키를 모두 보이시오.
(2) 릴레이션 R과 S의 기본키는 어떤 것이 좋을지 선택하시오.
$R$
$A$ $B$ $C$
a1 | b1 | c1 |
a2 | b1 | c1 |
a3 | b1 | c2 |
a4 | b1 | c3 |
$S$
$C$ $D$ $E$
c1 | d2 | e1 |
c1 | d1 | e2 |
c2 | d3 | e3 |
c3 | d3 | e3 |
(1) R의 후보키: $(A)$
S의 후보키: $(C, D)$, $(C, E)$
(2) R의 기본키: $(A)$, $A$ 속성만으로도 각 튜플을 유일하게 식별할 수 있고 속성의 수가 가장 적기 때문에 처리 비용도 낮음
S의 기본키: $(C, D)$, 이 조합으로 각 튜플을 유일하게 식별할 수 있고 속성의 수가 가장 적기 때문에 처리 비용도 낮음
17. 다음 릴레이션에서 관계대수식의 결과를 작성하시오.
$R$
$A$ $B$ $C$
a1 | b1 | c1 |
a2 | b1 | c1 |
a3 | b1 | c2 |
a4 | b1 | c3 |
$S$
$C$ $D$ $E$
c1 | d2 | e1 |
c1 | d1 | e2 |
c2 | d3 | e3 |
c3 | d3 | e3 |
(1) $σ_{A=a2} (R)$
(2) $π_{A, \space B} (R)$
(3) $R ⋈_{R.c=S.c} S$
(1): $A$ 속성 값이 $a2$인 튜플을 선택함
A B C
a2 b1 c1 (2): $A$와 $B$의 속성만을 포함하는 프로젝션 결과를 반환함
A B
a1 b1 a2 b1 a3 b1 a3 b1 (3): $R$과 $S$ 릴레이션을 $C$ 속성을 기준으로 내부 조인함
A B C D E
a1 b1 c1 d2 e1 a1 b1 c1 d1 e2 a2 b1 c1 d2 e1 a2 b1 c1 d1 e2 a3 b1 c2 d3 e3 a4 b1 c3 d3 e3
18. 다음 수강신청 관련 릴레이션에 대한 질의문을 관계대수식으로 표현하시오.
학생(학번, 이름, 전공, 학년)
수강(과목코드, 학번, 수강학기, 성적)
과목(과목코드, 과목이름, 강의실, 요일, 담당교수)
(1) 과목코드가 1234이고 성적이 A인 모든 학생의 학번을 보이시오.
(2) 과목코드가 1234인 과목을 등록한 학생의 이름과 전공을 보이시오.
(3) 과목 1234에 등록하지 않은 학생의 이름을 보이시오.
(4) 모든 과목에 등록한 학생의 이름을 보이시오.
(1): $π_{학번}$ ($σ_{과목코드=1234 \space \land \space 성적=‘A’}$ (수강))
(2): $π_{이름, \space 전공}$($σ_{과목코드=1234}$ (수강) $⋈_{학번}$ 학생)
(3): $π_{이름}$(학생) - ($σ_{과목코드=’1234’}$ (수강) $⋈_{학번}$ 학생)
(4): 전체 과목 수를 찾은 후 해당 수와 동일한 수의 과목을 수강한 학생을 찾아야 함. 학번별로 그룹화한 후 각 그룹에 대해 과목코드를 카운트함. 각 학생이 수강한 과목 수가 전체 과목 수 $n$과 동일한지를 확인하면 됨
19. [극장 데이터베이스] 다음은 4개의 지점을 둔 극장 데이터베이스로, 밑줄 친 속성은 기본키다.
극장(극장번호, 극장이름, 위치)
상영관(극장번호, 상영관번호, 영화제목, 가격, 좌석수)
예약(극장번호, 상영관번호, 고객번호, 좌석번호, 날짜)
고객(고객번호, 이름, 주소)
(1) 각 테이블에서 외래키를 찾아보시오.
(2) 각 테이블에 저장될 데이터를 세 개씩 적어보시오. 예를 들면 극장의 경우는 다음과 같다.
극장
극장번호 극장이름 위치
1 | 대한 | 강남 |
2 | 씨티 | 잠실 |
3 | 씨티 | 강남 |
(3) 다음 관계대수식이 나타내는 릴레이션은 무엇인지 설명하시오.
① π극장번호 (σ가격 > 6000 (상영관))
② σ극장.극장번호=상영관.극장번호 (극장X상영관)
③ π극장이름 (극장 ⋈극장.극장번호=상영관.극장번호 (σ가격 > 6000 (상영관)))
④ 고객 ⟕ (σ날짜 > ‘20140101’(예약))
⑤ π고객이름, 극장번호 (예약 ⋈예약.고객번호=고객.고객번호 고객) ÷ π극장번호 (σ위치=‘강남’ (극장))
(4) 다음 물음에 대하여 관계대수식을 작성하시오.
① 모든 극장의 이름과 위치를 보이시오.
② 가격이 7,000원 이하인 영화제목을 보이시오.
③ 모든 고객의 이름과 주소를 보이시오.
④ ‘강남’에 위치한 극장에서 상영 중인 영화제목을 보이시오.
⑤ ‘강남’에 위치한 극장에 예약을 한 고객의 이름을 보이시오.
(1): 상영관 | ****극장번호(극장 테이블에서 참조)
예약 | 극장번호(극장, 상영관 테이블에서 참조), 상영관번호(극장, 상영관 테이블에서 참조), 고객번호(고객 테이블에서 참조)
(2):
상영관
극장번호 상영관번호 영화제목 가격 좌석수
1 1 캐치 미 이프 유 캔 7000 200 1 2 아바타 8000 150 2 1 인셉션 9000 100 예약
극장번호 상영관번호 고객번호 좌석번호 날짜
1 1 1001 D3 2023-09-09 2 1 1002 G5 2023-09-10 1 2 1003 H1 2023-09-11 고객
고객번호 이름 주소
1001 김철수 서울시 강남구 1002 이영희 서울시 송파구 1003 박영수 서울시 강동구 (3) - ①: 가격이 6000을 초과하는 상영관의 극장번호를 보이시오
②: 극장과 상영관을 극장번호로 연결하여 모든 속성(극장이름, 위치, 상영관번호, 영화제목, 가격, 좌석수)을 보이시오
③: 가격이 6000을 초과하는 상영관의 극장이름을 보이시오
④: 2014년 1월 1일 이후에 예약한 모든 고객 정보를 보이시오.
⑤: 강남에 있는 극장에 예약한 고객이름과 극장번호를 모두 보여주되, 극장에 예약을 한 고객만 보이시오
(4) - ①: $π_{극장이름, 위치}$ (극장)
②: $π_{영화제목}$ ($σ_{가격} <= 7000$ (상영관))
③: $π_{이름, 주소}$ (고객)
④: $π_{영화제목}$ ($σ_{위치} \space$ = '강남’ (극장) $⋈_{극장번호}$ (상영관))
⑤: $π_{이름}$ ($σ_{위치} \space$ = ‘강남’ (극장) $⋈_{극장번호}$ 예약 $⋈_{고객번호}$ 고객)
20. [판매원 데이터베이스] 다음 릴레이션을 보고 물음에 답하시오. Salesperson은 판매원, Order는 주문, Customer는 고객을 나타낸다. 밑줄 친 속성은 기본키고 custname과 salesperson은 각각 Customer.name과 Salesperson.name을 참조하는 외래키다.
Salesperson(name, age, salary)
Order(number, custname, salesperson, amount)
Customer(name, city, industrytype)
(1) 모든 판매원(salesperson)의 이름을 보이시오.
(2) 고객 ‘홍길동’의 주문을 수주한 판매원의 이름을 보이시오.
(3) 주문이 있는 판매원의 이름을 보이시오.
(4) 주문이 없는 판매원의 이름을 보이시오.
(5) 고객 ‘홍길동’의 주문을 수주한 판매원의 나이를 보이시오.
(6) 나이가 26살인 판매원에게 주문한 고객의 city 값을 보이시오.
(7) 판매원 이름과 그 판매원에게 주문을 한 고객의 이름을 보이시오. 단 주문이 없는 판매원도 포함하여 구한다.
(1): $π_{name}$ (Salesperson)
(2): $π_{salesperson}$ ($σ_{custname}$ = '홍길동' (Order))
(3): $π_{salesperson}$ (Order)
(4): $π_{name}$ (Salesperson) - $π_{salesperson}$ (Order)
(5) $π_{age}$ (Salesperson ⋈_name=salesperson (σ_custname='홍길동'(Order)))
(6) $π_{city}$ (Customer $⋈_{name=custname}$ ($σ_{age=26}$(Salesperson) $⋈_{name=salesperson}$ Order))
(7) (Salesperson ⨝ Order $⋈_{name=salesperson}$) ⋈ Order.custname=Customer.name
21. [기업 프로젝트 데이터베이스] 다음 릴레이션을 보고 물음에 답하시오. Employee는 사원, Department는 부서, Project는 프로젝트 내용, Works는 사원이 프로젝트에 참여한 내용을 나타낸다. 한 사원이 여러 프로젝트에서 일하거나 한 프로젝트에서 여러 사원이 일할 수 있다. hours-worked 속성은 각 사원이 각 프로젝트에서 일한 시간을 나타낸다. Department의 manager 속성에는 empno 값이 저장되어 있다고 가정한다.
Employee(empno, name, phoneno, address, sex, position, deptno)
Department(deptno, deptname, manager)
Project(projno, projname, deptno)
Works(empno, projno, hours-worked)
(1) 각 릴레이션에서 기본키를 정의하시오.
(2) 릴레이션 간의 관계를 살펴보고 외래키를 찾아보시오.
(3) 다음 질문에 대하여 관계대수식을 작성하시오.
① 모든 직원의 이름을 보이시오.
② 여자 직원의 이름을 보이시오.
③ 팀장(manager)의 이름과 주소를 보이시오.
④ IT 부서(Department)에서 일하는 직원의 이름과 주소를 보이시오.
⑤ ‘미래’ 프로젝트에서 일하는 직원의 이름을 보이시오.
(1) Employee: empno
Department: deptno
Project: projno
Works: (empno, projno)
(2) Employee.deptno - Department.deptno
Department.manager - Employee.empno
Project.deptno - Department.deptno
Works.empno - Employee.empno
Works.projno - Project.projno
(3) - ①: $π_{name}$ (Employee)
②: $π_{name}$ ($σ_{sex}$ = ‘여’ (Employee))
③: $π_{name, \space address}$ **(**Employee $⋈_{empno=manager}$ Department)
④: $π_{name, address}$ ****(Employee $⋈_{Employee.deptno=Department.deptno}$ $σ_{deptname='IT'}$ (Department))
⑤ $π_{name}$ ****(Employee $⋈_{Employee.empno=Works.empno}$ (Works $⋈_{Project.projno=Works.projno}$ $σ_{projname='미래'}$ (Project)))
'CSE > 데이터베이스 (database)' 카테고리의 다른 글
오라클로 배우는 데이터베이스 개론과 실습 2판 - 연습문제 5장 (0) | 2023.12.17 |
---|---|
오라클로 배우는 데이터베이스 개론과 실습 2판 - 마당서점 데이터베이스 구축 (0) | 2023.12.16 |
오라클로 배우는 데이터베이스 개론과 실습 2판 - 연습문제 4장 (0) | 2023.09.11 |
오라클로 배우는 데이터베이스 개론과 실습 2판 - 연습문제 3장 (0) | 2023.09.11 |
오라클로 배우는 데이터베이스 개론과 실습 2판 - 연습문제 1장 (2) | 2023.09.09 |
컴퓨터 전공 관련, 프론트엔드 개발 지식들을 공유합니다. React, Javascript를 다룰 줄 알며 요즘에는 Typescript에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!