• Mindscape ๐Ÿ”ฅ
    • Playlist ๐ŸŽง
  • Algorithm

    • 1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ
    • 1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ
    • Python ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ํŒ
    • C++ std::vector ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌ
    • Vim ์‚ฌ์šฉ ๋งค๋‰ด์–ผ
  • Ubuntu

    • ๋ฆฌ๋ˆ…์Šค ์šฐ๋ถ„ํˆฌ GRUB ํฐํŠธ ๋ณ€๊ฒฝ
    • ์šฐ๋ถ„ํˆฌ ์ด๋ฏธ์ง€ ๋น„๋””์˜ค ์ธ๋„ค์ผ(๋ฏธ๋ฆฌ๋ณด๊ธฐ) ์•ˆ ๋ณด์ž„ ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Wine ํ™˜๊ฒฝ์—์„œ ์นด์นด์˜คํ†ก ์‹คํ–‰ ์‹œ explorer.exe ๋œจ์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฒ•
    • ์šฐ๋ถ„ํˆฌ Wine ์นด์นด์˜คํ†ก ์‚ฌ์ง„ ์ด๋ฏธ์ง€ ์Šคํฌ๋ฆฐ์ƒท ๋ถ™์—ฌ๋„ฃ๊ธฐ
    • Wine ์นด์นด์˜คํ†ก ์ด๋ชจ์ง€ ๊นจ์ง ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Ubuntu ์œˆ๋„์šฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋„๊ธฐ
  • Wellness

    • ์ฐจ์ „์žํ”ผ (Psyllium Husk)
    • ์—‘์ŠคํŠธ๋ผ ๋ฒ„์ง„ ์˜ฌ๋ฆฌ๋ธŒ์œ  (Extra Virgin Olive Oil)
    • ์ž๊ฐ€๋น„๊ฐ•์„ธ์ฒ™ (Nasal Irrigation)
    • QCY HT08 (MeloBuds Pro Plus)
    • ์ฝ˜์„œํƒ€ (Concerta)
    • ์ธ๋ฐ๋†€ (Inderal)
    • ์„คํŠธ๋ž„๋ฆฐ (Sertraline)
    • ๋ฉœ๋ผํ† ๋‹Œ (Melatonin)
    • ์น˜๊ฒฝ๋ถ€ ๋งˆ๋ชจ์ฆ
    • ๋ฐ”๋ฒจ ์Šค์ฟผํŠธ (Barbell Squat)
  • Humanities

    • Nordvik, Russia
    • North Sentinel Island
    • ๋กฑ๊ณ ๋กฑ๊ณ (Rongorongo)
    • ๋ฐ”๋กœํฌ ์Œ์•… (Baroque Music)
  • Design

    • ๊ตฌ๊ธ€์˜ ์•„์ด์ฝ˜ ๋Œ€๊ฐœํŽธ โ€” 6๋…„ ๋งŒ์˜ ์‹ค์ˆ˜ ์ธ์ •
    • ์ œ๋Ÿด๋“œ ์  ํƒ€ โ€” ๋Ÿญ์…”๋ฆฌ ์Šคํฌ์ธ  ์›Œ์น˜์˜ ์ฐฝ์‹œ์ž
    • ๋ฐ”์šฐํ•˜์šฐ์Šค โ€” ํ˜„๋Œ€ ๋””์ž์ธ์˜ ์›์ 
  • Brands

    • NOMOS Glashรผtte
    • Frรฉdรฉrique Constant
    • KZ (Knowledge Zenith)
    • ์—์ŠคํŠธ๋ผ (AESTURA)
    • JINHAO (้‡‘่ฑช)
    • Herman Miller
    • ๋ฐ์Šค์ปค (DESKER)
    • ๋ฌด์‹ ์‚ฌ ์Šคํƒ ๋‹ค๋“œ (Musinsa Standard)
  • Finance

    • ํ˜„๋Œ€์นด๋“œ ZERO โ€” Edition2 vs Edition3 ๋น„๊ต
    • ์‹ ํ•œ์นด๋“œ ์ฒ˜์Œ
    • S&P 500 ETF ํˆฌ์ž ๊ฐ€์ด๋“œ
    • ํŒŒํ‚นํ†ต์žฅ vs CMA ํ†ต์žฅ
    • ๋ฒ„ํฌ์…” ํ•ด์„œ์›จ์ด (Berkshire Hathaway)
    • ๋น„ํŠธ์ฝ”์ธ(Bitcoin)
  • Products

    • ์˜ค๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค (Audio Interface)
    • ์ฟ ๋ฃจํ† ๊ฐ€ (KURUTOGA)
    • CX31993 DAC ๋™๊ธ€
    • ํด๋ Œ์ง• ๋ฐ€ํฌ (Cleansing Milk)
    • ํ”ผ์ ฏ ํ† ์ด (Fidget Toy)
    • ThinkPad
  • Programming Languages

    • 8.0. Statement Level Control Structures
    • 8. Subprogram
    • 9. Implementing Subprogram
    • 10.1. Abstract Data Types and Encapsulation Constructs
    • 10.2. Support for Object Oriented Programming
    • 11. Concurrency
    • 12. FPL (1)
    • 13. FPL (2)
    • 14. Exception Handling and Event Handling
    • Final Exam

Final Note

์ž‘์„ฑ 2026. 6. 12.ยท์ˆ˜์ • 2026. 6. 12.

