데이터베이스
무결성이란?
- 데이터의 정확성, 일관성을 나타탬
- 데이터에 결함이 없는 상태, 데이터를 정확하고 일관되게 유지하는 것
무결성제약조건이란?
- 무결성을 보장하기 위해 저장, 삭제, 수정등을 제약하기 위한 조건
- 데이터베이스에 저장된 데이터의 무결성을 보장하고 데이터베이스의 상태를 일관되게 유지하는 것
- 개체 무결성 ( Entity Intergrity )
- 기본키를 구성하는 속성은 null
값을 가질 수 없다.
- 기본키를 구성하는 속성은 다른 레코드(튜플)와 중복될 수 없다.
- 참조 무결성 ( Referential Intergrity )
- 외래키를 구성하는 속성은 참조 릴레이션(테이블)의 기본키 값과 동일 해야한다.
- 외래 키의 값은
null
이거나 참조 릴레이션의 기본키 값과 동일해야 한다.
- 외래 키 속성은 참조할 수 없는 값을 지닐 수 없음
(외래 키 속성 값이 상위 테이블의 인스턴스에 반드시 존재하거나 Null이어야 함)
- 도메인 무결성 ( Domain Intergrity )
- 속성값은 속성이 정의된 도메인의 범위를 벗어날 수 없다.
- Null무결성 ( Null Intergrity )
- 특정 속성값에 Null이 올 수 없다는 조건이 주어진 경우, 그 속성값은 Null값이 올 수 없다는 제약 조건
- 고유 무결성 ( Unique Intergrity )
- 테이블의 특정 속성에 대해 각 레코드들이 갖는 값들이 서로 달라야 하는 조건
- 키 무결성 ( Key Intergrity )
- 하나의 테이블에는 적어도 하나의 키가 존재해야 하는 조건
- 관계 무결성 ( Relationship Intergrity )
- 테이블의 어느 한 레코드의 삽입 가능 여부 또는 한 테이블과 다른 테이블의 레코드들 사이에 관계에 대한 적절성 여부를 지정한 조건
유일성이란?
- 하나의 키값으로 레코드를 식별할 수 있는 성질
여러개의 레코드가 존재할 때 각각의 레코드는 유일해야 하며 유일성을 입중하고 각각의 레코드를 구분할 수 있는 속성이 필요하다. 정보를 저장한 릴레이션이 존재 할 때, 속성은 중복될 여지가 없는 속성이 각 레코드를 구분 할 수 있는 유일성이 보장된다.
최소성이란?
- 키를 구성하는데 여러 속성을 묶어서 키로 지정할 수 있다. 이때 키를 구성하는 최소로 필요한 속성들로만 키를 구성하는 성질 만약 속성을 묶어서 키로 지정되었다고 한다면, 이 키로 레코드를 구분 할 수 있다. 하지만 키의 속성중 하나가 유일성을 보장하는 속성과 다른 속성이 존재하면 최소성을 만족할 수 없다. 최소성이란 레코드의 속성을 묶어서 키로 지정했을때, 유일성이 없어야 최소성을 만족한다.
키의 의미
- 데이터 베이스에서 조건을 만족하는 레코드(튜플)를 찾거나 정렬 할 때 기준이 되는 속성 또는 그러한 속성의 집합
키의 종류
출처
슈퍼 키 ( Super Key )
- 유일성
- 어떤 속성끼리 묶어도, 또는 묶지 않아도 각 레코드를 구별 할 수 있다면( 유일성을 확보할 수 있다면) 그 속성은 슈퍼키가 될 수 있다.
후보 키 ( Candidate Key )
- 유일성, 최소성을 보장해야 한다.
- 앞서 본 개체
무결성의 원칙
에 위배되지 않아야 한다.
- 슈퍼 키가 모여있을때 이들 중 키를 구성하는 속성의 수가 가장 적은 키만이 후보 키가 될 수 있다.
기본 키 ( Primary Key )
- 후보 키 중 선택된 키 릴레이션에서 기본 키는 반드시 유일해야한다.
- 자연 키와 인조 키가 있다. 식별자로 자연키보다는 인조 키를 사용하는것이 좋다
자연키란? -> 하나의 릴레이션에서 레코드를 구분할 수 있는 것을 '자연스럽게' 나오는 키를 가리켜 자연키라고 한다.
인조키란? -> 하나의 릴레이션에서 레코드를 구분할 수 있는 것이 없어 인조적으로 생성한 속성을 인조키라고 한다.
대체 키 ( Alternate Key )
- 후보 키 중 기본키를 제외한 나머지 모든 키.
복합 키 ( Composite Key )
외래 키 ( Foregine Key )
- 다른 릴레이션의 기본 키를 참조하는 속성, 외래키를 통해 테이블간 관계 표현이 가능함
- 예)다른 테이블의 기본 키, 현재 테이블의 기본 키를 통해 테이블간의 관계표현
- 외래키 존재 이유는?
- 항상 정확한 값을 유지하는 데이터 무결성
때문에
유일 키 ( Unique Key )
- 중복값을 허용하지 않지만 null값이 허용되는 키, 릴레이션에서 여러 속성에 지정할 수 있다.