DBMS/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ก 

๐Ÿ“‹ ์ œ 1-2-3 ์ •๊ทœํ™” & ์—ญ์ •๊ทœํ™” ๊ธฐ๋ฒ• ๐Ÿ’ฏ ์ •๋ฆฌ

์ธํŒŒ_ 2021. 11. 8. 21:00

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค-์—ญ์ •๊ทœํ™”

์ •๊ทœํ™”๋ž€?

ERD๋‚ด์—์„œ ์ค‘๋ณต์š”์†Œ๋ฅผ ์ฐพ์•„ ์ œ๊ฑฐํ•ด ๋‚˜๊ฐ€๋Š” ๊ณผ์ •

 - ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋Š” ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ๋‹ค.

โ€‹

3์ฐจ ์ •๊ทœํ™” ์ •๋„๋งŒ ์•Œ๋ฉด ์„ค๊ณ„ํ•˜๋Š”๋ฐ ๋ฌด๋ฆฌ๊ฐ€ ์—†๋‹ค.

- ์ค‘๋ณต์„ ์ตœ์†Œํ™” -> ์™„์ „ํžˆ ์—†์• ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์–ด๋Š์ •๋„๋Š” ์ธ์ •ํ•˜๊ฒ ๋‹ค

- ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์— 1์–ต๊ฐœ์˜ ํŠœํ”Œ์ด ๋“ค์–ด์žˆ๋‹ค๊ณ ์ƒ๊ฐํ•ด๋ด๋ผ)

โ€‹

๋ช‡๊ฐ€์ง€ ์›์น™๋งŒ ์ง€ํ‚ค๋ฉด ์ •๊ทœํ™”๊ฐ€ ํ•„์š” ์—†๋Š” ERD๋ฅผ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.


๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๊ทœํ™” ์ ˆ์ฐจ

โ€‹ํ•จ์ˆ˜ ์ข…์†์„ฑ์„ ์ด์šฉํ•ด ๋ฆด๋ ˆ์ด์…˜์„ ์—ฐ๊ด€์„ฑ์ด ์žˆ๋Š” ์†์„ฑ๋“ค๋กœ๋งŒ ๊ตฌ์„ฑ๋˜ ๋„๋ก ๋ถ„ํ•ดํ•ด์„œ ์ด์ƒํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก Step By Step Approach ๋กœ ์ˆ˜ํ–‰

๊ธฐ๋ณธ ์ •๊ทœํ˜•์œผ๋กœ๋Š” ์ œ 1โ€ง2โ€ง3โ€ง๋ณด์ด์Šค/์ฝ”๋“œ ์ •๊ทœํ˜•์ด ์žˆ์œผ๋ฉฐ, ์ œ 4โ€ง5 ์ •๊ทœํ˜• ์€ ๊ณ ๊ธ‰ ์ •๊ทœํ˜•์œผ๋กœ ๋ถ„๋ฅ˜

โ€‹

์ œ 1 ์ •๊ทœํ™”

-> ์ œ1์ฐจ ์ •๊ทœํ™”๋Š” ๊ฐ™์€ ์„ฑ๊ฒฉ๊ณผ ๋‚ด์šฉ์˜ ์ปฌ๋Ÿผ์ด ์—ฐ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ปฌ๋Ÿผ์ด ์กด์žฌํ•  ๋•Œ, ํ•ด๋‹น ์ปฌ๋Ÿผ์„ ์ œ๊ฑฐํ•˜๊ณ  ๊ธฐ๋ณธํ…Œ์ด๋ธ”์˜ PK๋ฅผ ์ถ”๊ฐ€ํ•ด ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ณ , ๊ธฐ์กด์˜ ํ…Œ์ด๋ธ”๊ณผ 1:N ๊ด€๊ณ„๋ฅผ ํ˜•์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค-์ •๊ทœํ™”

