๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์Šคํ„ฐ๋””/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ] Relational Languages

by moon101 2023. 4. 15.

 

 

โ›… Chapter 2 ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ ์†Œ๊ฐœ 

Relational Terminology ์ •๋ฆฌ

  • Database: ๊ณ ์œ ํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ…Œ์ด๋ธ”/๋ฆด๋ ˆ์ด์…˜์˜ ๋ชจ์ž„
  • Relation = table
    • schema: ๋…ผ๋ฆฌ์  ์„ค๊ณ„ (๋ฉ”ํƒ€ ๋ฐ์ดํƒ€, ๋ฐ์ดํ„ฐ์˜ ๋ฐ์ดํ„ฐ), ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค
    • instance: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์Šค๋ƒ…์ƒท, ์ž์ฃผ ๋ณ€ํ•œ๋‹ค.
  • Attribute = Column = Field
  • Tuple = Record = Row

 

์ฑ…์—์„œ ์‚ฌ์šฉํ•˜๋Š” terminoloy ์ •๋ฆฌ - Relational Algebra (๊ด€๊ณ„ ๋Œ€์ˆ˜)

๊ด€๊ณ„ ๋Œ€์ˆ˜ ์—ฐ์‚ฐ

์„ ํƒ ์—ฐ์‚ฐ(selection) = ๊ทธ๋ฆฌ์Šค ์†Œ๋ฌธ์ž ์‹œ๊ทธ๋งˆ(σ)  // ์ฐธ๊ณ ๋กœ ์‹œ๊ทธ๋งˆ์˜ ๊ทธ๋ฆฌ์Šค ๋Œ€๋ฌธ์ž๋Š” ∑ ์ด๋‹ค

์ถ”์ถœ ์—ฐ์‚ฐ(project) = ๊ทธ๋ฆฌ์Šค ๋Œ€๋ฌธ์ž ํŒŒ์ด(Π) 

  • unary operation that returns its argument relation, with certain attributes left out

์กฐ์ธ ์—ฐ์‚ฐ(join)โ‹ˆθ        // Natural join = โ‹ˆ  Theta join = โ‹ˆθ

  • ์„ ํƒ๊ณผ ์นดํ‹ฐ์…˜ ๊ณฑ์„ ํ•˜๋‚˜์˜ ์—ฐ์‚ฐ์œผ๋กœ ํ•ฉ์นœ ๊ฒƒ
  • r โ‹ˆθ s = σθ(r × s) 
  • σinstructor.ID=teaches.ID(instructor × teaches) ์ด๊ฑด instructor โ‹ˆinstructor.ID=teaches.ID teaches ์ด๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค

์ง‘ํ•ฉ ์—ฐ์‚ฐ(set)

  • ํ•ฉ์ง‘ํ•ฉ(union)  = ∪
    • ∧ : conjunction ๊ธฐํ˜ธ์ด๊ณ  and ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค
    • ํ•ฉ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋ ค๋ฉด, 1. ๋ฆด๋ ˆ์ด์…˜ r๊ณผ s๋Š” ๊ฐ™์€ ์ˆ˜์˜ ์†์„ฑ์„ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ, 2. ๋ฆด๋ ˆ์ด์…˜ r์˜ i๋ฒˆ์งธ ์†์„ฑ์˜ ๋„๋ฉ”์ธ๊ณผ ๋ฆด๋ ˆ์ด์…˜ s์˜ i๋ฒˆ์งธ ์†์„ฑ์˜ ๋„๋ฉ”์ธ์€ ์„œ๋กœ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๋ฆด๋ ˆ์ด์…˜์„ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ๋ฆด๋ ˆ์ด์…˜(compatible relation)์ด๋ผ๊ณ  ํ•œ๋‹ค
    • ์ธ์ˆ˜(arity) : ๋ฆด๋ ˆ์ด์…˜์—์„œ ์†์„ฑ์˜ ๊ฐœ์ˆ˜
  • ๊ต์ง‘ํ•ฉ(intersection) = ∩
  • ์ฐจ์ง‘ํ•ฉ(set-difference) = −

๋ฐฐ์ • ์—ฐ์‚ฐ(assignment) = ←

์žฌ๋ช…๋ช… ์—ฐ์‚ฐ(rename) = ๊ทธ๋ฆฌ์Šค ์†Œ๋ฌธ์ž rho(ρ)

 


 

โ›… Chapter 3, 4, 5 SQL 

check ์ ˆ

  • check(p) ์ ˆ์€ ๋ฆด๋ ˆ์ด์…˜์˜ ๋ชจ๋“  ํŠœํ”Œ์ด ์ถฉ์กฑํ•ด์•ผ ํ•˜๋Š” ์ˆ ์–ด P๋ฅผ ๋ช…์‹œํ•œ๋‹ค  
  • ์˜ˆ๋ฅผ ๋“ค์–ด, check (semester in ('Fall', 'Winter', 'Spring', 'Summer')) ์ด๋ ‡๊ฒŒ semester๊ฐ€ ์ œ์‹œ๋œ ์—ด๊ฑฐํ˜• ํƒ€์ž…(enumerated type)์„ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ ๋  ์ˆ˜๋„ ์žˆ๋‹ค 

coalesce ํ•จ์ˆ˜

  • ์งˆ์˜ ๊ฒฐ๊ณผ์—์„œ ์–ด๋–ป๊ฒŒ null ๊ฐ’์„ ์ถœ๋ ฅํ• ์ง€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์˜ˆ) select ID, coalesce(salary, 0) as salary ๋Š” ๊ธ‰์—ฌ๊ฐ€ null์ผ ๊ฒฝ์šฐ 0์œผ๋กœ ํ‘œ์‹œํ•œ๋‹ค
  • coalesce ํ•จ์ˆ˜์˜ ํ•œ๊ณ„๋Š” ๋ชจ๋“  ์ธ์ž๊ฐ€ ๋™์ผํ•œ ํƒ€์ž…์ด์–ด์•ผ ํ•œ๋‹ค

์ธ๋ฑ์Šค

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฆด๋ ˆ์ด์…˜ ์†์„ฑ์˜ ํŠน์ • ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŠœํ”Œ์„ ๋ฆด๋ ˆ์ด์…˜์˜ ๋ชจ๋“  ํŠœํ”Œ์„ ์‚ดํŽด๋ณด์ง€ ์•Š๊ณ ๋„ ํšจ๊ณผ์ ์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค
  • ์ค‘๋ณต ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋…ผ๋ฆฌ ์Šคํ‚ค๋งˆ๊ฐ€ ์•„๋‹Œ ๋ฌผ๋ฆฌ ์Šคํ‚ค๋งˆ์˜ ์ผ๋ถ€์ด๋‹ค

 

SQL ๋ฌธ ์ˆœ์„œ

 

๋Œ“๊ธ€