candidate key 중 선택한 main key로써, 각 row를 unique하게 구분하는 column(또는 column의 집합)을 말합니다. 그래서 기본키는 Null 값을 가질 수 없고, 중복된 값을 가질 수 없습니다. 기본키는 table당 1개만 지정해야합니다.
table 중 데이터베이스에서 사용되기 위한 조건을 갖춘 것이 relation입니다.
Relation의 제약 조건 중 가장 자주 등장하는 조건은 다음과 같습니다.
1. table의 cell은 단일 값을 갖는다.
2. 어떤 두 개의 row도 동일하지 않다.
하지만 통상적으로 relation과 table이란 용어를 구분하지 않고 사용하기도 합니다.

Super Key(슈퍼키)는 각 row를 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합입니다. 슈퍼키는 유일성만 만족하면 슈퍼키가 될 수 있습니다.
Candidate key(후보키)는 Super key 중에서 더이상 쪼개질 수 없는 Superkey를 Candidate Key라고 합니다. 즉 각 row를 유일하게 식별할 수 있는 최소한의 속성들의 집합입니다.
Primary key(기본키)는 candidate key 중 선택한 main key로써, 각 row를 구분하는 유일한 열을 말합니다. 그래서 기본키는 Null 값을 가질 수 없고, 중복된 값을 가질 수 없습니다. 기본키는 table당 1개만 지정해야합니다.
Alternative key(대체키) 는 후보키가 두 개 이상일 경우, 기본키로 지정이 되지 못하고 남은 후보키들을 말합니다.

관계형 데이터베이스에서 양쪽 entity 모두가 서로에게 1:N 관계를 갖는 구조를 말합니다.
관계형 데이터베이스에서 하나의 entity(table)가 관계를 맺은 entity의 여러 객체를 가질 수 있는 구조를 말합니다.
두 table간의 관계를 mapping cardinality로 표현하고, 종류는 크게 다음과 같습니다.
실무에서 가장 자주 등장하는 1:N 구조인 고객-주문 관계를 살펴보겠습니다.


1:N 구조에서는 보통 primary key - foreign key를 사용하여 관계를 맺습니다.
Foreign key(외래키)는 다른 table의 Primary key column과 연결되는(참조되는) table의 column을 의미합니다. 즉, 두 table을 연결할 때 한 table의 외래키가 다른 하나의 table의 기본키가 됩니다.
그림의 예시와 같은 상황에서 고객의 정보가 변경된다고 해도, 주문내역 table은 수정할 필요가 전혀 없게 되어 효율적인 데이터베이스 운영이 가능해집니다.
관계형 데이터베이스에서 양쪽 entity 모두가 서로에게 1:N 관계를 갖는 구조를 말합니다.
N:M 구조에서는 보통 새로운 table(Mapping table)을 통해서 관계를 맺습니다. 가장 친숙한 N:M 구조인 학생-수업 관계를 살펴보겠습니다.