tagํ•„๋“œ๋ฅผ ๋ณด๋ฉด, ๊ฐ’๋“ค์ด ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์žˆ๋‹ค. ํ•˜๋‚˜์˜ ํ•„๋“œ์— ๊ฐ’๋“ค์ด ์—ฌ๋Ÿฌ๊ฐœ ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค.

์ด๋ฅผ ์ •๊ทœํ™” ์‹œํ‚ค๋ณด์ž.

 1. ์šฐ์„  ํ•˜๋‚˜์˜ title์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ tag๋ฅผ ๊ฐ™๋Š”๋‹ค. ๋˜ํ•œ ํ•˜๋‚˜์˜ tag(rdb)๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ title(mySQL, Oracle)์„ ๊ฐ™๋Š”๋‹ค.

 2. ๊ทธ๋Ÿฌ๋ฉด title๊ณผ tag๋ฅผ ํ…Œ์ด๋ธ” ๋‘๊ฐœ๋กœ ๋ถ„๋ฆฌํ–ˆ์„๋•Œ ์ด๋“ค์˜ ๊ด€๊ณ„๋Š” M:N์ด ๋œ๋‹ค.

 3. M:N์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„  ํ…Œ์ด๋ธ” 3๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

 4. title๊ณผ topicํ…Œ์ด๋ธ”์„ ๋ถ„๋‹จ์‹œํ‚ค๊ณ  ๊ทธ ์ค‘๊ฐ„๊ฒฝ๋กœ ํ…Œ์ด๋ธ”์ธ topic_tag_relation์„ ๋งŒ๋“ ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ํ…Œ์ด๋ธ”์„ ์ด์–ด์šธ ์ƒˆ๋กœ์šด ํƒœ๊ทธ tag_id์†์„ฑ์„ ๋งŒ๋“ ๋‹ค.

 5. ๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ 1:N ๊ด€๊ณ„๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋ฉด ์ •๊ทœํ™”๊ฐ€ ์™„๋ฃŒํ•œ ๊ฒƒ์ด๋‹ค.

โ€‹

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค-์ •๊ทœํ™”


์ œ 2์ •๊ทœํ™”

-> ์ œ2์ •๊ทœํ™”๋Š” PK๊ฐ€ ์—ฌ๋Ÿฌ ํ‚ค๋กœ ๊ตฌ์„ฑ๋œ ๋ณตํ•ฉํ‚ค(Composite Primary Key)๋กœ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ๊ฐ€ 2์ฐจ ์ •๊ทœํ™”์˜ ๋Œ€์ƒ์ด ๋˜๋ฉฐ, ๋ณตํ•ฉํ‚ค ์ „์ฒด์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋ณตํ•ฉํ‚ค์˜ ์ผ๋ถ€๋ถ„์—๋งŒ ์ข…์†๋˜๋Š” ์†์„ฑ๋“ค์ด ์กด์žฌํ•  ๊ฒฝ์šฐ (์ฆ‰, ๋ถ€๋ถ„์  ํ•จ์ˆ˜ ์ข…์† ๊ด€๊ณ„) ์ด๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค-์ •๊ทœํ™”

 1. ์ œ 1์ •๊ทœํ™”๋ฅผ ๋งˆ์นœ ํ…Œ์ด๋ธ”์„ ๋ณด๋ฉด, ์ค‘๋ณต๋˜๋Š” ๋ ˆ์ฝ”๋“œ(์ ๊ฐˆ์ƒ‰)๊ฐ€ ๋ณด์ธ๋‹ค.

 2. ์ € ๋ถ€๋ถ„์ด ์ค‘๋ณต๋˜์–ด ๋‚˜ํƒ€๋‚˜๋Š” ์ด์œ ๋Š” type์™€ price ํ•„๋“œ ๊ฐ’์ด ๊ฐ๊ธฐ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 3. ๊ทธ๋Ÿฌ๋ฉด ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ถ€๋ถ„์„ ํ…Œ์ด๋ธ”๋กœ ๋‚˜๋ˆ„๊ณ  ์ค‘๋ณต๋ถ€๋ถ„์„ ํ•˜๋‚˜๋กœ ํ‘œํ˜„๋˜๊ฒŒ ํ•ด๋ณด์ž.

 4. ๋จผ์ € ์ค‘๋ณต์ด ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•œ ์›์ธ ํ•„๋“œ์ธ type์™€ price ํ•„๋“œ๋ฅผ ๋”ฐ๋กœ ๋นผ์„œ topic_typeํ…Œ์ด๋ธ”์„ ๋งŒ๋“ ๋‹ค.

 5. ๊ทธ๋ฆฌ๊ณ  topic_type์—์„œ ์‹๋ณ„ํ• ์ˆ˜์žˆ๋Š” ์™ธ๋ž˜ํ‚ค title์„ ๋“ฑ๋กํ•ด์ค€๋‹ค.

 6. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, ์ค‘๋ณต๋˜๋Š” ๊ฒƒ ์—†์ด title์ด mySQL์ด๋ƒ ์•„๋‹ˆ๋ƒ์— ๋”ฐ๋ผ topic ํ…Œ์ด๋ธ”์—์„  ์ €์ž์ •๋ณด, topic_typeํ…Œ์ด๋ธ”์—์„  ๊ฐ€๊ฒฉ๊ณผ ํƒ€์ž…์„ ๊ฐ๊ฐ ๋‚˜ํƒ€๋‚ผ์ˆ˜์žˆ๊ฒŒ ๋œ๋‹ค.


