๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‡ฉ๐Ÿ‡ฆ๐Ÿ‡น๐Ÿ‡ฆ๐Ÿ‡ง๐Ÿ‡ฆ๐Ÿ‡ธ๐Ÿ‡ช

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๊ณ„ ๋Œ€์ˆ˜(์„ ํƒ, ์ถ”์ถœ, ์—ฐ์‚ฐ์ž, ์นดํ‹ฐ์…˜ ํ”„๋กœ๋•ํŠธ, ์กฐ์ธ, ์ž์—ฐ์กฐ์ธ, ์™ธ๋ถ€์กฐ์ธ)

๊ด€๊ณ„ ๋Œ€์ˆ˜

์งˆ์˜์–ด(Query language)

- ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ •ํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ๋“ฑ ๋ฐ์ดํ„ฐ ์กฐ์ž‘์„ ์œ„ํ•œ ์—ฐ์‚ฐ๋“ค์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด

โœ” ์ ˆ์ฐจ์  ์–ธ์–ด(procedural language)

- ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•  ์ผ๋ จ์˜ ์ ˆ์ฐจ๋ฅผ ๋ช…์‹œํ•ด์•ผํ•˜๋Š” ์–ธ์–ด

- C, Java์™€ ๊ฐ™์€ ์ ˆ์ฐจ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ์œ ์‚ฌ

โœ” ๋น„์ ˆ์ฐจ์  ์–ธ์–ด(non-procedural/declarative language)

- ์ˆ˜ํ–‰ ์ ˆ์ฐจ๋Š” ๊ธฐ์ˆ ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋งŒ์„ ํ˜•์‹์ , ์„ ์–ธ์ ์œผ๋กœ ๋ช…์‹œํ•˜๋Š” ์–ธ์–ด

- ์‹ค์ œ ์ˆ˜ํ–‰์ ˆ์ฐจ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์ด ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฒฐ์ •ํ•จ

โ€‹

๊ด€๊ณ„ ๋Œ€์ˆ˜์˜ ์—ฐ์‚ฐ ์ข…๋ฅ˜

โ€‹

์„ ํƒ(selection)

- ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์—์„œ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋“ค์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ธฐ๋Šฅ

σ <์กฐ๊ฑด์‹>(<ํ…Œ์ด๋ธ” ์ด๋ฆ„>)

โ€‹

<ํ…Œ์ด๋ธ” ์ด๋ฆ„>์€ ์—ฐ์‚ฐ์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„

<์กฐ๊ฑด์‹> : ๋น„๊ต์—ฐ์‚ฐ์ž(<, >, <=, >=, <>, ≠)์™€ Bool ์—ฐ์‚ฐ์ž(AND(∧), OR(∨), NOT(๏ฟข))์˜ ์กฐํ•ฉ

โ€‹

์˜ˆ) student ํ…Œ์ด๋ธ”์—์„œ address๊ฐ€ '์„œ์šธ'์ธ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฒ€์ƒ‰

σ address = '์„œ์šธ'(student)

stu_id

resident_id

name

year

address

dept_id

1292001

900424-1825409

๊น€๊ด‘์‹

2

์„œ์šธ

920

1292002

900305-1730021

๊น€์ •ํ˜„

2

์„œ์šธ

920

1292003

891021-2308302

๊น€ํ˜„์ •

2

๋Œ€์ „

920

1292301

890902-2704012

๊น€ํ˜„์ •

2

๋Œ€๊ตฌ

923

 

โฌ‡๏ธ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ

 

stu_id

resident_id

name

year

address

dept_id

1292001

900424-1825409

๊น€๊ด‘์‹

3

์„œ์šธ

920

1292002

900305-1730021

๊น€์ •ํ˜„

3

์„œ์šธ

920

 

์ถ”์ถœ(project)

- ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ํ•„๋“œ๋งŒ์„ ๊ฒฐ๊ณผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ์—ฐ์‚ฐ

π<ํ•„๋“œ๋ฆฌ์ŠคํŠธ>(<ํ…Œ์ด๋ธ” ์ด๋ฆ„>)

