"개체 관계도"라고도 불리는 ERD(Entity Relationship Diagram)는 이름 그대로 Entity(개체)들 간의 relationship(관계)를 표현하는 Diagram(다이어그램)이다! 데이터 베이스 구조를 한 눈에 파악하기 위해 사용된다고 한다.
오늘은 게시판 ERD를 설계하고 직접 ERD Cloud로 게시판 ERD를 표현해 볼 것이다!
: 엔티티는 정의 가능한 사물 또는 개념을 의미한다. 데이터베이스의 '테이블'을 생각하면 된다.
예를 들어 게시판에 필요한 글, 댓글, 유저, 유저가 남긴 좋아요 등에 대한 엔티티는 다음과 같이 표현할 수 있다.
엔티티에는 개체가 가지고 있는 속성을 포함한다.
테이블의 각 필드(칼럼)들이 엔티티의 속성이라고 생각하면 된다.
게시판의 글 article은 article의 id,작성자,제목,내용,작성일자 등의 속성을 포함한다. 아래와 같이 표현할 수 있다.
도메인은 속성의 값,타입,제약사항을 표현하는 것이다. 데이터 타입을 명시할때 데이터베이스가 지원하는 타입에 맞게 해야한다!
article 속성 값의 도메인을 아래와 같이 표현해보았다!
각각의 엔티티를 만들었다면, 그 다음으로 엔티티끼리 관계가 있는 경우 선을 이어 관계를 표현한다. 엔티티간의 강한 관계를 나타내는 것을 '식별자 관계'라고 하고 실선으로 표현한다. 엔티티간의 약한 관계를 표현할 때는 점선으로 표현하고 '비식별자 관계'라고 부른다.
One to one : 1 대 1 대응
One to many : 1 대 다 대응
Many to one : 다 대 1 대응
Many to many : 다 대 다 대응
관계를 위와 같이 표현할 수 있다.
한명의 User는 여러개의 Article을 작성할 수 있다.
그리고 User가 탈퇴했을 때를 생각해서 User와 Article의 관계를 비식별자 관계로 약한 연결을 했다.
한명의 User는 여러개의 Comment를 작성할 수 있다.
이들의 관계 또한 비식별자 관계로 연결했다.
하나의 Article에는 여러개의 Comment가 남겨질 수 있다.
Comment는 꼭! 해당 Article에 종속된다고 생각했다. Comment는 해당되는 Article의 id를 PK를 가져야하기 때문에 Comment와 Article은 식별자 관계로 강한 연결을 했다.
User Like 부분은 .. 피드백을 받아보며 좀 더 정확하게 알아보아야할거같다!
내가 맞게 표현한건지 모르겠다.. 😭 피드백 받으면서 발전 시켜나가야지...!!