관계 데이터 모델 : 데이터 모델 중 개념이 가장 단순, 가장 널리 사용된다.
- 모든 데이터를 논리적으로 구성
- 사용자는 원하는 데이터만 명시, 찾는 방법은 명시하지 않는다
- 선언적인 질의어를 통한 데이터 접근
장점 : 집합 테이블을 이용한 간단한 구조의 데이터, 이론이 탄탄하며 응용에 적합하다. 설계와 질의처리도 효율적
릴레이션(Relation) : 2차원의 테이블
레코드(Record) : 릴레이션의 각 행
투플(Tuple) : 레코드의 공식적인 용어
애트리뷰트(Attribute) : 릴레이션에서 이름을 가진 하나의 열
도메인(Domain) : 한 애트리뷰트에 나타날 수 있는 값들의 집합
프로그래밍 언어의 데이터 타입과 비슷한 형태로써 동일한 도메인이 여러 애트리뷰트에서 사용될 수 있다.
- CREATE DOMAIN EMPNAME CHAR(10)
- EMPNAME 도메인 : {Jeff, John, Alves, Kim, Osher ...}
차수(Degree) : 한 릴레이션에 들어있는 애트리뷰트들의 수 (1 이상)
카디날리티(Cardinality) : 릴레이션의 투플 수 (0 이상)
널값(Null Value) : '알려지지 않음', '적용할 수 없음'에 사용한다. 0과 공백과는 다르다.
릴레이션 스키마(Relation Schema) : 릴레이션의 이름, 애트리뷰트들의 집합 -> 내포
릴레이션을 위한 틀이라고 생각하면 된다.
- 릴레이션이름(애트리뷰트1, 애트리뷰트2, ... , 애트리뷰트N)
기본 키 애트리뷰트에 밑줄을 그어 표시한다.
릴레이션 인스턴스(Relation Instance) : 릴레이션의 어느 시점에 들어 있는 투플들의 집합 -> 외연
일반적으로 현재의 인스턴스만 저장하고, 시간의 흐름에 따라 계속 변한다.
관계 데이터베이스 스키마는 하나 이상의 릴레이션 스키마들로 이루어진다.
- DEPARTMENT (DEPTNO, DEPTNAME, FLOOR)
- EMPLOYEE (EMPNO, EMPNAME, TITLE, DNO, SALARY)
DEPTNO |
DEPTNAME |
FLOOR |
1 |
영업 |
8 |
2 |
기획 |
10 |
3 |
개발 |
9 |
EMPNO |
EMPNAME |
TITLE |
DNO |
SALARY |
2106 |
김창섭 |
대리 |
2 |
2000000 |
3426 |
박영권 |
과장 |
3 |
2500000 |
3011 |
이수민 |
부장 |
1 |
3000000 |
1003 |
조민희 |
대리 |
1 |
2000000 |
3427 |
최종철 |
사원 |
3 |
1500000 |
릴레이션의 특성
- 각 릴레이션은 오직 하나의 레코드 타입만 포함한다.
- 한 애트리뷰트 내의 값들은 모두 같은 유형이며 순서는 중요하지 않다.
- 동일한 투플이 두 개 이상 존재하지 않으며 순서는 중요하지 않다.
릴레이션의 키에는 수퍼 키, 후보 키, 기본 키, 대체 키, 외래 키가 있다.
- 수퍼 키 : 릴레이션 내의 특정 투플을 고유하게 식별하는 하나 이상의 애트리뷰트 집합
- 후보 키 : 각 투플을 고유하게 식별하는 최소한의 애트리뷰트 집합, 두 개 이상일 경우 복합 키라고 한다.
- 기본 키 : 릴레이션 후보 키 중에서 설계자 혹은 관리자가 기본 키로 선정, 인위적인 키 애트리뷰트를 추가할 수 있음
- 대체 키 : 키본 키가 아닌 후보 키
- 외래 키 : 어떤 릴레이션의 기본 키를 참조하는 애트리뷰트, 관계 DB에서는 관계를 나타낼 때 사용된다.
- 도메인 제약조건 (Domain Constraint)
- 키 제약조건 (Key Constraint)
- 기본 키 : 투플들을 식별하기 위해 사용되므로 어떤 애트리뷰트도 널값을 가질 수 없다.
- 두 릴레이션의 연관된 투플들 사이의 일관성을 유지하는데 사용된다.
- 외래 키 : 관계 DB에서 릴레이션 사이의 관계들이 다른 릴레이션의 기본 키를 참조하는 것을 기반으로 하기 때문에 중요하다.
- 릴레이션 R2의 외래 키가 릴레이션 R1의 기본 키를 참조할 때 무결성 제약조건의 성립조건 (하나만 만족해도 성립)
- 외래 키 값은 R1의 어떤 투플의 기본 키 값과 같다.
- 널 값을 가진다. 단, 외래 키가 자신을 포함하고 있는 릴레이션의 기본 키를 구성하고 있지 않음
- 삽입
- 삭제
- 제한 : 연산을 거절
- 연쇄 : 참조하는 릴레이션에서도 해당 투플을 함께 삭제
- 널값 : 참조하는 릴레이션의 외래 키에 널값을 삽입
- 디폴트값 : 3번에서 널값 대신 디폴트값 삽입
- 수정 : 수정은 투플을 삭제하고 삽입하는 과정과 마찬가지다. 키의 종류에 따라 제약조건을 살펴봐야 한다.
'코딩을 배우자 > SQL로' 카테고리의 다른 글
[DB] 4. 데이터베이스 설계와 ER모델 (0) | 2017.11.06 |
---|---|
[DB] 3. 관계 대수와 SQL (3) (0) | 2017.11.04 |
[DB] 3. 관계 대수와 SQL (2) (0) | 2017.11.04 |
[DB] 3. 관계 대수와 SQL (1) (0) | 2017.11.03 |
[DB] 1. 데이터베이스 시스템 (0) | 2017.10.17 |