[데이터베이스] 2.1 관계형 데이터 모델
‘데이터베이스의 이해’를 읽고 정리한 글입니다.
릴레이션의 개념
관계형 데이터 모델 (relational data model)
- 테이블을 이용하여 데이터들을 정의하고 설명한 모델
 
| 이 름 | 전화번호 | 주소 | 생일 | 
|---|---|---|---|
| 홍길동 | 010-1234-5678 | NULL | NULL | 
| 이건우 | 010-2132-2345 | 서울 | 8월 23일 | 
| 이몽룡 | 010-3245-4368 | 부산 | 12월 14일 | 
✓ 관계형 데이터 모델에서는 테이블을 릴레이션이라고 한다. 
- 속성 (attribute) : 릴레이션을 구성하는 각 열
 - 튜플 (tuple) : 릴레이션을 구성하는 각 행
 
✓ 최근에는 릴레이션이라는 용어 대신에 단순히 테이블이라는 용어를 사용한다. 
- 필드 (field), 컬럼 (column) : 테이블을 구성하는 각 열
 - 레코드 (record), 행 (row) : 테이블을 구성하는 각 행
 
- ✓ 각 필드에는 입력 가능한 값들의 범위를 미리 정해놓아야 한다.
 - ➜ 도메인(domain)
 - 한 필드가 가질 수 있는 모든 값들의 집합
    
도메인의 각 값은 더 이상 분리할 수 없는 원자값(atomic value)이어야 한다.
 
✓ 널(null)
- 특정 필드에 대한 값을 알지 못하거나 아직 정해지지 않아 입력하지 못하는 경우의 값
 - 숫자 0이나 공백 문자와는 다르다.
 
테이블 스키마와 테이블 인스턴스
테이블 스키마 (table schema)
- 테이블의 정의에 따라 만들어진 데이터 구조
 - 데이터 구조는 테이블명과 그 내부에 정의된 필드들로 나타낸다.
 
신인생(학번, 주민등록번호, 이름, 주소, 학과명)
- 신입생은 테이블명이며 5개의 필드를 가지고 있다.
 
테이블 인스턴스 (table instance)
- 테이블 스키마에 현실 세계의 데이터를 레코드로 저장항 형태
 - 레코드들의 집합
 
| 이 름 | 전화번호 | 주소 | 생일 | 
|---|---|---|---|
| 홍길동 | 010-1234-5678 | NULL | NULL | 
| 이건우 | 010-2132-2345 | 서울 | 8월 23일 | 
| 이몽룡 | 010-3245-4368 | 부산 | 12월 14일 | 
✓ 차수 (degree)
- 
    
- 필드의 수 (열)
 - 단항 테이블 - 차수가 1
 - 이항 테이블 - 차수가 2
 - n항 테이블 - 차수가 n
 
 
✓기수 (cardinality)
- 레코드의 수 (행)
 
테이블의 특성
- 중복된 레코드가 존재하지 않는다.
 - 레코드 간의 순서는 의미가 없다.
 - 레코드 내에서 필드의 순서는 의미가 없다.
 - 모든 필드는 원자값을 갖는다.
 
키
키는 관계형 데이터 모델에서 매우 중요한 역할을 한다. 
키가 관계형 데이터 모델에서 특정 레코드를 구별하거나 탐색하기 위한 유일한 방법을 제공하기 때문이다.
학생 (학번, 주민등록번호, 이름, 주소, 학년, 학과명)
✓ 복합키 (composite key)
- 두 개 이상의 필드로 구성된 키
 
✓ 슈퍼키 (super key)
- 아무런 제약 조건 없이 레코드들을 식별할 수 있는 필드의 집합
 - 모든 테이블은 적어도 하나의 슈퍼키를 갖고 있다.
 - 
    
- 슈퍼키에는 레코드들을 구별하는데 필요 없는 필드도 포함될 수 있다.
 - 예) (주민등록번호), (학번, 주민등록번호), (주민등록번호, 이름) 등.. 
 - 모든 필드의 집합인 (학번, 주민등록번호, 이름, 주소, 학년, 학과번호)도 키가 된다.
 
 
✓ 후보키 (candidate key)
- 
    
- 최소한의 필드만으로 구성된 키
 - (학번, 주민등록번호)에서 (주민등록번호)를 제외하더라도 (학번)만으로 키를 구성할 수 있다.
 
 - 
    
- 레코드들을 식별할 수 있어야 하며 이 중 어떠한 필드라도 제외하면 키가 될 수 없는 집합
 - (이름, 주소)의 경우 이 중에서 어느 하나의 필드를 빼면 식별자의 역할을 할 수 없다.
 - 이름, 주소 각각 중복이 될 가능성이 있기 때문이다. 
 - 따라서, (이름, 주소)는 후보키가 된다.
 
 
✓ 기본키 (primary key)
- 후보키 중에서 식별자로 정의할 수 있는 키
 - 하나의 필드 또는 최소의 필드를 갖는 후보키를 기본키로 정하는 것이 좋다.
    
후보키 중에서 기본키를 결정하는 특별한 규칙은 없다.
이는 전적으로 테이블을 설계하는 설계자의 몫이다. 
✓ 키가 널이 될 수 있나?
기본키는 식별자의 역할을 한다. 
만약 기본키로 정의된 필드가 널을 갖게 되면 이러한 식별 기능을 상실하게 된다. 
따라서 기본키는 널이 될 수 없다. 
외래키
슈퍼키, 후보키, 기본키들은 하나의 테이블 내에서 정의된다. 
그러나 외래키는 두 테이블 간의 관계로부터 정의되는 개념이다.
- 학생 (학번, 주민등록번호, 이름, 주소, 학년, 학과번호)
 - 학과 (학과번호, 학과명, 과사무실)
 - 밑줄은 기본키를 구성하는 필드를 나타낸다.
 
여기서 학생 테이블의 학과번호 필드에 주목하자. 
학생 테이블의 학과번호에 나타나는 값은 학과 테이블의 학과번호에 존재해야 그 의미를 갖는다. 
여기서 학생 테이블의 학과번호 필드는 학생 테이블과 학과 테이블을 연결시켜주는 역할을 한다. 
➜ 이러한 필드를 외래키 (foreign key)라고 한다.
- 외래키를 갖고 있는 테이블 = 참조하는 테이블 (referencing table)
 - 외래키가 참조하는 기본키를 갖는 테이블 = 참조되는 테이블 (referenced table)
 
      
    
댓글남기기