본문 바로가기
SPRING/SPRING 프로젝트

SPRING 팀 플젝 : 오라클로 쇼핑몰 DB 설계하기(ERD)

by 스노위13 2023. 1. 11.

1. 내용 : 프로젝트를 진행할 때 정말 중요한 DB 설계 하기! 오라클을 이용해서 DB를 설계했고 mybatis를 사용해서 SPING 프로젝트와 연결했다. ERD도 오라클 프로그램 내에서 제공하는 툴로 만들었다.

2. 과정 중 특이점 :  지난번 개인 프로젝트를 진행할 때 테이블 하나를 뒤집어 엎으면서 처음 DB 구조를 잘 짜는게 중요하단걸 많이 느꼈기 때문에 우리 팀이 생각한 쇼핑몰 프로젝트를 진행하기 위해서는 어떤 테이블이 필요하고 각각의 컬럼은 뭐가 필요할지 먼저 팀원들과 회의를 하면서 손으로 전체 구조를 짠 후 설계했다.

3. 실제 수행

1) 테이블 스페이스와 유저 생성, 권한 부여

MYTS라는 테이블 스페이스를 새롭게 생성하고 유저도 새로 만들었다.
그리고 유저에게 모든 권한을 주었다. 

--테이블 스페이스 생성
CREATE TABLESPACE MYTS
datafile 'C:\oraclexe\app\oracle\oradata\XE\ts_study.dbf'
size 100M AUTOEXTEND ON NEXT 5M;
-- 유저 생성
CREATE USER 아이디 IDENTIFIED BY 비밀번호
DEFAULT TABLESPACE MYTS
TEMPORARY TABLESPACE TEMP;
-- 권한 부여
GRANT DBA TO 아이디;
GRANT connect, resource TO 아이디;


 2) 테이블 생성


남성 의류 쇼핑몰을 만들기 위해 필요한 테이블을 생성했다.
이후에 약간의 수정을 하거나 삭제나 추가 된 테이블도 있었지만...
그래도 큰 수정은 없었어서 뭐 괜찮았던 것 같다ㅋㅋㅋ 아래는 일부 내용!

CREATE TABLE product (
    prod_no         NUMBER primary key,
    prod_name       varchar2(1000),
    prod_img        varchar2(1000),     
    prod_price      varchar2(100),
    prod_brand      varchar2(1000),
    prod_parts      varchar2(100),
    prod_style      varchar2(100),
    prod_url        varchar2(1000),
    prod_hit        NUMBER, 
    prod_like       NUMBER
);

comment ON COLUMN product.prod_name is '제품명' ;
comment ON COLUMN product.prod_img is '제품 이미지' ;
comment ON COLUMN product.prod_price is '가격' ;
comment ON COLUMN product.prod_brand is '브랜드' ;
comment ON COLUMN product.prod_parts is '상의, 하의, 신발, 악세사리 등' ;
comment ON COLUMN product.prod_style is '의류 스타일' ;
comment ON COLUMN product.prod_url is '제품 상세 주소' ;
comment ON COLUMN product.prod_hit is '조회수' ;
comment ON COLUMN product.prod_like is '찜 갯수' ;

ALTER TABLE mem_like --child 테이블명
ADD CONSTRAINT fo_like_prod 
foreign KEY(like_prod_no) --child테이블에서 연결할 컬럼
references product (prod_no) --parent 테이블과 컬럼 연결
ON DELETE CASCADE;  

ALTER TABLE basket --child 테이블명
ADD CONSTRAINT fo_ba_prod 
foreign KEY(ba_prod_no) --child테이블에서 연결할 컬럼
references product (prod_no) --parent 테이블과 컬럼 연결
ON DELETE CASCADE;

혼자하는 프로젝트가 아니기에 코멘트와 주석도 적었음.

 3) ERD

최종 발표 때 나온 ERD는 위와 같다.
여러 명이 각자 테이블을 만드는 것 보단 충분한 회의를 거친 후에
한 명이 설계하고 어떤 식으로 설계했는지 sql을 공유하는게 나은듯 하다.

댓글