KEVIN 데이터 베이스 만들기
-- 데이터베이스 생성
CREATE DATABASE IF NOT EXISTS KEVIN
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 사용자 생성
CREATE USER 'KEVIN'@'localhost' IDENTIFIED BY '1234';
-- 권한 부여 (필수, 테이블 생성/접근 가능하도록)
GRANT ALL PRIVILEGES ON KEVIN.* TO 'KEVIN'@'localhost' WITH GRANT OPTION;
-- 권한 적용
FLUSH PRIVILEGES;
-- KEVIN 데이터베이스 사용
USE KEVIN;
테이블 생성
USE KEVIN;
SHOW TABLES;
-- 테이블 삭제
DROP TABLE IF EXISTS ORDERS_ITEM;
DROP TABLE IF EXISTS REVIEW;
DROP TABLE IF EXISTS WISHLIST;
DROP TABLE IF EXISTS CONNECT_LOG;
DROP TABLE IF EXISTS ORDERS;
DROP TABLE IF EXISTS ADDRESS;
DROP TABLE IF EXISTS ITEM;
DROP TABLE IF EXISTS EVENT;
DROP TABLE IF EXISTS ACCOUNT;
-- 회원 테이블
CREATE TABLE ACCOUNT (
ACCOUNT_PK INT AUTO_INCREMENT PRIMARY KEY COMMENT '회원 고유 번호 (PK)',
ACCOUNT_ID VARCHAR(50) COMMENT '회원 아이디',
ACCOUNT_PASSWORD VARCHAR(100) COMMENT '회원 비밀번호',
ACCOUNT_NAME VARCHAR(50) COMMENT '회원 이름',
ACCOUNT_EMAIL VARCHAR(100) COMMENT '회원 이메일',
ACCOUNT_PHONE VARCHAR(11) COMMENT '회원 전화번호',
ACCOUNT_DATE DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '회원 가입일',
ACCOUNT_ROLE VARCHAR(50) DEFAULT 'USER' COMMENT '회원 권한',
ACCOUNT_EVENT_OPT_IN TINYINT(1) DEFAULT 0 COMMENT '회원 이벤트 수신 동의'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 상품 테이블
CREATE TABLE ITEM (
ITEM_PK INT AUTO_INCREMENT PRIMARY KEY COMMENT '상품 고유 번호 (PK)',
ITEM_NAME VARCHAR(100) COMMENT '상품명',
ITEM_PRICE INT COMMENT '상품 가격',
ITEM_STOCK INT COMMENT '상품 재고',
ITEM_DESCRIPTION VARCHAR(3000) COMMENT '상품 설명',
ITEM_IMAGE_URL VARCHAR(255) COMMENT '상품 이미지 경로',
ITEM_CATEGORY VARCHAR(200) COMMENT '상품 카테고리',
ITEM_REGIST_DATE DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '상품 등록일'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 주소 테이블
CREATE TABLE ADDRESS (
ADDRESS_PK INT AUTO_INCREMENT PRIMARY KEY COMMENT '주소 고유 번호 (PK)',
ACCOUNT_PK INT COMMENT '회원 고유 번호 (FK)',
ADDRESS_NAME VARCHAR(50) COMMENT '배송지명',
ADDRESS_IS_DEFAULT TINYINT(1) DEFAULT 0 COMMENT '기본 배송지 여부',
ADDRESS_POSTAL_CODE VARCHAR(20) COMMENT '우편번호',
ADDRESS_REGION VARCHAR(100) COMMENT '기본 주소',
ADDRESS_DETAIL VARCHAR(200) COMMENT '상세 주소',
CONSTRAINT FK_ACCOUNT FOREIGN KEY (ACCOUNT_PK) REFERENCES ACCOUNT(ACCOUNT_PK)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 주문 테이블
CREATE TABLE ORDERS (
ORDERS_PK INT AUTO_INCREMENT PRIMARY KEY COMMENT '주문 고유 번호 (PK)',
ACCOUNT_PK INT COMMENT '회원 고유 번호 (FK)',
ORDERS_DATE DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '주문 일시',
ORDERS_STATUS VARCHAR(30) DEFAULT 'READY' COMMENT '주문 상태',
ADDRESS_NAME VARCHAR(50) COMMENT '배송지 명',
ORDERS_PAYMENT_TYPE VARCHAR(50) COMMENT '결제 방식',
ORDERS_IMPORT_UID VARCHAR(100) COMMENT '결제 고유 ID',
ORDERS_MESSAGE VARCHAR(500) COMMENT '주문 요청 사항',
CONSTRAINT FK_ACCOUNT_ORDERS FOREIGN KEY (ACCOUNT_PK) REFERENCES ACCOUNT(ACCOUNT_PK)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 주문 상세 테이블
CREATE TABLE ORDERS_ITEM (
ORDERS_ITEM_PK INT AUTO_INCREMENT PRIMARY KEY COMMENT '주문 상세 고유 번호 (PK)',
ORDERS_PK INT COMMENT '주문 고유 번호 (FK)',
ITEM_PK INT COMMENT '상품 고유 번호 (FK)',
ORDERS_ITEM_COUNT INT DEFAULT 0 COMMENT '주문 수량',
ORDERS_ITEM_PRICE INT DEFAULT 0 COMMENT '주문 시점 가격',
CONSTRAINT FK_ORDERS_ORDERS_ITEM FOREIGN KEY (ORDERS_PK) REFERENCES ORDERS(ORDERS_PK)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT FK_ITEM_ORDERS_ITEM FOREIGN KEY (ITEM_PK) REFERENCES ITEM(ITEM_PK)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 리뷰 테이블
CREATE TABLE REVIEW (
REVIEW_PK INT AUTO_INCREMENT PRIMARY KEY COMMENT '리뷰 고유 번호 (PK)',
ACCOUNT_PK INT COMMENT '회원 고유 번호 (FK)',
ITEM_PK INT COMMENT '상품 고유 번호 (FK)',
REVIEW_TITLE VARCHAR(50) COMMENT '리뷰 제목',
REVIEW_CONTENT VARCHAR(4000) COMMENT '리뷰 내용',
REVIEW_DATE DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '리뷰 작성일',
REVIEW_STAR TINYINT(2) DEFAULT 5 COMMENT '별점 (1~5)',
REVIEW_IMAGE_URL VARCHAR(255) COMMENT '리뷰 이미지 경로',
CONSTRAINT FK_REVIEW_ACCOUNT FOREIGN KEY (ACCOUNT_PK) REFERENCES ACCOUNT(ACCOUNT_PK)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT FK_REVIEW_ITEM FOREIGN KEY (ITEM_PK) REFERENCES ITEM(ITEM_PK)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 좋아요 테이블
CREATE TABLE WISHLIST (
WISHLIST_PK INT AUTO_INCREMENT PRIMARY KEY COMMENT '위시리스트 고유 번호 (PK)',
ACCOUNT_PK INT COMMENT '회원 고유 번호 (FK)',
ITEM_PK INT COMMENT '상품 고유 번호 (FK)',
CONSTRAINT FK_WISHLIST_ACCOUNT FOREIGN KEY (ACCOUNT_PK) REFERENCES ACCOUNT(ACCOUNT_PK)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT FK_WISHLIST_ITEM FOREIGN KEY (ITEM_PK) REFERENCES ITEM(ITEM_PK)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 이벤트 테이블
CREATE TABLE EVENT (
EVENT_PK INT AUTO_INCREMENT PRIMARY KEY COMMENT '이벤트 고유 번호 (PK)',
EVENT_NAME VARCHAR(200) COMMENT '이벤트 이름',
EVENT_START_DATE DATE COMMENT '이벤트 시작일',
EVENT_END_DATE DATE COMMENT '이벤트 종료일',
EVENT_TARGET_ACCOUNT JSON COMMENT '이벤트 대상',
EVENT_TARGET_CATEGORY JSON COMMENT '이벤트 상품 카테고리',
EVENT_DESCRIPTION VARCHAR(3000) COMMENT '이벤트 설명',
EVENT_DISCOUNT_RATE INT COMMENT '할인율',
EVENT_IMAGE_URL VARCHAR(255) COMMENT '이벤트 이미지 경로'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 접속 로그 테이블
CREATE TABLE CONNECT_LOG (
CONNECT_LOG_PK INT AUTO_INCREMENT PRIMARY KEY COMMENT '로그 고유 번호 (PK)',
ACCOUNT_PK INT COMMENT '접속한 회원 고유 번호 (FK)',
CONNECT_IP VARCHAR(50) COMMENT '접속한 IP 주소',
CONNECT_DEVICE VARCHAR(200) COMMENT '접속 환경(기기/브라우저)',
CONNECT_DATE DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '접속한 날짜·시간',
CONSTRAINT FK_CONNECT_ACCOUNT FOREIGN KEY (ACCOUNT_PK) REFERENCES ACCOUNT(ACCOUNT_PK)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;