[데이터베이스] 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)
댓글남기기