miinsun
[소소한할인] DB 설계 본문
시스템 구조와 기능 정의를 모두 마치고 기능 구현하기 위한 마지막 단계로 DB구조를 설계했다.
먼저 ERWIN이라는 프로그램을 통해 데이터베이스의 논리적 설계를 마치고
MYSQL의 툴을 이용해 논리적 설계를 물리적 설계로 바꿨다.
이 과정에서 가장 주의했야 했던 것은 다대다 테이블을 구현하는 것이었다. 논리적 설계에서는 간단히 다대다 관계의 표현이 가능하지만, 물리적으로 다대다 관계를 표현하기 위해서는 연결 테이블이 추가로 필요하다.
아래 엔티티 관계도를 보면 coupon과 consumer_account를 매핑하기 위해 consumer_coupon을 생성했고, consumer_account와 store를 매핑하기 위해 receipt 테이블을 만들었다.
위의 엔티티 관계도를 기반으로 테이블 정의서를 작성해줬다. 테이블 정의서에는 컬럼 별 세부 사항을 작성해뒀다. 테이블에 대한 설명과 칼럼에 대한 정보를 칼럼, pk, fk 여부 등을 확인할 수 있도록 했다.
테이블 명
|
테이블 설명
|
컬럼 명
|
컬럼 타입
|
컬럼 조건
|
비고
|
null 유무
|
default
|
COUPON
|
쿠폰 정보
|
coupon_id
|
INT
|
primaryKey
|
|
not null
|
|
store_id
|
INT
|
foreignKey
|
STORE
|
not null
|
|
||
name
|
VARCHAR(100)
|
|
|
not null
|
|
||
description
|
VARCHAR(500)
|
|
쿠폰 설명
|
not null
|
|
||
validity
|
INT
|
|
사용자 쿠폰 사용 유효기간
|
|
|
||
is_available
|
INT
|
|
쿠폰 삭제 여부
|
not null
|
|
||
start_date
|
DATETIME
|
|
쿠폰 다운 시작 시간
|
not null
|
|
||
finish_date
|
DATETIME
|
|
쿠폰 다운 마감 시간
|
not null
|
|
||
LINK
|
상점 간 연계 정보
|
link_id
|
INT
|
primaryKey
|
|
not null
|
|
proposer_id
|
INT
|
foreignKey
|
STORE
|
not null
|
|
||
receiver_id
|
INT
|
foreignKey
|
STORE
|
not null
|
|
||
state
|
INT
|
|
승인대기: 0 / 승인: 1 / 거부: -1
|
not null
|
0
|
||
management
|
INT
|
|
연계중: 1 / 연계끊기: -1
|
|
|
||
Is_watched
|
INT
|
|
|
not null
|
|
||
proposal_date
|
TIMESTAMP
|
|
제안한 날짜
|
not null
|
sysdate
|
데이터베이스 설계를 마지막으로 화면 설계서를 만들고 프로젝트 설계 단계를 마쳤다. 앞으로는 구현할 일만 남았다.
내가 느끼기에 설계하는 과정이 가장 길면서도 지루하고 힘들었던 시기인 것 같다. 최대한 나중에 수정하는 일이 적도록 신경 썼음에도 불구하고 개발 과정에서 시스템 구조를 수정하는 일이 잦아 대공사를 하기도 했다. 앞으로는 시스템 유지보수를 위해서 보고서를 잘 쓰는 개발자가 되도록 노력해야 겠다.
'Project > 2021 소소한 할인' 카테고리의 다른 글
[소소한할인] 화면 설계 (0) | 2021.12.08 |
---|---|
[소소한할인] 기능 정의 (0) | 2021.12.08 |
[소소한할인] 프로젝트 시연 영상 (0) | 2021.12.08 |
[소소한할인] 프로젝트 기술 스택 (0) | 2021.12.08 |
[소소한할인] 프로젝트 소개 (0) | 2021.12.08 |
Comments