본문 바로가기
- 배움이 있는 삶/- 자격증

23회 기출문제 - 데이터 베이스 정리(1차 완료)

by story of interesting 2024. 9. 5.
반응형

 


23회 시험


3. ERD (Entity Relationship Diagram) 슈퍼키(Super key)

- Degree of relation : attributes 수 -  위의 릴레이션 : 6

- 릴레이션의 특징들

1) 중복된 튜블(data의 내용)을 가질수 없다

2) 릴레이션의 튜플을 식별하기 위해 attribute의 부분집합을 key로 설정한다

3) 릴레이션에서 튜플의 순서는 중요하지 않다

4) 하나의 튜플에서 attribute 의 순서는 중요하지 ㅇ낳다

5) attribute는 atomic 해야 한다 (원자적이어야 한다, 최소단위여야 한다.)

- key 의 종류 및 구별법 

1) 슈퍼키 (Superkey) 

: 릴레이션에서 튜플을 unique 하게 식별할 수 있는 attributes set

예) player(id, name, team_id, back_number, birth_data)의 superkey?

{id, name 등 전체}, {id, name}, {name, team_id, back_number}.... 등이 슈퍼키가 될 수 있다.

2. 후보키(Candidate key)

: 어느 한 attribute라도 제거하면, unique 하게 tuples를 식별할 수 없는 super key, (키, 또는 미니멀 슈퍼키 라고도 함)

- 위의 예에서 : 후보키 = {id}, {team_id, back_number}

3. 기본키 (Primary key)

: 릴레이션에서 튜플을 unique 하게 식별하기 위해 선택된 후보키

- 위의 예에서 : 기본키 = {id}, {team_id, back_number} -> 보통 attribute 수가 적은 것을 primary key로 한다.

4. 유니크 키 (Unique key)

: primary key로 선택되지 않는 candidate keys -> alternate key

- 위의 예에서 : 기본키 = {id},

                     : alternate key = {team_id, back_number} 

5. 외래키 (foreign key)

- 다른 릴레이션의 Primary key를 참조하는 attribute set

예) player(id, name, team_id, back_number, birth_data) , team (id, name, manager)

- foregine는 player의 {team_id) 임


Constraints 뜻

: relational database의 릴레이션들이 언제나 항상 지켜줘야 하는 제약사항

1) implicit constraints : 

- RDB 자체가 가지는 Constraints 

- relation은 중복되는 tuple을 가질수 없다

- relation 내에서는 같은 이름의 attribute를 가질 수 없다

2) Schema-based constraints

- 주로 DDL을 통해 SCHEMA에 직접 명시할수 있는 CONSTRAINTS - explicit constraints

- domain constraints / key constraints / Null value constraints / entity integrity / referential integrity 


4. 릴레이션 - 관계대수 란

: R = 7 , S= 6

- R u S = R + S = 13

- R n S = 중복되는 수 = 6

- R - S = 차가 발생하지 않는 경우의 수 = 7 ?


관계대수 란 ? 데이터베이스 이론에서 대수적 구조를 사용해서 데이터를 모델링하고, 의미론으로 쿼리를 정의하는 이론

 

https://www.youtube.com/watch?v=6i9sEwFX0ZE

 

 

- 합집합( R1 U R2)  과 교집합 ( R1 n R2)


6. 릴리이션 - 계수 ?

 

 


9. 릴리이션(테이블) - 관계대수 , 조인 (join)

A ( P, Q, R), B(Q, R, S) --> 릴레이션 C ( P, Q, R, S)

1) 외부조인(outer join) : Null 값이 채워짐

2) 자연조인(natural join) : 동증조인에서 중복속성 중 하나 제거

3) 동등조인 (equi join) : 세타조인과 특별히 비교연산자가 = 인 경우

4) 세타조인 : 선택연산의 비교연산자가 ( =, <>, ...) 등이 사용되는 조인

5) 내부조인 (inner join)

6) cross join : 두 테이블의 tuple pair로 만들 수 있는 모든 조합을 결과 테이블로 반환

7) self join

 

 

https://www.youtube.com/watch?v=E-khvKjjVv4

 


- 조인 : 공통속성을 중심으로 두개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산

- 자연조인 (Natural join)

동일한 속성명과 속성값이 있을때, 하나의 릴레이션(테이블)로 합치는 연산임

- Join의 2가지 종류 : implicit join vs 

1) implicit join : from 절에는 table들만 나열하고, Where 절에는 join condition을 명시하는 방식

- old style join, where 절에 selection condition과 join condition이 같이 있어 가독성이 떨어짐, 복잡한 쿼리 시 실수 발생

2) explicit join

- implicit join의 개선을 위한 것임

3) Inner join

- 릴리이션(테이블)에서 null값이 있거나, join condition이 만족하는 않는 tuple들은 제외하고 가져 온다

4) outer join

예)

결과) left join : employee table에서 join condition과 관련없는 것 까지 가져온다

- 나머지는 모두 null로 세팅, dep table의 HR은 없음

- Right join : HR (1002) 값은 가져왔음, 그러나, Employee table의 15번은 없는 것임

- Full join (mysql에서는 지원하지 않음) :  15번 사이먼, 1002 hr 정보까지 모두 가져 옴

5) 동등조인(equi join)

- join condition에서 = (equality comparator)를 사용하는 join

- 아래는 inner / outer join 이면서 동등조인이다

 


1) using

inner join을 하면, null을 제외한 속성들이 그대로 릴레이션으 생성됨.

그래서 똑같은 속성을 2번 표시 할 필요가 없게됨 -> 이를 해결하기 위해 using 키워드를 사용함

select *
         from employee E inner join department D using (dept_id)

- using 사용 결과

dept_id가 맨 앞으로 나옴


관계대수 - Division (나누기) 

 

 


 

11. 정규화 ? 

 

 

67, 68 동시성 제어  - Locking 규약

- 다중 사용자 환경, 여러 트랜잭션을 동시에 성공적으로 실행하기 위한 기능임

 

- 병행제어 (Concurrency Control) : 다중 프로그램 환경에서 동시에 여러개의 트랜잭션이 수행될때, 트랜잭션의 상호 경합관계를 제어 하는 것

- 데이타베이스의 공유성과 활용성을 극대화하고 일관성을 유지 

- 병행제어를 하지 않은경우 문제점 

1) 갱신내용 손실

2) 현황파악 오류

3) 모순성

4) 연쇄복귀

5) 비 완료 의존성

- 병행제어 해결 기법

1) 로킹(Locking) : 트랜잭션이 잠금(lock) 권한을 획득한 경우에만 엑세스 가능, 2PL 규약- Locking와 Unlocking 요청을 2단계로 처리

2) 타임스템프 : 은행 번호표와 비슷, 순서를 결정하는 것

3) 낙관적기법 : 진행중 어떤것도 안하고 있다, 종료될때 일괄 진행, 문제는 대량 롤백

4) 다중버전제어 : 이전버전을 별도로 보관, 이전버전을 다른 트랜잭션이 읽을 수 있도록 허용

 

 

반응형