0. ๋งŒ์•ฝ ์ธ๋ฑ์Šค๊ฐ€ ์—†์—ˆ๋‹ค๋ฉด

 

์ธ๋ฑ์Šค ์—†์ด ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ํƒ์ƒ‰์„ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž

num์˜ ๊ฐ’์ด 27์ธ ํ–‰์„ ์ฐพ๋Š” ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ ์ธ๋ฑ์Šค๊ฐ€ ์—†๋‹ค๋ฉด , ์ •๋ ฌ ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฐพ์•„์•ผํ•œ๋‹ค.

์ด๋Ÿด ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๊ฐ’์„ ํƒ์ƒ‰ํ•˜๋Š” ํ’€ ์Šค์บ”์„ ํ•ด์•ผํ•  ์ˆ˜๋„์žˆ๋‹ค.

์ด๋Š” ๋งค์šฐ ๋น„ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์–ด๋–ค ํ˜„์ƒ์ด ์ผ์–ด๋‚˜๋Š” ์ง€ ์•Œ์•„๋ณด์•˜์œผ๋‹ˆ, ๊ทธ๋Ÿผ ์ด์ œ ์ธ๋ฑ์Šค๊ฐ€ ์ ์šฉ ๋œ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด์ž

 

 

์ฒ˜์Œ ์˜ˆ์‹œ์™€์˜ ์ฐจ์ด์ ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๊ณ  ๋ฌด์ž‘์ • ์ฒ˜์Œ๋ถ€ํ„ฐ ์กฐํšŒํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ด ๊ฒฝ์šฐ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋“ค๋กœ๋ถ€ํ„ฐ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

์ด์ œ ์šฐ๋ฆฌ๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค.

๋ฐ”๋กœ ์ด ์ธ๋ฑ์Šค๊ฐ€ ์˜ค๋Š˜ ๋ฐฐ์›Œ๋ณผ ์ฃผ์ œ์ด๋‹ค.

์–ด๋–ป๊ฒŒ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ํšจ์œจ์ ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ์ง€ ์•Œ์•„๋ณด์ž

 

1. ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

 

ํ…Œ์ด๋ธ”์˜ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ๋†’์—ฌ์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

์ธ๋ฑ์Šค๋ฅผ ์“ฐ๊ฒŒ ๋˜๋ฉด ์ถ”๊ฐ€์ ์ธ ์“ฐ๊ธฐ ์ž‘์—…๊ณผ ์ €์žฅ ๊ณต๊ฐ„์„ ํ™œ์šฉํ•˜๋ฏ€๋กœ ํƒ์ƒ‰ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์‹œ๋ฅผ ํฌํ•จํ•ด์„œ ์ง€๊ธˆ๊นŒ์ง€์˜ ์„ค๋ช…์œผ๋กœ ์ธ๋ฑ์Šค์˜ ํŠน์ง•์„ ์ •๋ฆฌํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  • ์ธ๋ฑ์Šค์˜ ๋ฐ์ดํ„ฐ๋Š” ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค.
  • ์ธ๋ฑ์Šค๋Š” ์ถ”๊ฐ€์ ์ธ ์ €์žฅ ๊ณต๊ฐ„์„ ํ•„์š”๋กœ ํ•œ๋‹ค.
  • ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ๋“ค์–ด๋„ ์ธ๋ฑ์Šค๊ฐ€ ๋ฌด์—‡์ด๊ณ  ์–ด๋–ค ์žฅ์ ์ด ์žˆ๋Š” ์ง€ ๋Œ€๋žต ํŒŒ์•…๋˜์—ˆ์„ ๊ฒƒ์ด๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ชฝ์œผ๋กœ ์ข€ ๋” ๋“ค์–ด๊ฐ€์„œ ๊ตฌ์ฒด์ ์œผ๋กœ ์™œ ํ•„์š”ํ•œ ์ง€ ์•Œ์•„๋ณด์ž

 

2. ์ธ๋ฑ์Šค์˜ ๋™์ž‘ ๋ฐฉ์‹

mySQL์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์™€์žˆ๋‹ค.

Indexes are used to find rows with specific column values quickly. Without an index, MySQL must begin with the first row and then read through the entire table to find the relevant rows.

 

ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ์š”์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ—ค
  2. ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ •๋ ฌํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ฃนํ•‘ ํ•˜๊ธฐ ์œ„ํ•ด

์˜ˆ๋ฅผ ๋“ค์–ด,

SELECT * FROM team WHERE name = ‘sehan’;

DELETE FROM logs WHERE datetime < ‘2023-06-16’;

UPDATE employee SET salary = salary * 1.5 WHERE id = 100;

