Info > Data Mining > 3-4. RDB > 관계형 데이터 모델


▷▶ 관계형 데이터 모델 ( relational data model )

 

전통적인 세 실행 데이터 모델(관계형, 계층형, 그물형) 중 가장 최근에 개발. 구조의 간단명료함과 조작의 유연성으로 업계에서 가장 널리 체택되고 있는 데이터 모델. 코드( codd 1970 )에 의해 처음 제안.

 

1.1 구조

- 관계형 데이터 모델에서 사용되는 유일한 데이터 구조는 관계이며 이는 이차원 평면 테이블이다.

<그림 1.1> 관계형 데이터 모델의 관계의 예

직원

직원 번호

직원 이름

생년월일

호봉

e01

e02

.

.

김준규

이승휘

.

.

49/3/5

52/12/23

.

.

32

30

.

.

 

1.1.1 관계의 특성

·각 열은 동일한 속성에 관한 값을 갖는다.
·테이블의 각 셀의 값은 반드시 단일값이어야 한다.
·각 열은 고유한 이름(속성이름)을 갖는다.
·각 열의 순서는 중요하지 않다.
·식별자 속성 열은 동일한 값을 가질 수 없으며 이 열의 값에 의해 각 행은 구별될 수 있다. ( 주키 : primary key )
·각 행의 순서는 중요하지 않다.

1.1.2 타플, 속성, 영역

·타플 (tuple) : 관계형 데이터 모델에서 행
·속성 (attribute) : 관계형 데이터 모델에서 열 : 속성값의 수가 n 개인 경우 이 관계의 차수는 n이 되며 n-타플 관계라 부른다.
·원소수 (cardinality) : 한 관계에 포함된 타플의 총 수
·영역 (domain) : 특정 속성이 가질 수 있는 가능한 값의 집합 : 영역을 나타내기 위해 영역을 형성하는 데이터 값이 추출될 수 있는 데이터형을 명시하는 방법을 사용.

 

1.2 제약  - 데이터베이스에 저장되는 데이터에 대한 규칙

·본질적 제약 : 데이터 모델의 구조적인 특성으로 인한 제약으로 데이터 베이스의 기본구조를 유지하기 위해 필요
·내재적 제약 : 데이터의 의미를 정확히 표현하고 오류를 방지하기 위해 데이터베이스 스키마에 구체적으로 내재시키는 제약
·명시적 제약 : 데이터베이스 스키마에 표현할 수 없어서 프로그램에 명시하거나 사용자의 수작업에 의존할 수 밖에 없는 제약

 

1.2.1 본질적 제약

① 타플의 비중복성 <= 주키를 사용

·주키의 특성 : 유일성( unique identification )/최소성( minimality )/공값을 가질 수 없다 - 개체 무결성 제약/한 항목 또는 그 이상의 항목이 결합되어 주키의 역할을 수행할 수 있다 (합성키)
·후보키 : 한 관계에서 주키의 역할을 수행할 수 있는 하나이상의 항목들
·대리키 : 주키로 선정되지 않은 후보키

② 테이블의 각 셀이 단일값을 갖는다 - 만약 어느 셀이 다중값을 가지는 경우에는 정규화 과정을 통해서 단일값을 갖는 셀로 전환

 

1.2.2 내재적 제약

① 영역 제약 ( domain constraints ) : 허용되는 데이터값에 관한 제약, 데이터형의 제약, 데이터 길이 제약, 데이터값의 범위, 데이터 틀
② 참조 무결성 제약 : 두 관계의 타플간의 일관성을 유지하기 위하여 명시하는 제약, 관련된 관계를 서로 참조함으로써 데이터베이스와 무결성을 제고시키기 위한 내재적 제약

 

<그림 1.2>교수와 학생 관계

교수

학생

교수번호

교수이름

전공

1
2
3
 

이정태
김순구
박준서
 

정보시스템
회계학
인공지능
 