์ œ 3์ •๊ทœํ™”

-> ํ…Œ์ด๋ธ”์˜ ํ‚ค๊ฐ€ ์•„๋‹Œ ์ปฌ๋Ÿผ๋“ค์€ ๊ธฐ๋ณธํ‚ค์— ์˜์กดํ•ด์•ผ ํ•˜๋Š”๋ฐ ๊ฒ‰์œผ๋กœ๋Š” ๊ทธ๋Ÿฐ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๊ธฐ๋ณธํ‚ค๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์ผ๋ฐ˜ ์ปฌ๋Ÿผ์— ์˜์กดํ•˜๋Š” ์ปฌ๋Ÿผ๋“ค์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ (์ด์ „์  ํ•จ์ˆ˜ ์ข…์† ๊ด€๊ณ„)๋ผ๊ณ  ํ•œ๋‹ค.

์ œ 3์ •๊ทœํ™”๋Š” PK์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์ผ๋ฐ˜์ปฌ๋Ÿผ์— ์˜์กดํ•˜๋Š” ์ปฌ๋Ÿผ๋“ค์„ ๋ถ„๋ฆฌํ•œ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค-์ •๊ทœํ™”

 1. ์ œ 2์ •๊ทœํ™”๋ฅผ ๋งˆ์ณค์ง€๋งŒ ์—ฌ์ „ํžˆ ์ค‘๋ณต๋œ ๊ฐ’(๋…ธ๋ž€์ƒ‰) ์ด ๋ณด์ธ๋‹ค.

 2. ์ € ๋ ˆ์ฝ”๋“œ๋Š” author_id์— ์˜์กดํ•˜๋Š” ์ปฌ๋Ÿผ๋“ค์ด๋‹ค. ์–ธ๋œป๋ณด๋ฉด title์— ์˜์กดํ•˜๋Š”๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์•„๋‹Œ๊ฒƒ์ด๋‹ค.

 3. ๊ทธ๋Ÿผ PK(title)์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ์ปฌ๋Ÿผ๋“ค์„ ๋ถ„๋‹จ์‹œํ‚ค์ž.

 4. author๋ผ๋Š” ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ณ  ์ค‘๋ณต๋˜๋Š” ์ปฌ๋Ÿผ๋“ค 3๊ฐœ๋ฅผ ๊ทธ๋Œ€๋กœ ๋”ฐ์˜จ๋‹ค. ๊ทธ๋ฆฌ๊ณ  topicํ…Œ์ด๋ธ”๊ณผ author_id๋กœ ์™ธ๋ž˜ํ‚ค ๊ด€๊ณ„๋ฅผ ๋งบ์–ด์ค€๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ค‘๋ณต์ด ์‚ฌ๋ผ์ง€๋Š”๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

