3. 데이터베이스 관계형 모델
1. 관계형 모델
-릴레이션(relation)으로 데이터를 표현하는 모델
데이터 표현이 단순하고 직관적 구조화 모델
현재 대다수 DBMS의 기초(Oracle, DB2, MySQL, MSSQL 등)
-릴레이션의 특징
1) 레코드의 유일성: 중복된 레코드의 존재가 불가능
2) 레코드의 무순서성: 레코드의 순서는 의미가 없음
3) 컬럼의 무순서성: 컬럼은 순서가 없고, 이름과 값의 쌍
4) 컬럼값의 원자성: 모든 값들은 나눌 수 없는, 단 하나의 의미
-키(key)의 역할
: 릴레이션의 레코드를 유일하게 식별하는 값
1) 키의 속성 : 유일성(Uniqueness), 최소성(Irreducibility)
2) 키의 종류
- 수퍼키(super key): 유일성 만족 ex) 학과이름, {학과이름, 단과대학}, 주소, 전화번호, {전화번호, 졸업학점}
- 후보키(candidate key): 유일성, 최소성 만족 ex) 학과이름, 주소, 전화번호
- 기본키(PK: primary key): 레코드의 구분을 위해 선택된 후보키 ex) 학과이름
- 외래키(FK: foreign key): 참조된 다른 릴레이션의 기본키-두 릴레이션에 포함된 레코드 간 연관성을 표현
- 관계형 모델의 제약조건
1) 영역 제약 조건: 컬럼에 정의된 영역(domain)에 속한 값으로만 컬럼값이 결정
2) 키 제약조건: 키는 레코드를 고유하게 구별하는 값으로 구성
3) 개체 무결성 제약조건: 어떠한 기본키 값도 널(null)이 될 수 없음
*널(null): '없음' 또는 '0'이 아닌 미지의 값에 대한 표현(입력된 적이 없는 값/적용 불가능한 값)
4) 참조 무결성 제약조건: 반드시 존재하는 레코드의 기본키만 참조 가능
2. ERD의 변환
- 관계형 DBMS(RDBMS)의 구현 모델에 맞춰 데이터의 구조와 관계를 표현, 작성된 ERD를 RDBMS가 수용 가능하는 구조로 변환
- 변환 방법
1) 개체 집합: 개체 집합은 릴레이션으로 변환
2) 약한 개체 집합: 강한 개체 집합의 키 속성을 약한 개체 집합의 릴레이션에 포함
3) 일대일 관계: 두 릴레이션 중에서 한 릴레이션의 기본키를 다른 릴레이션에서 외래키로 참조
4) 일대다 혹은 다대일 관계: '일'쪽의 기본키를 '다'쪽 릴레이션에서 외래키로 참조
5) 다대다 관계: 관계 릴레이션을 생성하고, 두 릴레이션의 기본키를 각각 참조하는 외래키를 복합키 형태의 컬럼으로 구성
6) 다중값 속성: 릴레이션의 기본키를 참조하는 외래키와 다중값 속성으로 별도의 릴레이션으로 구성
7) 관계 집합의 속성: 외래키가 위치한 릴레이션의 컬럼으로 삽입
3. 데이터 연산
- 관계 연산: 관계형 모델을 기반으로 구성된 릴레이션을 사용하여 새로운 릴레이션을 생성하는 표현
- 관계 대수
: 관계 연산을 정의하는 방법
주어진 릴레이션에서 필요한 릴레이션을 만드는 연산자로 구성
관계 대수 연산자는 새로운 임시 릴레이션을 생성
연산자를 중첩하여 연산 처리 절차를 표현
- 셀렉트 연산: 주어진 릴레이션에서 조건을 만족하는 레코드를 갖는 릴레이션을 생성
"σ조건(R)"
*R은 릴레이션
ex) σ소속학과='중어중문학과'(교수)
=> 중어중문학과의 교수 레코드를 출력
1) 조건: aΘb 또는 aΘv
*a,b 속성 이름 v상수 값 Θ 비교자
2) 조건의 결합: ∧(and), ∨(or)
- 프로젝트 연산: 기술된 컬럼만 갖는 릴레이션으로 재구성
" π<컬럼리스트>(R)"
* <컬럼리스트>: A1, A2, ..., An와 같이 R에 존재하는 컬럼을 ,(콤마)로 분리하여 기술
ex)π교수이름, 소속학과(교수)
=> 레코드 내 교수들의 교수이름, 소속학과 출력
- 집합 연산자
1) 수학적 집합 이론에서의 이진 연산
- 합집합: R∪S
- 교집합: R∩S
- 차집합: R-S
2) 릴레이션은 집합, 레코드는 집합에 포함된 우너소
3) 집합 연산자 사용 조건
- 릴레이션 R과 S의 차수가 동일
- 모든 i에 대해 R의 i번째 컬럼의 도메인과 S의 i번째 컬럼의 도메인이 반드시 동일
- 카티시언 프로덕트 연산: 두 릴레이션에 포함된 레코드 간의 모든 조합을 생성하는 이항 연산자
" R × S "
- 조인 연산: 두 릴레이션에서 조건을 만족하는 레코드를 결합한 레코드로 구성된 릴레이션을 생성
- 집계 함수 연산: 집계 함수를 값들의 집합 또는 레코드의 집합에 적용하는 연산