country와 city 테이블 관계
country 테이블과 city 테이블 역시 각각 Code와 CountryCode 칼럼이 조인 칼럼입니다. 두 테이블의 연결선은 점선인데, 이는 city 테이블의 CountryCode 칼럼이 기본 키 칼럼이 아니어서 그렇습니다. 그리고 city 테이블 쪽으로 삼지창 모양이 있으므로 이 역시 일대다 관계입니다. 이때 부모 테이블은 country, 자식 테이블은 city가 됩니다. 따라서 city 테이블에는 여러 개의 국가 코드가 들어갈 수 있습니다. 한 국가에는 여러 도시가 있을 테니까요.
외래 키
조인에 참여하는 두 테이블 사이에 관계를 맺을 때 외래 키를 사용합니다. 외래 키(foreign key)는 테이블 간 부모-자식 관계를 설정할 때 사용하는 제약조건입니다.
countrylanguage 테이블의 CountryCode 칼럼이 country 테이블의 Code 칼럼 값을 참조하도록 외래 키를 지정합니다. city 테이블 역시 CountryCode 칼럼이 country 테이블의 Code 칼럼 값을 참조하도록 외래 키를 지정합니다. 이렇게 서로 외래 키를 지정하면 테이블 간 관계가 설정되며 몇 가지 제약이 발생합니다. countrylanguage 테이블에 데이터를 넣을 때, CountryCode 칼럼에는 반드시 country 테이블의 Code 칼럼에 있는 값만 넣을 수 있습니다. 만약 없는 값을 넣으면 오류가 발생해 데이터 입력에 실패합니다. 부모-자식 관계이므로 자식이 생길 때 반드시 부모가 있어야 하는 것과 같습니다. city 테이블의 CountryCode 칼럼도 마찬가지입니다.
이처럼 ERD를 보면 테이블 간의 연결 관계를 쉽게 파악할 수 있습니다. 사실 테이블을 만들 때 가장 먼저 작성하는 것이 ERD입니다. ERD를 작성해 검증하고 보완해서 이상이 없다고 판단한 후에야 비로소 실제 테이블을 생성합니다.