
관계 데이터 구조
기본 개념
- 모든 데이터를 테이블로 저장함
- 테이블로 표현 불가능한 데이터는 저장 불가
릴레이션
- 테이블을 릴레이션이라고 함
- 릴레이션은 속성으로 구성됨
- 속성은 원자값(가장작은의미를 가지는 값)이거나 null 이여아함
- 다중값 속성을 허용하지 않음
(가장 작은 의미를 가지는 값이 여러개 들어가지 않음)
릴레이션의 수학적 정의
스키마와 데이터
스키마
- 관계 스키마 == 릴레이션 스킴 == 테이블
- ex) 대학 관계 스키마 = [학생, 과목, 등록]
- 학생(학번,이름,학년,학과)
- 과목(과목번호,과목명,학점,학과,담당교수)
- 등록(학번,과목번호,성적,중간시험,기말시험)
데이터
- 관계 데이터베이스 == 릴레이션 인스턴스 == 투플
- ex) '조창훈'이 'C언어'를 수강하여 성적 'a'를 받음
(3개 테이블에 나눠서 저장함)
- 조창훈은 학생테이블에 저장이 됨
- C언어는 과목테이블에 저장이 됨
- 조창훈이 C언어에서 받은 성적 A는 등록 테이블에 저장이 됨
관계 제약
관계 제약의 목적
데이터의 건전한 상태를 유지하기 위함
- 건전한 상태
- 데이터베이스에 저장된 데이터는 정확하고, 데이터 간의 불일치가 없어야한다.
- 데이터베이스 건전성 유지
- 데이터베이스는 어느 시점에도 항상 건전한 상태를 유지해야한다.
- 이를 위해서 "관계 제약"이라는 것이 있다.
- 데이터를 갱신하기 전에, 데이터 갱신이 건전성을 훼손하지 못하도록
아래와 같은 방법이 사용된다.
- 부적절한 데이터 갱신을 거부
- 갱신 연산 후 관련 데이터를 내부적으로 변경
기본키와 외래키
기본키(primary key, PK) 혹은 (Key)
- 테이블에서 투플을 유일하게 식별할 수 있는 속성의 집합
- 두 개의 속성을 합쳐서 PK로 사용하기도 한다.
- ex) 성적의 경우, 학번과 과목번호를 합쳐서 pk로 사용
외래키(foreign key, FK)
- 어떤 테이블의 기본키에 있는 값을 갖는 속성의 집합
- 외래키는 키가 아님
- PK/FK인 경우(기본키이면서 동시에 외래키)인 경우도 있음
- PK와FK가 같은 테이블에 있을 수도 있음
부모-자식 테이블
- 자식 테이블(FK가 정의된 테이블)
- 부모 테이블(FK가 참조하는 PK가 정의된 테이블.)
-PK가 FK에 의해서 참조됨

무결성 제약
개체 무결성
참조 무결성
- FK값은 부모테이블의 PK와 같거나 NULL값을 가짐