โ€‹

<ํ…Œ์ด๋ธ” ์ด๋ฆ„>์€ ์—ฐ์‚ฐ์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„

<ํ•„๋“œ๋ฆฌ์ŠคํŠธ> : ํ…Œ์ด๋ธ”์—์„œ ์ถ”์ถœํ•˜๊ณ ์ž ํ•˜๋Š” ํ•„๋“œ๋“ค์˜ ๋ฆฌ์ŠคํŠธ

โ€‹

์˜ˆ) student ํ…Œ์ด๋ธ”์—์„œ stu_id์™€ name ํ•„๋“œ๋งŒ์„ ์ถ”์ถœ

π stu_id, name (student)

stu_id

resident_id

name

year

address

dept_id

1292001

900424-1825409

๊น€๊ด‘์‹

2

์„œ์šธ

920

1292002

900305-1730021

๊น€์ •ํ˜„

2

์„œ์šธ

920

1292003

891021-2308302

๊น€ํ˜„์ •

2

๋Œ€์ „

920

1292301

890902-2704012

๊น€ํ˜„์ •

2

๋Œ€๊ตฌ

923

 

โฌ‡๏ธ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ

 

stu_id

resident_id

1292001

900424-1825409

1292002

900305-1730021

1292003

891021-2308302

1292301

890902-2704012

 

์žฌ๋ช…๋ช… ์—ฐ์‚ฐ

- ํ…Œ์ด๋ธ”์— ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š” ์—ฐ์‚ฐ

ρ <ํ…Œ์ด๋ธ”๋ช…1>(<ํ…Œ์ด๋ธ”๋ช…2>)

⇒ <ํ…Œ์ด๋ธ”๋ช…2>์˜ ์ด๋ฆ„์„ <ํ…Œ์ด๋ธ”๋ช…1>๋กœ ๋ณ€๊ฒฝํ•˜๋ผ๋Š” ์˜๋ฏธ

ρ <ํ…Œ์ด๋ธ”๋ช…1>(<ํ•„๋“œ๋ฆฌ์ŠคํŠธ>)(<ํ…Œ์ด๋ธ”๋ช…2>)

⇒ <ํ…Œ์ด๋ธ”๋ช…2>์˜ ์ด๋ฆ„์„ <ํ…Œ์ด๋ธ”๋ช…1>๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋™์‹œ์— <ํ…Œ์ด๋ธ”๋ช…2>์— ์ •์˜๋œ ํ•„๋“œ๋ช…๋“ค์„ ๋ชจ๋‘ <ํ•„๋“œ๋ฆฌ์ŠคํŠธ>์˜ ํ•„๋“œ๋ช…๋“ค๋กœ ๊ฐ๊ฐ ๋ณ€๊ฒฝ

โ€‹

์ง‘ํ•ฉ ์—ฐ์‚ฐ

- ์ˆ˜ํ•™์˜ ์ง‘ํ•ฉ ์ด๋ก ์—์„œ ์ •์˜๋œ ์—ฐ์‚ฐ

- ํ•ฉ์ง‘ํ•ฉ(union)

- ์ฐจ์ง‘ํ•ฉ(minus/difference)

- ๊ต์ง‘ํ•ฉ(intersection) - ์ฐจ์ง‘ํ•ฉ์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ

- ์นดํ‹ฐ์…˜ ํ”„๋กœ๋•ํŠธ(Cartesian product)

โ€‹

์ดํ•ญ ์—ฐ์‚ฐ

- ํ”ผ์—ฐ์‚ฐ์ž์™€ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ๋ชจ๋‘ ํ…Œ์ด๋ธ”(๋ ˆ์ฝ”๋“œ ์ง‘ํ•ฉ)์ž„

โœ” ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ์„œ๋กœ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ํ…Œ์ด๋ธ”์ด์—ฌ์•ผํ•จ

โ€‹

