Loading...
2022. 4. 24. 17:49

[FastAPI] 14. SQLAlchemy์˜ One-to-Many, Many-to-Many, Self referential relationship

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ๋Š” ๋‹จ์ˆœ Column ๋ฐ์ดํ„ฐ์™€ ๊ทธ๋ฆฌ๊ณ , ๋‹จ์ผ ์™ธ๋ž˜ํ‚ค ํ•˜๋‚˜์˜ ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ๋ฅผ Pydantic์œผ๋กœ ๋งคํ•‘ํ•˜์—ฌ Serialize/Deserialize ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Many-to-Many, One-to-Many ํ˜•ํƒœ์˜ Foreign Key๊ฐ€ ๊ฑธ๋ ค ์žˆ๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ Joinํ•ด์„œ ๊ฐ€์ ธ์˜ฌ ๋–„ ์–ด๋–ป๊ฒŒ Pydantic ๋ชจ๋ธ๊ณผ ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. DB์—์„œ ๋‹จ์ˆœํ•˜๊ฒŒ ์ ‘๊ทผ ์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•œ ERD๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Category์™€ Post๊ฐ€ ์žˆ๊ณ , Post๋Š” category_id๋ฅผ ์™ธ๋ž˜ํ‚ค๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ๋ฅผ category ํ…Œ์ด๋ธ”์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๊ฑด๋ฐ, ์šฐ๋ฆฌ๊ฐ€ ์ด ์ •๋ณด๋ฅผ ๋ชจ๋‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ..

2022. 4. 16. 18:06

[Algorithm] 1์ผ 1์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ 1์ผ 1์ปค๋ฐ‹์— ๋„์ „ํ•˜๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ์ค€๋น„ํ•˜๊ณ  ๊ณ„์‹œ๊ฑฐ๋‚˜, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋Œ€ํšŒ๋ฅผ ์ค€๋น„ํ•˜๊ณ  ๊ณ„์‹œ๋Š” ๋ถ„๋“ค์ด๋ผ๋ฉด 1์ผ 1์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์–ด์ƒ‰ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, 1์ผ 1์ปค๋ฐ‹์„ ๋„์ „ํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด๋ผ๋ฉด, ๋‚˜๋Š” ์˜ค๋Š˜ ๋ฌด์—‡์œผ๋กœ ์ปค๋ฐ‹์„ ํ•ด์•ผํ• ๊นŒ? ๋ผ๋Š” ๊ณ ๋ฏผ์„ ํ•˜์‹œ๊ฒŒ ๋ ํ…๋ฐ์š”. ๋งค์ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด๋Š” ์–ด๋ ต๋”๋ผ๋„ ๊ฐ€๋” ์˜ค๋Š˜ ์ปค๋ฐ‹์€ ๋ญํ•˜์ง€? ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค ๋•Œ๊ฐ€ ์žˆ๋‹ค๋ฉด 1์ผ 1์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด๋ฅผ ํ•ด๋ณด์‹œ๋Š” ๊ฑด ์–ด๋–จ๊นŒ์š”? ํ’€ ๋•Œ๋งˆ๋‹ค ์ผ์ผ์ด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ Git์— ์˜ฌ๋ฆฌ๋Š”๊ฑด ๊ท€์ฐฎ์•„... ์˜ˆ์ „์— ์ €๋Š” ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ”Œ๋žซํผ(ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, ๊ตฌ๋ฆ„, ๋ฐฑ์ค€ ๋“ฑ)์—์„œ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณธ ํ›„, ๋งž์€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ ๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•ด์„œ ์ปค๋ฐ‹์„ ํ–ˆ๋˜์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ํ• ๋งŒํ–ˆ์ง€๋งŒ ์‹œ๊ฐ„์ด ์ง€๋‚ ์ˆ˜๋ก ๋ฌธ์ œ๋ฅผ ์ ๊ณ , ์–ด๋–ป๊ฒŒ ํ’€์—ˆ๋Š”์ง€๋ฅผ ์ผ์ผ์ด ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ด ๋Š˜ ๊ท€์ฐฎ์€ ์ผ์ด์—ˆ๊ณ , ๊ฒฐ๊ตญ ์–ธ์ œ..