1. ์ธ๋ฑ์‹ฑ (Indexing) - B+ Tree

๊ฐ€์žฅ ํ™•์‹คํ•˜๊ฒŒ ๋‚˜์˜ค๋Š” ์œ ํ˜•์œผ๋กœ, B+ Tree์˜ ๊ตฌ์กฐ ๋ณ€ํ™”๋ฅผ ์ง์ ‘ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ.

  • B+ Tree ์—ฐ์‚ฐ: ์ดˆ๊ธฐํ™” ์ƒํƒœ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ๊ฐ’์˜ ์‚ฝ์ž…(Insert) ๋ฐ ์‚ญ์ œ(Delete) ๊ณผ์ • ์ˆ˜ํ–‰
  • ๊ตฌ์กฐ ๋ณ€ํ™”: ์‚ฝ์ž… ์‹œ ๋…ธ๋“œ ๋ถ„ํ• (Split)๊ณผ ์‚ญ์ œ ์‹œ ๋ณ‘ํ•ฉ(Merge) ๊ณผ์ •์„ ํฌํ•จํ•˜์—ฌ ์ตœ์ข… ๊ฒฐ๊ณผ ํŠธ๋ฆฌ ๊ทธ๋ฆฌ๊ธฐ

2. ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ๋ฐ ์ตœ์ ํ™” (Query Processing & Optimization)

๊ณ„์‚ฐ ๋ฌธ์ œ๊ฐ€ ๋‹ค์ˆ˜ ์ถœ์ œ๋˜๋Š” ํŒŒํŠธ. ๊ณต์‹์„ ์ •ํ™•ํžˆ ์•”๊ธฐํ•ด์•ผ

  • ๋น„์šฉ(Cost) ๊ณ„์‚ฐ: ๋‘ ๋ฆด๋ ˆ์ด์…˜ ์กฐ์ธ ์‹œ ๊ฐ ๋ฐฉ๋ฒ•๋ณ„ Block Transfer ํšŸ์ˆ˜์™€ Seek ํšŸ์ˆ˜ ๊ตฌํ•˜๊ธฐ
    • ๋Œ€์ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜: Nested-loop join, Block nested-loop join, Merge join ๋“ฑ
  • ์กฐ์ธ ์ตœ์ ํ™” (Join Optimization)
    • 3๊ฐœ์˜ ๋ฆด๋ ˆ์ด์…˜(R1, R2, R3)์„ ์กฐ์ธํ•  ๋•Œ, ์ฃผ์–ด์ง„ ํŠœํ”Œ ์ˆ˜์™€ V๊ฐ’(Distinct values)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์กฐ์ธ ์ˆœ์„œ ๊ฒฐ์ •
    • ์กฐ์ธ ํ›„ ๊ฒฐ๊ณผ ๋ฆด๋ ˆ์ด์…˜์˜ ํฌ๊ธฐ(Tuple ์ˆ˜) ์˜ˆ์ธก
    • ๋” ํšจ์œจ์ ์ธ ์กฐ์ธ ๋ฐฉ๋ฒ• ์ฐพ๊ธฐ

3. ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ (Transaction Management)

์Šค์ผ€์ค„์˜ ์ •ํ•ฉ์„ฑ๊ณผ ์„ฑ์งˆ์„ ํŒ๋‹จํ•˜๋Š” ์ด๋ก  ๋ฐ ํŒ๋ณ„ ๋ฌธ์ œ

  • ์Šค์ผ€์ค„ ์„ฑ์งˆ ํŒ๋ณ„ (OX ๋˜๋Š” ๋‹จ๋‹ตํ˜•)
    • ์ฃผ์–ด์ง„ ์Šค์ผ€์ค„์ด Conflict Serializable ํ•œ์ง€ ํŒ๋‹จ
    • Recoverable Schedule์ธ์ง€ ํŒ๋‹จ
    • Cascadeless Schedule์ธ์ง€ ํŒ๋‹จ
  • ๋™์‹œ์„ฑ ์ œ์–ด (Concurrency Control)
    • Lock / Unlock ์‹œ์  ๋ฐ ํ”„๋กœํ† ์ฝœ ๊ด€๋ จ ๋ฌธ์ œ
    • ๊ฐ ํŠธ๋žœ์žญ์…˜์˜ ๊ณต์œ  ๋ฐ์ดํ„ฐ R/W ์—ฌ๋ถ€์— ๋”ฐ๋ฅธ ์Šค์ผ€์ค„ ๋ถ„์„

4. ํšŒ๋ณต ์‹œ์Šคํ…œ (Recovery System)

๋กœ๊ทธ ๊ธฐ๋ฐ˜ ํšŒ๋ณต ๊ธฐ๋ฒ•์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋ฌผ์Œ. PPT ์˜ˆ์ œ ์ƒํ™ฉ์„ ์ž˜ ๋ด๋‘๋Š” ๊ฒƒ์ด ์ค‘์š”

  • ๋กœ๊ทธ ๊ธฐ๋ก ๋ฐ ๋ณต๊ตฌ: ์ฒดํฌํฌ์ธํŠธ(Checkpoint)์™€ ์žฅ์•  ๋ฐœ์ƒ ์‹œ์ (Failure)์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ๋กœ๊ทธ ์ƒํƒœ ๋ถ„์„
  • Undo / Redo
    • ์–ด๋–ค ํŠธ๋žœ์žญ์…˜์„ Undo ๋˜๋Š” Redo ํ•ด์•ผ ํ•˜๋Š”์ง€ ํŒ๋‹จ
    • ๋ณต๊ตฌ ๊ณผ์ •์—์„œ์˜ ๋ณ€์ˆ˜ ๊ฐ’ ๋ณ€ํ™” ๋ฐ ์ˆœ์„œ ์„œ์ˆ 

5. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ (Relational Database Design)

๊ธฐ๋ง ๋ฒ”์œ„๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ค‘๊ฐ„๊ณ ์‚ฌ ๋ฒ”์œ„์—์„œ 1๋ฌธ์ œ ๊ธฐ์ดˆ์ ์ธ ๋‚ด์šฉ ์ถœ์ œ

  • ์ •๊ทœํ™” (Normalization): ์ฃผ์–ด์ง„ ๋ฆด๋ ˆ์ด์…˜์„ 3NF(์ œ3์ •๊ทœํ˜•)๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ
  • ๊ธฐํƒ€ ๊ฐ€๋Šฅ์„ฑ: BCNF ๋ถ„ํ•ด, Canonical Cover, ํ›„๋ณดํ‚ค(Candidate Key) ์ฐพ๊ธฐ ์ค‘ ํ•˜๋‚˜

์ •๋ฆฌํ•ด์ฃผ์‹  Final Note์™€ ์กฑ๋ณด(๊ธฐ์ถœ ๊ฒฝํ–ฅ)๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ, ์‹ค์ œ ์‹œํ—˜์— ๋‚˜์˜ฌ ๋ฒ•ํ•œ ๋ณ€ํ˜• ๋ฌธ์ œ 5์„ธํŠธ๋ฅผ ์ถœ์ œํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ต์žฌ ์—ฐ์Šต๋ฌธ์ œ ์Šคํƒ€์ผ์„ ์œ ์ง€ํ•˜๋˜, ์กฑ๋ณด์—์„œ ์–ธ๊ธ‰๋œ ํฌ์ธํŠธ(๊ณ„์‚ฐ, ๊ทธ๋ฆฌ๊ธฐ, OX ํŒ๋‹จ, ๋กœ๊ทธ ๋ถ„์„)๋ฅผ ์ง‘์ค‘์ ์œผ๋กœ ๋ฐ˜์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

1. Indexing (B+ Tree)

์œ ํ˜•: ์‚ฝ์ž…/์‚ญ์ œ์— ๋”ฐ๋ฅธ ๊ตฌ์กฐ ๋ณ€ํ™” ๊ทธ๋ฆฌ๊ธฐ (์กฑ๋ณด 1์ˆœ์œ„)

[English Problem] Construct a B+-tree for the following set of key values: (2,3,5,7,11,17,19,23,29,31)(2, 3, 5, 7, 11, 17, 19, 23, 29, 31)(2,3,5,7,11,17,19,23,29,31). Assume that the tree is initially empty and values are added in ascending order. Construct the tree for the case where the number of pointers in each node is 4 (n=4n=4n=4). After construction, show the steps to delete the value 23 and describe how the tree structure changes (merge or redistribution).

[ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ] ํ‚ค ๊ฐ’ ์ง‘ํ•ฉ (2,3,5,7,11,17,19,23,29,31)(2, 3, 5, 7, 11, 17, 19, 23, 29, 31)(2,3,5,7,11,17,19,23,29,31)์— ๋Œ€ํ•ด B+ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•˜์‹œ์˜ค. ํŠธ๋ฆฌ๋Š” ์ดˆ๊ธฐ์— ๋น„์–ด ์žˆ์œผ๋ฉฐ ๊ฐ’๋“ค์€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ž…๋ ฅ๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๊ฐ ๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ 4๊ฐœ(n=4n=4n=4)์ธ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ํŠธ๋ฆฌ๋ฅผ ๊ทธ๋ฆฌ์‹œ์˜ค. (์ฆ‰, ํ•œ ๋…ธ๋“œ์— ํ‚ค๋Š” ์ตœ๋Œ€ 3๊ฐœ๊นŒ์ง€ ์ €์žฅ ๊ฐ€๋Šฅ). ๊ตฌ์ถ• ํ›„, ๊ฐ’ 23์„ ์‚ญ์ œํ•˜๋Š” ๊ณผ์ •์„ ๋ณด์ด๊ณ , ํŠธ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”์ง€(๋ณ‘ํ•ฉ ๋˜๋Š” ์žฌ๋ถ„๋ฐฐ) ์„ค๋ช…ํ•˜์‹œ์˜ค.