학번

학생이름

학과

지도교수번호

101
102
103
104

심순보
김종철
이명식
홍신희

경영
전산
경영
경영

1
3
1
2

 

·외부키 : 한 관계의 비주키 속성값이 다른관계의 주키 또는 주키의 일부의 속성값 영역에 대해 제약받는 경우 이 비주키 속성을 외부키라 한다

<그림 1.3> 관계스키마 상에서 외부키

교수 ( 교수번호, 교수이름, 전공 )
학생 ( 학번, 학생이름, 학과, 지도교수 번호 )

 

·교차참조키 : 한 관계에서 주키(합성키)를 구성하는 한 속성값이 다른 관계의 주키 또는 주키의 일부 속성값 영역에 의하여 제약을 받는 경우 이속성을 교차참조키라 한다

<그림 1.4> 부품, 납품업자, 주문의 관계 스키마

부품 ( 부품번호, 부품명 )         납품업자 ( 납품업자 번호, 납품업자명 )

주문 ( 부품번호, 납품업자 번호, 주문량 )

 

·참조 무결성 제약은 참조하는 관계의 타플의 값이 반드시 참조되는 관계의 타플에 존재해야 한다

·참조 무결성 제약이 발생하는 경우와 대책

▶ 삽입 : 참조하는 관계에 새로운 타플을 삽입하고자 하는 경우 참조되는 관계를 검사하여 해당 타 플이 존재하는 경우에만 삽입이 가능

예) <그림 1.2>의 학생 관계에 다음과 같은 타플을 삽입한다

학번 : 105
학생이름 : 이형철
학과 : 화학
지도교수 번호 : 4
--> 현재 교수 관계에 4번 지도교수 타플이 존재하지 않기 때문에 학생관계에 이 타플을 삽입하는 것을 허용해서는 안된다

예) 아직 지도교수가 배정되지 않은 학생의 데이터를 저장할 때

--> 해당 외부키의 값을 공값으로 비워둔다.

<그림 1.5> 외부키 값으로 공값을 배정한 타플의 추가

학번

학생이름

학과

지도교수번호

101
102
103
104
105

심순보
김종철
이명식
홍신희
이형철

경영
전산
경영
경영
화학

1
3
1
2
ψ


▶삭제 : 참조되는 테이블의 타플의 삭제는 그 타플을 참조하는 테이블의 타플이 존재하는 한 허용해서는 안된다.

<삭제와 관계되는 참조 무결성의 해결방안 >
·삭제 금지
·공값화 : 참조하는 테이블의 해당 타플의 값을 공값으로 배정
·참조삭제 : 참조하는 테이블의 해당 타플을 모두 삭제

 

▶수정 : 참조하는 관계의 타플의 값을 수정하고자 하는 경우에, 수정될 값이 참조되는 관계의 해당타플에 존재하는 경우에만 수정이 가능하다. 참조되는 테이블의 타플의 수정은 그 타플을 참조하는 테이블의 타플이 존재하는 한 허용해서는 안된다

 

1.3 개체 - 관계성도의 관계형 데이터 모델로의 전환

1.3.1 개체 집합의 전환

규칙 1 ( 개체집합의 전환 )

모든 개체 집합은 관계로 전환된다. 이때 관계에는 반드시 주키가 지정되어 있어야 한다.

<그림 1.6> 지도교수와 학생 개체 집합

==> 관계로 전환
지도교수 ( 교수번호, 교수이름, 전공 )
학생 ( 학번, 학생이름, 학과, 학년 )

1.3.2 이원 관계성 집합의 전환

규칙 2 ( 양방향 모두 완전 관계성인 1:1의 관계성 집합의 전환 )

두 관계는 하나의 관계로 통합되면 통합된 관계의 주키는 통합되기 전 두 관계의 주키중 어느것을 선택하여도 상관없다.

