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) 다중버전제어 : 이전버전을 별도로 보관, 이전버전을 다른 트랜잭션이 읽을 수 있도록 허용
'- 배움이 있는 삶 > - 데이타베이스' 카테고리의 다른 글
2022년 기출문제-데이타베이스(ing) (0) | 2024.11.04 |
---|---|
2021년 기출문제-데이타베이스(ing) (2) | 2024.10.30 |
2020년 기출문제 - 데이터 베이스 정리(ing) (13) | 2024.10.22 |
정보처리기사 - 데이타베이스 (0) | 2024.09.23 |
데이타베이스 - 기본 과정 정리(1차 완료) (4) | 2024.09.22 |