관계 데이터 모델 : 데이터 모델 중 개념이 가장 단순, 가장 널리 사용된다.

  • 모든 데이터를 논리적으로 구성
  • 사용자는 원하는 데이터만 명시, 찾는 방법은 명시하지 않는다
  • 선언적인 질의어를 통한 데이터 접근

장점 : 집합 테이블을 이용한 간단한 구조의 데이터, 이론이 탄탄하며 응용에 적합하다. 설계와 질의처리도 효율적


릴레이션(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

영업

기획 

10 

 3

개발 


 EMPNO

EMPNAME 

TITLE 

DNO 

SALARY 

 2106

김창섭 

대리 

2000000 

 3426

박영권 

과장 

2500000 

 3011

이수민 

부장 

3000000 

 1003

조민희 

대리 

2000000 

 3427

최종철 

사원 

1500000 



릴레이션의 특성

  • 각 릴레이션은 오직 하나의 레코드 타입만 포함한다.
  • 한 애트리뷰트 내의 값들은 모두 같은 유형이며 순서는 중요하지 않다.
  • 동일한 투플이 두 개 이상 존재하지 않으며 순서는 중요하지 않다.


릴레이션의 키에는 수퍼 키, 후보 키, 기본 키, 대체 키, 외래 키가 있다.

  • 수퍼 키 : 릴레이션 내의 특정 투플을 고유하게 식별하는 하나 이상의 애트리뷰트 집합
  • 후보 키 : 각 투플을 고유하게 식별하는 최소한의 애트리뷰트 집합, 두 개 이상일 경우 복합 키라고 한다.
  • 기본 키 : 릴레이션 후보 키 중에서 설계자 혹은 관리자가 기본 키로 선정, 인위적인 키 애트리뷰트를 추가할 수 있음
  • 대체 키 : 키본 키가 아닌 후보 키
  • 외래 키 : 어떤 릴레이션의 기본 키를 참조하는 애트리뷰트, 관계 DB에서는 관계를 나타낼 때 사용된다.

데이터 무결성 : 데이터의 정확성, 유효성을 의미한다. 일관된 DB상태를 정의하는 규칙이며 DB가 갱신될 때 DBMS가 자동적으로 조건을 검사한다.
  • 도메인 제약조건 (Domain Constraint)
각 애트리뷰트 값이 반드시 원자값이어야 하며, 디폴트 값과 CHECK 제약조건을 통해 범위를 지정할 수 있다.
NOT NULL, CHECK 등이 도메인 제약조건에 해당된다.
  • 키 제약조건 (Key Constraint)
키 애트리뷰트에 중복된 값이 존재해서는 안된다. UNIQUE 로 설정할 수 있다.


엔티티 무결성 제약조건 (Entity Integrity Constraint)
  • 기본 키 : 투플들을 식별하기 위해 사용되므로 어떤 애트리뷰트도 널값을 가질 수 없다.
참조 무결성 제약조건 (Referential Integrity Constraint)
  • 두 릴레이션의 연관된 투플들 사이의 일관성을 유지하는데 사용된다.
  • 외래 키 : 관계 DB에서 릴레이션 사이의 관계들이 다른 릴레이션의 기본 키를 참조하는 것을 기반으로 하기 때문에 중요하다.
  • 릴레이션 R2의 외래 키가 릴레이션 R1의 기본 키를 참조할 때 무결성 제약조건의 성립조건 (하나만 만족해도 성립)
    1. 외래 키 값은 R1의 어떤 투플의 기본 키 값과 같다.
    2. 널 값을 가진다. 단, 외래 키가 자신을 포함하고 있는 릴레이션의 기본 키를 구성하고 있지 않음

무결성 제약조건 : DBMS가 각각의 갱신 연산에 대해 필요한 조치를 취한다.
  • 삽입
기본적으로 참조되는 릴레이션에 새로운 투플 삽입시 위배되지 않음
하지만 참조되는 릴레이션에 투플 삽입시 기본 키 애트리뷰트의 값에 따라 (도메인, 키, 엔티티 무결성) 제약조건 위배될 수 있음
참조하는 릴레이션에 새로운 투플 삽입시 (도메인, 키, 엔티티 무결성, 참조 무결성) 제약조건 위배될 수 있음
제약조건을 위배하는 삽입 연산은 DBMS가 거절함으로써 무결성을 유지한다.
  • 삭제
참조하는 릴레이션에서 투플 삭제시 제약조건 위배하지 않음
참조되는 릴레이션에서 투플 삭제시 참조 무결성 제약조건 위배할 수도 있음
이 경우 DBMS가 제공하는 옵션
  1. 제한 : 연산을 거절 
  2. 연쇄 : 참조하는 릴레이션에서도 해당 투플을 함께 삭제
  3. 널값 : 참조하는 릴레이션의 외래 키에 널값을 삽입
  4. 디폴트값 : 3번에서 널값 대신 디폴트값 삽입
  5. 수정 : 수정은 투플을 삭제하고 삽입하는 과정과 마찬가지다. 키의 종류에 따라 제약조건을 살펴봐야 한다.


+ Recent posts