https://www.erdcloud.com/d/PPMbk7p7RuCwxSvJ5

image.png

CREATE TABLE "messages" (
	"id"	SERIAL		NOT NULL,
	"sender_id"	SERIAL		NOT NULL,
	"chatroom_id"	SERIAL		NOT NULL,
	"content"	VARCHAR(255)		NULL,
	"created_at"	TIMESTAMP		NULL,
	"is_read"	BOOLEAN		NOT NULL
);

COMMENT ON COLUMN "messages"."id" IS '메시지ID';

COMMENT ON COLUMN "messages"."sender_id" IS '사용자ID';

COMMENT ON COLUMN "messages"."chatroom_id" IS '채팅방ID';

COMMENT ON COLUMN "messages"."content" IS '채팅 내용';

COMMENT ON COLUMN "messages"."created_at" IS '생성일자';

COMMENT ON COLUMN "messages"."is_read" IS '읽음 상태';

CREATE TABLE "chatbot_messages" (
	"id"	SERIAL		NOT NULL,
	"user_id"	SERIAL		NOT NULL,
	"user_message"	TEXT		NULL,
	"bot_response"	TEXT		NULL,
	"created_at"	TIMESTAMP		NULL
);

CREATE TABLE "reviews" (
	"id"	SERIAL		NOT NULL,
	"reviewer_id"	SERIAL		NOT NULL,
	"reviewee_id"	SERIAL		NOT NULL,
	"trade_id"	SERIAL		NOT NULL,
	"rating"	INTEGER		NOT NULL,
	"content"	VARCHAR(200)		NULL,
	"created_at"	TIMESTAMP		NULL
);

COMMENT ON COLUMN "reviews"."id" IS '리뷰ID';

COMMENT ON COLUMN "reviews"."reviewer_id" IS '판매자ID';

COMMENT ON COLUMN "reviews"."reviewee_id" IS '구매자ID';

COMMENT ON COLUMN "reviews"."trade_id" IS '상품ID';

COMMENT ON COLUMN "reviews"."rating" IS '평점';

COMMENT ON COLUMN "reviews"."content" IS '리뷰 내용';

COMMENT ON COLUMN "reviews"."created_at" IS '생성일자';

CREATE TABLE "users" (
	"id"	SERIAL		NOT NULL,
	"provider_id"	VARCHAR(100)		NULL,
	"provider"	VARCHAR(100)		NULL,
	"username"	VARCHAR(50)		NULL,
	"nickname"	VARCHAR(50)		NULL,
	"password"	VARCHAR(255)		NULL,
	"email"	VARCHAR(100)		NULL,
	"profile_img_url"	VARCHAR(100)		NULL,
	"created_at"	TIMESTAMP		NULL,
	"location"	VARCHAR(100)		NULL,
	"position"	GEOMETRY		NULL
);

CREATE TABLE "chatrooms" (
	"id"	SERIAL		NOT NULL,
	"seller_id"	SERIAL		NOT NULL,
	"buyer_id"	SERIAL		NOT NULL,
	"trade_id"	SERIAL		NOT NULL,
	"updated_at"	TIMESTAMP		NULL
);

CREATE TABLE "trades" (
	"id"	SERIAL		NOT NULL,
	"seller_id"	SERIAL		NOT NULL,
	"buyer_id"	INTEGER		NULL,
	"title"	VARCHAR(100)		NULL,
	"price"	INTEGER		NULL,
	"description"	VARCHAR(100)		NULL,
	"status"	VARCHAR(100)		NULL,
	"view_count"	INTEGER		NULL,
	"category"	VARCHAR(100)		NULL,
	"created_at"	TIMESTAMP		NULL,
	"updated_at"	TIMESTAMP		NULL
);

CREATE TABLE "trade_images" (
	"id"	SERIAL		NOT NULL,
	"trade_id"	SERIAL		NOT NULL,
	"url"	VARCHAR(1024)		NOT NULL
);

ALTER TABLE "messages" ADD CONSTRAINT "PK_MESSAGES" PRIMARY KEY (
	"id"
);

ALTER TABLE "chatbot_messages" ADD CONSTRAINT "PK_CHATBOT_MESSAGES" PRIMARY KEY (
	"id"
);

ALTER TABLE "reviews" ADD CONSTRAINT "PK_REVIEWS" PRIMARY KEY (
	"id"
);

ALTER TABLE "users" ADD CONSTRAINT "PK_USERS" PRIMARY KEY (
	"id"
);

ALTER TABLE "chatrooms" ADD CONSTRAINT "PK_CHATROOMS" PRIMARY KEY (
	"id"
);

ALTER TABLE "trades" ADD CONSTRAINT "PK_TRADES" PRIMARY KEY (
	"id"
);

ALTER TABLE "trade_images" ADD CONSTRAINT "PK_TRADE_IMAGES" PRIMARY KEY (
	"id"
);

ALTER TABLE "messages" ADD CONSTRAINT "FK_users_TO_messages_1" FOREIGN KEY (
	"sender_id"
)
REFERENCES "users" (
	"id"
);

ALTER TABLE "messages" ADD CONSTRAINT "FK_chatrooms_TO_messages_1" FOREIGN KEY (
	"chatroom_id"
)
REFERENCES "chatrooms" (
	"id"
);

ALTER TABLE "chatbot_messages" ADD CONSTRAINT "FK_users_TO_chatbot_messages_1" FOREIGN KEY (
	"user_id"
)
REFERENCES "users" (
	"id"
);

ALTER TABLE "reviews" ADD CONSTRAINT "FK_users_TO_reviews_1" FOREIGN KEY (
	"reviewer_id"
)
REFERENCES "users" (
	"id"
);

ALTER TABLE "reviews" ADD CONSTRAINT "FK_users_TO_reviews_2" FOREIGN KEY (
	"reviewee_id"
)
REFERENCES "users" (
	"id"
);

ALTER TABLE "reviews" ADD CONSTRAINT "FK_trades_TO_reviews_1" FOREIGN KEY (
	"trade_id"
)
REFERENCES "trades" (
	"id"
);

ALTER TABLE "chatrooms" ADD CONSTRAINT "FK_users_TO_chatrooms_1" FOREIGN KEY (
	"seller_id"
)
REFERENCES "users" (
	"id"
);

ALTER TABLE "chatrooms" ADD CONSTRAINT "FK_users_TO_chatrooms_2" FOREIGN KEY (
	"buyer_id"
)
REFERENCES "users" (
	"id"
);

ALTER TABLE "chatrooms" ADD CONSTRAINT "FK_trades_TO_chatrooms_1" FOREIGN KEY (
	"trade_id"
)
REFERENCES "trades" (
	"id"
);

ALTER TABLE "trades" ADD CONSTRAINT "FK_users_TO_trades_1" FOREIGN KEY (
	"seller_id"
)
REFERENCES "users" (
	"id"
);

ALTER TABLE "trade_images" ADD CONSTRAINT "FK_trades_TO_trade_images_1" FOREIGN KEY (
	"trade_id"
)
REFERENCES "trades" (
	"id"
);