[Solution Guide]

  1. ๊ตฌ์„ฑ (n=4n=4n=4, Max Key=3): 3๊ฐœ๊ฐ€ ์ฐจ๋ฉด ์ชผ๊ฐœ์ง‘๋‹ˆ๋‹ค(Split).
    • ์ตœ์ข… ํŠธ๋ฆฌ๋Š” Root๊ฐ€ ์žˆ๊ณ , ์ค‘๊ฐ„ ๋ ˆ๋ฒจ์ด ์ƒ๊ธฐ๋ฉฐ, ๋ฆฌํ”„ ๋…ธ๋“œ๋“ค์ด ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  2. ์‚ญ์ œ (23 ์‚ญ์ œ):
    • 23์ด ์žˆ๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ์—์„œ ๊ฐ’์„ ์ง€์›๋‹ˆ๋‹ค.
    • ์‚ญ์ œ ํ›„ ํ•ด๋‹น ๋…ธ๋“œ์˜ ํ‚ค ๊ฐœ์ˆ˜๊ฐ€ ์ตœ์†Œ ์กฐ๊ฑด(โŒˆ(nโˆ’1)/2โŒ‰=โŒˆ3/2โŒ‰=2\lceil (n-1)/2 \rceil = \lceil 3/2 \rceil = 2โŒˆ(nโˆ’1)/2โŒ‰=โŒˆ3/2โŒ‰=2๊ฐ€ ์•„๋‹ˆ๋ผ ๋ณดํ†ต ์ ˆ๋ฐ˜, ์—ฌ๊ธฐ์„œ๋Š” 1๊ฐœ ํ˜น์€ 2๊ฐœ ๋ฏธ๋งŒ์ผ ๋•Œ)์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋ฉด(Underflow), ํ˜•์ œ ๋…ธ๋“œ(Sibling)์—์„œ ๋นŒ๋ ค์˜ค๊ฑฐ๋‚˜(Redistribution), ํ˜•์ œ์™€ ํ•ฉ์นฉ๋‹ˆ๋‹ค(Merge).
    • ์ด ๋ฌธ์ œ์—์„œ๋Š” ํ˜•์ œ ๋…ธ๋“œ์™€ **๋ณ‘ํ•ฉ(Merge)**์ด ์ผ์–ด๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉ ํ›„ ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ๋„ ์กฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2. Query Processing (Cost Calculation)

์œ ํ˜•: ์กฐ์ธ ๋น„์šฉ(Block Transfer, Seek) ๊ณ„์‚ฐ (๊ณต์‹ ์•”๊ธฐ ํ•„์ˆ˜)

[English Problem] Let relations r(A,B)r(A, B)r(A,B) and s(B,C)s(B, C)s(B,C) have the following properties:

  • Number of tuples of rrr: Nr=20,000N_r = 20,000Nrโ€‹=20,000
  • Number of blocks of rrr: Br=800B_r = 800Brโ€‹=800
  • Number of tuples of sss: Ns=40,000N_s = 40,000Nsโ€‹=40,000
  • Number of blocks of sss: Bs=1,500B_s = 1,500Bsโ€‹=1,500
  • Memory buffer size: M=402M = 402M=402 blocks

Calculate the cost (number of block transfers and seeks) for a Block Nested-Loop Join, assuming rrr is the outer relation and sss is the inner relation. Assume worst-case seek cost.

[ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ] ๋ฆด๋ ˆ์ด์…˜ r(A,B)r(A, B)r(A,B)์™€ s(B,C)s(B, C)s(B,C)๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†์„ฑ์„ ๊ฐ€์ง„๋‹ค๊ณ  ํ•˜์ž:

  • rrr์˜ ํŠœํ”Œ ์ˆ˜: Nr=20,000N_r = 20,000Nrโ€‹=20,000, rrr์˜ ๋ธ”๋ก ์ˆ˜: Br=800B_r = 800Brโ€‹=800
  • sss์˜ ํŠœํ”Œ ์ˆ˜: Ns=40,000N_s = 40,000Nsโ€‹=40,000, sss์˜ ๋ธ”๋ก ์ˆ˜: Bs=1,500B_s = 1,500Bsโ€‹=1,500
  • ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ ํฌ๊ธฐ: M=402M = 402M=402 ๋ธ”๋ก

rrr์ด ์™ธ๋ถ€(Outer), sss๊ฐ€ ๋‚ด๋ถ€(Inner) ๋ฆด๋ ˆ์ด์…˜์ด๋ผ๊ณ  ๊ฐ€์ •ํ•  ๋•Œ, **๋ธ”๋ก ์ค‘์ฒฉ ๋ฃจํ”„ ์กฐ์ธ(Block Nested-Loop Join)**์˜ ๋น„์šฉ(๋ธ”๋ก ์ „์†ก ํšŸ์ˆ˜์™€ ํƒ์ƒ‰(Seek) ํšŸ์ˆ˜)์„ ๊ณ„์‚ฐํ•˜์‹œ์˜ค. (์ตœ์•…์˜ ํƒ์ƒ‰ ๋น„์šฉ์„ ๊ฐ€์ •ํ•  ๊ฒƒ).

[Solution Guide]

  • ๊ณต์‹ (Block Nested-Loop):
    • ๋ธ”๋ก ์ „์†ก(Transfers): Br+(Br/(Mโˆ’2))ร—BsB_r + ( B_r / (M-2) ) \times B_sBrโ€‹+(Brโ€‹/(Mโˆ’2))ร—Bsโ€‹
      • (์ฐธ๊ณ : Mโˆ’2M-2Mโˆ’2๋Š” ์ž…๋ ฅ ๋ฒ„ํผ์šฉ. ๋ฉ”๋ชจ๋ฆฌ์— rrr์„ ์ตœ๋Œ€ํ•œ ์ ์žฌํ•˜๊ณ  sss๋ฅผ ํ•œ ๋ฐ”ํ€ด ๋Ž)
    • ํƒ์ƒ‰(Seeks): 2ร—โŒˆBr/(Mโˆ’2)โŒ‰2 \times \lceil B_r / (M-2) \rceil2ร—โŒˆBrโ€‹/(Mโˆ’2)โŒ‰
  • ๊ณ„์‚ฐ:
    • Chunk ๊ฐœ์ˆ˜ = โŒˆ800/400โŒ‰=2\lceil 800 / 400 \rceil = 2โŒˆ800/400โŒ‰=2 (๋ฉ”๋ชจ๋ฆฌ์— 2๋ฒˆ ๋‚˜๋ˆ„์–ด ์ ์žฌ ๊ฐ€๋Šฅ)
    • Block Transfers: 800+(2ร—1500)=3,800800 + (2 \times 1500) = 3,800800+(2ร—1500)=3,800
    • Seeks: 2ร—2=42 \times 2 = 42ร—2=4 (ํ˜น์€ ์ดˆ๊ธฐ ํƒ์ƒ‰ ํฌํ•จ ์—ฌ๋ถ€์— ๋”ฐ๋ผ sss๋ฅผ 2๋ฒˆ ์ฝ์–ด์•ผ ํ•˜๋ฏ€๋กœ 2+2=42 + 2 = 42+2=4ํšŒ ๊ทผ์‚ฌ์น˜)

