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

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ์ดˆ(์—”ํ„ฐํ‹ฐ, ๋ฆด๋ ˆ์ด์…˜, ์†์„ฑ)

1eehyunji 2023. 9. 4. 18:09

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ผ์ •ํ•œ ๊ทœ์น™, ํ˜น์€ ๊ทœ์•ฝ์„ ํ†ตํ•ด ๊ตฌ์กฐํ™”๋˜์–ด ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ชจ์Œ์ด๋‹ค. 

ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์–ด, ๊ด€๋ฆฌํ•˜๋Š” ํ†ตํ•ฉ ์‹œ์Šคํ…œ์€ DBMS(Data Management System)์ด๋ผ ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์€ ํŠน์ • DBMS๋งˆ๋‹ค ์ •์˜๋œ ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ํ†ตํ•ด ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ •, ์กฐํšŒ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋˜, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์‹ค์‹œ๊ฐ„ ์ ‘๊ทผ๊ณผ ๋™์‹œ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์œ„์— DBMS๊ฐ€ ์žˆ๊ณ , ๊ทธ ์œ„์— ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ์œผ๋ฉฐ, ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด, MySQL์ด๋ผ๋Š” DBMS๊ฐ€ ์žˆ๊ณ  ๊ทธ ์œ„์— ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์†ํ•˜๋Š” Node.js๋‚˜ php์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋„์ง‘์–ด๋‚ด ํ•ด๋‹น ๋ฐ์ดํ„ฐ ๊ด€๋ จ ๋กœ์ง์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. 

 

์—”ํ„ฐํ‹ฐ(Entity)

์‚ฌ๋žŒ, ์žฅ์†Œ, ๋ฌผ๊ฑด, ์‚ฌ๊ฑด, ๊ฐœ๋… ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์†์„ฑ์„ ์ง€๋‹Œ ๋ช…์‚ฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด, 'ํšŒ์›'์ด๋ผ๋Š” ์—”ํ„ฐํ‹ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ํšŒ์›์€ ์ด๋ฆ„, ์•„์ด๋””, ์ฃผ์†Œ, ์ „ํ™”๋ฒˆํ˜ธ ๋“ฑ์˜ ์†์„ฑ์„ ๊ฐ€์ง„๋‹ค.

์ด๋ณด๋‹ค ๋งŽ์€ ์†์„ฑ์ด ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์„œ๋น„์Šค์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž์ถฐ ์†์„ฑ์ด ์ •ํ•ด์ง„๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์†Œ๋ผ๋Š” ์†์„ฑ์ด ์„œ๋น„์Šค์˜ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ๋ฌด๊ด€ํ•œ ์†์„ฑ์ด๋ผ๋ฉด ์ฃผ์†Œํ•˜๋Š” ์†์„ฑ์€ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. 

 

์•ฝํ•œ ์—”ํ„ฐํ‹ฐ์™€ ๊ฐ•ํ•œ ์—”ํ„ฐํ‹ฐ

์—”ํ„ฐํ‹ฐ๋Š” ์•ฝํ•œ ์—”ํ„ฐํ‹ฐ์™€ ๊ฐ•ํ•œ ์—”ํ„ฐํ‹ฐ๋กœ ๋‚˜๋‰œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, A๊ฐ€ ํ˜ผ์ž์„œ๋Š” ์กด์žฌํ•˜์ง€ ๋ชปํ•˜๊ณ  B์˜ ์กด์žฌ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ข…์†์ ์ด๋ผ๋ฉด A๋Š” ์•ฝํ•œ ์—”ํ„ฐํ‹ฐ์ด๊ณ , B๋Š” ๊ฐ•ํ•œ ์—”ํ„ฐํ‹ฐ์ด๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์ž๋ฉด, ์–ด๋–ค ํšŒ์‚ฌ ์ง์›์˜ ๊ฐ€์กฑ ๋ถ€์–‘ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ๋Š” ๊ฒฝ์šฐ, ๊ฐ€์กฑ ๋ฐ์ดํ„ฐ๋Š” ํ˜ผ์ž์„œ๋Š” ์กด์žฌํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ง์›์˜ ์กด์žฌ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ข…์†์ ์ด๋‹ค.

๋ฆด๋ ˆ์ด์…˜(relation)

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ •๋ณด๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„์ด๋‹ค. 

์—”ํ„ฐํ‹ฐ์— ๊ด€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฆด๋ ˆ์ด์…˜ ํ•˜๋‚˜์— ๋‹ด์•„์„œ ๊ด€๋ฆฌํ•œ๋‹ค. 

๋ฆด๋ ˆ์ด์…˜์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” 'ํ…Œ์ด๋ธ”'์ด๋ผ๊ณ  ํ•˜๋ฉฐ,  NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” '์ปฌ๋ ‰์…˜'์ด๋ผ ํ•œ๋‹ค. 

 

ํ…Œ์ด๋ธ”๊ณผ ์ปฌ๋ ‰์…˜

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ข…๋ฅ˜๋Š” ํฌ๊ฒŒ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

์ด ์ค‘ ๋Œ€ํ‘œ์ ์ธ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ MySQL๊ณผ ๋Œ€ํ‘œ์ ์ธ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ mongoDB๋ฅผ ์˜ˆ๋กœ ๋“ค์ž๋ฉด, 

MySQL์˜ ๊ตฌ์กฐ๋Š” ๋ ˆ์ฝ”๋“œ-ํ…Œ์ด๋ธ”-๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , MongoDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๋Š” ๋„ํ๋จผํŠธ-์ปฌ๋ ‰์…˜-๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. 

๋ ˆ์ฝ”๋“œ๋Š” ํ”ํžˆ ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ํ…Œ์ด๋ธ”์˜ ํ•œ ํ–‰์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ํŠœํ”Œ์ด๋ผ ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•œ๋‹ค. 

๋ ˆ์ฝ”๋“œ๊ฐ€ ์Œ“์—ฌ์„œ ํ…Œ์ด๋ธ”์„ ์ด๋ฃจ๊ณ , ํ…Œ์ด๋ธ”์ด ์Œ“์—ฌ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด๋ฃจ๋Š” ๊ฒƒ์ด๋‹ค. 

 

์†์„ฑ(attribute)

์†์„ฑ์€ ๋ฆด๋ ˆ์ด์…˜์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ตฌ์ฒด์ ์ด๋ฉฐ ๊ณ ์œ ํ•œ ์ด๋ฆ„์„ ๊ฐ–๋Š” ์ •๋ณด์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, '์ฐจ(Car)'๋ผ๋Š” ์—”ํ„ฐํ‹ฐ์˜ ์†์„ฑ์„ ๋ฝ‘์•„๋ณด์ž. ์ฐจ ๋ฒˆํ˜ธ, ๋ฐ”ํ€ด ์ˆ˜, ์ฐจ ์ƒ‰๊น”, ์ฐจ์ข… ๋“ฑ์ด ์žˆ๋‹ค. ์ด ์ค‘์—์„œ ์„œ๋น„์Šค์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ์†์„ฑ๋“ค๋งŒ ์—”ํ„ฐํ‹ฐ์˜ ์†์„ฑ์ด ๋œ๋‹ค.