
- 릴레이션 : 릴레이션(Relation)은 데이터들의 표(Table)의 형태로 표현한 것
- 튜플 : 릴레이션을 구성하는 각각의 행, 속성들의 집합으로 구성된다.
튜플의 수 = 카디널리티(Cardinality)
- 속성 : 개체의 특성을 기술한 것
속성의 수 = 차수(Degree)
1. 후보키
- 기본키가 될 수 있는 키를 후보키라고 한다.
- 모든 릴레이션은 반드시 하나의 후보키를 가지고 있어야 한다.
- 유일성과 최소성을 만족한다.
- 즉, "최소한"의 속성의 집합니다.
- ex)
학번은 후보키이다.
주민등록번호는 후보키이다.
이름은 후보키가 아니다. 이름을 가지고는 유일하게 식별할 수 없다.
학년은 후보키가 아니다. 학년을 가지고는 유일하게 식별할 수 없다.
신장은 후보키가 아니다.
학과는 후보키가 아니다.
[학번 + 이름]은 후보키가 아니다. 학번을 가지고 유일하게 식별할 수 있기 때문에 불필요한 속성이 있는 것은 후보키가 아니다.
2. 기본키
- 후보키 중에 메인으로 선택된 키 (DBA가 선정)
- null 값을 가질 수 없다. (개체 무결성)
- 기본키로 설정된 속성에는 데이터가 중복될 수 없다.
- 최소성을 가진다.
- ex)
학번을 기본키로 설정한다면 '89001'은 다른 학번으로 쓸 수 없다.
3. 대체키
- 기본키를 제외한 나머지 후보키들을 말한다.
- 보조키라고도 한다.
- ex)
후보키가 주민등록번호와 학번일때 기본키가 학번이라면 주민등록번호는 대체키가 된다.
4. 슈퍼키
- 각 행을 유일하게 식별할 수 있는 속성의 집합이다.
- ex)
학번은 슈퍼키이다.
주민등록번호는 슈퍼키이다.
이름은 슈퍼키가 아니다. 이름을 가지고는 유일하게 식별할 수 없다.
학년은 슈퍼키가 아니다. 학년을 가지고는 유일하게 식별할 수 없다.
신장은 슈퍼키가 아니다.
학과는 슈퍼키가 아니다.
[학번 + 이름]은 슈퍼키이다. 이 점이 후보키와는 다르다.
5. 외래키
- 관계를 맺고 있는 R1과 R2라는 테이블에서 R1이 참조하고 있는 R2의 기본키를 R1의 외래키라고 한다.
- 참조 관계를 표현하는데 중요한 도구로 사용된다.
- 외래키로 지정되면 참조테이블의 기본키에 없는 값을 지정할 수 없다. (참조무결성)
*최소성과 유일성
유일성 : 하나의 키값으로 튜플을 유일하게 식별할 수 있는 성질
ex)
"주민번호, 나이, 사는곳, 혈액형"이라는 속성에서 나이, 사는곳, 혈액형은 중복될 수 있는 속성이다. 하지만 주민번호는 절대 중복할 수 없다. 이렇게 각각의 튜플을 구분할 수 있는 성질을 유일성이라고 한다.
최소성 : 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질
ex) 사원번호(유일성) + 주민등록번호(유일성) = 최소성을 만족시키지 않는다.
"주민번호, 나이, 사는곳, 혈액형"이라는 속성에서, 주민등록+혈액형 의 조합으로 유일하게 식별할 수 있다. 하지만 주민등록 하나만으로도 개개인을 식별할 수 있으므로 혈액형을 빼면 해당 키는 최소성을 만족한다.
참고자료
1) https://computer-science-student.tistory.com/194
2) https://limkydev.tistory.com/108
3) https://velog.io/@00yubin00/DB-%ED%82%A4%EC%9D%98-%EC%A2%85%EB%A5%98-%EC%8A%88%ED%8D%BC%ED%82%A4-%ED%9B%84%EB%B3%B4%ED%82%A4-%EA%B8%B0%EB%B3%B8%ED%82%A4-%EB%8C%80%EC%B2%B4%ED%82%A4-%EC%99%B8%EB%9E%98%ED%82%A4