관계 데이터 모델과 관계 무결성 제약조건
01 관계형 데이터베이스의 구조
릴레이션 = 테이블
: 정보를 구분하여 저장하는 기본 단위
> 표의 형태로 표현 ( 실질적 데이터 저장 > 테이블 )
> 릴레이션 스키마와 릴레이션 인스턴스의 합
> 동일한 데이터베이스 내에서 같은 이름의 릴레이션 존재 불가능
>현실 시계의 어떤 엔티티 표현
속성 = 열
: 가장 작은 논리적 단위 - 파일 구조상 데이터 항목 / 데이터 필드
> 구체적인 정보 항목 > 엔티티의 특성 기술
> 관리 할 필요가 이는 속성만 선택하여 릴레이션에 포함
> 같은 이름의 속성 존재 불가능
> 속성의 개수 : 차수 ( Degree )
속성(어트리뷰트) = 열 = 필드 / 속성의 개수 = 차수
튜플 = 행
: 속성의 모임 - 레코드와 같은 의미
> 엔티티에 속한 구성원 개개의 정보 표현
> 카디날리티 : 릴레이션을 구성하는 튜플의 수 = 행의 갯수 / 튜플 = 행 = 레코드 / 튜플의 개수 = 카디날리티
도메인
: 각 속성이 취할 수 있는 같은 타입의 원자값의 집합
> 데이터 타입에 해당 > 동일 도메인 여러 속성에서 사용 가능
> 릴레이션에 저장되는 데이터값들이 본래 의도했던 값들만 저장되게 한다
> 실제 속성값을 나타낼 때 그 값의 합법 여부를 시스템이 검사
릴레이션 스키마와 인스턴스
릴레이션 스키마 : 릴레이션 내포
> 릴레이션 이름과 일정수의 속성의 집합
> 릴레이션의 논리적 구조 정의 : 릴레이션 이름과 속성의 집합
릴레이션 인스턴스 : 릴레이션 외포
> 어느 한 시점에서 릴레이션에 포함되어 있는 튜플의 집합
> 릴레이션에 포함되어 있는 내용 또는 상태로 튜플 전체를 의미
02 릴레이션의 특징
속성 간의 순서
-
릴레이션을 구성하는 속성 간 순서는 중요하지 않다
- 속성의 순서를 바꾼다고 다른 릴레이션이 되지는 않는다. > 속성 이름에 의해 참조되기 때문
- 속성 순서를 정해놓는 것이 좋으며 상용 dbms는 속성이 순서를 가짐
상이한 튜플
-
한 릴레이션에 포함된 튜플은 모두 다르다
- 어떤 튜플도 정확하게 동일한 값을 갖지 않는다
- 튜플을 유일하게 식별하기 위해 고유값을 저장하는 속성이 적어도 한 개 있어야 한다
튜플의 순서
-
릴레이션에 포함된 튜플의 순서는 중요하지 않다
-
릴레이션의 포함된 튜플의 순서는 무의미
릴레이션 변동성 - 튜플의 삽입, 삭제 등의 잡업으로 릴레이션은 시간에 따라 변함
속성 명칭과 값 - 유일한 식별을 위해 명칭은 유일해야 하며, 속성 구성 값은 동일할 수 있다
튜플의 속성 - 속성은 원잣값만을 저장해야 한다.
- 속성은 여러 개의 값을 리스트나 집합 형태로 저장 불가능
- 하나 속성이 두 값을 갖게 되면 릴레이션 추가 후 이를 참조
03 키의 개념 및 종류
이상( Anomaly ) 현상 - 데이터가 중복 저장되면 릴레이션 조작 시 예상치 못한 곤란한 현상 발생
키 - 튜플을 유일하게 식별하기 위한 고유한 값을 저장하는 속성 혹은 속성의 집합
수퍼키( Super Key ) - 튜플을 유일하게 식별하기 위해 사용하는 하나 혹은 그 이상의 속성 집합
- 문제점 : 튜플 고유 구별을 위해 꼭 필요하지 않은 속성을 포함
- 한 릴레이션을 구성하는 속성들 중 각 튜플을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성의 집합
- 유일성 개념 포함
후보키 ( Candidate Key ) - 최소한의 속성으로 구성된 유일성을 갖는 속성의 집합
- 후보키 지정 시 후보키 속성값만을 비교하면 되는 장점
- 릴레이션 구성 속성 중 각 튜플을 유일하게 식별할 수 있는 최소한의 속성의 집합
- 유일성과 최소성 개념 포함
- 수퍼키와 공통점 : 릴레이션에 있는 가 튜플을 고유하게 식별할 수 있어야 한다
- 수퍼키와 차이점 : 최소한의 속성으로 구성된 유일성을 갖는 속성의 집합
기본키 ( Primary Key ) - 후보키 중 튜플을 식별하는데 기준으로 사용하는 키
- 하나의 릴레이션에서 후보키가 하나뿐일 때 그 후보키를 기본키로 사용
- 두 개 이상 존재 시 릴레이션 특성을 고려해 이들 중 하나를 선택
- Null 값 저장 불가능
- 기본키로 정의된 속성에는 동일 값이 중복 저장 불가능
- 모든 릴레이션에는 적어도 하나의 기본키 ( 후보키 )가 존재
- 여러 후보키 중 하나를 선택하여 튜플을 식별하는데 기준으로 사용하는 키
대체키 ( Alternate Key ) - 후보키가 둘 이상일 때 기본키로 선택되지 않은 나머지 후보키
- 보조키라고도 함
복합키
- 하나의 칼럼이 후보키 역할을 하지 못함
- 두 개 이상의 칼럼이 합쳐져야 후보키의 역할을 하는 경우
외래키 ( Foreign Key ) - 상호 관련 테이블 사이에서 데이터의 일관성을 보장해주는 수단
- 어떤 릴레이션의 기본키를 참조하는 속성 또는 속성의 집합
- 외래키 속성은 참조하는 릴레이션의 기본키와 동일한 도메인을 가져야 함
- 두 테이블 간 데이터 불일치로 발생하는 이상현상 방지 > 데이터 사이 참조 관계 설정
- A 릴레이션과 참조하고 있는 B릴레이션의 기본키와 같은 속성을 A에서 찾아 이를 외래키로 지정
- 외래키로 지정되면 참조 테이블에서 사용 중인 기본키를 삭제, 변경 불가능
- 기본키에 없는 값은 외래키 값으로 입력 불가능
자체 릴레이션을 참조하는 외래키 기본키 구성요소가 되는 외래키
04 무결성 제약조건
개체 무결성
: 개체가 결점이 없음
- 무결한 개체 = 데이터베이스에 저장, 관리될 때 본질적으로 서로 구별 가능
- 식별 가능한 상태에 있게 되면 개체 부결성이 보장된 상태
- 릴레이션 식별자의 역할 = 기본키
- 기본키 구성 속성은 null / 중복값 불가능
- 기본키 값이 널 값을 갖게 된다면 튜플을 유일하게 식별할 수 없음
- 튜플 유일 식별 불가능은 서로 구별할 수 없는 개체가 존재하게 된다는 의미 > 개체 무결성 위배
- 기본키의 유일 식별성을 잃지 않도록 하기 위해 중복되는 값을 갖으면 안 됨
- 특정 개체가 무결성을 유지하도록 하기 위해서 릴레이션을 생성하는 데이터 정의문 에서 어떤 속성이 릴레이션의 기본키인지를 알려주어야 함
> 개체 무결정 제약조건 : 기본키는 NULL 이나 중복 값을 가질 수 없다
참조 무결성
: 릴레이션 간 적용되는 제약조건
- 외래키 값은 null이거나 참조 릴레이션의 기본키 값과 동일해야 함
- 릴레이션 모델에서는 두 개체 간의 관계를 외래키 혹은 릴레이션으로 표현
- 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없음
> 참조 무결성 제약조건 : 외래키는 참조할 수 없는 값을 가질 수 없다.
참조 무결성 제약 조건 유지
- 두 테이블 간 외래키에 의한 참조 관계에 있고 두 테이블 간 데이터 불일치가 발생하는 상황이 될 때
- DBMS는 제한, 연쇄, 널 값으로 대체와 같은 조취를 취할 수 있다
A 테이블 첫 번째 튜플을 삭제하려 할 때
제한은 삭제하려는 튜플의 부서 번호 값을 사원 테이블에서 가지고 있는 튜플이 있으므로 삭제 연산 거절
연쇄는 삭제된 부서 번호 값을 갖는 사원 테이블의 튜플도 함께 삭제
널 값으로 대체는 삭제 연산을 수행한 뒤 삭제된 부서 번호 값을 갖는 사원 테이블의 튜플에서 부서 번호를 널 값으로 대체