E
ntityR
elationshipD
iagram의 약자로 개체관계도 라고 부릅니다.ERD는 말로서 되어있는 요구분석사항을 그림으로 그려내어 그 관계를 도출하는 것을 말하는데, E-R-D로 모델링하여 실제 데이타베이스의 테이블을 구성해 보도록 하겠습니다.
객체와 객체와의 관계
-
하나의 A는 하나의 B로 구성되어 있다 – 1:1 관계
-
하나의 A는 하나 이상의 B로 구성되어 있다 – 1:N 관계
-
하나의 A는 하나 이하의 B로 구성되어 있다 – 1: 0 or 1
-
하나의 A는 0 또는 하나 이상의 B로 구성 되어 있다 – 1: 0 or N
실전 프로젝트 모델링
-
A회원은 여러 개의 게시물을 사용할 수 있다.
라는 요구 사항에서는 회원객체와 게시글 객체를 확인할 수 있습니다. 이를 정의 해 보도록 하겠습니다.
-
회원(Users)
1 2 3 4 5 6 7 8 9 |
+--------------------+ | Users | +--------------------+ | id | | userid | | password | | name | | createdAt | +--------------------+ |
-
게시판(Boards)
1 2 3 4 5 6 7 8 9 10 11 12 |
+--------------------+ | Boards | +--------------------+ | id | | user_id | | subject | | contexts | | count | | createdAt | | updatedAt | | deletedAt | +--------------------+ |
위와 같은 테이블로 정의 되었을 때, 한명의 유저 A가 여러개의 게시물을 소유하기 위해서는 일대 다의 관계를 가지고 있어야 합니다. 물론 A는 게시물을 한개도 없을 수도 있습니다. 이를 E-R-D로 표현 한다면 다음과 같습니다.
-
A게시물에는 여러개의 답글을 여러 사람이 작성할 수 있다. 그리고 답글에는 좋아요 또는 싫어요를 표시 할 수 있다.
라는 요구사항에서는 게시글 객체와 답글이라는 객체를 확인 할 수 있습니다. 이를 정의 해 보도록 하겠습니다.
-
게시판(Boards)
1 2 3 4 5 6 7 8 9 10 11 12 |
+--------------------+ | Boards | +--------------------+ | id | | user_id | | subject | | contents | | count | | createdAt | | updatedAt | | deletedAt | +--------------------+ |
-
답글(Replys)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
+--------------------+ | Replys | +--------------------+ | id | | user_id | | board_id | | contents | | good_count | | bad_count | | createdAt | | updatedAt | | deletedAt | +--------------------+ |
위와 같은 테이블로 정의 되었을 때, 한명의 유저 A가 작성한 여러개의 게시물 중 하나가 여러개의 답글을 소유하기 위해서는 일대 다의 관계를 가지고 있어야 합니다.물론 A게시물에 대한 답글은 한 개도 없을 수도 있습니다.이를 E-R-D로 표현 한다면 다음과 같습니다.
위와 같이 부족하지만, 머릿 속에 존재하는 생각을 좀더 구체적으로 실습에 필요한 모델이 대충(?!) 나왔습니다. 위와 같은 명세로 실제 프로젝트를 진행하면서 좀더 다듬어 보겠습니다.
PHP 라라벨 5 On Mac 포스팅
[PHP 라라벨 5 On Mac] 1 : 다루게 될 내용들
[PHP 라라벨 5 On Mac] 2 : Composer, Valet, Framework
[PHP 라라벨 5 On Mac] 3 : Framework
[PHP 라라벨 5 On Mac] 4 : Routing
[PHP 라라벨 5 On Mac] 5 : 블레이드 템플릿 1 (View)
[PHP 라라벨 5 On Mac] 6 : 블레이드 템플릿 2 (View)
[PHP 라라벨 5 On Mac] 7 : 블레이드 템플릿 3 (View)
[PHP 라라벨 5 On Mac] 8 : 마이그레이션 (Create Table)
[PHP 라라벨 5 On Mac] 9 : 마이그레이션 (컬럼 추가 및 데이타 스토리 엔진 설정)
[PHP 라라벨 5 On Mac] 10 : 마이그레이션 (적용)
[PHP 라라벨 5 On Mac] 11 : 마이그레이션 (컬럼 수정)
[PHP 라라벨 5 On Mac] 12 : Laravel Tinker Shell
[PHP 라라벨 5 On Mac] 13 : Laravel Tinker Shell (쿼리 빌더)
[PHP 라라벨 5 On Mac] 14 : 엘로퀀트 ORM 1
[PHP 라라벨 5 On Mac] 15 : 엘로퀀트 ORM 2
[PHP 라라벨 5 On Mac] 16 : 엘로퀀트 ORM 3
[PHP 라라벨 5 On Mac] 17 : Controller I
[PHP 라라벨 5 On Mac] 18 : Controller II
Leave a Reply
Want to join the discussion?Feel free to contribute!