3. Transaction Management (Schedule Properties)

์œ ํ˜•: Conflict Serializable, Recoverable, Cascadeless ํŒ๋‹จ (OX ๋ฌธ์ œ)

[English Problem] Consider the following schedule SSS involving transactions T1T_1T1โ€‹ and T2T_2T2โ€‹:

S:r1(A),r2(A),w1(A),w2(A),Commit1,Commit2S: r_1(A), r_2(A), w_1(A), w_2(A), Commit_1, Commit_2 S:r1โ€‹(A),r2โ€‹(A),w1โ€‹(A),w2โ€‹(A),Commit1โ€‹,Commit2โ€‹

  1. Is this schedule Conflict Serializable? Explain why or why not using a precedence graph.
  2. Is this schedule Recoverable?
  3. Is this schedule Cascadeless?

[ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ] ํŠธ๋žœ์žญ์…˜ T1,T2T_1, T_2T1โ€‹,T2โ€‹๊ฐ€ ํฌํ•จ๋œ ๋‹ค์Œ ์Šค์ผ€์ค„ SSS๋ฅผ ๊ณ ๋ คํ•˜์‹œ์˜ค:

S:r1(A),r2(A),w1(A),w2(A),Commit1,Commit2S: r_1(A), r_2(A), w_1(A), w_2(A), Commit_1, Commit_2 S:r1โ€‹(A),r2โ€‹(A),w1โ€‹(A),w2โ€‹(A),Commit1โ€‹,Commit2โ€‹

  1. ์ด ์Šค์ผ€์ค„์€ **์ถฉ๋Œ ์ง๋ ฌ ๊ฐ€๋Šฅ(Conflict Serializable)**ํ•œ๊ฐ€? ์šฐ์„ ์ˆœ์œ„ ๊ทธ๋ž˜ํ”„(Precedence Graph)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  2. ์ด ์Šค์ผ€์ค„์€ **ํšŒ๋ณต ๊ฐ€๋Šฅ(Recoverable)**ํ•œ๊ฐ€?
  3. ์ด ์Šค์ผ€์ค„์€ ์—ฐ์‡„ ๋ณต๊ท€๊ฐ€ ์—†๋Š”(Cascadeless) ์Šค์ผ€์ค„์ธ๊ฐ€?

[Solution Guide]

  1. Conflict Serializable? No.
    • r2(A)โ†’w1(A)r_2(A) \to w_1(A)r2โ€‹(A)โ†’w1โ€‹(A) (Edge T2โ†’T1T_2 \to T_1T2โ€‹โ†’T1โ€‹)
    • r1(A)โ†’w2(A)r_1(A) \to w_2(A)r1โ€‹(A)โ†’w2โ€‹(A) (Edge T1โ†’T2T_1 \to T_2T1โ€‹โ†’T2โ€‹)
    • w1(A)โ†’w2(A)w_1(A) \to w_2(A)w1โ€‹(A)โ†’w2โ€‹(A) (Edge T1โ†’T2T_1 \to T_2T1โ€‹โ†’T2โ€‹)
    • ๊ทธ๋ž˜ํ”„์— T1โ†”T2T_1 \leftrightarrow T_2T1โ€‹โ†”T2โ€‹ ์‚ฌ์ดํด์ด ์กด์žฌํ•˜๋ฏ€๋กœ ์ง๋ ฌ ๋ถˆ๊ฐ€๋Šฅ. (Blind Write/Lost Update ๋ฌธ์ œ)
  2. Recoverable? Yes.
    • T2T_2T2โ€‹๋Š” T1T_1T1โ€‹์ด ์“ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์ง€ ์•Š์Œ(Blind Write). ์˜์กด์„ฑ ์—†์Œ. T1T_1T1โ€‹ ์ปค๋ฐ‹ ํ›„ T2T_2T2โ€‹ ์ปค๋ฐ‹๋จ.
  3. Cascadeless? Yes.
    • Dirty Read(w1โ†’r2w_1 \to r_2w1โ€‹โ†’r2โ€‹)๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์—ฐ์‡„ ๋ณต๊ท€ ๋ฌธ์ œ ์—†์Œ.

4. Recovery System (Log Analysis)

์œ ํ˜•: ์ฒดํฌํฌ์ธํŠธ ์ดํ›„ Crash ๋ฐœ์ƒ ์‹œ Redo/Undo ๋ฆฌ์ŠคํŠธ ๋ฐ ๋ณ€์ˆ˜ ๊ฐ’ (์กฑ๋ณด ์™„๋ฒฝ ๋Œ€์‘)

