오라클로 배우는 데이터베이스 개론과 실습 2판 (박우창, 남송휘, 이현룡 지음, 한빛 아카데미)를 읽고 공부하며 기록한 내용입니다.
오류가 있을 수 있습니다.
📍 1. 관계 데이터 모델의 개념
- 릴레이션: 행과 열로 구성된 테이블
- 릴레이션 스키마: 관계 데이터 베이스의 릴레이션이 어떻게 구성되는지 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의
- 릴레이션 인스턴스: 릴레이션 스키마에 실제로 저장되는 데이터의 집합
- 관계 데이터베이스 시스템: 관계 데이터 모델을 컴퓨터 시스템에 구현한 것
📍 2. 무결성 제약조건
키: 슈퍼키, 후보키, 기본키, 대리키, 외래키
릴레이션은 데이터의 변경이 일어날 때마다 제약조건을 체크(도메인 -> 개체 -> 참조 순)
- 도메인 무결성 제약조건 (도메인 제약)
- 릴레이션 내의 투플들이 각 속성의 도메인에 지정된 값만을 가져야 한다.
- 개체 무결성 제약조건 (기본키 제약)
- 기본키는 NULL 값을 가져서는 안됨
- 릴레이션 내에 오직 하나의 값만 존재해야 함
- Ex) 있는 기본키를 넣을 경우(기본키 충돌), NULL값을 삽입할 경우
삭제는 특별한 확인 없이 즉시 수행
- 참조 무결성 제약조건 (외래키 제약)
- 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 같아야 함
- 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받음
- 부모 릴레이션의 도메인과 다른 값으로 삽입, 수정 불가
- 자식 릴레이션에서 참조하고 있는 값을 부모 릴레이션에서 삭제, 수정 불가
- Ex) 자식 릴레이션에서 참조하고 있는 부모 릴레이션의 키가 존재하지 않는 투플을 삽입하려고 하는 경우 거부,
자식 릴레이션에서 투플 삭제시 특별한 확인 없이 즉시 수행,
but 부모 릴레이션에서 투플이 삭제되는 경우 다른 릴레이션에서 참조하고 있는지 확인 후 자식 릴레이션의 관련 투플 수정 - 부모 릴레이션에서 투플을 삭제할 경우 선택 가능한 네가지 옵션
1. RESTRICTED - 부모 릴레이션에서 삭제 작업 거부
2. CASCADE - 자식 릴레이션의 관련 투플도 같이 삭제
3. DEFAULT - 자식 릴레이션의 관련 투플을 default값으로 변경
4. NULL - 자식 릴레이션의 관련 투플을 NULL로 변경
+ UNIQUE제약 조건(유일성 제약조건, 고유성 제약조건)
속성의 모든 값은 서로 같은 값이 없어야 한다.
📍3. 관계대수
릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술한 언어
- 순수 관계연산: 셀렉션, 프로젝션, 조인, 디비전, 개명
- 일반 집합연산: 합집합, 교집합, 차집합, 카티션 프로덕트
(합,교,차집합의 경우 두 릴레이션의 차수, 도메인, 속성 순서 동일해야 함. 즉 합병 가능해야 함)
또한 단항/이항으로도 구분 가능 (<조건>은 아래 첨자로 표시)
- 단항 연산자: 연산자<조건> 릴레이션
- 이항 연산자: 릴레이션1 연산자<조건> 릴레이션2
하나씩 자세히 알아보자
- 셀렉션: 릴레이션에서 조건에 맞는 투플을 추출
- 프로젝션: 릴레이션에서 특정 속성을 추출
- 조인: 두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 투플을 수평으로 결합(카티션 프로덕트 후 셀렉션)
- 세타 조인⋈θ : 속성값을 조건에 따라 비교하여 만족하는 투플만 반환(<, ≤, ≥, >, =, ≠)
- 동등 조인⋈(내부조인inner join): 세타 조인에서 = 연산자를 조건으로 사용한 조인, 일반적인 조인 연산
- 자연 조인⋈N: 동등 조인에서 조인에 참여한 속성이 두 번 나오지 않도록 두 번째 속성을 제거한 결과를 반환, 첨자N을 넣는다.
- 동등 조인⋈(내부조인inner join): 세타 조인에서 = 연산자를 조건으로 사용한 조인, 일반적인 조인 연산
- 외부 조인(outer join): 조인에 실패한 투플까지 모두 보여줌(값이 없다면 NULL을 추가해서 반환)
- 모든 속성을 보여주는 기준 릴레이션 위치에 따라 왼쪽⟕, 오른쪽⟖, 완전⟗ 외부 조인으로 나뉨
ex) 왼쪽 외부조인을 했다면, 오른쪽 릴레이션의 값 중 NULL로 채워진 것이 있을 수 있음.
- 모든 속성을 보여주는 기준 릴레이션 위치에 따라 왼쪽⟕, 오른쪽⟖, 완전⟗ 외부 조인으로 나뉨
- 세미 조인⋉: 자연 조인을 한 후 두 릴레이션 중 한쪽 릴레이션의 결과만 반환
- 세타 조인⋈θ : 속성값을 조건에 따라 비교하여 만족하는 투플만 반환(<, ≤, ≥, >, =, ≠)
- 디비전%: 속성값의 집합으로 연산 수행
R % S 일 경우, (릴레이션 R은 릴레이션 S의 모든 속성을 가지고 있어야 함)
릴레이션 S의 속성 B값과 릴레이션 R의 속성 V값이 서로 동일하게 대응하는 릴레이션 R의 속성 A의 투플을 반환함
특정 값들을 모두 가진 투플을 찾을 때 사용한다. - 개명
- ----------------------------------------------------
- 합집합: 두 개의 릴레이션을 합하여 하나의 릴레이션을 반환
- 교집합
- 차집합
- 카티전 프로덕트: 두 릴레이션에 속한 모든 투플들의 집합, 수평적 연산
결과 릴레이션의 차수는 두 릴레이션의 차수 합, 카디날리티는 두 릴레이션의 카디날리티의 곱
📍연습 문제 일부 풀이
#1.
② 릴레이션 스키마는 내포, 릴레이션 인스턴스가 외연
#2.
① 투플 중복 x
② 투플 간의 순서 x
③ 속성 순서 상관 x
④ 정답, 속성은 단일값(원자값)을 가진다.
#3.
③ 도메인이란 각 속성이 어떤 값을 가질 수 있는지를 나타낸 집합
#4.
① 정답, 외래키란 다른 릴레이션의 기본키를 참조하는 속성
② 도메인 다를 수 없음. 참조 무결성 제약조건, 도메인 제약 조건
③ 외래키는 NULL값을 가질 수도 있다.
④ 기본키에 대한 설명
#5.
① 개체 무결성 제약 조건(기본키 제약)
#6.
① projection
#7.
③ 자연 조인하면 중복된 속성 빼고 반환되므로 C는 X,Y,Z 속성을 가질 것이다. 따라서 C의 차수는 A의 차수보다 많다.
#8.
③
ㄱ. x 기본키 제약 조건(개체 무결성 제약 조건)에 따라 기본키는 NULL 값을 허용하지 않는다.
ㄴ. x 슈퍼키 중 속성을 최소화한 것을 후보키라 한다. 슈퍼키는 후보키가 되기 위한 필요 조건이고 후보키는 슈퍼키가 되기 위한 충분 조건이다.
ㄷ. x
ㄹ. o
...너무 많아서 아래부터는 헷갈렸던 일부 선지만 기록합니다.
#10.
ㅁ. 외래키는 기본키의 일부가 될 수 있다.
'데이터베이스' 카테고리의 다른 글
[DATABASE] Chapter03. SQL 기초 (0) | 2024.04.25 |
---|