==>관계로의 전환
지도교수-학생 ( 교수번호, 교수이름, 전공, 학번, 학생이름, 학과, 학년 )
학생-지도교수 ( 학번, 학생이름, 학과, 학년, 교수번호, 교수이름, 전공 )

 

규칙 3 ( 한 방향만 완전 관계성인 1:1의 관계성 집합의 전환 _

부분 관계성 측 관계의 주키를 완전 관계성 측에 외부키로 포함시킨다.

==>관계로의 전환
지도교수 ( 교수번호, 교수이름, 전공)
학생 ( 학번, 학생이름, 학과, 학년, 교수번호 )

 

규칙 4 ( 양방향 모두 부분 관계성인 1:1의 관계성 집합의 전환 )

기존 두 관계의 주키로 구성되는 새로운 관계를 생성하며 새로운 관계의 주키는 기존 두 관계의 주키중 어느 것을 사용하여도 상관없다.

==>관계로의 전환
지도교수 ( 교수번호, 교수이름, 전공)
학생 ( 학번, 학생이름, 학과, 학년 )
지도교수-학생 ( 교수번호, 학번 )

 

규칙 5 ( 다 측이 완전 관계성인 1:다의 관계성 집합의 전환 )

1측 관계의 주기를 다 측 관계에 외부키로 포함시킨다.

==>관계로의 전환
지도교수 ( 교수번호, 교수이름, 전공)
학생 ( 학번, 학생이름, 학과, 학년, 교수번호 )

 

규칙 6 ( 다 측이 부분관계성인 1:다의 관계성 집합의 전환 )

기존 두 관계의 주키로 구성되는 새로운 관계를 생성하며, 새로운 관계의 주키로는 다 측 관계의 주키를 사용한다.

==>관계로의 전환
지도교수 ( 교수번호, 교수이름, 전공)
학생 ( 학번, 학생이름, 학과, 학년 )
지도교수-학생 ( 학번, 교수번호 )

 

규칙 7 ( 다:다의 관계성 집합의 전환)

기존 두 관계의 주키로 구성되는 새로운 관계를 생성하며, 새로운 관계의 주키로는 기존 두 관계의 주키룰 결합한 합성키를 사용한다.

==>관계로의 전환
지도교수 ( 교수번호, 교수이름, 전공)
학생 ( 학번, 학생이름, 학과, 학년 )
지도교수-학생 ( 교수번호, 학번 )

 

1.3.3 삼원 관계성 집합의 전환

·삼원 관계성 집합 : 세 개체 집합의 개체 예들 간에 동시에 발생하는 관계성 집합

규칙 8 ( 삼원 관계성 집합의 전환 )

기존 세 관계의 주키로 구성되는 새로운 관계를 생성하며, 새로운 관계의 주키로는 대응비에 따라 기존 관계의 주키 또는 주키들이 결합된 합성키가 사용된다.

 

<그림 1.7> 삼원 관계성 집합

 

==> 관계로의 전환
납품업자 ( 납품업자 번호, 전화 )
제품 ( 제품 번호, 가격 )
창고 ( 창고 번호, 위치 )
납품업자-제품-창고 ( 납품업자 번호, 제품번호, 창고번호, 수량 )

 

1.3.4 일반화 관계성 집합의 전환

규칙 9 ( 일반화 관계성 집합의 전환 )

상위 개체 집합을 나타내는 관계의 주키를 하위 개체 집합을 나타내는 관계의 주키로 다시 사용한다. 그리고 상위 개체 집합에 가 개체의 유형을 표시하는 속성을 추가한다.

 

<그림 1.8> 일반화 관계성 집합

==>관계로의 전환
직원 ( 직원번호, 직원이름, 호봉, 직원유형 )
생산직원 ( 직원번호, 기술분야 )
영업직원 ( 직원번호, 최대 할인율, 할당액 )


Info > Data Mining > 3-4. RDB > 관계형 데이터 모델