본문 바로가기

데이터 분석/Spring

Martin's Bookshelf_Part 2 : ERD & Database

MVC 모델의 기반이 될 ERD 작업을 시작한다. 작업을 하는 PC에 erwin을 설치하였지만 평가판이 만료되어 수기로 ERD를 진행했다.

 

DBMS로는 오라클의 10g xe 버전을 사용했다

 

책의 기본적인 정보와 사진을 리스트로 확인할 수 있는 페이지를 만든 것이 우선의 계획이다. 나중에 게시판의 기능을 활용하여 각 책의 초록을 기록하는 기능을 추가적으로 구현할 예정이다.(아마 Bulletin 테이블을 추가해서 기존 테이블을 참조하는 방식으로..?) 따라서 우선의 계획을 따른 ERD로 SQL을 활용하여 테이블을 만든다. Book 테이블은 Member 테이블에서 외래키를 참조해야 하기 때문에 Member 테이블을 우선적으로 작업한다.

 

 

[ ⅰ: MEMBER Table SQL ]

로그인 기능 구현과 주소 찾기 API 활용을 위한 테이블을 작성하기 위한 SQL문. 프라이머리 키를 설정하는데에는 오라클 DB의 기능 Sequence를 활용하였다. 샘플 데이터를 추가하여 테이블이 잘 만들어졌는지 확인한다.

더보기
	create sequence seq_member_idx
	
	create table member(
		m_idx		int,
		m_name		varchar2(100) not null,
		m_id		varchar2(100) not null,
		m_pwd		varchar2(100) not null,
		m_zipcode	varchar2(100) not null,
		m_addr		varchar2(200) not null,
		m_grade		varchar2(100) not null,
		m_ip		varchar2(100) not null,
		m_regdate	date	
	)
	
	alter table member add constraint pk_member_m_idx primary key(m_idx)
	alter table member add constraint unique_member_m_id unique(m_id)
	
	insert into member values(seq_member_idx.nextVal, 'Martin Hong','martin','1234','12345','서울시 관악구 조원동','admin','192.168.7.16', sysdate);
		
	select * from member
	
	commit

 


[ ⅱ : BOOK Table SQL ]

Member 테이블에서 외래키(m_idx)를 참조하였기 때문에, 외래키 참조 SQL구문에 on_delete cascade( 참조하는 외래키가 해당 테이블에서 삭제될 경우, 같이 따라서 삭제되는 기능 ) 기능도 추가하여 작성했다. 마찬가지로 샘플 데이터를 추가하여 테이블의 기능에 문제가 없는지 확인한다.

더보기
	create sequence seq_book_idx
	
	create table book 
	(
		b_idx  		int,
		m_idx		int,
		b_title		varchar2(200),
		b_subtitle	varchar2(200),
		b_author	varchar2(100),
		b_category	varchar2(100),
		b_pages		int,
		b_publisher varchar2(100),			
		b_desc		varchar2(1000),
		b_filename	varchar2(200),
		b_ip		varchar2(100),
		b_published date,
		b_readdate	date,	
		b_regdate	date
	)

	insert into book values(1, 21, '달러구트 꿈 백화점', '주문하신 꿈은 매진입니다', '이미예', '한국문학', 
	'300', '팩토리나인', '2020년 올해의 책', 'filename', '192.168.7.16', '2020-07-08', '2021-01-04', sysdate)

	alter table book add constraint pk_book_idx primary key(b_idx);
	
	alter table book add constraint 
	fk_book_m_idx foreign key(m_idx) references member(m_idx)
	on delete cascade;
	
	select * from book
	
	commit