69. 부서(DEPARTMENT) 개체와 직원(EMPLOYEE) 개체 사이에 1:N 소속 관계가 존재하고, 부서는 이 관계에 부분 참여하고, 직원은 이 관계에 전체 참여한다고 하자. 즉, 부서에는 최소 0명, 최대 N명의 직원이 소속되고, 직원은 최소 1개, 최대 1개의 부서에 소속이 된다. 이러한 상황을 반영하여 부서(부서명, 예산코드), 직원(직원번호, 이름, 이메일, 입사일, 부서명) 테이블을 생성하려 한다고 하자. 최소 카디널리티(cardinality)를 준수하도록 하기 위한 조치로 가장 적절한 것은? (여기서, 밑줄은 기본 키,이탤릭체는 외래 키를 의미한다.)
① 전형적인 1:N 관계로 특별히 문제될 것이 없는 상황이다.
② 직원 테이블의 부서명 속성을 ‘NOT NULL’인 외래 키로 정의한다.
③ 부서 테이블에 대한 투플 입력시 직원 테이블에 투플을 삽입하는 트리거(trigger)를 작성한다.
④ 복잡한 트리거의 조합을 필요로 하고 트리거는 서로에게 로크를 걸 수 있다.
■ 해설
부서(부서명, 예산코드), 직원(직원번호, 이름, 이메일, 입사일, 부서명)
- 부서(DEPARTMENT) 개체와 직원(EMPLOYEE) 개체 사이에 1:N 소속 관계가 존재
- 부서는 이 관계에 부분 참여
- 직원은 이 관계에 전체 참여
- 부서에는 최소 0명, 최대 N명의 직원이 소속
- 직원은 최소 1개, 최대 1개의 부서에 소속
① 전형적인 1:N 관계로 특별히 문제될 것이 없는 상황이다.(X)
▷ 부서는 관계에 부분참여 직원은 관계에 전체 참여를 고려해야 하는 상황
② 직원 테이블의 부서명 속성을 ‘NOT NULL’인 외래 키로 정의한다.(O)
▷ 직원은 소속관계에 전체 참여이고 최소 1개 최대 1개의 부서에 소속이 되어야 하므로 Not Null 설정
③ 부서 테이블에 대한 투플 입력시 직원 테이블에 투플을 삽입하는 트리거(trigger)를 작성한다.(X)
▷ 부서는 소속 관계에 부분참여 이므로 트리거 작성이 필요하지 않음
④ 복잡한 트리거의 조합을 필요로 하고 트리거는 서로에게 로크를 걸 수 있다.(X)
▷ Not Null 로 무결성 유지가 가능하고 서로에게 로크를 걸 수 없음
정답 : ②
70. 다음은 릴레이션 R1(id, age), R2(id, age)와 <SQL 질의문>이다. <SQL 질의문>의 실행결과로 가장 적 절한 것은?
■ 해설
SELECT * FORM R1
WHERE R1.age NOT IN (SELECT age FROM R2);
R1.age NOT IN (SELECT age FROM R2)
위 SQL 문을 풀어보면 R1.age <> 30 AND R1.age <> 40 AND R1.age <> NULL 이 됨
여기서 R1.age <> NULL 은 TRUE 값을 반환하지 않기 때문에 전체적인 결과도 아무 값이 추출되지 않는다. 그래서 정답은 결과가 조회되지 않는 ③ 이 정답이 됨
정답 : ③
공감과 댓글은 아이티신비에게 큰 힘이 됩니다.
블로그 글이 유용하다면 블로그를 구독해주세요.♥
'정보시스템 감리 기출해설 > 데이터베이스 해설' 카테고리의 다른 글
(제 25회) 데이터베이스 / (73)~(75) 해설 (0) | 2025.02.05 |
---|---|
(제 25회) 데이터베이스 / (71)~(72) 해설 (0) | 2025.02.04 |
(제 25회) 데이터베이스 / (67)~(68) 해설 (0) | 2025.02.02 |
(제 25회) 데이터베이스 / (65)~(66) 해설 (0) | 2025.02.01 |
(제 25회) 데이터베이스 / (63)~(64) 해설 (0) | 2025.01.31 |