[English Problem] Consider the following log records. Suppose the system crashes right after the last log record <T2,abort><T_2, abort><T2โ€‹,abort> is written to stable storage.

1. <T0, start>
2. <T0, A, 1000, 900>
3. <T1, start>
4. <checkpoint {T0, T1}>
5. <T1, B, 2000, 2100>
6. <T0, commit>
7. <T2, start>
8. <T2, C, 500, 400>
9. <T2, abort>   <-- CRASH!
  1. List the transactions that must be in the Redo-List and Undo-List.
  2. What is the final value of A, B, and C after the recovery process is completed?

[ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ] ๋‹ค์Œ ๋กœ๊ทธ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ณ ๋ คํ•˜์‹œ์˜ค. ๋งˆ์ง€๋ง‰ ๋กœ๊ทธ ๋ ˆ์ฝ”๋“œ <T2,abort><T_2, abort><T2โ€‹,abort>๊ฐ€ ์•ˆ์ • ์ €์žฅ ์žฅ์น˜์— ๊ธฐ๋ก๋œ ์งํ›„ ์‹œ์Šคํ…œ ์ถฉ๋Œ(Crash)์ด ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

  1. Redo ๋ฆฌ์ŠคํŠธ์™€ Undo ๋ฆฌ์ŠคํŠธ์— ํฌํ•จ๋˜์–ด์•ผ ํ•  ํŠธ๋žœ์žญ์…˜์„ ๋‚˜์—ดํ•˜์‹œ์˜ค.
  2. ํšŒ๋ณต ๊ณผ์ •์ด ์™„๋ฃŒ๋œ ํ›„ A, B, C์˜ ์ตœ์ข… ๊ฐ’์€ ์–ผ๋งˆ์ธ๊ฐ€?

[Solution Guide]

  1. Lists:
    • Analysis: ์ฒดํฌํฌ์ธํŠธ ์‹œ์  Active ={T0,T1}=\{T_0, T_1\}={T0โ€‹,T1โ€‹}. ์ดํ›„ T0T_0T0โ€‹๋Š” Commit, T2T_2T2โ€‹๋Š” Start ํ›„ Abort, T1T_1T1โ€‹์€ ์•„๋ฌด ๊ธฐ๋ก ์—†์Œ(Active ์ƒํƒœ๋กœ ๋๋‚จ).
    • Redo-List: T0T_0T0โ€‹ (Commit ๋จ), T2T_2T2โ€‹ (Log์— ์žˆ์œผ๋‹ˆ ์ผ๋‹จ Redo ๋Œ€์ƒ์ด๊ธด ํ•จ, ํ˜น์€ ARIES์—์„œ๋Š” History Repeat๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ๋‚ด์šฉ Redo), T1T_1T1โ€‹ (Log ์žˆ์Œ).
      • ์‹œํ—˜ ๋‹ต์•ˆ์šฉ: "Commit ๋œ ํŠธ๋žœ์žญ์…˜๋งŒ Redo"๋ผ๊ณ  ๋ฐฐ์šด ๊ฒฝ์šฐ T0T_0T0โ€‹๋งŒ Redo. ํ•˜์ง€๋งŒ ์ตœ์‹  ARIES๋Š” All Redo. (๊ต์žฌ ๊ธฐ์ค€: T0T_0T0โ€‹ Redo, T1,T2T_1, T_2T1โ€‹,T2โ€‹ Undo).
    • Undo-List: T1T_1T1โ€‹ (๋๋‚˜์ง€ ์•Š์Œ), T2T_2T2โ€‹ (Abort ๋จ).
  2. Final Values:
    • A: 900 (T0T_0T0โ€‹ Commit โ†’\toโ†’ Redo โ†’\toโ†’ New Value ์œ ์ง€)
    • B: 2000 (T1T_1T1โ€‹ ๋ฏธ์™„๋ฃŒ โ†’\toโ†’ Undo โ†’\toโ†’ Old Value ๋ณต๊ตฌ)
    • C: 500 (T2T_2T2โ€‹ Abort โ†’\toโ†’ Undo โ†’\toโ†’ Old Value ๋ณต๊ตฌ. ์ฃผ์˜: T2T_2T2โ€‹๊ฐ€ Abort ๋กœ๊ทธ๊นŒ์ง€ ์ผ์œผ๋ฏ€๋กœ ํšŒ๋ณต ๊ณผ์ •์—์„œ ๋กค๋ฐฑ ์™„๋ฃŒ๋จ)

๋„ค, ์š”์ฒญํ•˜์‹  ๋Œ€๋กœ ์†์„ฑ์„ A๋ถ€ํ„ฐ H๊นŒ์ง€(8๊ฐœ) ๋Š˜๋ ค์„œ, ์กฐ๊ธˆ ๋” ๋ณต์žกํ•œ ์ข…์†์„ฑ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„ ์ œ3์ •๊ทœํ˜•(3NF) ๋ณ€ํ™˜ ๋ฌธ์ œ๋ฅผ ์ถœ์ œํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ํ›„๋ณดํ‚ค ์ฐพ๊ธฐ, ์ดํ–‰์  ์ข…์†์„ฑ(Transitive Dependency), ๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์†์„ฑ(Partial Dependency) ๊ฐœ๋…์„ ๋ชจ๋‘ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ฃผ ์ข‹์€ ์œ ํ˜•์ž…๋‹ˆ๋‹ค.

๐Ÿ“š Relational Database Design (Advanced)

