ERD는 시스템 엔티티들이 무엇이 있는지를 어떤 관계가 있는지를 나타내는 다이어그램이다.
먼저 모든 엔티티들을 정의해야한다.
-> ERD는 모든것의 시작이라 느껴졌다. 이 시기에 구체적으로 어떻게 어떤것을 구성할건지에 대하여 구상을 끝내고, 머리속에 내가 무엇을 할건지에대해서 구체적으로 그림을 그릴정도로 확실히 해야한다. 적당히 대충 그림을 그리고 시작을하니 결국 ERD와 api설계를 다시해야했다.
그다음은 엔티티간 관계들을 정의하고 속성을 추가하면 된다.
-> ERD를 작성할때는 모든것을 고려해줘야한다. 또한 이테이블들이 한눈에 보이다보니 어느부분이 잘못설계되었다던가 관계들이 한눈에 보여 편했다.
엔티티(Entity)
: 정의 가능한 사물 또는 개념을 의미하며 데이터베이스에서 테이블이 엔티티로 표현된다.(= 테이블)
엔티티 속성(Attribute)
: 엔티티에는 개체가 갖고있는 속성을 포함하는데 이는 데이터베이스의 테이블의 각 컬럼을 의미한다.(= 컬럼)
PK(Primary Key)
: 중복이 없으며 NULL값이 없는 유일한 값에 지정하는 식별자(= 고유 아이디)
FK(Foreigin Key):
외래 식별자(= 타 테이블의 고유키로 테이블간의 일정 관계가 있을때 생성된다,아래 추가설명있음)
NOT NULL
: NULL값이 들어오는것을 비허용하는것
일대일 관계(1:1 Cardinality)
: 상대 엔티티와 반드시 하나의 관계를 가지는 것 (ex. 한 학생이 가질 수 있는 학번은 1개이며 그 학번또한 한명의 학생만 가질 수 있다.)
일대다 관계(1:N Cardinality)
: 한쪽 엔티티가 관계를 맺은 엔티티쪽의 여러 객체를 가질 수 있다는것
이때 다수(N)는 어떤 엔티티에 속해있는지 표현해야하므로 1에 해당하는 테이블의 PK를 N에 해당하는 테이블에 FK로 추가해 관계를 표현한다.(ex.법적으로 부모는 여러명의 자식과 관계되어 있을 수 있지만 자식은 여러명의 부모을 가질 수 없다.)
다대다 관계(N:M Cardinality)
: 양쪽 엔티티 모두에서 1:N 관계를 가지는 것, 일반적으로 이 관계는 두 테이블의 PK를 컬럼으로 가지고있는 또다른 테이블을 생성해서 관리한다.(ex. 한 학생은 여러개의 수업을 들을 수 있고 한 수업또한 여러명의 학생을 가질 수 있다.)
식별자 관계 - 실선으로 표현하며 부모테이블에있는 PK를 FK로 참조해 자신의 주 식별자로 설정한다. (단순하게 이해하자면 자식 테이블은 자신을 구별해주는 PK를 또 생성하는게 아니라 부모테이블로부터 가져옴)
비식별자 관계 - 점선으로 표현하며 부모테이블의 PK를 FK로 참조해서 일반 속성으로 사용한다.
관계선 양 끝에는 관계와 관계의 참여도에 대한 기호가 표시된다.
ㅣ
표시가 있다면 반드이 있어야하는 개체, O
표시가 있다면 없어도 개는 개체이다.
또한 여러가지로 나뒤어져있다면 여러개 즉 N을 표현한 것이고 한줄기로 끝난다면 1에 해당하는 엔티티이다.
이미지 참고 링크
ERD 작성 사이트 추천:ERD Cloud 해당 사이트에서는 자세하게 작성하고 협업이가능해서 사용하였는데 ERD를 작성하면 자동으로 테이블과 컬럼까지 생성해주는 sql문을 다운받을 수 있어 유용하게 느껴졌다.