โ€‹

Q. ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์ผ author_id๊ฐ€ ์—†๊ณ  author<name, author_profile๋งŒ ์žˆ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

๊ทธ๋ž˜๋„ ์—ฌ์ „ํžˆ ์ค‘๋ณต์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ด๋•Œ ์ € ์ค‘๋ณต๋œ ์ปฌ๋Ÿผ๋“ค์„ ๋”ฐ๋กœ ๋นผ๊ณ , PK๋ฅผ ์™ธ๋ž˜ํ‚ค๋กœ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ๊ตฌ๋ถ„ํ• ์ˆ˜์žˆ๋Š” ์ƒˆ๋กœ์šด ์ปฌ๋Ÿผ์„ ๋งŒ๋“ค์–ด์„œ ์œ„์™€๊ฐ™์ด ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๊ฒƒ๋„ ๋‚˜์˜์ง€ ์•Š๋‹ค.

๊ฒฐ๊ตญ, ์ •๊ทœํ™” ๊ณผ์ •์ด๋ž€

์ค‘๋ณต๋œ ์†์„ฑ์„ ์ตœ์†Œํ™” ํ•˜๊ณ  ์ข…์†๊ด€๊ณ„์— ์žˆ๋Š” ์†์„ฑ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.
์ด๋Ÿฌํ•œ ์ •๊ทœํ™” ๊ณผ์ •์„ ๋‹ค์‹œ ์กฐ์ธํ•˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ์†์‹ค์—†์ด ์ด์ „์ƒํƒœ๋กœ ๋ณต๊ตฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค.
โ€‹


์—ญ์ •๊ทœํ™”

โ€‹-> ๋…ผ๋ฆฌ์  ์ •๊ทœํ™”๋ฅผ ํ†ตํ•ด ๋งŒ๋“  ํ‘œ๋ฅผ, ๊ฐœ๋ฐœ์  ์ธก๋ฉด์—์„œ ์„ฑ๋Šฅ์ด๋‚˜ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด์„œ ๋˜๋Œ์•„๊ฐ€๋Š” ์ž‘์—…์„ ์ผ์ปซ๋Š”๋‹ค.

๊ทธ๋ ‡๋‹ค๊ณ  ์ •๊ทœํ™”๋ฅผ ํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ฐ˜๋“œ์‹œ ์„ฑ๋Šฅ์„ ๋–จ์–ด๋œจ๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜ํ™” ํ•˜์ง€๋Š” ๋ง์ž.

โ€‹

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๊ทœํ™”๋ฅผ ๋งˆ์นœ ๋…ผ๋ฆฌ์  ํ…Œ์ด๋ธ”๋“ค์ด ์žˆ๋‹ค๊ณ  ํ•˜์ž.

 

[ ์›๋ณธ ํ…Œ์ด๋ธ” ]

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค-์ •๊ทœํ™”
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค-์ •๊ทœํ™”


