Agenda
1. ERD내 Super key, 후보키 (53번 문제)
2. 관계 대수 연산 (54번 문제)
3. 함수적 종속관계 -> 정규화 (61번 문제)
4. SQL 문제 (62, 63, 65번 문제) - 기출영상 재 정리
- SQLD 기출정리
5. 동시성제어- 유령데이타 읽기 오류 문제 ( 66번문제)
6. 동시성제어- 락킹규약 (Strict 2PLP 등) ( 68번 문제)
풀이) 후보키 : 유일성, 최소성 만족, 슈퍼키: 유일성을 만족한다.
따라서, 후보키는 슈퍼키가 될 수 있다, 슈퍼키는 모두 후보키가 될 수 있는 것은 아니다
위 문제에서 후보키로 Registration, Vehicle_id 로 정의되 있음으로, 두 entity가 들어가 있는 것은 슈퍼키가 된다.
두 entity가 없는 (State, Year, Model)이 정답
- |RuS| = 13 - 합집합, 고유의 튜플이면, 상한값은 7+6=13 이된다
- |RnS| = 6 - 교집합, R과 S에 모두 있는 튜플이어야 함으로, 상한값은 작은값인 6이 된다
- |R-S| = 7 - 차집합, 아무상관이 없는 튜플들만 있을때 상한값이 발생하며, 상한값은 7이된다
- |R*S| = 42- 카데시안 곱, R과 S의 모든 튜플의 조합이 상한값임으로 42가 답
참고 : https://chatstory.tistory.com/20
- 관계연산 강의 : https://www.youtube.com/watch?v=e3zu3Yk8__4
3. 함수적 종속관계 -> 정규화 (61번 문제) -> 정답: 1번
풀이)
1) 올바른 BCNF 정규화,
- R1은 A->B, A->D의 함수 종속성을 가짐, A는 R1의 기본키, R2는 D->C의 함수 종속성을 가지며, D는 R2의 기본키
2) BCNF 불만족
- R2에서 C는 기본키가 아님, C -> D 함수 종속성 있음
3) BCNF 불만족
- R2에서 B는 기본키가 아님, B-> D 의 함수 종속성 존재
4) BCNF 불만족
- R2에서 B는 기본키가 아님, B-> A 의 함수 종속성 존재
풀이2)
1) 후보키 : A OR B
2) A 를 대표키로 선정 -> 함수 종속 A -> (B, C, D), D-> C 로 구분되며, 이행 항수 종속 존재 (A -> D -> C) 그럼으로 2 정규형임
3) 3정규화 작업을 위해 이행함수 종속 관계 제거하고 R1, R2로 구분함
- R1(A, B, D), R2(D, C) => 여기서 D는 외래키이며, R2는 외래키인 D가 기본키이다
4) 별도의 종속성이 존재하지 않음으로 BCNF 완료
참고 : https://chatstory.tistory.com/22
https://www.youtube.com/watch?v=RXQ1kZ_JHqg
https://www.youtube.com/watch?v=-bLCtP2HNHo
4. SQL 문제 (62, 63, 65번 문제)
-62번 : 정답: 3번
풀이 )
1) RED OR GREEN의 보트를 예약한 선원의 이름을 반환한다. 우리가 원하는 것은 둘다 예약한 선원 이름임
2) 이 질의는 보트의 색상이 RED와 GREEN인 경우를 찾는 것임, 이는 불가능한 질의임
3) 맞음 - RED BOAT를 예약한 선원과 GREEN 보트를 예약한 선원을 찾아 교집합을 반환함
4) 틀림 - RED BOAT를 예약한 선원과 GREEN 보트를 예약한 선원을 찾아 합집합을 반환 (우리는 둘다 예약한 사람을 찾는 교집합을 찾아야 함) - UNION 으로 2개의 쿼리가 있음
- RED 와 GREEN 색 1개 씩만 예약한 선원도 함께 나타남
- 63번 : 정답 - 4번
풀이)
1) SQL 문법 오류
- JOIN 연산자와 WITH 절을 함께 사용 불가
2) SQL문법 오류
- NATURAL JOIN 과 USING 동시 사용 불가
- NATURAL JOIN은 두 테이블에서 이름이 같은 모든 열을 자동 결함하고, USING은 결함할 열을 명시적으로 지정해야 하기 때문에 같이 사용할 수 가 없음
3) SQL문법 오류
- NATURAL JOIN 과 ON 절을 동시 사용 불가
- NATURAL JOIN은 두 테이블에서 이름이 같은 모든 열을 자동으로 결함, ON은 결함 조건을 명시적으로 지정해야 되서 같이 사용 불가
4) 맞음
- JOIN 연산자와 함께 ON 절을 사용하여 STUDENT 테이블과 ENROLL 테이블을 Sno 열을 기준으로 결함, WHERE절을 사용하여 Cno = 413인 행만 선택
- 65번 : 정답 : 4번
풀이)
가) EMPLOYEE 테이블에서 Ssn이 DEPENDETN 테이블의 Essn 과 일치 하고, EMPLOYEE의 Name과 DEPENDENT의 Name이 일치하는 직원의 이름을 선택함
나) EMPLOYEE 테이블에서 적어도 하나의 DEPENDENT 행이 존재하며, 그 행의 Essn이 EMPLOYEE의 Ssn과 일치하고 DEPENDENT의 Name이 EMPLOYEE의 Name과 일치하는 직원의 이름을 선택한다.
다) EMPLOYEE테이블과 DEPENDENT 테이블이 조인하고, 조인된 결과에서 Ssn과 Essn이 일치하고, EMPLOYEE의 Name과 DEPENDENT의 Name이 일치하는 직원의 이름을 선택한다
1. SQLD 기출
https://www.youtube.com/watch?v=sBT5FG6rCMk
- DB 전체 개념 강좌 GOOD
https://www.youtube.com/watch?v=rdfHFnqVoRw
- 정답 : 유령데이타 읽기 (Phantom read)
6. 동시성제어- 락킹규약 (Strict 2PLP 등) ( 68번 문제)
https://www.youtube.com/watch?v=0PScmeO3Fig
- 동시성제어: LOCK의 개념
- locking을 실행하다보면 다시 문제가 발생함
write_lock을 실행하고, unlock을 하면, 다음 transaction에서 write lock을 가지고 가기 때문에, 최종데이타에 문제가 생긴다.
따라서, write_lock(y)을 먼저 설정하고, read의 unlock(x)을 실행하면 문제가 해결된다. ==> 이것이 2PL 이다
- 2PL에서는 상황에 따라 DEAD LOCK이 발생할 수 있다.
'- 배움이 있는 삶 > - 데이타베이스' 카테고리의 다른 글
데이타베이스 - 기본 과정 정리(1차 완료) (5) | 2024.12.15 |
---|---|
2020년 기출문제 - 데이터 베이스 정리 (13) | 2024.12.06 |
2021년 기출문제-데이타베이스 (3) | 2024.12.06 |
2022년 기출문제-데이타베이스 (5) | 2024.12.06 |
정보처리기사 - 데이타베이스 (0) | 2024.09.23 |