- 데이터 모델 : 복잡한 현실세계를 추상적이고, 정형화된 형태로 표현 (특성을 살리고, 관심있는 정보만 단순화)
- 관계형 데이터 모델 : 관계형 데이터베이스의 기반이 되는 데이터 모델(테이블 형식 이용→릴레이션)
- 릴레이션(테이블) : 두 개 이상의 집합이 존재할 때, 각 집합을 구성하는 원소들의 순서쌍
- 필드(속성) : 릴레이션(테이블)을 구성하는 열
- 레코드(튜플) : 릴레이션(테이블)을 구성하는 행
- 도메인 : 필드(속성)에 입력 가능한 값의 범위 → 필드가 가질 수 있는 모든 값
- 널 : 특정 필드의 값을 알지 못하거나, 아직 정해지지 않은 것. (0, 공백문자와 다름)
- 테이블 스키마 : 테이블이름(필드1, 필드2, 필드3, ... , 필드4)
- 차수 : 필드의 수 (n항 테이블)
- 테이블 인스턴스 : 레코드의 집합
- 기수 : 레코드의 수
- 테이블의 특성
- 테이블 인스턴스는 레코드의 집합 → 중복된 레코드 존재X
- 레코드 간의 순서 의미X
- 필드 간의 순서 의미X
- 키(식별자) : 주로 하나, 여러 개도 가능(복합 키) → 특정 레코드 식별 가능
ㄴ 수퍼 키 : 아무런 제약 조건 없는 필드의 집합
ㄴ 후보 키 : 불필요한 필드 제외 후, 최소한의 필드의 집합
ㄴ 기본 키(PK) : 하나의 필드로 구성된 키. → 레코드 중 null이 포함된 필드는 불가.
ㄴ 외래 키(FK) : 다른 테이블의 기본키를 참조 -> 외래 테이블을 참조할 때는 외래 테이블에 매핑되는 레코드가 꼭 있 있어야 함.
* FK는 필드의 이름이 동일하지 않아도 됨. 도메인이 같으면 가능.
- 관계형 데이터베이스 : 관계형 데이터 모델을 이용하여, 하나 이상의 테이블로 만드는 데이터베이스
- 데이터베이스 스키마 : 테이블 스키마의 집합
- 데이터베이스 인스턴스 : 테이블 인스턴스의 집합
- 질의어 : 데이터 삽입, 삭제, 수정 등의 조작을 위한 연산들을 표현
ㄴ 절차적 언어 : 수행 절차를 명시 (ex. 관계대수)
ㄴ 비절차적 언어 : 수행 결과를 명시 (ex. 관계해석, SQL)
- 관계대수
ㄴ 피연산자 : 테이블
ㄴ 연산자 : 단항연산자(테이블 하나도 가능), 이항연산자(테이블 두개로 가능)
- 기본 연산
선택(Selection) 연산: σ → 레코드 모두 검색 (가로로)
* 만약 조건에 NULL이 있다면 연산결과에 포함X (ex. dept_id = '920' 일 때, NULL이 있으면 포함X)
추출(Projection) 연산: π → 필드 모두 검색 (세로로)
* 중복된 레코드는 제거함.
재명명(Rename) 연산: ρ
ex. ρ 바꿀테이블이름 (기존테이블이름)
ㄴ 최종 결과에 대한 테이블, 필드명이 변경되는 것이고, 실제 테이블의 이름이 바뀌지는 않음
집합(Set) 연산: 합집합(∪), 교집합(∩), 차집합(−), Cartesian Product(X) 등
* 2개의 테이블의 차수(필드들의 수)와 필드 이름이 동일해야 하며, 같은 이름의 필드들은 도메인도 일치해야함.
ㄴ 카티션 프로덕트 : 두 테이블의 모든 레코드의 경우의 수
ㄴ 중복되는 필드(세로 모두)는 삭제함
- 추가 연산
조인(Join): ⨝
ㄴ 자연 조인(Natural join)
ex. 테이블1이름 (⨝ 조건식) 테이블2이름
ㄴ 특정 조건을 만족하는 레코드들을 하나의 레코드로 결합
* 공통되는 필드 없을 시, 카티션 프로덕트와 동일
외부 조인(Outer join) : 조인 조건을 만족하지 않는 레코드까지 검색 결과에 포함 → 매치되지 않는 레코드의 필드들은 NULL
지정(Assignment) 연산: ← 중간 결과에 이름을 부여