05-15 08:39
Recent Posts
Recent Comments
관리 메뉴

miinsun

[소소한할인] DB 설계 본문

Project/2021 소소한 할인

[소소한할인] DB 설계

miinsun 2021. 12. 8. 16:34

시스템 구조와 기능 정의를 모두 마치고 기능 구현하기 위한 마지막 단계로 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

 

데이터베이스 설계를 마지막으로 화면 설계서를 만들고 프로젝트 설계 단계를 마쳤다. 앞으로는 구현할 일만 남았다.

내가 느끼기에 설계하는 과정이 가장 길면서도 지루하고 힘들었던 시기인 것 같다. 최대한 나중에 수정하는 일이 적도록 신경 썼음에도 불구하고 개발 과정에서 시스템 구조를 수정하는 일이 잦아 대공사를 하기도 했다. 앞으로는 시스템 유지보수를 위해서 보고서를 잘 쓰는 개발자가 되도록 노력해야 겠다.

Comments