1. 테이블의 특성
1) 중복된 레코드가 존재하지 않는다.
- 테이블 인스턴스는 레코드들의 "집합"이다.
중복된 레코드(속성 값이 모두 같은 레코드)가 있더라도
테이블 인스턴스는 집합이므로 하나의 레코드로 본다.
2) 레코드간의 순서는 의미가 없다.
- 테이블 인스턴스는 레코드들의 "집합"이므로 순서는 의미가 없다.
3) 레코드 내에서의 필드의 순서가 의미가 없다.
- 테이블 스키마는 필드들의 "집합"이므로 순서가 의미 없다.
4) 키가 필요한 이유
- 레코드 간의 순서가 의미가 없으므로 레코드를 구분하기 위해서 각 레코드의 값을 이용한다.
- 즉 키는 객체의 식별 등을 위해 사용하는 속성의 집합이다.
5) 키(key)
- 데이터를 검색, 입력, 수정, 삭제하기 위해서는 데이터를 식별할 수 있어야 한다.
따라서 테이블 인스턴스는 속성의 값에 따라 식별한다.
즉 키는 개체를 식별하기 위한 속성의 집합이다.
2. 키(key)
1) 슈퍼키(Super Key)
- 개체 집합에서 어떤 개체를 유일하게 가리킬(식별할) 수 있는 하나 이상 속성의 집합
- 모든 레코드에서 대해서 어떤 속상 집합의 값들이 모두 다르다면
해당 속성 집합은 슈퍼키가 된다.
- 어떤 테이블에서 어떤 키가 슈퍼키가 될지는 상황과 조건에 따라 결정된다.
2) 후보키(Candidate Key)
- 주어진 슈퍼키의 속성에서,
속성을 하나라도 뺀다면 슈퍼키가 될 수 없는 경우 이 속성의 집합을 후보키라 한다.
→ minimal super key(최소성)
다시 말해 속성을 모두 다 가지고 있어야만 슈퍼키가 된다면 후보키이다.
- 후보키는 슈퍼키의 식별성에 최소성을 더한 것이다.
- 속성 하나짜리 슈퍼키는 바로 후보키가 된다.
3) 기본키(Primary Key)
- 레코드 식별의 기준이 되는 속성 집합이라 할 수 있다.
- 슈퍼키들 중에서 후보키를 고른다.
만일 후보키가 하나 뿐이면 그것이 저절로 기본키가 된다.
만일 주어진 집합에 후보키가 둘 이상이 있으면,
데이터베이스를 설계할 때 그 가운데 하나를 기본키로 고르고 나머지는 후보키가 된다.
- 기본키는 테이블마다 하나씩 정하는 것이 좋다.
(다수의 DBMS에서 기본키를 정하면 그 기본키를 가지고 primary index 구조를 만들어준다.)
- 기본키는 null이 될 수 없다.
(예를 들어 휴대폰 번호는 기본키가 될 수 없다.
휴대폰을 가지고 있지 않은 사람도 있을 수도 있기 때문에
그런 경우 null이 될 수 있으니 기본키가 안된다.)
4) 외래키(Foreign Key)
- 다른 테이블에서 기본키인 속성의 집합이 주어진 테이블에 있을 때,
이 속성의 집합을 주어진 테이블에서 외래키라고 한다.
- 외래키는 null이 될 수도 있다.
- 외래키는 참조키라고도 한다. 즉 다른 테이블과의 관계를 표현하기 위한 것이기도 하다.
- 외래키는 참조 무결성을 지켜줄 수 있다.
'CS > 데이터베이스 DB' 카테고리의 다른 글
[데이터베이스] SQL - select, where 명령어 (0) | 2022.04.22 |
---|---|
[데이터베이스] 관계대수 (relational algebra) (0) | 2022.04.12 |
[데이터베이스] 관계형 데이터 모델(relation data model) (0) | 2022.04.06 |
[데이터베이스] 데이터베이스(database) (0) | 2022.04.06 |
[데이터베이스] 데이터(data) (0) | 2022.04.06 |