프로젝트

[리액트+스프링부트] Delivery Oracle 의 ERD 문서

ari0930 2024. 7. 18. 00:24

[리액트+스프링부트] Delivery Oracle의 ERD 문서 

 

총 14개의 테이블이

 

1. UserInformation  (유저 정보 테이블)

-유저아이디

-이메일

-비밀번호

-가입날짜

-수정날짜

 

2. userinfo_auth (유저 권한 테이블)

-유저아이디

-권한 이름

 

3. StoreRegistration (업체 가입정보 테이블)

-업체 아이디

-업체 주인 아이디( 유저 정보 테이블의 유저 아이디)

-업체 이름

-업체 주소

-업체 이미지

-승인 상태

-승인 날짜

-수정 날짜

-업체 x 좌표

-업체 y좌표

-업체 카테고리

 

4. StoreInformation(업체 정보테이블) (업체 메뉴정보가 담김)

-업체아이디

-메뉴 이름

-메뉴 가격

-메뉴 이미지

-메뉴 상태정보

 

5. OrderInformation(주문 테이블)

-주문번호

-주문자 아이디

-업체 아이디

-주문 내용

-주문 상태

-주문날짜

-주문자 x좌표

-주문자 y좌표

 

6. RiderDelivery (라이더 배달 테이블)

-배달 번호

-주문 번호

-업체 아이디

-업체 이름

-업체 주인 이메일

-라이더 아이디

-라이더 위치에서 업체까지의 거리

-업체에서 주문자까지의 거리

-배달가격

-업체 x좌표

-업체 y좌표

-주문자 x좌표

-주문자 y좌표

-배달 수락 날짜

 

7. Comments(댓글 테이블)

-댓글 번호

-업체 아이디

-작성자 아이디

-작성자 이름

-내용

-별점

-댓글 상태정보

-작성 날짜

-수정 날짜

-답글작성시 어떤 댓글의 답글인지 확인하기 위한 댓글 번호

-depth=> 1이면 댓글 2이면 답

 

8. Reports(댓글 신고 테이블)

-신고번호

-댓글 번호

-댓글 작성자 아이디

-신고 상태

-신고 내역

-신고 날

 

9. StoreReports(업체 신고 테이블)

-신고번호

-주문 번호

-업체 번호

-신고 상태

-신고 내역

-신고자 아이디

-신고 날

 

10. account (계좌 테이블)

-계좌 번호

-계좌 주인 아이디

-계좌 주인 이름

-계좌 주인 이메일

-계좌 상태

-계좌 총액

-계좌 생성 날짜

-계좌 수정 날짜

 

 

11. accountstatus(입출금 상태 테이블)

-번호

-계좌 번호

-금액

-출금과 예금 2개의 타입이 존재함

-날

 

12. rankpoint(포인트 정보 테이블)

-등급 이름

-포인트 금액 

 

insert into rankpoint (Rating,score) value("Bronze",5000);
insert into rankpoint (Rating,score) value("Silver",10000);
insert into rankpoint (Rating,score) value("Gold",50000);
insert into rankpoint (Rating,score) value("Platinum",100000);

 

13. visitors(방문자수 테이블)

-이메일

-방문날

 

 

14. StoreRegistrationAudit (업체 수정정보 테이블)

트리거에 의해 기록되는 테이블

CREATE TABLE StoreRegistrationAudit (
    audit_id INT AUTO_INCREMENT PRIMARY KEY,
    store_id INT,
    owner_id INT,
    store_name VARCHAR(30),
    store_address VARCHAR(50),
    store_description TEXT,
    store_image VARCHAR(255), 
    approval_status TINYINT(1),
    approval_date DATETIME,
    modification_date TIMESTAMP,
    store_x DECIMAL(15, 12),
    store_y DECIMAL(15, 12),
    store_ca VARCHAR(20),
    change_type ENUM('UPDATE', 'DELETE'),
    change_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

 

 

 

적용된 트리거들

업체 정보 수정 시 적용되는 트리거 

이전 정보를 정장하기 위해

CREATE TRIGGER before_store_update
BEFORE UPDATE ON StoreRegistration
FOR EACH ROW
BEGIN
    INSERT INTO StoreRegistrationAudit (
        store_id, owner_id, store_name, store_address, store_description, 
        store_image, approval_status, approval_date, modification_date, 
        store_x, store_y, store_ca, change_type, change_date
    ) VALUES (
        OLD.store_id, OLD.owner_id, OLD.store_name, OLD.store_address, OLD.store_description, 
        OLD.store_image, OLD.approval_status, OLD.approval_date, OLD.modification_date, 
        OLD.store_x, OLD.store_y, OLD.store_ca, 'UPDATE', NOW()
    );

업체 삭제시 적용되는 트리거

CREATE TRIGGER before_store_delete
BEFORE DELETE ON StoreRegistration
FOR EACH ROW
BEGIN
    INSERT INTO StoreRegistrationAudit (
        store_id, owner_id, store_name, store_address, store_description, 
        store_image, approval_status, approval_date, modification_date, 
        store_x, store_y, store_ca, change_type, change_date
    ) VALUES (
        OLD.store_id, OLD.owner_id, OLD.store_name, OLD.store_address, OLD.store_description, 
        OLD.store_image, OLD.approval_status, OLD.approval_date, OLD.modification_date, 
        OLD.store_x, OLD.store_y, OLD.store_ca, 'DELETE', NOW()
    );

 

계좌생성 트리거

회원가입 시 계좌가 자동으로 생성되도록 하는 트리

CREATE TRIGGER after_user_registration
AFTER INSERT ON userinformation
FOR EACH ROW
BEGIN
    INSERT INTO account (
        owner_id, owner_name, owner_email, account_status, account_amount, change_date
    ) VALUES (
        NEW.user_id, NEW.Name, NEW.Email, 1, 0, NOW()
    );

 

계좌 입출금 발생 시 자동으로 현재 내 계좌의 값 변경 하는 트리거

CREATE TRIGGER accountstatus_insert
AFTER INSERT ON accountstatus
FOR EACH ROW
BEGIN
    UPDATE account
    SET account_amount = account_amount + NEW.amount,
        change_date = NOW()
    WHERE account_id = NEW.account_id;
반응형