데이터 모델이란? 물리적 혹은 추상적으로 존재하는 현실 세계를 단순화되고 정형화된 형태로 표현하는 하나의 방식 또는 규범. 실제 데이터가 갖는 특성을 살리며, 목적에 맞게 관심 있는 정보만을 단순화해 표현하는 방식(데이터에 대한 조작이 가능 해야함)
관계형 데이터 모델 : 테이블 형식을 이용해 데이터들을 정의하고 설명한 모델로, 실세계의 데이터를 누구나 직관적으로 이해할 수 있는 형태로 기술할 수 있는 간단한 방식을 제공. 테이블을 릴레이션(relation)이라 부름
릴레이션 : 수학적으로, 두 개 이상의 집합으로부터 각 집합을 구성하는 원소들의 순서쌍에 대한 집합을 의미
- 속성(attribute) : 필드 컬럼. 릴레이션을 구성하는 각 열의 이름 (예 : 주소록 릴레이션을 구성하는 속성 - 이름,전번,주소,생일)
- 튜플(tuple) : 레코드,행. 릴레이션의 각 행 (예 : 주소록 릴레이션의 한 튜플 - <홍길동,880-1234,서울,3/15>)
도메인 : 각 필드에 입력 가능한 값들이 범위. 즉, 각 필드가 가질 수 있는 모든 값들의 집합
원자값(더 이상 분리되지 않는 값) 이어야 함
(예 - 주소록의 도메인은 이름, 전화번호, 주소, 생일)
널(null) : 특정 필드에 대한 값을 알지 못하거나 아직 정해지지 않아 입력하지 못한 경우의 필드의 값. 0이나 공백 문자와는 다름
테이블 스키마 & 테이블 인스턴스
- 테이블 스키마 : 테이블 정의에 따라 만들어진 데이터 구조
R(A1,A2,...,An) - R : 테이블의 이름, A1,A2,...,An : 필드들의 이름
신입생(학번,주민번호,이름,주소,학과명) - 테이블의 이름 : 신입생, 필드들의 이름 : 학번,이름,주소...
- 차수(degree) : 테이블 스키마에 정의된 필드(=열)의 수 (차수 1 : 단항 테이블, 차수 2 : 이항 테이블, 차수 n : n항 테이블)
- 테이블 인스턴스 : 테이블 스키마에 현실 세계의 데이터를 레코드로 저장한 형태로,
스키마는 한 번 정의하면 거의 변함이 /없지만, 인스턴스는 수시로 바뀔 수 있음(레코드의 삽입, 삭제, 수정 등)
- 기수(cardinality) : 테이블 인스턴스 레코드(=행)의 수
테이블의 특성
- 중복된 레코드(=행)가 존재하지 않음 : 테이블 인스턴스는 레코드들의 집합 임
- 레코드 간 순서 의미 없음 : 테이블 인스턴스는 레코드들의 집합으로 첫 번째 레코드, 두 번째 레코드 란 표현은 의미 없음
- 레코드 내에서 필드(=열)의 순서는 의미 없음 : 테이블 스키마는 필드들의 집합으로 표현됨, 첫 번째 필드, 두 번째 필드란 표현은 의미 없음
- 모든 필드는 원자값(=더이상 분리되지 않는 값) 을 가짐
키 : 필드들의 일부로, 각 레코드들을 유일하게 식별해낼 수 있는 식별자로, 관계형 데이터 모델에서 특정 레코드를 구별하거나 탐색하기 위한 유일한 방법.
일반적으로 하나의 필드를 지정해 키로 지정하지만, 여러 개의 필드로 키를 구성할 수도 있음(두 개 이상의 필드로 구성된 키를 복합키 라고 함. 예를 들면, 신입생 테이블의 학번/주민등록번호 필드는 각 레코드간에 유일하므로 키가 될 수 있음(but, 학과명은 키가 될 수 x)
키의 필요성 : 레코드간의 순서가 의미가 없으므로 레코드를 구분하기 위해서 각 레코드의 값을 이용함
* 유일성 : 해당값으로 행을 찾아냄
수퍼키 : 아무런 제약 조건 없이 레코드들을 식별할 수 있는 필드의 집합 (하나 이상으로 이뤄진 것)
후보키 : 유일하게 식별하는 필드의 집합 중 최소한의 필드(하나라도 빼면 더 이상 키가 될 수 X).
기본키 : 후보키 중 식별자로 정의한 하나의 키. 되도록 하나의 필드로 구성된 후보키를 선정하는 것이 유리함. (테이블에서 행 구별해낼 수 있음)
키는 널(NULL) 값을 가질 수 없음!
: 기본키는 식별자의 기능을 함. 기본키로 정의된 필드가 널을 갖게 되면 이러한 식별 기능 상실
(예로, 두 개의 레코드에 대한 기본키 값이 동시에 널 이면 그들은 서로 구별할 수 없음)
외래 키(foreign key) : 어떤 테이블의 속성이 다른 케이블의 기본키 값을 갖고있는걸 외래 키 라고 함
다른 테이블의 기본 키를 참조하는 필드집합.
두 테이블의 스키마 R1,R2에 대해 – R1의 어떤 필드집합 FK(외래키)가 다음 두 조건을 만족하면, FK는 R2의 기본키인 PK(기본키)를 참조하는 R1의 외래키임
조건 1. FK의 필드들은 테이블 스키마 R2의 기본 키 PK와 동일한 도메인을 가짐
조건 2. R1의 각 레코드의 FK값은 R2의 레코드 중 하나의 PK값과 일치하거나 널이 됨
기본키는 널이 될 수 없지만, 외래키는 널이 될 수 있음(외래키가 널이라는 건 아직 결정되지 않았거나 알지 못하는 것)
- -R1. 외래 키를 갖고 있는 테이블 : 참조하는 테이블 (=자식테이블)
- -R2. 기본 키를 갖고 있는 테이블 : 참조되는 테이블 (=부모테이블)
R1이 R2를 참조한다. -> 이런 식으로 씀! (-> 외래키는 기본키에 종속됨)
외래키는 참조되는 테이블의 기본키를 참조해야함(일반필드를 참조하는 것이 아님)
관계형 데이터베이스 : 관계형 데이터 모델에 기반해 하나 이상의 테이블로 실세계를 표현한 데이터베이스 (관계형 데이터 모델을 실세계에서 실체화 한 것)
-> 실제 컴퓨터 내부에서 데이터를 어떤 방식으로 저장할 것인가에 대한 물리적인 구조를 정의하는 것이 아니라 개념적으로 정의. 실세계를 관계형 데이터 모델이란 추상적 도구를 이용해 표현한 것
-> 관계형 데이터 베이스는 여러 개의 테이블들의 집합임
- 데이터베이스 스키마 : 테이블 스키마(테이블의 구조를 정의한 것) 의 집합
- 데이터베이스 인스턴스 : 테이블 스키마들에 대한 테이블 인스턴스의 집합
테이블은 스키마+인스턴스로 구성돼있는 것!