"관계형 데이터베이스 실전 입문 - 오쿠노 마키아"를 읽으며 매주 스터디 진행
1.2 관계형 모델
관계형 모델
데이터 모델 (Data Model) = 데이터의 표현 방식
ex) Key-Value 이용한 데이터 표현 모델, 관계형 모델
- 관계형 모델 : 실제 세계 데이터 → “관계(Relation)" 개념 표현 모델
- 릴레이션 = SQL 테이블, 제목(데이터베이스 스키마, 컬럼 집합) + 본체
- 제목 : 속성이 0개 이상 모인 집합 (이름 + 데이터 타입)
- 본체 : 속성값의 집합, 튜플의 집합, 제목과 연관된 속성값을 가짐
관계형 모델 VS SQL
관계형 모델 SQL
릴레이션 테이블 튜플 행 속성 컬럼
집합
집합 = 요소의 모임
[조건]
1. 요소 자체로 요소의 집합 포함 여부 파악 가능해야함 → 집합의 성질에 맞는 요소만 집합에 포함되야 하는 것을 의미
2. 요소의 중복 X
- 릴레이션 = 튜플의 집합, 즉 튜플이 모아져 릴레이션을 이룸
- 집합의 조건 관점에서 본 릴레이션
- 집합 성질에 맞는 요소만 집합에 포함 → 각 튜플이 릴레이션의 속성에 맞는 값으로 구성되어야 한다.
- 요소의 중복 X → 릴레이션은 중복된 튜플을 갖지 않는다.
관계형 모델에서의 NULL
NULL = 특정한 값이 아닌 요소가 무엇을 표현하는지 모르는 불명확함을 표현하는 것
→ 집합 성질에 맞는 요소만 집합에 포함되야 한다는 조건을 위반(?)
NULL은 값이 불명확하기 때문에 특정 속성값을 이용한 릴레이션 연산에서는 연산 결과가 달라질 수 있기 때문에
관계형 모델에 적합하지 않다.
릴레이션의 연산
릴레이션의 연산 = Closure
릴레이션을 이용한 연산의 결과는 릴레이션이다.
따라서, 릴레이션 연산 결과를 다른 릴레이션과 계속해서 연산해 나가는 것이 가능하다.
* Closure (클로져) : 연산의 입력과 출력이 같은 데이터 구조를 갖는 성질
- 제한(Restrict) : 특정 조건에 맞는 튜플을 포함한 릴레이션 부분집합 반환 (튜플 단위 연산, 릴레이션 전체, 공집합 가능) → SQL의 WHERE절
- 프로젝션(Projection) : 특정 속성만 포함하는 릴레이션 반환 (속성 단위 연산), 중복 튜플 발생 시 중복 제거 → SQL의 SELECT절
- 확장(Extend) : 프로젝션과 반대, 기존 속성을 통해 새로운 속성으로 확장
- 속성명 변경(Rename) : 속성 이름 변경, 확장(Extend) 연산과 함께 주로 사용 → 확장 속성의 이름 변경
- 합집합 (Union) : 두 릴레이션의 모든 튜플 합침 → 중복 제거
- 교집합 (Intersect) : 두 릴레이션에서 공통된 튜플 반환
- 차집합 (Difference) : 한쪽 릴레이션에서 다른쪽 릴레이션 튜플과 비교해 공통된 부분을 제외한 남은 튜플 반환
- 곱집합 (Product) : 두 개의 릴레이션 튜플을 각각 조합한 하나의 릴레이션 반환 ex) A = 3개 튜플, B = 2개 튜플 - 곱집합 연산 = 6개 튜플 반환 → SQL의 FROM절
- 결합 (Join) : 두 개의 릴레이션 공통된 속성값 튜플을 조합한 릴레이션 반환, 공통된 속성 갖지 않는 튜플 제외
데이터 형식
관계형 모델에서의 데이터 형식은 “어떻게 데이터를 사용(표현) 할지에 대한 고려”이다.
- 도메인 : 관계형 모델에서의 데이터 형식
- 속성값에 사용되는 요소의 집합
- 속성에 대한 요소 집합값만 속성에 사용 가능
- ex) 성별 속성에 대한 도메인은 (남자, 여자) → 성별 속성은 이 두가지 요소를 통해 표현 가능
1.3 SQL에서 릴레이션 조작
- SELECT : Projection + Product + Restrict = 테이블 행 조회
SELECT 조회 컬럼(속성) 목록 -> Projection
FROM 테이블(릴레이션) 목록 -> Product
WHERE 검색 조건 -> Restrict
- SELECT 조회 컬럼(속성) 목록 -> Projection FROM 테이블(릴레이션) 목록 -> Product WHERE 검색 조건 -> Restrict
- INSERT : (구)릴레이션에 새로운 튜플 추가 → (신)릴레이션을 다시 반환받는 연산 = 테이블에 행 추가
- DELETE : (구)릴레이션에 조건절에 맞는 튜플 삭제 → (신)릴레이션을 반환받는 연산 = 테이블의 행 삭제
- UPDATE : Delete And Insert 방식의 연산 (구)릴레이션 조건 절에 대한 튜플 삭제 → (신)릴레이션을 반환 → 다시 튜플을 추가 → (최신)릴레이션을 반환 = 테이블의 데이터 수정
1.4 SQL에는 있고 관계형 모델에는 없는 것
릴레이션 | SQL |
튜플 중복 X | 제약 조건에 따른 중복 행 O |
요소의 순서 X | 컬럼에 따른 순서 O → Rownum, Order By 사용시 순서 기반 쿼리 지양 |
트랜잭션 없음 | 트랜잭션 있음 |
NULL 포함 불가 | NULL 가능 |
반응형
'Computer Science > DB' 카테고리의 다른 글
SQL과 관계형 모델 (정규화) (DB 스터디 3주차) (0) | 2022.09.28 |
---|---|
술어논리와 관계형 모델 (DB 스터디 2주차) (0) | 2022.09.21 |
반정규화 (De-Normalization) (0) | 2022.06.25 |
정규화 (Normalization) (0) | 2022.06.22 |
인덱스(Index) (0) | 2022.06.09 |