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