DataBase
[DB] 에브리타임 유저 , 게시판 디비 설계
커밍이즈스프링
2022. 2. 20. 21:08
반응형
DROP TABLE IF EXISTS boards;
DROP TABLE IF EXISTS users;
CREATE TABLE users(
u_id SERIAL UNIQUE,
user_id VARCHAR NOT NULL,
register TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE (user_id),
PRIMARY KEY (u_id, user_id)
);
CREATE TABLE boards(
b_id SERIAL,
user_id VARCHAR DEFAULT '익명' NOT NULL,
title VARCHAR NOT NULL,
content TEXT NOT NULL,
u_id INTEGER,
register TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (b_id, u_id),
FOREIGN KEY(u_id) REFERENCES users(u_id)
);
users 테이블
- user_id: 유저 아이디. UNIQUE값으로 데이터값은 유일하다.
boards 테이블
- user_id: 유저 아이디. 익명 게시판이므로, 기본적으로 '익명' 이라는 값으로 데이터에 기록이 된다.
- u_id: 자료형은 INTEGER(int)이다. users테이블의 u_id를 외래키로 가리킨다. 익명 게시판이지만, 로그인을 한 유저가 어떤 유저인지는 기본적으로 알아야 하기 때문에 user 테이블의 u_id를 가진다.
이번에는 user 테이블에서 user의 아이디를 변경 했을때와 탈퇴 했을때
user가 남긴 게시글도 함께 삭제 하는 테이블을 설계 해보자.
DROP TABLE IF EXISTS boards;
DROP TABLE IF EXISTS users;
CREATE TABLE users(
u_id SERIAL UNIQUE,
user_id VARCHAR NOT NULL,
register TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE (user_id),
PRIMARY KEY (u_id, user_id)
);
CREATE TABLE boards(
b_id SERIAL,
user_id VARCHAR DEFAULT '익명' NOT NULL,
title VARCHAR NOT NULL,
content TEXT NOT NULL,
u_id INTEGER,
register TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (b_id, u_id),
FOREIGN KEY(user_id) REFERENCES users(user_id) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY(u_id) REFERENCES users(u_id) ON DELETE CASCADE
);
반응형