Skip to content

DB ์„ค๊ณ„

MinJun Choi edited this page Nov 2, 2021 · 11 revisions

ERD ์„ค๊ณ„

ORM

  • prisma (MySQL)

image

1. users Table (์‚ฌ์šฉ์ž)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
id INT PK ์‚ฌ์šฉ์ž์˜ ๊ณ ์œ ID
email VARCHAR(30) NOT NULL, Unique ์‚ฌ์šฉ์ž์˜ ์ด๋ฉ”์ผ
password VARCHAR(200) NOT NULL, Unique ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ(์•”ํ˜ธํ™”)
createdAt DATETIME(3) ๊ฐ€์ž… ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ
provider VARCHAR(191) OAuth ์ •๋ณด

2. auth Table (local ์ธ์ฆ)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
id INT PK auth ๊ณ ์œ ID
email VARCHAR(30) ์‚ฌ์šฉ์ž์˜ ์ด๋ฉ”์ผ
auth VARCHAR(191) ์ธ์ฆ ๋ฒˆํ˜ธ
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ

3. profiles Table (ํ”„๋กœํ•„)

  • user Table ๊ณผ 1:1 ๊ด€๊ณ„
์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
id INT PK ํ”„๋กœํ•„ ๊ณ ์œ ID
department VARCHAR(50) ์‚ฌ์šฉ์ž์˜ ์†Œ์†
introduce TEXT ์ž๊ธฐ ์†Œ๊ฐœ
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ
userId INT FORIGNKEY ์‚ฌ์šฉ์ž์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
profileImage TEXT ํ”„๋กœํ•„ ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•œ ์ฃผ์†Œ

4. well_talents Table (์ž˜ํ•˜๋Š” ์žฌ๋Šฅ)

  • profile Table ๊ณผ 1:n ๊ด€๊ณ„
์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
id INT PK ์ž˜ํ•˜๋Š” ์žฌ๋Šฅ ๊ณ ์œ ID
contents VARCHAR(191) ์ž˜ํ•˜๋Š” ์žฌ๋Šฅ
profileId INT FOREIGN ํ”„๋กœํ•„์„ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ

5. interest_talents Table (๊ด€์‹ฌ ์žฌ๋Šฅ)

  • profile Table ๊ณผ 1:n ๊ด€๊ณ„
์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
id INT PK ๊ด€์‹ฌ ์žฌ๋Šฅ ๊ณ ์œ ID
contents VARCHAR(191) ๊ด€์‹ฌ ์žฌ๋Šฅ
profileId INT FOREIGN ํ”„๋กœํ•„์„ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ

6. follow Table (ํŒ”๋กœ์šฐ)

  • primary key : followKey = [followerId,followingId]
์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
followerId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ํŒ”๋กœ์›Œ user ID
followingId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ํŒ”๋กœ์œ™ user ID
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ

7. channels Table (์ฑ„๋„)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
id INT PK ์ฑ„๋„ ๊ณ ์œ ID
name VARCHAR(191) ์ฑ„๋„์ด๋ฆ„
introduce TEXT ์ฑ„๋„ ์†Œ๊ฐœ
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ
adminId INT FORIGNKEY ์‚ฌ์šฉ์ž์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
channelImage TEXT ์ฑ„๋„ ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•œ ์ฃผ์†Œ

8. tags Table (ํƒœ๊ทธ [์ฑ„๋„, ์•„์นด์ด๋ธŒ])

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
id INT PK ํƒœ๊ทธ ๊ณ ์œ ID
name VARCHAR(191) ํƒœ๊ทธ ์ด๋ฆ„
introduce TEXT ํƒœ๊ทธ ์†Œ๊ฐœ
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ

9. channel_tags Table (์ฑ„๋„ ํƒœ๊ทธ)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
channelId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ์ฑ„๋„ ID
tagId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ํƒœ๊ทธ ID
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ

10. categories Table (์นดํ…Œ๊ณ ๋ฆฌ)

11. ban Table (๋ฐด)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
userId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ์‚ฌ์šฉ์ž ID
channelId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ์ฑ„๋„ ID
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ

12. participant Table (์ฑ„๋„ ์ฐธ์—ฌ์ž)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
userId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ์‚ฌ์šฉ์ž ID
channelId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ์ฑ„๋„ ID

13. channel_like Table (์ฑ„๋„ ์ข‹์•„์š”)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
userId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ์‚ฌ์šฉ์ž ID
channelId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ์ฑ„๋„ ID
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ

14. posts Table (๊ฒŒ์‹œ๊ธ€)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
id INT PK ํฌ์ŠคํŠธ ๊ณ ์œ ID
title VARCHAR(191) ํฌ์Šคใ…ก์ œ๋ชฉ
status ENUM [Notice,Open,Reservation,Close,Clear,Archived] ์ค‘ ๊ฐ€๋Šฅ
content TEXT ํฌ์ŠคํŠธ ๋‚ด์šฉ
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ
reservedAt DATETIME(3) ์žฌ๋Šฅ ๊ณต์œ  ์˜ˆ์•ฝ ์‹œ๊ฐ„ ์„ค์ •
adminId INT FORIGNKEY ์‚ฌ์šฉ์ž์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
channelId INT FORIGNKEY ์ฑ„๋„์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค

15. comments Table (๋Œ“๊ธ€ [๊ฒŒ์‹œ๊ธ€,์•„์นด์ด๋ธŒ])

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
id INT PK ๋Œ“๊ธ€ ๊ณ ์œ ID
content TEXT ๋Œ“๊ธ€ ๋‚ด์šฉ
authorId INT FORIGNKEY ์‚ฌ์šฉ์ž์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
postId INT FORIGNKEY ๊ฒŒ์‹œ๊ธ€์˜ ๋Œ“๊ธ€์ผ ๊ฒฝ์šฐ, ํฌ์ŠคํŠธ์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
archiveId INT FORIGNKEY ์•„์นด์ด๋ธŒ ๋Œ“๊ธ€์ผ ๊ฒฝ์šฐ, ์•„์นด์ด๋ธŒ์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ

16. attention Table (๊ฒŒ์‹œ๊ธ€ ๊ด€์‹ฌ ์‚ฌ์šฉ์ž)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
userId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ์‚ฌ์šฉ์ž ID
postId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ํฌ์ŠคํŠธ ID
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ

17. channel_rooms Table (์ฑ„๋„ ๋ฃธ)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
id INT PK ์ฑ„๋„ ๋ฃธ ๊ณ ์œ ID
status ENUM [Open,Reservation,Close,Archived] ์ค‘ ๊ฐ€๋Šฅ
name VARCHAR(191) NOT NULL ์ฑ„๋„๋ฃธ์ œ๋ชฉ
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ
reservedAt DATETIME(3) ์žฌ๋Šฅ ๊ณต์œ  ์˜ˆ์•ฝ ์‹œ๊ฐ„ ์„ค์ •
userId INT FORIGNKEY ์‚ฌ์šฉ์ž์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
channelId INT FORIGNKEY ์ฑ„๋„์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
postId INT FORIGNKEY ํฌ์ŠคํŠธ์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค

18. room_users Table (์ฑ„ํŒ… ์ฐธ๊ฐ€ ์‚ฌ์šฉ์ž)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
userId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ์‚ฌ์šฉ์ž ID
channelId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ์ฑ„๋„ ID
status VARCHAR(191) ์ฐธ์—ฌ์ž์˜ ์ƒํƒœ

19. chat_messages Table (์ฑ„ํŒ… ๋ฉ”์‹œ์ง€)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
id INT PK ์ฑ„ํŒ… ๊ณ ์œ ID
status VARCHAR(191) ๋ฆฌ๋ทฐ ์ƒํƒœ
content TEXT ์ฑ„ํŒ… ๋‚ด์šฉ
sendUserId INT FORIGNKEY ์‚ฌ์šฉ์ž์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
answerdId INT FORIGNKEY ๋‹ต์žฅ ์ฑ„ํŒ…์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
channelRoomId INT FORIGNKEY ์ฑ„๋„ ๋ฃธ์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
channelId INT FORIGNKEY ์ฑ„๋„์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ

20. reviews Table (๋ฆฌ๋ทฐ)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
id INT PK ๋ฆฌ๋ทฐ ๊ณ ์œ ID
content TEXT ๋ฆฌ๋ทฐ ๋‚ด์šฉ
reviewedUserId INT FORIGNKEY ๋ฆฌ๋ทฐ๋ฐ›๋Š” ์‚ฌ์šฉ์ž์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
reviewerId INT FORIGNKEY ๋ฆฌ๋ทฐํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
channelId INT FORIGNKEY ์ฑ„๋„์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ

21. archives Table (์•„์นด์ด๋ธŒ)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
id INT PK ์•„์นด์ด๋ธŒ ๊ณ ์œ ID
title VARCHAR(191) ์•„์นด์ด๋ธŒ ์ œ๋ชฉ
status ENUM [Private,Public] ์ค‘ ๊ฐ€๋Šฅ
content TEXT ํฌ์ŠคํŠธ ๋‚ด์šฉ
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ
ownerId INT FORIGNKEY ์†Œ์œ ์ž์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
channelId INT FORIGNKEY ์ฑ„๋„์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
postId INT FORIGNKEY ํฌ์ŠคํŠธ์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค

22. archive_tags Table (์•„์นด์ด๋ธŒ ํƒœ๊ทธ)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
archivedId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ์•„์นด์ด๋ธŒ ID
tagId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ํƒœ๊ทธ ID
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ

23. archive_like Table (์•„์นด์ด๋ธŒ ์ข‹์•„์š”)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
userId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ์‚ฌ์šฉ์ž ID
archiveId INT FOREIGN ์ฐธ์กฐํ•˜๋Š” ์•„์นด์ด๋ธŒ ID
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ

24. images Table (์ด๋ฏธ์ง€)

์นผ๋Ÿผ ํƒ€์ž… ์˜ต์…˜ ์„ค๋ช…
id INT PK ์ด๋ฏธ์ง€ ๊ณ ์œ ID
src TEXT ์ด๋ฏธ์ง€ ์ €์žฅ ๊ฒฝ๋กœ
postId INT FORIGNKEY ํฌ์ŠคํŠธ์˜ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
archiveId INT FORIGNKEY ์•„์นด์ด๋ธŒ id๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค
createdAt DATETIME(3) ์ƒ์„ฑ ๋‚ ์งœ
updatedAt DATETIME(3) ์ˆ˜์ • ๋‚ ์งœ

Clone this wiki locally