โ•ํ•ฉ์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ, ๊ต์ง‘ํ•ฉ ์—ฐ์‚ฐ์—์„œ ๋‘ ํ”ผ์—ฐ์‚ฐ์ž(ํ…Œ์ด๋ธ”)์˜ ์ฐจ์ˆ˜(ํ•„๋“œ์˜ ์ˆ˜)์™€ ํ•„๋“œ ์ด๋ฆ„๋“ค์ด ๋™์ผํ•ด์•ผํ•จ

โ•๊ฐ™์€ ์ด๋ฆ„์˜ ํ•„๋“œ๋“ค์€ ๋„๋ฉ”์ธ๋„ ์ผ์น˜ํ•ด์•ผํ•จ

โ€‹

์นดํ‹ฐ์…˜ ํ”„๋กœ๋•ํŠธ(Cartesian product)

- ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ๊ฐ์˜ ๋ ˆ์ฝ”๋“œ๋“ค์„ ์„œ๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑํ•˜๋ฉด์„œ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์˜ ๋ ˆ์ฝ”๋“œ๋“ค์„ ์ƒ์„ฑ

<ํ…Œ์ด๋ธ”๋ช…1> × <ํ…Œ์ด๋ธ”๋ช…2>

๋‘ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ ์ˆ˜๊ฐ€ ๊ฐ๊ฐ n1, n2 ์ด๊ณ  ํ•„๋“œ์˜ ์ˆ˜๊ฐ€ ๊ฐ๊ฐ a1, a2๋ผ ํ•  ๋•Œ ์นดํ‹ฐ์…˜ ํ”„๋กœ๋•ํŠธ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋กœ ๋„์ถœ๋˜๋Š” ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ ์ˆ˜๋Š” n1× n2 ์ด๋ฉฐ ํ•„๋“œ์˜ ์ˆ˜๋Š” a1+ a2

โœ” ๊ตํ™˜๋ฒ•์น™๊ณผ ๊ฒฐํ•ฉ๋ฒ•์น™์ด ์„ฑ๋ฆฝํ•จ

 

์„ธํƒ€ ์กฐ์ธ

<ํ…Œ์ด๋ธ” ์ด๋ฆ„1> โ–ทโ— <์กฐ๊ฑด์‹><ํ…Œ์ด๋ธ” ์ด๋ฆ„2>

- ๋‘ ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋“ค์„ ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ์—ฐ์‚ฐ

โœ” ์นดํ‹ฐ์…˜ ํ”„๋กœ๋•ํŠธ๋Š” ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์กฐํ•ฉ์— ์˜ํ•ด ๋ ˆ์ฝ”๋“œ๋“ค์„ ์ƒ์„ฑํ•˜์ง€๋งŒ ์กฐ์ธ์€ ํŠน์ • ์กฐ๊ฑด (<์กฐ๊ฑด์‹>)์„ ๋งŒ์กฑํ•˜๋Š”

๋ ˆ์ฝ”๋“œ ์Œ๋“ค๋งŒ์„ ์„ ํƒํ•จ

- <์กฐ๊ฑด์‹>์„ ์กฐ์ธ ์กฐ๊ฑด์ด๋ผ ๋ถ€๋ฆ„

- ์กฐ์ธ ์กฐ๊ฑด์€ ํ•„๋“œ ๊ฐ„์˜ ๋™๋“ฑ๋น„๊ต(=)๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋ฉฐ ์ด๋ฅผ ๋™๋“ฑ์กฐ์ธ์ด๋ผ ํ•จ

- ์กฐ์ธ ์—ฐ์‚ฐ์€ ์นดํ‹ฐ์…˜ ํ”„๋กœ๋•ํŠธ ๋ฐ ์„ ํƒ ์—ฐ์‚ฐ์œผ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅ

<ํ…Œ์ด๋ธ” ์ด๋ฆ„1> โ–ทโ— <์กฐ๊ฑด์‹><ํ…Œ์ด๋ธ” ์ด๋ฆ„2> ≡ σ <์กฐ๊ฑด์‹>(<ํ…Œ์ด๋ธ” ์ด๋ฆ„1> × <ํ…Œ์ด๋ธ” ์ด๋ฆ„2>)

