ex) 고객 정보, 송장 정보, 주문 정보, 제품 정보
ex)고객은 제품을 주문한다 >>> 송장은 고객의 주문을 추적한다.
ex) 고객 송장 제품 테이블과 직원 테이블은 서로 연결할 것이 없으므로 직원 테이블은 여기서 빠져야 한다.
ex) 일반적으로 고객은 여러개의 송장을 가질 수 있고, 하나의 제품이 여러가지 송장에 나타날 수 있다. 그리고 송장이 여러 제품을 보유할 수도 있으니 고객과 송장은 일대다관계가 되며 송장과 제품은 다대다 관계가 된다.
근데 여기서 다대다 관계를 나타내려면 중간에 테이블이 하나 있어야 한다. (데이터 중복 방지)
그래서 중간테이블로 품목명 테이블을 만들어서 송장 하나가 여러 품목명을 보유할 수 있고, 제품을 여러 품목명에 나타낼 수 있다.
각 테이블에는 무슨 필드가 필요한지를 정한다. 각 테이블은 하나의 대상만을 가지고 테이블에 있는 모든 필드는 그 대상만을 기술한다. 예를 들어 고객 테이블의 필드는 한 고객에 대한 모든 정보를 저장한다. 그래서 각 고객에게는 식별번호를 할당해야 하는데, 데이터베이스에는 이것을 주요키 프라이머리 키라고 부른다. 제품 테이블에는 제품 식별번호와 각 제품에 대한 필드를 가져야 하고 송장 테이블에는 송장식별 번호와 주문날짜같은 필드를 가질 수 있다.
앞서서 송장 테이블에 고객 데이터를 표시하려면 관계를 생성할 수 있도록 두 테이블 간에 공통 필드가 있어야 한다. 그래서 고객 아이디가 공통 필드로 들어가는데 이를 외래 키, 외부 키라고 부른다. 고객 테이블에서는 고객 아이디는 주요 키이고 송장 테이블에서는 외부 키가 된다.
테이블의 필드는 관계를 통해 서로가 연결되기 때문에 두개의 테이블에 일치되는 정보들은 제거하는게 맞다.
테이블 간에 관계를 설정하면 해당 키 필드가 관계의 조건과 일치하는 데이터를 포함하게 된다.
<대충 계획에 맞춰서 짜본 테이블 연관관계>