๐Ÿ’ป [SQL] 1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ก 

thisk336ยท2023๋…„ 10์›” 2์ผ
0

SQL

๋ชฉ๋ก ๋ณด๊ธฐ
1/17
post-thumbnail

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ์ดํ•ด

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DataBase Management System, DBMS)๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์šด์˜ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งํ•œ๋‹ค.

  • DBMS์˜ ์ข…๋ฅ˜๋Š” Oracle, Sybase, DB2, MySQL, MSSQL ๋“ฑ ๋‹ค์–‘ํ•˜๊ณ  ๊ทธ ์ค‘์—์„œ๋„ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” DBMS๋Š” Oracle์ด๋‹ค.

    ์ถœ์ฒ˜ : db-engines.com

  • ๋ชจ๋“  DBMS๋Š” SQL ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•˜์ง€๋งŒ, DBMS๋ณ„๋กœ ์ž์‹ ๋งŒ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉฐ ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์€ ๋‹ค๋ฅด๋‹ค.

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(RDBMS)

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€?

  • 1970๋…„๋Œ€ E.F Codd๋ฐ•์‚ฌ์˜ ๋…ผ๋ฌธ์—์„œ ์ฒ˜์Œ ์†Œ๊ฐœ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋ฆด๋ ˆ์ด์…˜๊ณผ ๋ฆด๋ ˆ์ด์…˜์˜ ์กฐ์ธ ์—ฐ์‚ฐ์„ ํ†ตํ•ด์„œ ํ•ฉ์ง‘ํ•ฉ, ๊ต์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ๋“ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งํ•œ๋‹ค.
  • 2์ฐจ์› ํ…Œ์ด๋ธ” ํ˜•์‹์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ์„ค๋ช…ํ•˜๋Š” ๋ชจ๋ธ์ด๋‹ค.

ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฆด๋ ˆ์ด์…˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ฆด๋ ˆ์ด์…˜์„ ์‚ฌ์šฉํ•ด์„œ ์ง‘ํ•ฉ ์—ฐ์‚ฐ ๋ฐ ๊ด€๊ณ„ ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฆด๋ ˆ์ด์…˜์€ ์ตœ์ข…์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ํ…Œ์ด๋ธ”(Table)๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค.

  • ์œ„ ๊ทธ๋ฆผ์—์„œ ์ˆœ๋ฒˆ, ํ‚ค, ๋ชธ๋ฌด๊ฒŒ์™€ ๊ฐ™์ด ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ํ•„๋“œ๋ฅผ ์†์„ฑ(Attribute) ๋˜๋Š” ์ปฌ๋Ÿผ(Column), ํ•„๋“œ(Field)๋ผ๊ณ  ํ•˜๊ณ , ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ์ €์žฅ๋˜๋Š” ๊ฐ’์„ ํ–‰(Row) ๋˜๋Š” ํŠœํ”Œ(Tuple), ๋ ˆ์ฝ”๋“œ(Record)๋ผ๊ณ  ํ•œ๋‹ค.
  • ๊ธฐ๋ณธํ‚ค(Primary Key)๋Š” ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์—์„œ ์œ ์ผ์„ฑ(Unique)๊ณผ ์ตœ์†Œ์„ฑ, Not Null์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ํ•ด๋‹น ํ…Œ์ด๋ธ”์„ ๋Œ€ํ‘œํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.
  • ์™ธ๋ž˜ํ‚ค(Foreign Key)๋Š” ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ์ฐธ์กฐ(์กฐ์ธ)ํ•˜๋Š” ์ปฌ๋Ÿผ์ด๋‹ค. ์™ธ๋ž˜ํ‚ค๋Š” ๊ด€๊ณ„ ์—ฐ์‚ฐ ์ค‘์—์„œ ๊ฒฐํ•ฉ ์—ฐ์‚ฐ(Join)์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

์Šคํ‚ค๋งˆ(Schema)

  • ์Šคํ‚ค๋งˆ๋ž€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database) ์ „์ฒด ๋˜๋Š” ์ผ๋ถ€์˜ ๋…ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ๊ตฌ์กฐ๋กœ ์ €์žฅ๋˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ผ์ข…์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„๋„๋ฅผ ๋งํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ƒ์šฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DBMS)์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์•ˆ์‹œ/์ŠคํŒŒํฌ(ANSI/SPARC)๋ชจ๋ธ์˜ 3์ธต ์Šคํ‚ค๋งˆ ๊ตฌ์กฐ(three-schema architecture)์— ๋”ฐ๋ผ ์™ธ๋ถ€ ์Šคํ‚ค๋งˆ, ๊ฐœ๋… ์Šคํ‚ค๋งˆ, ๋‚ด๋ถ€ ์Šคํ‚ค๋งˆ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.
  • ์™ธ๋ถ€ ์Šคํ‚ค๋งˆ(external schema): ์‚ฌ์šฉ์ž ๊ด€์ ์˜ ์Šคํ‚ค๋งˆ. ์‚ฌ์šฉ์ž ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ž…์žฅ์—์„œ์˜ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • ๊ฐœ๋… ์Šคํ‚ค๋งˆ(conceptual schema): ์‚ฌ์šฉ์ž์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB) ๊ด€๋ฆฌ์ž ๊ด€์ ์˜ ์Šคํ‚ค๋งˆ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‹ค์ œ๋กœ ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์—ˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€๋ฅผ ์ •์˜ํ•˜๋Š” ์Šคํ‚ค๋งˆ๋กœ ์ „์ฒด ๊ด€์ ์œผ๋กœ ํ•œ ๊ฐœ๋งŒ ์กด์žฌํ•˜๋ฉฐ ์ ‘๊ทผ ๊ถŒํ•œ, ๋ณด์•ˆ ๋ฐ ๋ฌด๊ฒฐ์„ฑ ๋“ฑ์— ๊ด€ํ•œ ์ •์˜๋ฅผ ํฌํ•จํ•œ๋‹ค.
  • ๋‚ด๋ถ€ ์Šคํ‚ค๋งˆ(internal schema): ์ €์žฅ ์žฅ์น˜์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB) ์„ค๊ณ„์ž ๋ฐ ๊ฐœ๋ฐœ์ž ๊ด€์ ์˜ ์Šคํ‚ค๋งˆ. ๊ฐœ๋… ์Šคํ‚ค๋งˆ๋ฅผ ๋ฌผ๋ฆฌ์  ์ €์žฅ ์žฅ์น˜์— ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๊ณ  ๋ฌผ๋ฆฌ์  ๊ตฌ์กฐ ๋ฐ ๋‚ด๋ถ€ ๋ ˆ์ฝ”๋“œ์˜ ๋ฌผ๋ฆฌ์  ์ˆœ์„œ ๋“ฑ์„ ํ‘œํ˜„ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ์Šคํ‚ค๋งˆ๋ฅผ ๋งŒ๋“œ๋Š” ์–ธ์–ด๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ํ•ด๋‹น ์Šคํ‚ค๋งˆ๋งŒ ์žˆ์œผ๋ฉด ๋™์ผํ•œ ๊ตฌ์กฐ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€