[ER model] 데이터 요구사항으로부터 ER 모델을 사용하여 ERD를 생성 ERD로부터 relational 모델을 사용하여 relation schema를 생성 ERD는 전체 데이터의 개략적인 모습을 알 수 있다. ER모델에서 중요한 두 요소는 엔티티와 릴레이션쉽이다. 엔티티는 현실세계에서 존재하는 어떤 것 엔티티은 애트리뷰트들로 구성된다. 애트리뷰트는 3가지 관점으로 다음과 같이 분류된다

엔티티는 (정규, 강)엔티티와 약한 엔티티로 분류된다. 정규 엔티티는 현실 세계에서 독립적으로 존재하는 어떤 것 약한 엔티티는 현실 세계에서 종속적으로 존재하는 어떤 것 구체적으로 어떤 엔티티(소유 엔티티)와 관계를 맺어야만 존재할 수 있다. 그 관계를 식별관계(identifying relationship)라 한다, 즉 소유 엔티티와 관계를 통해서 유일하게 식별할 수 있다. 식별 관계없이 약한 엔티티 집합 전체에서는 유일하게 식별할 수 없다.(키가 없을 수 있다) 약한 엔티티 전체 집합이 아닌 식별관계로 제한한 부분집합에서는 키가 된다.(부분키)

릴레이션쉽은 어떤 엔티티가 다른 엔티티와 관계를 맺는 것 릴레이션쉽은 차수(degree)에 따라 이진 또는 삼진으로 분류된다.(4진 이상은 여러 이진으로 표현 가능) 이진 릴레이션쉽을 좀 더 자세이 설명하기 위한 요소로 카디날러티와 참여가 있다. 카디날러티는 하나의 엔티티가 다른 엔티티와 관계를 맺는데 몇 번(1, N) 관계를 맺는지 설명한다. 이진 릴레이션에서 카디날러티는 1:1, 1:N, M:N으로 구분된다. 전체 참여는 모든 엔티티가 다른 엔티티와 관계를 맺고 부분 참여는 어떤 엔티티는 다른 엔티티와 관계를 맺지 않는다.

[Relational model] 릴레이션쉽은 차수에 따라 이진 릴레이션쉽과 삼진 릴레이션쉽으로 분류 된다. 이진 릴레이션쉽은 카디널리티(1:1, 1:N, M:N)와 참여에 따라 릴레이션 스키마 생성이 달라진다. 삼진 릴레이션쉽은 카디널리티와 참여가 애매한 부분이 있어 잘 사용하지 않는다.

관계모델은 엔티티와 릴레이션쉽을 릴레이션으로 표현한다. 엔티티 타입은 릴레이션 스키마로 표현한다. 엔티티 집합은 릴레이션의 튜플로 표현한다. 릴레이션쉽은 관계를 맺은 엔티티의 기본키를 참조함으로써 표현한다. (1) 한 릴레이션 스키마에 상대 릴레이션 스키마의 키 애트리뷰트(외래키)를 추가하고, (2) 그 애트리뷰트의 값으로 상대 엔티티를 참조한다. 릴레이션쉽 타입은 애트리뷰트 또는 릴레이션 스키마로 표현한다. 릴레이션쉽 집합은 릴레이션의 튜플로 표현한다.

  1. 정규 엔티티 릴레이션 이름: 새로운 릴레이션을 생성하여 이름을 부여한다. 애트리뷰트: 정규 엔티티의 단순 애트리뷰트(복합 애트리뷰트는 구성요소)를 추가 키 표시: 키의 여러 후보들 중에서 적당한 키를 기본키로 골라 밑줄로 표시한다.
  2. 약한 엔티티 릴레이션 이름: 새로운 릴레이션을 생성하여 이름을 부여한다. 애트리뷰트: 소유 엔티티 릴레이션 스키마의 키를 추가, 단순 애트리뷰트(복합 애트리뷰트는 구성요소)를 추가 키 표시: 소유 엔티티의 키와 약한 엔티티의 부분키를 조합하여 표시한다.
  3. 다중값 애트리뷰트 릴레이션 이름: 새로운 릴레이션을 생성하여 이름을 부여한다. 애트리뷰트: 다중값 애트리뷰트 소속된 엔티티로 생성된 릴레이션 스키마의 키를 추가, 다중값 애트리뷰트를 추가 키 표시: 외래키와 다중값 애트리뷰트를 조합하여 표시한다

릴레이션쉽은 어떤 엔티티에 외래키를 추가하여 상대 엔티티의 키를 참조함으로써 표현된다. 기존의 릴레이션 스키마 S에 상대 릴레이션 스키마 T의 키와 릴레이션쉽 R의 단순 애트리뷰트(복합 애트리뷰트는 구성요소)를 추가한다. 4. 1:1 릴레이션쉽 R 어떤 엔티티를 S로 선택(가능하면 전체 참여 엔티티), 상대를 T로 지정 애트리뷰트: S에 T의 키를 추가, R의 단순 애트리뷰트(복합 애트리뷰트는 구성요소)를 추가 키 표시: 이미 표시 5. 1:N 릴레이션쉽 R N쪽 엔티티를 S로 선택, 1쪽 엔티티를 T로 지정 애트리뷰트: S에 T의 키를 추가, R의 단순 애트리뷰트(복합 애트리뷰트는 구성요소)를 추가 키 표시: 이미 표시 6. M:N 릴레이션쉽 R 릴레이션 이름: 새로운 릴레이션을 생성하여 이름을 부여한다. 애트리뷰트: 참여하는 두 엔티티의 릴레이션 스키마의 키를 추가, R의 단순 애트리뷰트(복합 애트리뷰트는 구성요소)를 추가 키 표시: 두 외래키를 조합하여 표시 7. N-ary 릴레이션쉽 R 릴레이션 이름: 새로운 릴레이션을 생성하여 이름을 부여한다. 애트리뷰트: 참여하는 모든 엔티티의 릴레이션 스키마의 키를 추가, R의 단순 애트리뷰트(복합 애트리뷰트는 구성요소)를 추가 키 표시: 모든 외래키를 조합하여 표시

릴레이션은 릴레이션 스키마와 튜플들의 집합으로 구성된다. 릴레이션 스키마는 릴레이션 이름, 애트리뷰트들, 애트리뷰트 중 일부를 키로 지정한다. 엔티티 타입(구체적으로 정규 엔티티, 약한 엔티티, 다중값 애트리뷰트)은 릴레이션 스키마로 표현된다. 릴레이션쉽 타입(구체적으로 이진의 1:1, 1:N)은 릴레이션 스키마의 애트리뷰트(외래키)로 표현된다. 릴레이션쉽 타입(구체적으로 이진의 M;N, 삼진)은 릴레이션 스키마로 표현된다. 튜플들의 집합은 엔티티의 집합 또는 릴레이션쉽의 집합이 된다.