[English Problem] Consider the relation schema R(A,B,C,D,E,F,G,H)R(A, B, C, D, E, F, G, H)R(A,B,C,D,E,F,G,H) and the following set of functional dependencies FFF:

F={Aโ†’C,A,Bโ†’D,Dโ†’E,Dโ†’G,Eโ†’F,Gโ†’H}F = \{ \\ \quad A \to C, \\ \quad A, B \to D, \\ \quad D \to E, \\ \quad D \to G, \\ \quad E \to F, \\ \quad G \to H \\ \} F={Aโ†’C,A,Bโ†’D,Dโ†’E,Dโ†’G,Eโ†’F,Gโ†’H}

  1. Find the candidate key(s) for RRR. Show the closure computation to justify your answer.
  2. Explain why this relation is not in 3NF. Identify all functional dependencies that violate the 3NF condition.
  3. Decompose RRR into a set of relations that are in 3NF. Ensure the decomposition is lossless and dependency-preserving.

[ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ] ๋‹ค์Œ ํ•จ์ˆ˜์  ์ข…์†์„ฑ ์ง‘ํ•ฉ FFF๋ฅผ ๊ฐ€์ง„ ๋ฆด๋ ˆ์ด์…˜ ์Šคํ‚ค๋งˆ R(A,B,C,D,E,F,G,H)R(A, B, C, D, E, F, G, H)R(A,B,C,D,E,F,G,H)๋ฅผ ๊ณ ๋ คํ•˜์‹œ์˜ค:

F={Aโ†’C,A,Bโ†’D,Dโ†’E,Dโ†’G,Eโ†’F,Gโ†’H}F = \{ \\ \quad A \to C, \\ \quad A, B \to D, \\ \quad D \to E, \\ \quad D \to G, \\ \quad E \to F, \\ \quad G \to H \\ \} F={Aโ†’C,A,Bโ†’D,Dโ†’E,Dโ†’G,Eโ†’F,Gโ†’H}

  1. RRR์˜ ํ›„๋ณดํ‚ค(Candidate Key)๋ฅผ ๋ชจ๋‘ ์ฐพ์œผ์‹œ์˜ค. ๋‹ต์„ ์ •๋‹นํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํํฌ(Closure) ๊ณ„์‚ฐ ๊ณผ์ •์„ ๋ณด์ด์‹œ์˜ค.
  2. ์ด ๋ฆด๋ ˆ์ด์…˜์ด ์™œ ์ œ3์ •๊ทœํ˜•(3NF)์ด ์•„๋‹Œ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค. 3NF ์กฐ๊ฑด์„ ์œ„๋ฐ˜ํ•˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜์  ์ข…์†์„ฑ์„ ์‹๋ณ„ํ•˜์‹œ์˜ค.
  3. RRR์„ 3NF๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ถ„ํ•ดํ•˜์‹œ์˜ค. ๋ถ„ํ•ด๋Š” ๋ฌด์†์‹ค ์กฐ์ธ(Lossless join)๊ณผ ์ข…์†์„ฑ ๋ณด์กด(Dependency preservation)์„ ๋งŒ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก Solution Guide (ํ’€์ด ๋ฐ ํ•ด์„ค)

1. ํ›„๋ณดํ‚ค ์ฐพ๊ธฐ (Finding Candidate Key)

ํ›„๋ณดํ‚ค๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด, ์–ด๋–ค ์†์„ฑ๋“ค์ด ๋‹ค๋ฅธ ๋ชจ๋“  ์†์„ฑ์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํํฌ(Closure)๋ฅผ ๊ตฌํ•ด๋ด…๋‹ˆ๋‹ค.

  • ๊ด€์ฐฐ:

    • AAA์™€ BBB๋Š” ๊ทธ ์–ด๋–ค ์ข…์†์„ฑ์˜ ์˜ค๋ฅธ์ชฝ(RHS)์—๋„ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, AAA์™€ BBB๋Š” ๋ฐ˜๋“œ์‹œ ํ‚ค์— ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • (A,B)(A, B)(A,B)์˜ ๊ฒฐํ•ฉ์ด ์ „์ฒด๋ฅผ ๊ฒฐ์ •ํ•˜๋Š”์ง€ ํ™•์ธํ•ด ๋ด…์‹œ๋‹ค.
  • Closure of {A,B}+\{A, B\}^+{A,B}+:

    1. Start with {A,B}\{A, B\}{A,B}.
    2. Use Aโ†’CA \to CAโ†’C: add CCC. Now {A,B,C}\{A, B, C\}{A,B,C}.
    3. Use A,Bโ†’DA, B \to DA,Bโ†’D: add DDD. Now {A,B,C,D}\{A, B, C, D\}{A,B,C,D}.
    4. Use Dโ†’ED \to EDโ†’E and Dโ†’GD \to GDโ†’G: add E,GE, GE,G. Now {A,B,C,D,E,G}\{A, B, C, D, E, G\}{A,B,C,D,E,G}.
    5. Use Eโ†’FE \to FEโ†’F: add FFF.
    6. Use Gโ†’HG \to HGโ†’H: add HHH.
    • Result: {A,B}+={A,B,C,D,E,F,G,H}\{A, B\}^+ = \{A, B, C, D, E, F, G, H\}{A,B}+={A,B,C,D,E,F,G,H} (๋ชจ๋“  ์†์„ฑ ํฌํ•จ)

๐Ÿ‘‰ Candidate Key: (A,B)(A, B)(A,B)

