반응형

관계형 모델과 무결성 제약조건

 

관계형 모델

관계형 모델은 릴레이션 단위로 다양한 연산을 사용해 쿼리를 수행하는 데이터베이스 모델을 나타낸다.

 

릴레이션 단위라는 표현을 사용했는데 릴레이션이 무엇일까?

릴레이션(Relation)

https://rebro.kr/143

릴레이션은 위 그림과 같이 행과 열로 이루어진 하나의 테이블을 릴레이션(relation)이라고 한다.

우리가 흔히 행이라고 일컫는 것을 튜플(tuple)이라고 하며 각 열을 속성(attribute)라고 한다.

그리고 위 그림에서 현재 Relation은 학생이고, 스키마는 릴레이션과 각 속성을 나열한 것으로 표기하자면 아래와 같다.

릴레이션 스키마: 학생(학번, 이름, 학년, 전공)

그리고 기수(cardinality)와 차수(degree)라는 용어도 있는데 기수는 릴레이션에 있는 튜플의 개수이다. 그렇기 때문에 데이터가 삽입되거나 삭제될 때 혹은 수정될 때마다 변하는데 이러한 이유 때문에 카디널리티는 자주 변한다는 특성이 있다. 그리고 차수는 속성의 개수인데 속성은 한번 만들어지고 나면 거의 바뀌는 경우가 드물기 때문에 자주 변하지 않는 속성을 갖고 있다. 위 그림에서 기수는 3이고 차수는 4이다.

그리고 위 그림에서 학번의 경우 정수형, 이름의 경우 문자형과 같은 데이터 타입이 정해져야 하는데 이렇게 데이터 타입을 정해주는 것을 도메인이라고 한다. 예를 들면 C언어에서 정수형을 int라고 선언하면 정수형만 사용 가능한데 이런식으로 데이터 타입을 미리 지정하는 것을 도메인이라고 한다.

 

관계형 모델의 특징

관계형 모델에 대해서 간단히 살펴보았다. 그렇다면 이러한 관계형 모델은 어떤 특징이 있을까?

바로 아래와 같은 4가지 장점이 있다.

  1. 높은 데이터 독립성으로 데이터베이스의 논리 계층과 물리 계층을 명확하게 구분하여, 데이터와 사용자 간의 상호작용이 데이터 내부 구조에 영향을 받지 않는다.
  2. 모델의 구조가 단순하다.(엑셀과 같이 행과 열로 이루어진 테이블 형태)
  3. 집합 이론이라는 수학적 이론에 기반하여 모델이 강건함
  4. SQL이라는 간단한 비절차적 언어로 사용자는 데이터를 어떻게 찾을지는 필요 없고 원하는 데이터만 명시해도 됨

관계형 모델이 무결성을 유지하기 위해서는 몇가지 제약조건이 있다.

먼저 무결성이란 데이터의 내용이 서로 모순되는 것이 없고, 데이터베이스에 있는 제약을 완전히 만족하는 성질을 뜻한다.

예를 들면 도메인으로 정수형(INT)을 정의했는데 '가'라는 문자 형태(CHAR)의 단어가 입력된다면 무결성을 침해한 것이다.

 

무결성 제약조건

  1. 개체 무결성: 기본키(Primary Key)를 구성하는 어떠한 속성 값이라도 중복되는 값이나 NULL이 올 수 없다.
  2. 참조 무결성: 참조할 수 없는 외래키(Foreign Key) 값은 가질 수 없다. 참조하는 릴레이션의 기본키와 동일해야 하므로 NULL 또한 올 수 없다.
  3. 도메인 무결성: 각 속성 값은 반드시 정의된 도메인만을 가져야 한다.

*NULL Value: 아무것도 없는 특수한 데이터를 뜻한다. 값이 0이 아니라 값을 알 수 없는 것으로 공백 문자 또한 null이라고 할 수 없다.

 

무결성 제약조건에 기본키, 외래키와 같은 용어가 사용되었는데 다음 포스팅에서 여러 키들에 대해서 포스팅하도록 하겠다.