bitcamp-aiaas-9 / MonoRecipe

0 stars 2 forks source link

DB 테이블 생성 #6

Open p3chaeyeon opened 1 month ago

p3chaeyeon commented 1 month ago

MySQL [2024.10.16.수]

-- admin_tb
CREATE TABLE admin_tb (
    acode INT PRIMARY KEY AUTO_INCREMENT,   -- 관리자 코드
    aname VARCHAR(70) NOT NULL,             -- 관리자 이름
    aid VARCHAR(50) NOT NULL UNIQUE,        -- 관리자 아이디
    apwd VARCHAR(100) NOT NULL              -- 관리자 비밀번호
);

-- user_tb
CREATE TABLE user_tb (
    ucode INT AUTO_INCREMENT PRIMARY KEY,   - 사용자 코드
    uname VARCHAR(50) NOT NULL,             -- 사용자 이름
    uid VARCHAR(50) NOT NULL UNIQUE,        -- 사용자 아이디
    upwd VARCHAR(100) NOT NULL,             -- 사용자 비밀번호
    uemail VARCHAR(100) NOT NULL            -- 사용자 이메일
);

-- dish_tb
CREATE TABLE dish_tb (
    dcode INT AUTO_INCREMENT PRIMARY KEY,   -- 음식 코드
    dimage VARCHAR(255) NOT NULL,           -- 음식 사진 파일명
    dimageUUID VARCHAR(255) NOT NULL,       -- 음식 사진 UUID 
    dname VARCHAR(100) NOT NULL,            -- 음식 이름 
    dintro TEXT,                            -- 음식 소개글
    drecipe TEXT NOT NULL,                  -- 음식 레시피
    dscore FLOAT DEFAULT 0                  -- 음식 평균 평점
);

-- 트리거: 리뷰 추가 시 음식의 평균 평점 업데이트
CREATE TRIGGER update_dscore
AFTER INSERT ON review_tb
FOR EACH ROW
BEGIN
    UPDATE dish_tb
    SET dscore = (SELECT AVG(rscore) FROM review_tb WHERE rdishcode = NEW.rdishcode)
    WHERE dcode = NEW.rdishcode;
END;

-- favorite_tb
CREATE TABLE favorite_tb (
    fcode INT AUTO_INCREMENT PRIMARY KEY,               -- 즐겨찾기 코드
    fuserid VARCHAR(50),                                -- 사용자 코드 (user_tb 외래키)
    fdishcode INT,                                      -- 음식 코드 (dish_tb 외래키)
    UNIQUE (fuserid, fdishcode),                        -- 사용자와 음식의 중복 방지
    FOREIGN KEY (fuserid) REFERENCES user_tb(uid),    -- 사용자 테이블과의 외래키 관계
    FOREIGN KEY (fdishcode) REFERENCES dish_tb(dcode)   -- 음식 테이블과의 외래키 관계
);

-- review_tb
CREATE TABLE review_tb (
    rcode INT AUTO_INCREMENT PRIMARY KEY,               -- 리뷰 코드
    rdishcode INT,                                      -- 음식 코드 (외래키)
    ruserid VARCHAR(50),                                -- 리뷰 아이디 (외래키)
    rscore FLOAT,                                       -- 리뷰 평점
    rdate DATETIME DEFAULT CURRENT_TIMESTAMP,           -- 리뷰 작성일시
    rcontent TEXT,                                      -- 리뷰 내용
    FOREIGN KEY (rdishcode) REFERENCES dish_tb(dcode) 
        ON DELETE CASCADE,                              -- 음식 삭제 시 리뷰도 삭제
    FOREIGN KEY (ruserid) REFERENCES user_tb(uid)       -- 사용자 삭제 시 리뷰 아이디 초기화 트리거 사용
);

-- 트리거: user_tb에서 사용자 삭제 시 review_tb의 ruserid 값을 '이름없음'으로 변경
CREATE TRIGGER update_review_userid
AFTER DELETE ON user_tb
FOR EACH ROW
BEGIN
    UPDATE review_tb
    SET ruserid = '이름없음'
    WHERE ruserid = OLD.uid;
END;
p3chaeyeon commented 1 month ago

String dimage; 수업 userupload 테이블의 imageOriginalFileName String dimageUUID; 수업 userupload 테이블의 imageFileName

p3chaeyeon commented 1 month ago
ALTER TABLE dish_tb
ADD dimageUUID VARCHAR(255) NOT NULL;
p3chaeyeon commented 1 month ago

FOREIGN KEY (fuserid) REFERENCES user_tb(ucode) >> FOREIGN KEY (fuserid) REFERENCES user_tb(uid) fuseriducode 의 자료형이 맞지 않아 변경