์—ญ์ •๊ทœํ™” - JOIN์„ ์ค„์ด๊ธฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค-์ •๊ทœํ™”

 1. ๋งŒ์ผ topic_tag_relation์˜ topic_titleํ•„๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  tagName์„ ์•Œ์•„์•ผ๋œ๋‹ค๊ณ  ํ•ด๋ณด์ž.

 2. ๊ทธ๋Ÿฌ๋ฉด topic_tag_relation๊ณผ tagํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•ด์„œ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” name์ปฌ๋Ÿผ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋ฉด ๋œ๋‹ค.

 3. ํ•˜์ง€๋งŒ ๋งŒ์ผ ์ €๋Ÿฌํ•œ ์ฟผ๋ฆฌ๊ฐ€ ์„œ๋ฒ„๋‚ด์—์„œ ๋งŽ์ด ์ผ์–ด๋‚  ๊ฒฝ์šฐ, join์€ ๋งŽ์€ ๋ถ€ํ•˜๊ฐ€ ์ผ์–ด๋‚˜๊ธธ ๋งˆ๋ จ์ด๋‹ค.

 4. ์ด๋•Œ ๊ทธ๋ƒฅ ํ…Œ์ด๋ธ”์„ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.

 5. ์ œ 1์ •๊ทœํ™”๋ฅผ ํ†ตํ•ด ๋‚˜๋ˆด๋˜ ๊ฑธ ์„ฑ๋Šฅ๊ณผ ํŽธ์˜๋ฅผ ์œ„ํ•ด์„œ ์—ญ์œผ๋กœ ๋˜๋Œ์•„๊ฐ€๋ฒ„๋ฆฐ ๊ฒƒ์ด๋‹ค.


์—ญ์ •๊ทœํ™” - ๊ณ„์‚ฐ ์ž‘์—…์„ ์ค„์ด๊ธฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค-์ •๊ทœํ™”

์ด๋ฒˆ์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋น„์šฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ์—ญ์ •๊ทœํ™” ์ด๋‹ค.

 1. ๋งŒ์ผ count ๊ฐ’์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. group by๋ฅผ ํ†ตํ•ด ์ปฌ๋Ÿผ์„ ๋ฌถ๊ณ  ์กฐํšŒํ•˜๋ฉด ๋œ๋‹ค.

 2. ํ•˜์ง€๋งŒ ๋งŒ์ผ ์ด๋Ÿฌํ•œ ์ฟผ๋ฆฌ๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ด๋Ÿฌ๋‚œ๋‹ค๋ฉด ์—ญ์‹œ ๋ถ€ํ•˜๊ฐ€ ์ผ์–ด๋‚œ๋‹ค.

 3. ๋”ฐ๋ผ์„œ ๊ทธ๋ฃนํ•‘ํ•ด์„œ ๋‚ด์žฅํ•จ์ˆ˜๋ฅผ ์“ฐ๋Š”๊ฒŒ ์•„๋‹Œ ์•„์˜ˆ topic_count๋ฐ์ดํ„ฐ๋ฅผ ์ปฌ๋Ÿผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. topic_count ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ค€๋‹ค.

 4. ํ•˜์ง€๋งŒ ์œ ํšจํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธ€์ด ์ถ”๊ฐ€๋ ๋•Œ๋งˆ๋‹ค ์ง€์†์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋Š” ๊ด€๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.

 5. ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์“ฐ๋˜์ง€ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ์—์„œ ์ฒ˜๋ฆฌํ•˜๋˜์ง€ ํ•˜๋ฉด ๋œ๋‹ค.

 6. ๊ด€๊ฑด์€ group by ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.


์—ญ์ •๊ทœํ™” - ํ…Œ์ด๋ธ” ๋ถ„๋ฆฌ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค-์ •๊ทœํ™”

ํ•˜๋‚˜์˜ ํ‘œ๋ฅผ ์„ฑ๋Šฅ์„ ์œ„ํ•ด์„œ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ์ชผ๊ฐœ๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