SELECT * FROM team T JOIN department D ON [T.id](<http://T.id>) = D.id;

 

๊ฐ๊ฐ์˜ ์ฟผ๋ฆฌ์—๋Š” ์กฐ๊ฑด๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ•ด๋‹น ์ฟผ๋ฆฌ๋“ค์ด ์‹คํ–‰๋˜๋ฉด ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ฐพ์•„์•ผํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๊ฒฝ์šฐ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๊ฐ„์ด๋‚˜ ๋์— ์žˆ๋‹ค๋ฉด ํ’€์Šค์บ”์„ ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ๋œ๋‹ค.

 

์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ธ๋ฑ์Šค๋Š” ๋ณ„๋„์˜ ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์ž‘์—…์„ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ด๋ธ” ํƒ์ƒ‰ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œ์ผœ์ค€๋‹ค.

์ฆ‰ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ, ์กฐ๊ฑด๋“ค์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒƒ์ด ์ธ๋ฑ์Šค์ด๋‹ค.

๋˜ํ•œ ์ธ๋ฑ์Šค๋Š” ์กฐ์ธ์„ ํ•  ๋•Œ ์กฐ์ธ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•œ๋‹ค.

๋ฌด์กฐ๊ฑด Select ์—์„œ๋งŒ ํ•„์š”ํ•œ ๊ฒƒ์ด ์•„๋‹Œ ์กฐ๊ฑด ํƒ์ƒ‰์„ ์œ„ํ•ด์„œ๋“  ๋‹จ์ˆœ ๋ฐ์ดํ„ฐ ํƒ์ƒ‰์„ ์œ„ํ•ด์„œ๋“  ์ธ๋ฑ์Šค๋Š” ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

 

3. ์ธ๋ฑ์Šค์˜ ์ข…๋ฅ˜

๊ทธ๋ ‡๋‹ค๋ฉด ์ธ๋ฑ์Šค๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ?

 

์ธ๋ฑ์Šค์˜ ์ž๋ฃŒ๊ตฌ์กฐ

์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ๋Š” ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ , ๋Œ€ํ‘œ์ ์œผ๋กœ B-tree ์™€ B+tree ๊ฐ€ ์žˆ๋‹ค.

๋งˆ์ง€๋ง‰์—” ์ถ”๊ฐ€๋กœ ํ•ด์‹œ์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.

B-tree,B+tree ์—์„œ ‘B’์˜ ์˜๋ฏธ๋Š” ์ •ํ™•ํžˆ ๋ฐํ˜€์ง„ ๋ฐ”๋Š” ์—†์ง€๋งŒ ๊ท ํ˜•์„ ๋งž์ถ˜๋‹ค๋Š” ์˜๋ฏธ์—์„œ Balanced ๋ผ๋Š” ์˜๋ฏธ๋กœ ํ†ตํ•œ๋‹ค.

๊ท ํ˜•์„ ๋งž์ถค์œผ๋กœ์จ ์ข€ ๋” ๋น ๋ฅธ ์ธ๋ฑ์‹ฑ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

 

๋งŒ์•ฝ ์ž์‹๋…ธ๋“œ๋“ค์ด Balanced ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

ํŠธ๋ฆฌ๊ฐ€ ํŽธํ–ฅ๋˜์–ด ์žˆ๋Š” BST(์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ)๋ชจ์Šต์„ ์ƒ์ƒํ•ด๋ณด์ž

 

BST๋Š” ๊ท ํ˜•์„ ๋งž์ถ”์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์€ ๋ชจ์Šต์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค. 

์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋Š” O(n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ B tree๋Š” ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ๋งž์ถค์œผ๋กœ์จ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ค„์—ฌ์ค€๋‹ค.

 

์ด๋Š” BST๋Š” ์ตœ๋Œ€ 2๊ฐœ์˜ ์ž๋…€ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€์ง€๋งŒ B tree๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž๋…€๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜๋‹ค.

 

B-Tree

B-tree ๋Š” ํ•ญ์ƒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

๋•Œ๋ฌธ์— ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋”๋ผ๋„ O(logN)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ๋“ค์€ ๊ฐ™์€ ๋ ˆ๋ฒจ์— ์žˆ์œผ๋ฉฐ ๋”ฐ๋ผ์„œ Balanced ๋˜์—ˆ๋‹ค ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

B-tree์˜ ๊ตฌ์„ฑ์„ ์‚ดํŽด๋ณด์ž, ๋…ธ๋“œ๋Š” ํ‚ค๊ฐ’๊ณผ ๋ฆฌํ”„ ๋…ธ๋“œ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

๊ฐ key๋“ค์˜ ์™ผ์ชฝ ์ž์‹๋“ค์€ key๋ณด๋‹ค ์ž‘์€ ๊ฐ’ ,์˜ค๋ฅธ์ชฝ ๊ฐ’์€ key๋ณด๋‹ค ํฐ ๊ฐ’์œผ๋กœ ๋˜์–ด์žˆ๋‹ค.

 

B-tree ๊ตฌ์กฐ์˜ ๋ฐ์ดํ„ฐ ํƒ์ƒ‰ ๊ณผ์ •์„ ์•Œ์•„๋ณด์ž

ํ˜„์žฌ ๋ฐ์ดํ„ฐ์—์„œ ์ •์ˆ˜ 27 ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

๋จผ์ € 27์€ 31๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ ์™ผ์ชฝ ์ž์‹๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.

๊ทธ ๋‹ค์Œ 11, 29์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด ์ค‘๊ฐ„๊ฐ’์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐ€์šด๋ฐ์— ์žˆ๋Š” ์ž์‹ ๋…ธ๋“œ๋กœ ํƒ์ƒ‰์„ ํ•˜๊ฒŒ๋˜๊ณ  27์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜๋ฉด์„œ ํƒ์ƒ‰์ด ๋๋‚œ๋‹ค.

์ด๋ ‡๊ฒŒ ๊ท ํ˜• ์žˆ๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ๋ชจ๋“  ๊ฒฝ์šฐ์—์„œ ๋ฒ ์ŠคํŠธ์ธ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

์„ ํ˜• ํƒ์ƒ‰(Full scan)์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ O(n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

์ด ๊ฒฝ์šฐ ๋’ค์—์„œ ์‚ดํŽด๋ณผ B+tree ๋ผ๋Š” ๊ฒƒ์„ ํ†ตํ•ด์„œ Full scan์‹œ ํšจ์œจ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์‚ฝ์ž…

์‚ฝ์ž…์˜ ๊ฒฝ์šฐ ์กฐํšŒ ๋ฐฉ์‹๊ณผ ํ†ต์ผํ•˜๊ฒŒ Leaf Node๋“ค์„ ํƒ์ƒ‰ํ•˜๊ณ  ๋…ธ๋“œ ์ž๋ฆฌ๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด ํ•ด๋‹น ์ž๋ฆฌ์— ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž… , ๊ฝ‰ ์ฐจ ์žˆ๋‹ค๋ฉด ๋…ธ๋“œ๋ฅผ ๋ถ„ํ• ํ•ด์„œ ์‚ฝ์ž…ํ•œ๋‹ค.

์˜ˆ์ œ๋ฅผ ํ†ตํ•ด 13 ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž

ํƒ์ƒ‰์˜ ๊ฒฐ๊ณผ, 12์™€ 14 ์‚ฌ์ด์˜ ๊ฐ’์— ๋ฐฐ์ •๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•ด๋‹น Leaf Node๋Š” ๋…ธ๋“œ๊ฐ€ ๊ฝ‰ ์ฐฌ ์ƒํƒœ์ด๋‹ค.

 

๋”ฐ๋ผ์„œ ๋ถ€๋ชจ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋ถ€๋ชจ ๋…ธ๋“œ๋„ ๊ฝ‰ ์ฐฌ ์ƒํƒœ๊ฐ€ ๋˜๋ฏ€๋กœ ์ค‘์•™๊ฐ’์ธ 11๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•ด์ค€๋‹ค.

 

๋ถ€๋ชจ ๋…ธ๋“œ์— 11์„ ๋„ฃ์œผ๋‹ˆ ๋˜ ๋…ธ๋“œ๊ฐ€ ๊ฝ‰ ์ฐฌ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‹ค์‹œ ์ค‘์•™๊ฐ’์ธ 11๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•ด์ค€๋‹ค.

์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ์‚ฝ์ž… ๊ณผ์ •์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค.

 

B-tree์˜ ํŠน์ง•

  1. ๋ชจ๋“  ์ž์‹ ๋“ค์„ ๊ฐ™์€ ๋ ˆ๋ฒจ์— ์กด์žฌํ•œ๋‹ค.
  2. ๋…ธ๋“œ์˜ key์˜ ์ˆ˜๊ฐ€ k๊ฐœ๋ผ๋ฉด, ์ž์‹๋…ธ๋“œ๋Š” k+1 ์ด๋‹ค.
  3. Key๋“ค์€ ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ์ด๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ B- Tree ์— ๋Œ€ํ•œ ์ž‘๋™ ๊ณผ์ •์ด๋‹ค.

์ด์ œ B+ Tree์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

 

B + Tree

 

B- tree์™€์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ๋ฆฌํ”„ ๋…ธ๋“œ๋“ค๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.

์ด๋Š” Full scan ์‹œ์— ๊ฐ€์žฅ ๋ช…ํ™•ํ•œ ์žฅ์ ์„ ๊ฐ€์ง„๋‹ค.

 

๋‹ค์‹œ B-tree ์˜ Full scan ๊ณผ์ •์„ ์ƒ๊ฐํ•ด๋ณด์ž

B-tree์—์„œ๋Š” Full scan์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ชจ๋“  ๋ธŒ๋žœ์น˜ ๋…ธ๋“œ ๋ฐ ์ž์‹ ๋…ธ๋“œ๋“ค์„ ํƒ์ƒ‰ํ–ˆ์–ด์•ผํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ B+tree์—์„œ์˜ Full scan ์€ ๋‹ค๋ฅด๋‹ค.

๊ทธ ์ด์œ ๋Š” Leaf Node ์—๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๊ณ  ์ด๋“ค์€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋•๋ถ„์— ํ•œ๋ฒˆ์˜ ์„ ํ˜• ํƒ์ƒ‰์œผ๋กœ๋„ Full scan์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

B+tree์˜ ํŠน์ง•

  1. ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„๋‘์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ํ™•๋ณดํ•จ์œผ๋กœ์จ ๋” ๋งŽ์€ key๋“ค์„ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ํ’€ ์Šค์บ” ์‹œ, B+tree๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•ด์‹œ

 

 

ํ•ด์‹œ๊ฐ€ ์ธ๋ฑ์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ์•Œ๊ธฐ์ „์— ํ•ด์‹œํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ์•Œ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ key๊ฐ’์„ ์ธ์ž๋กœ ํ•˜๋Š” ํ•ด์‹œ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ฆ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

์ด ๊ฒฝ์šฐ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ key๊ฐ’์„ ํ•ด์‹œํ•จ์ˆ˜ ํ•œ๋ฒˆ์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

 

ํ•˜์ง€๋งŒ ํ•ด์‹œ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์ธ๋ฑ์Šค์—์„œ ๊ฑฐ์˜ ์“ฐ์ด์ง€ ์•Š๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ๋“ฑํ˜ธ ๋ฐฉ์‹์—๋งŒ ์ตœ์ ํ™” ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ฆ‰ DB ํƒ์ƒ‰ ์‹œ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ”์œ„๊ฒ€์ƒ‰์ด๋‚˜ ์ •๋ ฌ์—๋Š” ์ทจ์•ฝํ•˜๋‹ค.

์ด๋Ÿฌํ•œ ๋‹จ์  ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค์—์„œ๋Š” ๋งŽ์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

์ธ๋ฑ์Šค์˜ ์ข…๋ฅ˜

 

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜์—ฌ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ ํ…Œ์ด๋ธ”๋‹น ๋‹จ ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋งŒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด์„œ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์กฐํšŒ ๊ณผ์ •์—์„œ ๋งค์šฐ ๋น ๋ฅธ ์†๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ ์™ธ ์‚ฝ์ž… , ์‚ญ์ œ , ์ˆ˜์ • ๊ฐ™์€ ๊ฒฝ์šฐ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค์˜ ์‚ฌ์šฉ์ด ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

(DML์ด ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ ๋งค๋ฒˆ ์ •๋ ฌ์„ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ)

 

๋”ฐ๋ผ์„œ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋Š” ํ…Œ์ด๋ธ”์˜ ์ˆ˜์ •์ด ๋นˆ๋ฒˆํ•˜์ง€ ์•Š๊ณ  ์กฐํšŒ ์œ„์ฃผ์˜ ์ž‘์—…์„ ํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ์ข‹์€ ํšจ์œจ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

์‹ค์ƒํ™œ์— ๋น„์œ ํ•ด๋ณด๋ฉด, ์˜์–ด ๋‹จ์–ด ์ฑ…์„ ์˜ˆ์‹œ๋กœ ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์˜์–ด ๋‹จ์–ด ์ฑ…์€ ํ•ญ์ƒ A~Z ๊นŒ์ง€ ์ •๋ ฌ๋˜์žˆ๋Š” ๋ฐ ์ฑ… ์ž์ฒด๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ์ด๊ฒƒ์„ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค !

 

๋…ผํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค

 

์‹ค์ œ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์„ ์ •๋ ฌํ•˜์ง€ ์•Š๊ณ  ๋ณ„๋„์˜ ๊ณต๊ฐ„์— ์ธ๋ฑ์Šค ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค ํŽ˜์ด์ง€๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค.

 

DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋‹จ์œ„์ด๋‹ค.

ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€๋Š” 16kb์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

MySQL :: MySQL 8.0 Reference Manual :: 15.11.2 File Space Management

 

MySQL :: MySQL 8.0 Reference Manual :: 15.11.2 File Space Management

15.11.2 File Space Management The data files that you define in the configuration file using the innodb_data_file_path configuration option form the InnoDB system tablespace. The files are logically concatenated to form the system tablespace. There is no

dev.mysql.com

 

๋…ผํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ์˜ ์กฐํšŒ๋ณด๋‹ค ์ˆ˜์ •,์‚ญ์ œ,์‚ฝ์ž… ์‹œ์— ๋” ์ข‹์€ ํšจ์œจ์„ ๊ฐ€์ง„๋‹ค.

์‹ค์ƒํ™œ์— ๋น„์œ ํ•ด๋ณด๋ฉด ,

์ฑ… ์•ž์— ์ƒ‰์ธ(์ธ๋ฑ์Šค)๋ฅผ ๋ณด๊ณ  ํ•ด๋‹น ๋‚ด์šฉ์ด ์žˆ๋Š” ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด๋‹ค !

๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ์˜ ์กฐํšŒ๋ณด๋‹จ ์ˆ˜์‹œ๋กœ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋Š” ํ…Œ์ด๋ธ”์—์„œ์˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ ํ•ฉํ•˜๋‹ค.

4. ์ธ๋ฑ์Šค ๋งŒ๋“œ๋Š” ๋ฒ•

SQL ๋ฌธ์„ ํ†ตํ•ด ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

์ด ์ค‘์—์„œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์“ฐ๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋ฅผ ํ†ตํ•œ ์ธ๋ฑ์Šค ์ƒ์„ฑ๋„ ํฌํ•จ๋˜์–ด์žˆ๋‹ค.

์œ„์—์„œ ๋‘๊ฐ€์ง€์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐฐ์› ๋Š”๋ฐ ๊ฐ๊ฐ ์–ด๋–ป๊ฒŒ ๋งŒ๋“œ๋Š” ์ง€๋ฅผ ์•Œ์•„๋ณด์ž

 

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค

  1. ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ
  2. not null + ์œ ๋‹ˆํฌ ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ
ALTER TABLE member ADD CONSTRAINT id PRIMARY KEY(id); → ํด๋Ÿฌ์Šคํ„ฐ๋ง

ALTER TABLE member ADD CONSTRAINT id UNIQUE NOT NULL; → ํด๋Ÿฌ์Šคํ„ฐ๋ง

 

๋…ผ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค

  1. ์œ ๋‹ˆํฌ ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ
  2. ์ง์ ‘ (์œ ๋‹ˆํฌ)์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ
ALTER TABLE member ADD CONSTRAINT name UNIQUE(name); → ๋…ผํด๋Ÿฌ์Šคํ„ฐ๋ง

CREATE INDEX name ON member (name); → ๋…ผํด๋Ÿฌ์Šคํ„ฐ๋ง

์•„๋‹ˆ๋ฉด ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

CREATE TABLE member(
id INT PRIMARY KEY,
name varchar(20) not null,
INDEX name_idx (name)
)

 

์ด์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ DB ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

5. ์ ์ ˆํ•œ ์ธ๋ฑ์Šค ์‚ฌ์šฉ

์ธ๋ฑ์Šค๋ฅผ ์“ฐ๋ฉด ๋น ๋ฅธ ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ธ๋ฑ์Šค๊ฐ€ ๊ตณ์ด ํ•„์š”์—†๋Š” ์ƒํ™ฉ์€ ์–ธ์ œ์ผ๊นŒ?

  1. ์ธ๋ฑ์Šค์˜ ๋ฒ”์œ„๊ฐ€ ๋„ˆ๋ฌด ๋„“์€ ๊ฒฝ์šฐ์ด๋‹ค. ๋„“๋‹ค๋Š” ๊ฒƒ์˜ ๊ธฐ์ค€์€ ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ 15%์ด์ƒ์„ ์กฐํšŒํ•ด์•ผํ•œ๋‹ค๋Š” ์˜๋ฏธ๋กœ ๋ณด๋ฉด ์ ํ•ฉํ•˜๋‹ค.
  2. ์ด ๊ฒฝ์šฐ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ํšจ๊ณผ๊ฐ€ ๋ฏธ๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค์˜ ์‚ฌ์šฉ์„ ์ง€์–‘ํ•œ๋‹ค.
  3. ์กฐํšŒ๋ณด๋‹ค ์‚ฝ์ž…,์‚ญ์ œ ๋“ฑ ์ˆ˜์ • ์ž‘์—…์ด ๋งŽ์„ ๊ฒฝ์šฐ์ด๋‹ค. ์ด ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ธ๋ฑ์Šค๋กœ ์ธํ•œ ํšจ๊ณผ๊ฐ€ ๋ฏธ๋ฏธํ•˜๋‹ค.(์ˆ˜์ • ์ž‘์—… ์‹œ where ๋กœ ์กฐํšŒํ•˜๋Š” ๊ฒฝ์šฐ ์ œ์™ธ)
  4. ๋ฐ์ดํ„ฐ ์ž์ฒด๊ฐ€ ์ ์€ ๊ฒฝ์šฐ๋Š” ๋ฐฐ๋ณด๋‹ค ๋ฐฐ๊ผฝ์ด ๋” ํฐ ์ƒํ™ฉ์ด ์˜ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

6. ์–ธ์ œ ์“ฐ๋ฉด ์ข‹์„๊นŒ?

์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ๋ฑ์Šค๋กœ ํ•˜๋ฉด ํšจ๊ณผ์ ์ด๋‹ค.

์—ฌ๊ธฐ์„œ ์นด๋””๋„ˆ๋ฆฌํ‹ฐ๋ž€ ์‚ฌ์ „์  ์˜๋ฏธ๋กœ ๊ทธ๋ฃน ๋‚ด ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’๋‹ค๋Š” ๊ฒƒ์€ ์–ด๋–ค ๊ฑธ ์˜๋ฏธํ• ๊นŒ?

์ •ํ•ด์ง„ ๋ฐ์ดํ„ฐ ๋‚ด์—์„œ ๊ทธ๋ฃน ๋‚ด ์š”์†Œ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋Š” ๊ฒƒ์€ ์ค‘๋ณต์ด ์ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ค‘๋ณต์ด ์ ๋‹ค๋Š” ๊ฒƒ์€ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉ ์‹œ ๋งค์šฐ ์ข‹์€ ํšจ์œจ์„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์€ ์„ฑ๋ณ„ , ํ•™๋…„์€ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋‚ฎ์œผ๋ฏ€๋กœ(์ค‘๋ณต์ด ๋†’์Œ) ์ธ๋ฑ์Šค์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

๋ฐ˜๋Œ€๋กœ ํ•™๋ฒˆ , ๊ณ ์œ  ID ๋“ฑ์€ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์œผ๋ฏ€๋กœ(์ค‘๋ณต์ด ๋‚ฎ์Œ) ์ธ๋ฑ์Šค ์‚ฌ์šฉ์— ์ ํ•ฉํ•˜๋‹ค.

7. ๊ฒฐ๋ก 

์ธ๋ฑ์Šค์˜ ๋™์ž‘ ๋ฐฉ์‹๊ณผ ์ธ๋ฑ์Šค์˜ ์‚ฌ์šฉ ํšจ๊ณผ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.

์ธ๋ฑ์Šค๋Š” ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ํšจ์œจ์„ ๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒํ™ฉ์— ๋งž์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค ์‚ฌ์šฉ์€ ์˜คํžˆ๋ ค ์—ญํšจ๊ณผ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ์ธ ์ง€๋ฅผ ์ž˜ ํŒ๋‹จํ•ด ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.

 

์ฐธ๊ณ  ์ž๋ฃŒ

DB Index ๋™์ž‘์›๋ฆฌ๋ฅผ ์•Œ์•„๋ณด์ž

 

DB Index ๋™์ž‘์›๋ฆฌ๋ฅผ ์•Œ์•„๋ณด์ž

B-Tree๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด๋Š” Index ๋™์ž‘ ์›๋ฆฌ

kyungyeon.dev

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค vs ๋„Œํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค | zinirun

 

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค vs ๋„Œํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค | zinirun

ํ•™๊ณผ ๊ณต๋ถ€์™€ ์‹œํ—˜์„ ์ค€๋น„ํ•˜๋‹ค๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค์™€ ๋„Œํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋ฅผ ์ •๋ฆฌํ•ด ๋ณธ๋‹ค. ๊ฐœ๋… ์˜์–ด ์‚ฌ์ „์„ ์ƒ๊ฐํ•ด๋ณด์ž. ๊ธฐ๋ณธ์ ์œผ๋กœ A~Z ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์ฑ… ์ž์ฒด๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค. ์ด๊ฑด ํด๋Ÿฌ์Šคํ„ฐ ์ธ

zinirun.github.io

[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ฆผ์œผ๋กœ ์•Œ์•„๋ณด๋Š” B-Tree

 

[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ฆผ์œผ๋กœ ์•Œ์•„๋ณด๋Š” B-Tree

BํŠธ๋ฆฌ๋Š” ์ด์ง„ํŠธ๋ฆฌ์—์„œ ๋ฐœ์ „๋˜์–ด ๋ชจ๋“  ๋ฆฌํ”„๋…ธ๋“œ๋“ค์ด ๊ฐ™์€ ๋ ˆ๋ฒจ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ์ž๋™์œผ๋กœ ๋ฒจ๋Ÿฐ์Šค๋ฅผ ๋งž์ถ”๋Š” ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค.

velog.io

 

๋ฐฐ๊ฒฝ์ง€์‹ : ํ•จ์ˆ˜ ์ข…์†

๋‘ ํŠœํ”Œ์˜ X๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด Y๊ฐ’๋„ ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ฆ‰ X ๊ฐ’์— ๋”ฐ๋ผ์„œ Y์˜ ๊ฐ’์ด ๊ฒฐ์ •๋˜๋Š” ๊ฒƒ์ธ๋ฐ, X์™€ Y๋ฅผ์„ ํ•จ์ˆ˜ ์ข…์† ๊ด€๊ณ„๋ผ๊ณ  ํ•œ๋‹ค.

๊ด€์ ์— ๋”ฐ๋ผ์„œ X๊ฐ€ Y๋ฅผ ํ•จ์ˆ˜์ ์œผ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค. ๋ผ๊ณ  ํ• ์ˆ˜๋„ ์žˆ๊ณ  Y๊ฐ€ X์— ํ•จ์ˆ˜์ ์œผ๋กœ ์˜์กดํ•œ๋‹ค. ๋ผ๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ด€๊ณ„๋ฅผ ํ•จ์ˆ˜ ์ข…์† ํ˜น์€ Funtional Dependency(FD)๋ผ๊ณ  ํ•œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜ ํ…Œ์ด๋ธ”์—์„œ๋Š” ํšŒ์›์ด๋ฆ„๊ณผ ํ”„๋กœ๊ทธ๋žจ์ด primary key์ด๋ฉฐ ์ด๋Š” ๊ฐ€๊ฒฉ์„ ๊ฒฐ์ •ํ•œ๋‹ค.

(ํšŒ์› ๋ฒˆํ˜ธ๊ฐ€ ์ข€ ๋” ์ž์—ฐ์Šค๋Ÿฝ์ง€๋งŒ ์„ค๋ช…์„ ์œ„ํ•ด ๋‹ค๋ฅธ ํ‚ค๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ ๋‹ค.)

์ด ๋‘˜์„ FD ๊ด€๊ณ„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ธฐํ˜ธ๋กœ๋Š” {ํšŒ์›์ด๋ฆ„,ํ”„๋กœ๊ทธ๋žจ} -> ๊ฐ€๊ฒฉ ์œผ๋กœ ํ‘œ์‹œํ•œ๋‹ค.

ํšŒ์›๋ฒˆํ˜ธ ํšŒ์›์ด๋ฆ„ ํ”„๋กœ๊ทธ๋žจ ๊ฐ€๊ฒฉ
101 ๋ฏผ์ˆ˜ ํ…Œ๋‹ˆ์Šค 5000
102 ์ฒ ์ˆ˜ ๋†๊ตฌ 7000
103 ์˜ํฌ ์ถ•๊ตฌ 4000
103 ์˜ํฌ ๋†๊ตฌ 7000

 

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ FD๋ฅผ ํŒŒ์•…ํ• ๋•Œ๋Š” ์Šคํ‚ค๋งˆ์˜ ์˜๋ฏธ๋ฅผ ๋ณด๊ณ  ํŒŒ์•…ํ•ด์•ผํ•˜๋ฉฐ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ณด๊ณ  ์ถ”๋ก ํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ํšŒ์› ์ด๋ฆ„๊ณผ ๊ฐ€๊ฒฉ ๋ฐ์ดํ„ฐ๊ฐ€ FD์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋„ ๋™๋ช…์ด์ธ์ด๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ณ  ์—ฌ๋Ÿฌ ์˜ˆ์™ธ ์ƒํ™ฉ๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด๋ ‡๊ฒŒ ๊ตฌ์ถ•ํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์†์„ฑ(์• ํŠธ๋ฆฌ๋ทฐํŠธ)๊ฐ€ ๊ด€๊ณ„์ ์œผ๋กœ ์–ด๋–ค ์˜๋ฏธ๋ฅผ ์ง€๋‹์ง€์— ๋”ฐ๋ผ์„œ FD๋“ค์ด ๋‹ฌ๋ผ์ง„๋‹ค.

 

๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ(or state)๋งŒ ๋ณด๊ณ  ํŒ๋‹จํ•˜๊ธฐ๋ณด๋‹จ ์Šคํ‚ค๋งˆ๋ฅผ ๋ณด๊ณ  ์˜๋ฏธ์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ์ง€ ํŒŒ์•…ํ•ด์•ผํ•œ๋‹ค.

 

๋˜ ํ•œ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ ์€ FD๋Š” ์—ญ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

X -> Y ๊ด€๊ณ„๋ผ๊ณ  ํ•ด์„œ Y->X๊ฐ€ ์„ฑ๋ฆฝํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ€๊ฒฉ์„ ๊ฒฐ์ •์ง“๋Š” ๋‹ค๊ณ  ํ•ด์„œ ๊ฐ€๊ฒฉ์ด ํ”„๋กœ๊ทธ๋žจ์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค!

{ํ”„๋กœ๊ทธ๋žจ} -> ๊ฐ€๊ฒฉ (O)
{๊ฐ€๊ฒฉ} -> ํ”„๋กœ๊ทธ๋žจ (X)

 

*{}-> Y ๋Š” "Y์€ ์–ธ์ œ๋‚˜ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ์„ ๊ฐ€์ง„๋‹ค"๋Š” ์˜๋ฏธ์ด๋‹ค.

 

Trivial Funtional Dependcy

X -> Y์˜ ๊ด€๊ณ„์—์„œ Y๊ฐ€ X์˜ ๋ถ€๋ถ„ ์ง‘ํ•ฉ์ด๋ผ๋ฉด ์ด ๊ด€๊ณ„๋ฅผ Trivial Funtional Dependcy๋ผ๊ณ  ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, {a,b,c} -> {c} ๊ฐ™์ด c๊ฐ€ a,b,c์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. 

๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋กœ๋Š” ๋‹น์—ฐํžˆ non-Trivial Funtional Dependcy (์•„์˜ˆ ์•ˆ๊ฒน์น˜๋ฉด completely-non) ๊ฐ™์€ ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค.

 

Partial Functional Dependency

X->Y์˜ ๊ด€๊ณ„์—์„œ X์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ(์ „์ฒด๋ฅผ ์ œ์™ธํ•œ)๋งŒ์œผ๋กœ Y๋ฅผ ๊ฒฐ์ •์ง€์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด๋ฅผ Partial Functional Dependency๋ผ๊ณ  ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, {a,b,c} -> {c} ์—์„œ {a} -> {c}๊ฐ€ ์„ฑ๋ฆฝํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋Š” Full Funtional Dependcy๊ฐ€ ์žˆ๋‹ค.

 

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

๋ฐ์ดํ„ฐ ์ค‘๋ณต๊ณผ insertion , update , deletion anomaly๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜์˜ ์ข…์†์„ฑ์„ ์ด์šฉํ•ด์„œ relational DB๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

 

์‚ฝ์ž…์ด์ƒ : ์ž๋ฃŒ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ ์˜๋„์น˜ ์•Š์€ ์ž๋ฃŒ๊นŒ์ง€ ์‚ฝ์ž…ํ•ด์•ผํ•œ๋‹ค. (ex. null)

๊ฐฑ์‹ ์ด์ƒ : ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ ์ค‘ ์ผ๋ถ€๋งŒ ์ˆ˜์ •๋˜์–ด ๋ชจ์ˆœ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์‚ญ์ œ์ด์ƒ : ์–ด๋–ค ์ •๋ณด๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์˜๋„์น˜ ์•Š์€ ๋‹ค๋ฅธ ์ •๋ณด๊นŒ์ง€ ์‚ญ์ œ๋œ๋‹ค.

 

์ •๊ทœํ™”๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐ์ดํ„ฐ ์ˆ˜์ • ์‹œ์— ์—ฌ๋Ÿฌ ์ด์ƒ ํ˜„์ƒ๋“ค์„ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , ํ™•์žฅ์— ์šฉ์ดํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ตœ์†Œํ•œ์˜ ์˜ํ–ฅ๋งŒ์„ ๋ฏธ์นœ๋‹ค.

 

์ •๊ทœํ˜•์—๋Š” ๋ช‡ ๋‹จ๊ณ„์˜ nf(normal forms)๊ฐ€ ์žˆ๋Š”๋ฐ ์ฒ˜์Œ ๋‹จ๊ณ„๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๋ฉฐ ์•ž ๋‹จ๊ณ„๋ฅผ ๋งŒ์กฑํ•ด์•ผ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ณดํ†ต ์‹ค๋ฌด์—์„œ 3nf๊นŒ์ง€ ํ•˜๋ฉด ์ •๊ทœํ™”๋˜์—ˆ๋‹ค๋ผ๊ณ  ๋งํ•œ๋‹ค.

 

์ œ 1 ์ •๊ทœํ˜•(1NF)

๋ชจ๋“  attribute์˜ value๋Š” ๋” ์ด์ƒ ๋‚˜๋ˆ ์งˆ ์ˆ˜ ์—†๋Š” ๊ฐ’์ด์–ด์•ผํ•œ๋‹ค. -> ์—ฌ๋Ÿฌ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค.

 

ํšŒ์›๋ฒˆํ˜ธ ํšŒ์›์ด๋ฆ„ ํ”„๋กœ๊ทธ๋žจ
101 ๋ฏผ์ˆ˜ ํ…Œ๋‹ˆ์Šค
102 ์ฒ ์ˆ˜ ๋†๊ตฌ
103 ์˜ํฌ ์ถ•๊ตฌ,๋†๊ตฌ

(์˜ˆ์‹œ ์ฐธ๊ณ : ์ฝ”๋”ฉ์• ํ”Œ)

 

์˜ํฌ์— ํ•ด๋‹นํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‘ ๊ฐœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ด๋Š” ์ œ 1 ์ •๊ทœํ˜•์„ ์œ„๋ฐ˜ํ•œ๋‹ค.

 

์ œ 2 ์ •๊ทœํ˜•(2NF)

๋ชจ๋“  non-prime attribute๋Š” ๋ชจ๋“  key์— ๋Œ€ํ•ด full funtional dependentํ•ด์•ผํ•œ๋‹ค.
(ํ˜„์žฌ ํ…Œ์ด๋ธ”๊ณผ ์ƒ๊ด€์—†๋Š” ์ปฌ๋Ÿผ๋“ค์„ ๋ถ„๋ฆฌํ•œ๋‹ค.)

 

์ œ 1 ์ •๊ทœํ˜•์„ ์ ์šฉํ•˜์˜€์œผ๋ฉด ์ด์ œ ์ œ 2 ์ •๊ทœํ˜•์„ ์ง„ํ–‰ํ•  ์ฐจ๋ก€์ด๋‹ค.

ํ˜„์žฌ ํ…Œ์ด๋ธ”์—์„œ๋Š” ํšŒ์› ์ •๋ณด์™€ ํ”„๋กœ๊ทธ๋žจ ์ •๋ณด๊ฐ€ ํ˜ผ์žฌํ•ด์žˆ๋‹ค. ์ด๋Ÿฐ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•  ์‹œ์— ๋งค์šฐ ๋ฒˆ๊ฑฐ๋กœ์šธ ์ˆ˜ ์žˆ๋‹ค.

 

ํšŒ์›๋ฒˆํ˜ธ ํšŒ์›์ด๋ฆ„ ํ”„๋กœ๊ทธ๋žจ ๊ฐ€๊ฒฉ
101 ๋ฏผ์ˆ˜ ํ…Œ๋‹ˆ์Šค 5000
102 ์ฒ ์ˆ˜ ๋†๊ตฌ 7000
103 ์˜ํฌ ์ถ•๊ตฌ 4000
103 ์˜ํฌ ๋†๊ตฌ 7000

(์˜ˆ์‹œ ์ฐธ๊ณ : ์ฝ”๋”ฉ์• ํ”Œ)

 

์˜ˆ์‹œ์—์„œ๋Š” ๊ฐ€๊ฒฉ ์ปฌ๋Ÿผ์ด ํ”„๋กœ๊ทธ๋žจ์— partial funtional dependentํ•˜๋‹ค.

{ํšŒ์›์ด๋ฆ„,ํ”„๋กœ๊ทธ๋žจ} -> ๊ฐ€๊ฒฉ

{ํ”„๋กœ๊ทธ๋žจ} -> ๊ฐ€๊ฒฉ

primary key๊ฐ€ ํšŒ์›๋ฒˆํ˜ธ,ํ”„๋กœ๊ทธ๋žจ์ด์ง€๋งŒ ๊ฐ€๊ฒฉ์€ ํ”„๋กœ๊ทธ๋žจ ํ•˜๋‚˜๋งŒ์œผ๋กœ ๊ฒฐ์ •๋  ์ˆ˜ ์žˆ๋‹ค. -> ํ˜„์žฌ ํ…Œ์ด๋ธ”์— ์ƒ๊ด€ ์—†๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒƒ์ด๋‹ค!

์ด ์ƒํ™ฉ์—์„œ ๊ฐ€๊ฒฉ์ด ๋ณ€๊ฒฝ๋จ์— ๋˜๋ฉด ์ปฌ๋Ÿผ์„ ์ผ์ผ์ด ์ˆ˜์ •ํ•ด์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ”„๋กœ๊ทธ๋žจ ๊ฐ€๊ฒฉ
ํ…Œ๋‹ˆ์Šค 5000
๋†๊ตฌ 7000
์ถ•๊ตฌ 4000

 

์ด์ œ ๊ฐ€๊ฒฉ์€ ํ”„๋กœ๊ทธ๋žจ์— full functional dependencyํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋žจ ํ…Œ์ด๋ธ”์— ์—ฐ๊ด€์žˆ๋Š” ์ปฌ๋Ÿผ๋“ค๋งŒ ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.

๋งŒ์•ฝ ๊ฐ€๊ฒฉ์ด ์ˆ˜์ •๋œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ์ด ํ…Œ์ด๋ธ”์˜ ๊ฐ’๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ œ 3 ์ •๊ทœํ˜• (3NF)

๋ชจ๋“  non-prime attribute(ํ‚ค๋ฅผ ์ œ์™ธํ•œ)๋Š” ์–ด๋–ค key์—๋„ transitive FD(์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†) ํ•˜๋ฉด ์•ˆ๋œ๋‹ค.

 

transitive FD(์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†) ์ด๋ž€, X -> Y ์ด๊ณ  Y -> Z์ด๋ฉด X -> Z ์ธ ๊ฒฝ์šฐ์ด๋‹ค.

ํ”„๋กœ๊ทธ๋žจ ๊ฐ€๊ฒฉ ๊ฐ•์‚ฌ ์ „ํ™”๋ฒˆํ˜ธ
ํ…Œ๋‹ˆ์Šค 5000 ํ•œ์„์› 010-xxxx
๋†๊ตฌ 7000 ์ด์ง€์˜ 010-xxxx
์ถ•๊ตฌ 4000 ์ด๋ช…ํ•™ 010-xxxx

 

์ด ๊ฒฝ์šฐ์—๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด ๊ฐ•์‚ฌ๊ฐ€ ๊ฒฐ์ •๋˜๋Š”๋ฐ ๋™์‹œ์— ๊ฐ•์‚ฌ๊ฐ€ ์ „ํ™”๋ฒˆํ˜ธ ๋˜ํ•œ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ -> ๊ฐ•์‚ฌ 

๊ฐ•์‚ฌ  -> ์ „ํ™”๋ฒˆํ˜ธ

=> ํ”„๋กœ๊ทธ๋žจ -> ์ „ํ™”๋ฒˆํ˜ธ ๊ฐ™์€ ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†์ด ๋ฐœ์ƒํ•œ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ•์‚ฌ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ณผ๋ชฉ์„ ๋‹ด๋‹นํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์˜€์„ ๋•Œ ์ค‘๋ณต๋œ ๊ฐ•์‚ฌ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๊ฒƒ์ด๋‹ค.

ํ”„๋กœ๊ทธ๋žจ ๊ฐ€๊ฒฉ ๊ฐ•์‚ฌ ์ „ํ™”๋ฒˆํ˜ธ
ํ…Œ๋‹ˆ์Šค 5000 ํ•œ์„์› 010-xxxx
ํ…Œ๋‹ˆ์Šค ์ž…๋ฌธ 3000 ํ•œ์„์› 010-xxxx
๋†๊ตฌ 7000 ์ด์ง€์˜ 010-xxxx
์ถ•๊ตฌ 4000 ์ด๋ช…ํ•™ 010-xxxx

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋งŒ์•ฝ ํ•ด๋‹น ๊ฐ•์‚ฌ๊ฐ€ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜์˜€์„ ๊ฒฝ์šฐ ์ผ์ผ์ด ๋ณ€๊ฒฝํ•ด์ฃผ์–ด์•ผ ํ•˜๋ฉฐ ์ด๋Š” ๊ฐฑ์‹  ์ด์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด๋‹น ์ปฌ๋Ÿผ์„ ๋ถ„๋ฆฌํ•ด์คŒ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ•์‚ฌ ์ „ํ™”๋ฒˆํ˜ธ
ํ•œ์„์› 010-xxxx
์ด์ง€์˜ 010-xxxx
์ด๋ช…ํ•™ 010-xxxx

 

๋ณดํ†ต ์—ฌ๊ธฐ๊นŒ์ง€ ์˜ค๋ฉด ์ •๊ทœํ™” ๋˜์—ˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์ง€๋งŒ BCNF๊นŒ์ง€๋งŒ ๋” ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

BCNF

๋ชจ๋“  ์œ ํšจํ•œ non-trivial FD X -> Y ๋Š” X๊ฐ€ ์Šˆํผํ‚ค์—ฌ์•ผํ•œ๋‹ค.

 

๋งŒ์•ฝ ํ…Œ์ด๋ธ”์— ๊ฐ•์˜์‹ค ์ •๋ณด๊นŒ์ง€ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž 

ํ”„๋กœ๊ทธ๋žจ ๊ฐ€๊ฒฉ ๊ฐ•์‚ฌ ๊ฐ•์˜์‹ค
ํ…Œ๋‹ˆ์Šค 5000 ํ•œ์„์› 207ํ˜ธ
ํ…Œ๋‹ˆ์Šค ์ž…๋ฌธ 3000 ํ•œ์„์› 207ํ˜ธ
๋†๊ตฌ 7000 ์ด์ง€์˜ 211ํ˜ธ
์ถ•๊ตฌ 4000 ์ด๋ช…ํ•™ 213ํ˜ธ

 

์ด์ œ ๊ฐ•์˜์‹ค์„ ํ†ตํ•ด ํ•ด๋‹น ๊ฐ•์‚ฌ์˜ ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ตณ์ด ์ค‘๋ณต๋œ ๊ฐ•์‚ฌ์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผํ• ๊นŒ? ๋ผ๋Š” ์˜๋ฌธ์ด ๋“œ๋Š”๋ฐ ์ด์™€ ๊ด€๋ จ๋œ ๊ฐœ๋…์ด BCNF์ด๋‹ค.

 

ํ…Œ์ด๋ธ”์„ ๋ณด๋ฉด ๊ฐ•์˜์‹ค์„ ํ†ตํ•ด ํ˜„์žฌ ์–ด๋–ค ๊ฐ•์‚ฌ๊ฐ€ ๋ฐฐ์ •๋˜์—ˆ๋Š” ์ง€ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐ•์˜์‹ค -> ๊ฐ•์‚ฌ๋Š” non-trivial FD ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฐ•์˜์‹ค์€ ์Šˆํผํ‚ค๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ BCNF๋ฅผ ์œ„๋ฐ˜ํ•œ๋‹ค.

๊ฐ•์˜์‹ค ๊ฐ•์‚ฌ
207ํ˜ธ ํ•œ์„์›
2011ํ˜ธ ์ด์ง€์˜
213ํ˜ธ ์ด๋ช…ํ•™

 

ํ…Œ์ด๋ธ”์„ ๋ถ„๋ฆฌํ•œ ๊ฒฐ๊ณผ ๊ฐ•์˜์‹ค์€ ์Šˆํผํ‚ค๊ฐ€ ๋˜์—ˆ๊ณ  ๋” ์ด์ƒ ์›๋ž˜ ํ…Œ์ด๋ธ”์— ์ค‘๋ณต๋œ ๊ฐ•์‚ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•ด๋‘๋ฉด BCNF๋ฅผ ์ง€ํ‚ค๋ฉด์„œ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋“ค์„ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

+ Recent posts