Step-by-Step
[3] 기획 - 데이터 모델링 (2) 테이블 작성 & DB Diagram 본문
📜이전📜
[2] 기획 - 데이터 모델링 (1) ERD 다이어그램, 정규화
ERD

- 사용자를 추가/삭제 할때, [사용자], [사용자 추가 정보] 테이블 두 군데에서 이벤트 발생
ERD 설명
1. User
- 사용자 정보를 담은 테이블
 - 로그인 / 회원가입 시 정보 등록됨
 - 아이디(Key) / 비밀번호 / 닉네임 (default = 아이디) / 권한 (default = User)
 - 아이디 중복 불가능 / 모든 속성 NOT NULL
 
2. OriginPost
- 일반 글 정보를 담은는 테이블
 - 글 번호(Key) / 제목 / 내용 / 날짜
 - 글 번호는 Post 테이블의 Key를 외래키로 참조 및 기본키로 등록
 - 날짜는 'YYYY-MM-DD HH:MM:SS' 형식을 따름 (임의로 지정 X , 서버 시간으로 등록)
 - 글 번호 중복 불가능 / 모든 속성 NOT NULL
 
3. DrawingPost
- 그림 글 정보를 담은 테이블
 - 글 번호(Key) / 내용 / 날짜 / 템플릿 번호
 - 글 번호는 Post 테이블의 Key를 외래키로 참조 및 기본키로 등록
 - 템플릿 번호는 1~N (N>=1) 의 숫자로 이루어짐
 - 날짜는 OriginPost와 동일
 - 글 번호 중복 불가능 / 모든 속성 NOT NULL
 
4. Level
- 사용자의 등급을 담은 테이블
 - 등급(Key) / 글 수
 - 사용자의 포스팅 수가 특정 등급의 글 수 이상일 경우, 가장 높은 등급을 갖게 됨
 - 모든 속성 중복 불가능 / 모든 속성 NOT NULL
 
5. HashTag
- 글에 있는 해시태그를 담은 테이블
 - 글 번호(Key) / 해시태그(Key)
 - 해시태그 속성은 원자값으로 구성, 이중 Key 설정
 - (글 번호, 해시태그) 중복 불가능 / 모든 속성 NOT NULL
 
6. TagRanking
- 특정 시간 내에 검색된 해시태그와 개수를 담은 테이블
 - 해시태그(Key) / 해시태그 수
 - 해시태그 중복 불가능 / 모든 속성 NOT NULL
 
7. UserDetails
- 사용자의 추가 정보를 담은 테이블
 - 제3 정규화 과정에서 분리된 속성인 이메일을 관리
 - 아이디(Key) / 이메일
 - 모든 속성 중복 불가능 / 모든 속성 NOT NULL
 
8. Post
- 사용자가 작성한 글 정보를 담은 테이블
 - 글 번호(Key) / 아이디 / 글그림 식별자
 - 글 번호 중복 불가능 / 모든 속성 NOT NULL
 
9. Grant
- 사용자의 등급을 담은 테이블
 - 아이디(Key) / 등급
 - 모든 속성 중복 불가능 / 모든 속성 NOT NULL
 
DBDiagram
dbdiagram.io 에서 DB 설계도를 작성했다
dbdiagram.io - Database Relationship Diagrams Design Tool
dbdiagram.io
DBDiagram (1) SQL 문
// Entity
Table User {
  user_id varchar [pk]  
  password varchar [not null]
  user_name varchar [not null]
  role varchar [not null, default:'user']
}
// If schema name is omitted, it will default to "public" schema.
Table OriginPost {
  post_id int [pk, ref:- Post.post_id]
  post_title varchar [not null]
  post_content varchar [not null]
  post_date dat [not null]
}
Table DrawingPost {
  post_id int [pk, ref:- Post.post_id]
  post_content varchar [not null]
  template_id int [not null]
  post_date varchar [not null]
}
Table Level {
   level int [pk]
   post_cnt int [not null]
}
Table HashTag {
  post_id int [pk, ref:> Post.post_id]
  tag_name varchar [pk]
}
Table TagRanking {
  tag_name varchar [pk]
  tag_cnt int [not null]
}
Table UserDetails {
  user_id varchar [pk, not null]
  email varchar [not null]
}
// Relation
Table Grant {
  user_id varchar [pk, ref:- User.user_id]
  level int [not null, ref:- Level.level]
 }
 
 
Table Post {
  post_id int [pk, increment] // auto-increment
  user_id varchar  [not null, ref: > User.user_id] 
  post_ident int [not null]
}
DBDiagram (2) diagram

'프로젝트 > Dreamers (Blog)' 카테고리의 다른 글
| [6] 구현 - 간단히 프로젝트 구조 설정 (0) | 2023.02.18 | 
|---|---|
| [5] 기획 - SQL문 작성 (0) | 2023.02.14 | 
| [4] 기획 - 플로우 차트 (Flow Chart) (0) | 2023.02.08 | 
| [2] 기획 - 데이터 모델링 (1) ERD 다이어그램, 정규화 (0) | 2023.01.25 | 
| [1] 기획 - 구현 내용 및 스토리 보드 (0) | 2023.01.19 | 
			  Comments