2. 3NF ์œ„๋ฐ˜ ๋ถ„์„ (Violation Check)

3NF์˜ ์กฐ๊ฑด: ํ•จ์ˆ˜์  ์ข…์†์„ฑ ฮฑโ†’ฮฒ\alpha \to \betaฮฑโ†’ฮฒ์— ๋Œ€ํ•ด, ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋งŒ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ฮฑโ†’ฮฒ\alpha \to \betaฮฑโ†’ฮฒ๊ฐ€ ์ž๋ช…ํ•˜๋‹ค (Trivial, ฮฒโІฮฑ\beta \subseteq \alphaฮฒโІฮฑ).
  2. ฮฑ\alphaฮฑ๊ฐ€ ์Šˆํผํ‚ค(Superkey)์ด๋‹ค.
  3. ฮฒ\betaฮฒ์˜ ๋ชจ๋“  ์†์„ฑ์ด ํ›„๋ณดํ‚ค์˜ ์ผ๋ถ€(Prime attribute)์ด๋‹ค.

์œ„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋Š” ์œ„๋ฐ˜ ์‚ฌ๋ก€๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค:

  • Aโ†’CA \to CAโ†’C:
    • AAA๋Š” ์Šˆํผํ‚ค๊ฐ€ ์•„๋‹˜ (ํ›„๋ณดํ‚ค (A,B)(A, B)(A,B)์˜ ์ผ๋ถ€์ผ ๋ฟ).
    • CCC๋Š” Prime attribute๊ฐ€ ์•„๋‹˜.
    • ์œ„๋ฐ˜ (Partial Dependency).
  • Dโ†’ED \to EDโ†’E, Dโ†’GD \to GDโ†’G:
    • DDD๋Š” ์Šˆํผํ‚ค๊ฐ€ ์•„๋‹˜.
    • ์œ„๋ฐ˜ (Transitive Dependency).
  • Eโ†’FE \to FEโ†’F:
    • EEE๋Š” ์Šˆํผํ‚ค๊ฐ€ ์•„๋‹˜.
    • ์œ„๋ฐ˜ (Transitive Dependency).
  • Gโ†’HG \to HGโ†’H:
    • GGG๋Š” ์Šˆํผํ‚ค๊ฐ€ ์•„๋‹˜.
    • ์œ„๋ฐ˜ (Transitive Dependency).

3. 3NF ๋ถ„ํ•ด (Decomposition)

3NF ๋ถ„ํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜(Canonical Cover ๊ธฐ๋ฐ˜ ํ•ฉ์„ฑ)์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์ข…์†์„ฑ์„ ๋ณ„๋„์˜ ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋ถ„ํ•ด๋œ ๋ฆด๋ ˆ์ด์…˜ ์ง‘ํ•ฉ:

  1. From Aโ†’CA \to CAโ†’C: ๐Ÿ‘‰ R1(A,C)R_1(A, C)R1โ€‹(A,C)
  2. From A,Bโ†’DA, B \to DA,Bโ†’D: ๐Ÿ‘‰ R2(A,B,D)R_2(A, B, D)R2โ€‹(A,B,D)
  3. From Dโ†’ED \to EDโ†’E and Dโ†’GD \to GDโ†’G: (D๊ฐ€ ๊ฐ™์œผ๋ฏ€๋กœ ํ•ฉ์น  ์ˆ˜ ์žˆ์Œ) ๐Ÿ‘‰ R3(D,E,G)R_3(D, E, G)R3โ€‹(D,E,G)
  4. From Eโ†’FE \to FEโ†’F: ๐Ÿ‘‰ R4(E,F)R_4(E, F)R4โ€‹(E,F)
  5. From Gโ†’HG \to HGโ†’H: ๐Ÿ‘‰ R5(G,H)R_5(G, H)R5โ€‹(G,H)

๊ฒ€์ฆ:

  • ์›๋ž˜ ํ›„๋ณดํ‚ค (A,B)(A, B)(A,B)๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜์ด ์žˆ๋Š”๊ฐ€?
    • ๋„ค, R2(A,B,D)R_2(A, B, D)R2โ€‹(A,B,D)๊ฐ€ ํ‚ค๋ฅผ ํฌํ•จํ•˜๋ฏ€๋กœ ๋ณ„๋„๋กœ ํ‚ค๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜์„ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ตœ์ข… ์ •๋‹ต (Final Schema):

R1(Aโ€พ,C)R_1(\underline{A}, C) R1โ€‹(Aโ€‹,C)

R2(A,Bโ€พ,D)R_2(\underline{A, B}, D) R2โ€‹(A,Bโ€‹,D)

R3(Dโ€พ,E,G)R_3(\underline{D}, E, G) R3โ€‹(Dโ€‹,E,G)

R4(Eโ€พ,F)R_4(\underline{E}, F) R4โ€‹(Eโ€‹,F)

R5(Gโ€พ,H)R_5(\underline{G}, H) R5โ€‹(Gโ€‹,H)

(๋ฐ‘์ค„์€ ๊ฐ ๋ฆด๋ ˆ์ด์…˜์˜ ๊ธฐ๋ณธํ‚ค)

์ตœ๊ทผ ์ˆ˜์ •: 26. 6. 12. ์˜คํ›„ 3:28
Contributors: kmbzn, Claude Sonnet 4.6

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

All trademarks and logos are property of their respective owners.
ยฉ 2026 kmbzn ยท MIT License