DB/수업

6. 관계 데이터 모델과 관계 무결성 제약조건(3-2)

멜데스 2017. 5. 8. 01:30

1. 키의 개념 및 종류 

 릴레이션의 특징 중의 하나가 한 릴레이션에 포함된 튜플들은 모두 달라야 한다는 것이었다. 

 릴레이션은 튜플의 집합이기에 튜플을 저장하다 보면 다음과 같은 정보를 삽입해야 할 경우가 생긴다. 

 


 이상(anomaly) 현상 

- 데이터가 중복 저장되면 릴레이션 조작 시 예상하지 못한 곤란한 현상이 발생하는 현상 


 키 

- 속성 혹은 속성의 집합으로 튜플을 고유하게 식별할 수 있도록 하는 속성 혹은 속성의 집합 

- 데이터를 검색하거나 정렬할 때 기준이 되는 유일하게 구분되는 속성으로 수퍼키, 후보키, 기본키, 외래키 등이 있음


수퍼키와 후보키 

 수퍼키(Super Key) 

- 릴레이션을 구성하는 속성들 중에서 각 튜플을 유일하게 식별하기 위해 사용하는 하나 혹은 그 이상의 속성들의 집합 

- 유일성이란 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있는 성격 

- 최소성은 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성으로만 구성되어야 하는 성질


 후보키(candidate key) 

- 릴레이션을 구성하는 속성들 중에서 각 튜플을 유일하게 식별하기 위해 사용하는 하나 혹은 그 이상의 속성들의 집합 

- 수퍼키와의 공통점 :  릴레이션에 있는 각 튜플을 고유하게 식별할 수 있어야 한다는 점 

- 수퍼키와의 차이점 :  최소한의 속성으로 구성된 유일성을 갖는 속성의 집합 


기본키 (Primary key : PK) 

- 후보키 중 튜플을 식별하는데 기준으로 사용하는 키 

- 후보키 중에서 선택한 것이기에 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성 

- Null 값을 가질 수 없음  

- 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없음 


*Null 값은 데이터베이스에서 아직 알려지지 않거나 모르는 

값으로써 “해당없음” 등의 이유로 정보 부재를 나타내기 위해 

사용하는, 이론적으로 아무것도 없는 특수한 데이터를 말한다. 


대체키 (Alternate key) 

- 후보키가 둘 이상일 때 기본키로 선택되지 않은 나머지 후보키 

- 보조키라고도 함 

- 사원번호를 기본키로 정의하였다면 주민번호가 대체키가 됨 

복합키 

- 하나의 칼럼이 후보키의 역할을 하지 못함 

- 두 개 이상의 칼럼이 합쳐져야 후보키의 역할을 하는 경우를 말함 



외래키 (Foreign Key) 

- 상호 관련이 있는 테이블들 사이에서 데이터의 일관성을 보장해 주는 수단 

 외래키의 필요성을 설명하기 위해서 다음과 같은 질문 

- CASE1 부서 릴레이션의 첫 번째 튜플이 삭제된다면 어떻게 될까? 

- CASE2 부서 릴레이션의 20번 부서 번호가 50으로 변경된다면 어떻게 될까? 

- CASE3 사원 릴레이션에 부서 번호 60인 사원이 삽입된다면 어떻게 될까? 



2. 무결성 제약조건 

개체 무결성

- 개체가 결점이 없음을 의미 

- 결점이 없는 무결한 개체가 되려면 데이터베이스에 저장되어 관리될 때 본질적으로 서로 구별될 수 있어야 함 

- 개체를 유일하게 식별하기 위해서는 당연히 식별자가 반드시 있어야 함 


릴레이션을  구성하는  속성  중의  하나를  기본키로 

지정하여 널(NULL) 값이나 중복된 값을 가질 수 없는 

속성을  갖도록 하여  언제  어느  때고  개체가 유일하게 

식별 가능하도록 하는 것이 ‘개체 무결성 제약조건’이다. 

- 기본키 값이 널 값을 갖게 된다면 튜플을 유일하게 식별할 수 없게 됨 

- 튜플을 유일하게 식별할 수 없게 되면 서로 구별할 수 없는 개체가 존재하게 된다는 의미가 되기에 개체 무결성에 위배됨 

- 기본키의 유일한 식별성을 잃지 않도록 하기 위해서는 중복되는 값을 갖지 말아야 함 

- 동시에 널 값 역시 포함되어서는 안 된다. 

- 특정 개체가 무결성을 유지하도록 하기 위해서 릴레이션을 생성하는 데

이터 정의문에서 어떤 속성이 릴레이션의 기본키인지를 알려주어야 함 

- 기본키로 제약조건을 지정한 속성은 널(NULL) 값이나 중복된 값을 가질 수 없음 

   

 예 

    ‘사원’ 릴레이션에서 ‘사원번호’가 기본키로 정의되면 튜플을 추가할 때 

‘주민번호’나 ‘  성명’ 필드에는 값을 입력하지 않아도 되지만 ‘사원번호’ 

속성에는 반드시 값이 입력되어야 한다. 또한 ‘사원번호’ 속성에는 이미 한 

번 입력한 속성값을 중복하여 입력할 수 없다. 


참조 무결성 

- 참조 무결성은 릴레이션 간에 적용되는 제약조건 

- 릴레이션 모델에서는 두 객체 간의 관계를 외래키 혹은 릴레이션으로 표현함 


외래키를 통해 릴레이션은 참조할 수 없는 외래키 값을 가질 

수  없도록  함으로써  두  테이블  간의  데이터  무결성을 

유지하는 것을 ‘참조 무결성 제약조건’이라고 한다. 


예 

‘사원’ 릴레이션의 ‘부서 번호’ 속성에는 ‘부서’ 릴레이션의 

‘부서 번호’ 속성에 없는 값은 입력할 수 없다. 


 참조 무결성 제약조건의 유지 

- 두 테이블 간에 외래키에 의한 참조 관계에 있고 두 테이블 간 데이터 불

일치가 발생하는 상황이 될 때, DBMS는 제한(restrict), 연쇄(cascade), 

널 값으로 대체(nullify)와 같은 조치를 취할 수 있다. 

 부서테이블의 첫 번째 튜플을 삭제하려 할 때 

- 제한(restrict)은 삭제하려는 튜플의 부서 번호 값을 사원 테이블에서 가

지고 있는 튜플이 있으므로 삭제 연산을 거절 

- 연쇄(cascade)는 삭제된 부서 번호 값을 갖는 사원 테이블의 튜플도 함께 삭제 

- 널 값으로 대체(nullify)는 삭제연산을 수행한 뒤 삭제된 부서 번호 값을 

갖는 사원 테이블의 튜플에서 부서 번호를 null 값으로 대체