๋งŒ์ผ topicํ…Œ์ด๋ธ”์— description์˜ ์šฉ๋Ÿ‰์ด ์—„์ฒญ๋งŽ์„๋•Œ ๋งŒ์ผ topicํ…Œ์ด๋ธ”์„ ์ž์ฃผ ์กฐํšŒํ–ˆ์„ ๊ฒฝ์šฐ ์•ฝ๊ฐ„ ๋ถ€ํ•˜๊ฐ€ ์˜ฌ์ˆ˜๋„ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ํ‘œ์˜ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ์šฉ๋Ÿ‰์ด ํฐ ํ…Œ์ด๋ธ”์„ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ํ…Œ์ด๋ธ”์„ ๋‚˜๋ˆ„๋ฉด ์—ฌ๋Ÿฌ๋Œ€์˜ ์„œ๋ฒ„์—์„œ ๊ฐ๊ธฐ ๋‹ค๋ฅด๊ฒŒ ์ ‘๊ทผํ•ด์„œ ์ฒ˜๋ฆฌํ• ์ˆ˜ ์žˆ์œผ๋‹ˆ ์„ฑ๋Šฅ์ด ์ข‹๋‹ค.

โ€‹

ํ–‰์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š”๊ฒƒ์€ ๋งŒ์ผ author_id ํšŒ์›์ด ๋ช‡๋งŒ๋ช…์ผ๋•Œ, ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ์ ‘๊ทผํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒƒ๋ณด๋‹ค, ํ…Œ์ด๋ธ”์„ ๋ถ„๋‹ดํ•ด์„œ author_id๊ฐ€ 1000์ดํ•˜์ผ ๊ฒฝ์šฐ 1500์ด์ƒ์ผ ๊ฒฝ์šฐ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๋กœ ์ ‘๊ทผํ•ด์„œ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด๋‹ค.

mySQL์—๋Š” ํŒŒํ‹ฐ์…˜ ๊ธฐ๋ฒ•์ด ์žˆ๋Š”๋ฐ, ๋ฐ”๋กœ ์ด๊ฑธ ๋งํ•˜๋Š” ๊ฒƒ์ด๋‹ค.


์—ญ์ •๊ทœํ™” - ์™ธ๋ž˜ํ‚ค ์ค„์ด๊ธฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค-์ •๊ทœํ™”

join์„ ์ค„์—ฌ์„œ ์ง€๋ฆ„๊ธธ์„ ๋งŒ๋“œ๋Š” ํ…Œํฌ๋‹‰์ด๋‹ค. ์ฒ˜์Œ์— ๋ฐฐ์› ๋˜ ์—ญ์ •๊ทœํ™” - JOIN์„ ์ค„์ด๊ธฐ ๋ฐฉ๋ฒ•์—์„œ ์™ธ๋ž˜ํ‚ค๋ฅผ ํ†ตํ•ด์„œ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์ด๋ผ ๋ณด๋ฉด ๋œ๋‹ค.

โ€‹

์–ด๋Š ์ €์ž์˜ ํƒœ๊ทธ์•„์ด๋””์™€ ํƒœ๊ทธ๋ช…์„ ์กฐํšŒํ•œ๋‹ค๊ณ  ๊ฐ€์ • ํ–ˆ์„๋•Œ, ์šฐ๋ฆฌ๋Š” ์„ธ๊ฐ€์ง€ ํ•„๋“œ ์–ด๋Š ์ €์ž์ธ์ง€(autor_id), tag_id, tagName ์ด ํ•„์š”ํ•˜๋‹ค ์ด๋“ค์„ ์กฐํšŒ ํ•˜๊ธฐ ์œ„ํ•ด์„  3๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ joinํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋˜์ง€๋งŒ, join์„ ๋งŽ์ด ์“ฐ๋ฉด ์„ฑ๋Šฅ์ด ์•ˆ์ข‹์•„์ง„๋‹ค. ๊ทธ๋ž˜์„œ topic_tag_relationํ…Œ์ด๋ธ”์— author_id์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜๋ฉด, join์„ ํ•œ๋ฒˆ๋งŒ ํ•˜๋ฉด ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.


# ์ฐธ๊ณ ์ž๋ฃŒ

https://myeonguni.tistory.com/210

https://www.opentutorials.org/course/3883/25301