graph LR
C["๐ค Client
๐คFrontend"]
S["๐ Backend"]
DB["๐๏ธ PostgreSQL Database"]
FS["๐ Local File Storage"]
C -->|"HTTP ์์ฒญ"| S
S -->|"CRUD ์ฒ๋ฆฌ(Prisma)"| DB
DB -->|"๋ฐ์ดํฐ ์๋ต"| S
S -->|"JSON ์๋ต"| C
C -->|"์ด๋ฏธ์ง ์
๋ก๋"| S
S -->|"ํ์ผ ์ ์ฅ(Multer)"| FS
FS -->|"์ด๋ฏธ์ง URL ์ ๊ณต"| C
C -->|"์ด๋ฏธ์ง ๋ณด๊ธฐ ์์ฒญ"| FS
S -->|"์๋ฌ ๋ฐ์ ์
์ ์ญ ์๋ฌ ํธ๋ค๋ฌ"| C
graph TD
%% ๋
ธ๋ ์ ์
Style["Style"]
Image["Image"]
Item["Item"]
Tag["Tag"]
StyleTag["StyleTag (_StyleTags)"]
Curating["Curating"]
Comment["Comment"]
%% ๊ด๊ณ ์ ์ (๋ผ๋ฒจ์ 1:N, N:N, 1:1 ํ๊ธฐ)
Style -->|"1:N"| Image
Style -->|"1:N"| Item
Style -->|"1:N"| Curating
Style -->|"N:N"| StyleTag
Tag -->|"N:N"| StyleTag
Curating -->|"1:1"| Comment
graph LR
Client["๐ค Client
(Browser / Frontend)"]
Server["๐ Backend
(Node.js / Express)"]
DB["๐๏ธ PostgreSQL Database
(RENDER)"]
Storage["๐ File Storage
(RENDER)"]
%% ์ผ๋ฐ API ์์ฒญ ํ๋ฆ
Client -->|"HTTP ์์ฒญ (JSON)"| Server
Server -->|"CRUD ์ฒ๋ฆฌ(Prisma)"| DB
DB -->|"๋ฐ์ดํฐ ์๋ต"| Server
Server -->|"JSON ์๋ต"| Client
%% ์ด๋ฏธ์ง ์
๋ก๋ ํ๋ฆ
Client -->|"์ด๋ฏธ์ง ์
๋ก๋"| Server
Server -->|"ํ์ผ ์ ์ฅ(Multer)"| Storage
Storage -->|"์ด๋ฏธ์ง URL ์ ๊ณต"| Client
%% ์ ์ ํ์ผ ์ ๊ณต
Client -->|"์ด๋ฏธ์ง ๋ณด๊ธฐ ์์ฒญ"| Storage
%% ์๋ฌ ์ฒ๋ฆฌ
Server -->|"์๋ฌ ๋ฐ์ ์
์ ์ญ ํธ๋ค๋ฌ"| Client
graph TD
%% ๋
ธ๋ ์ ์
Article["Article"]
Product["Product"]
Comment["Comment"]
User["User"]
Like["Like"]
%% ๊ด๊ณ ์ ์ (๋ผ๋ฒจ์ 1:N, N:N, 1:1 ํ๊ธฐ)
User -->|"1:N"| Product
Like -->|"N:1 (optional)"| Article
Like -->|"N:1 (optional)"| Product
Comment -->|"N:1 (optional)"| Article
Comment -->|"N:1 (optional)"| Product
User -->|"1:N"| Article
User -->|"1:N"| Comment
User -->|"1:N"| Like
- ํ ์ ์ ๋ ๊ฐ์ Product/Article ์ ํ ๋ฒ๋ง ์ข์์๋ฅผ ๋๋ฅผ ์ ์์ต๋๋ค. (unique ์ ์ฝ)