관계형 모델 ( 데이터를 어떻게 표현할까 ?? )
릴레이션 단위로 다양한 연산을 사용해 질의를 수행하는 데이터 모델
최근 KVS가 많이 사용되고 있다. -> 키와 값의 형태로 데이터를 표현하는것
Key Point
릴레이션 = 테이블
속성 = 칼럼
튜플 = 행
집합 - 물건의 모임을 표현하는 개념 (물건은 원소 or 요소라고 함)
집합의 요소
1. 어떤 요소가 집합에 포함돼 있는지 불확정한 요소 없이 판정할 수 있어야함
2. 집합의 요소가 중복돼서는 안된다.
3. 집합의 요소는 더는 분해될 수 없다.
관계형 모델과 NULL
SQL에서 NULL에 대해 옮고 그름이 화제가 되지만, 관계형 모델을 올바르게 구현하려면 NULL은 배제해야 한다.
이 책의 저자와 나는 NULL을 배제할 것임
릴레이션 연산
1. 제한 = 릴레이션들 중에 특정 조건에 맞는 튜플을 포함한 릴레이션을 반환한다.
2. 프로젝션 = 어떤 릴레이션 에서 특정 속상만 포함하는 릴레이션을 반환한다.
3. 확장 = 새로운 속성값을 추가한다. ( 대부분의 새로운 속성값은 기존의 속성값을 이용해 계산한다. )
4. 속성명 변경 = 제곧내
5. 합집합 = 두 개의 릴레이션에 포함된 모든 튜플로 구성된 릴레이션을 반환한다.
6. 교집합 = 두 개의 릴레이션에 모두 포함된 릴레이션을반환한다.
7. 차집합 = 두 개의 릴레이션 중에 한쪽의 릴레이션만 포함되어 있는 튜플로 구정된 릴레이션을 반환한다.
8. 곱집합 = 두 개의 릴레이션에 있는 튜플을 각각 조합한 릴레이션을 반환한다. ( 헷갈릴 수 있음 )
9. 결합 = 공통된 속성을 가진 두 개의 릴레이션에서 공통된 속성값이 같은 튜플끼리 조합한 릴레이션을 반환한다.
-> 일치하는 값이 존재하지 않는 튜플은 결과에서 제외된다. (주의)
=> 위의 결과는 내부조인인데 외부조인의 경우 NULL 값을 포함할 수 있기 때문에 적합하지 못하다. (다루지 않음)
클로저
관계형 모델에서 중요한 것은 릴레이션을 사용한 연산 결과가 릴레이션이 되는 것이다.
여기서 연산의 입력과 출력이 같은 데이터 구조를 가진 성질을 클로저라고 한다.
'DB > 관계형 DB' 카테고리의 다른 글
procedure (0) | 2020.12.29 |
---|---|
mysql - CRUD 작업하기 (0) | 2020.12.28 |
MYSQL 사용법 (0) | 2020.12.27 |
술어논리와 릴레이션의 연산 #1 (0) | 2020.12.02 |
SQL에서 릴레이션 조작 (0) | 2020.11.29 |