관계 모델 개요
- 아주 단순하며 우아한 모델
- 관계 논리식과 관계 대수식에 기반한 수학적 데이터 조회 및 저장
- 데이터베이스는 하나 이상의 릴레이션의 집합으로, 테이블 형식으로 데이터 표현
- 데이터를 제어하는 고수준의 언어를 사용하여 데이터의 표현과 복잡한 질의를 쉽게 처리
- 관계형 데이터베이스가 지켜야 하는 조건을 제시 -Dr.Codd의 12 규칙로 유명
릴레이션
- 릴레이션은 주로 테이블과 같은 의미로 사용되며, 데이터의 집합을 의미한다. 튜플과 속성으로 구성되어 있다.
릴레이션 스키마
- 관계 모델에서 스키마는 데이터베이스의 구조와 제역조건에 관한 전반적인 명세를 의미
- 개체와 개체의 특성을 나타내는 속성, 개체 간의 관계, 이들의 제약조건을 기술한 것
- 릴레이션 스키마 명세
- 릴레이션의 이름
- 필드 또는 열, 또는 속성의 이름
- 각 속성의 도메인 이름
- ex: 학생(학번: 문자열, 이름: 문자열, 로그인: 문자열, 나이: 정수, 평점: 실수)
릴레이션 인스턴스
- 레코드라고도 불리는 투플의 집합
- 투플
- 릴레이션 스키마에서 정의된 각 속성로 구성되며, 하나의 데이터 묶음을 나타냄
- 릴레이션 인스턴스에서 각 투플을 하나의 행으로 구성
- 릴레이션 인스턴스의 투플 수: 카니널리티
- 릴레이션 인스턴스의 속성: 차수
- 릴레이션 인스턴스의 투플 순서는 중요하지 않음
도메인
- 하나의 속성이 가질 수 있는 동일한 유형의 원자값들의 집합
- 릴레이션 스키마는 릴레이션 인스턴스읙 각 필드의 도메인을 명세
- 프로그래밍 언어 관점에서 필드의 데이터 타입을 의미
관계형 데이터베이스
- 관계 데이터베이스 : 서로 다른 릴레이션 이름을 가진 릴레이션들의 모임
- 관계 데이터베이스 스키마 : 데이터베이스에 속한 릴레이션의 스키마들의 집합
키
- 기본키(Primary Key) : 각 레코드를 고유하게 식별하는 키로, 중복되지 않는 값으로 이루어지고 또한, NULL 값을 가질 수 없다.
- 대체키(Alternate Key) : 기본키가 될 수 있는 후보키 중에서 선택된 키를 말한다.
- 후보키(Candidate Key) : 릴레이션을 구성하는 속성들 중에서 각 레코드를 고유하게 식별할 수 있는 속성 또는 속성의 집합이다.
- 외래키(Foreign Key) : 다른 릴레이션의 기본키를 참조하는 속성으로, 릴레이션 간의 관계를 설정하는 데 사용됩니다.
- 대리키(Surrogate Key) : 식별자가 너무 길거나 여러 개의 속성으로 구성되어 있는 경우 인위적으로 추가하는 식별자이다.
무결성
- 무결성은 데이터나 시스템의 완전성, 정확성, 일관성이 유지되는 상태를 말한다.
무결성 제약조건
- 데이터베이스에서 무결정을 위해 설정되는 제약조건으로 데이터베이스에 저장, 수정, 삭제할 때 무결성 제약조건에 위배되지 않도록 데이터베이스 시스템이 검사하고, 위배될 경우 해당 작업을 취소하거나 에러를 발생시킨다.
개체 무결성(Entity Integrity)
- 기본키를 구성하는 모든 속성은 NULL 값을 가질 수 없고 기본키는 각 레코드를 고유하게 식별할 수 있는 유일한 값을 가져야한다.
- 키 제약조건으로 개체 무결성을 유지한다.
참조 무결성(Referential Integrity)
- 외래키 값을 참조하는 참조 릴레이션의 값은 NULL 이거나, 기본키 또는 후보키 값과 일치해야 한다. 즉, 외래키는 참조하는 릴레이션의 값과 일치하는 값을 가져야 한다.
위와 같이 ‘이진수’의 경우 지정되지 않아 NULL 값을 가질수 있지만, ‘박철중’ 과 같이 없는 번호의 값을 가지고 있으면 참조 무결성을 위반하게 된다.
참조 관계에 있는 두 릴레이션의 데이터는 항상 일관된 값으로 유지되어야 함
- 한 릴레이션의 데이터가 수정될 경우 참조 관계에 있는 데이터 역시 수정되어야 함키
- 한 릴레이션의 데이터가 삭제될 경우 참조 관계에 있는 데이터 역시 삭제되어야 함
도메인 무결성(Domain Integrity)
- 각 속성은 정의된 도메인에 속하는 값만 가질 수 있다. 예를 들어, 정수형 속성의 값은 숫자여야 하며, 문자열 속성의 값은 문자열이어야 한다.
무결성 제약조건 집행
- 제약조건은 릴레이션 스키마에 정의되고 릴레이션의 수정될 때 집행됨
- 도메인 무결성과 개체 무결성은 직관적으로 즉시 집행됨
- 제약조건을 위배하는 삽입, 삭제, 갱신 명령은 즉시 거부
- 참조 무결성 집행 단계
- 참조하는 릴레이션에 없는 값에 대한 삽입이 시도되는 경우
- 명령이 거부됨
- 참조 릴레이션의 데이터가 삭제되는 경우
- 외래 키가 존재하는 릴레이션의 참조 데이터를 모두 삭제
- 참조 릴레이션의 데이터를 삭제할 수 없도록 멸령을 거부
- 외래 키가 존재하는 릴레이션의 해당 데이터를 모두 다른 값으로 갱신
- 참조하는 릴레이션에 없는 값에 대한 삽입이 시도되는 경우