โ€‹

์˜ˆ) ๊ต์ˆ˜๋“ค์˜ ์ด๋ฆ„๊ณผ ์†Œ์†๋œ ํ•™๊ณผ ์ด๋ฆ„์„ ๊ฒ€์ƒ‰

πprofessor.name, department.dept_name ((σ professor.dept_id = department.dept_id)(professor × department))

โฌ‡โฌ‡โฌ‡โฌ‡

πprofessor.name, department.dept_name (professor โ–ทโ— professor.dept_id = department.dept_id department)

โ€‹

์ž์—ฐ ์กฐ์ธ

- ๋‘ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ–๋Š” ํ•„๋“œ๋“ค์— ๋Œ€ํ•œ ๋™๋“ฑ ์กฐ์ธ, ์กฐ์ธ ๊ฒฐ๊ณผ์—์„œ ์ค‘๋ณต๋˜๋Š” ํ•„๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์—ฐ์‚ฐ

<ํ…Œ์ด๋ธ” ์ด๋ฆ„1> โ–ทโ— <ํ…Œ์ด๋ธ” ์ด๋ฆ„2>

์˜ˆ) '๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค' ๊ณผ๋ชฉ์ด ๊ฐœ์„ค๋œ ์—ฐ๋„, ํ•™๊ธฐ, ๋ถ„๋ฐ˜ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰

πyear, semester, division title = '๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค' (course โ–ทโ— class))

โฌ‡โฌ‡โฌ‡โฌ‡

πyear, semester, division course.course_id = class.course_id ∧ title = '๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค' (course × class))

โ€‹

์™ธ๋ถ€ ์กฐ์ธ

- ์กฐ์ธ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š” ๋ ˆ์ฝ”๋“œ๊นŒ์ง€ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์— ํฌํ•จ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•

- ๋งค์น˜๋˜์ง€ ์•Š๋Š” ๋ ˆ์ฝ”๋“œ์˜ ํ•„๋“œ๋“ค์— ๋Œ€ํ•ด์„œ๋Š” NULL ๊ฐ’์„ ์ž…๋ ฅ

 

โ—ฝ ์™ผ์ชฝ ์™ธ๋ถ€์กฐ์ธ(left outer join) +โ–ทโ—

โ—ฝ ์˜ค๋ฅธ์ชฝ ์™ธ๋ถ€์กฐ์ธ(right outer join) โ–ทโ—+

โ—ฝ ์™„์ „ ์™ธ๋ถ€์กฐ์ธ(full outer join) +โ–ทโ—+

โ€‹

์˜ˆ) freshmen +โ–ทโ— member

name

address

dept_name

๊น€๊ด‘์‹

์„œ์šธ

์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ

๊น€ํ˜„์ •

๋Œ€์ „

์‚ฐ์—…๊ณตํ•™๊ณผ

์กฐ์˜์ˆ˜

๋Œ€์ „

NULL

์˜ˆ) freshmen โ–ทโ—+ member

name

address

dept_name

๊น€๊ด‘์‹

์„œ์šธ

์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ

๊น€ํ˜„์ •

๋Œ€์ „

์‚ฐ์—…๊ณตํ•™๊ณผ

์ด์ง„์˜

NULL

์ „์ž๊ณตํ•™๊ณผ

์˜ˆ) freshmen +โ–ทโ—+ member

์ง€์ • ์—ฐ์‚ฐ

- ๋ณต์žกํ•œ ์งˆ์˜๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์งˆ์˜๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋‚˜ํƒ€๋‚ด๊ณ  ์ค‘๊ฐ„ ๊ฒฐ๊ณผ์— ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ์‚ฐ

- ์—ฐ์‚ฐ ๊ธฐํ˜ธ: ← ์‚ฌ์šฉ

์˜ˆ) student ํ…Œ์ด๋ธ”์—์„œ 3ํ•™๋…„์ธ ํ•™์ƒ์„ ์„ ํƒํ•ด์„œ ๊ทธ ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”์„ junior๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ง€์ •

junior ← σ year = 3 (student)