‡๐Ÿ‘ฉ‍๐Ÿ’ป ‡/ºDatabase

[Database] ์Šคํ‚ค๋งˆ(Schema)

Trudy | ์†ก์—ฐ 2024. 8. 13. 02:33

์Šคํ‚ค๋งˆ๋ž€?

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ(database schema)๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database) ์ „์ฒด ๋˜๋Š” ์ผ๋ถ€์˜ ๋…ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ๊ตฌ์กฐ๋กœ ์ €์žฅ๋˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค

 

 

๐Ÿ’ก์Šคํ‚ค๋งˆ vs ERD

๊ฐ„๋žตํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด, ERD๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„๋„์ด๊ณ , ์Šคํ‚ค๋งˆ๋Š” ๊ตฌํ˜„์ฒด์ด๋‹ค. 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์ „์—๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ์ง€ ERD๋ผ๋Š” ์„ค๊ณ„๋„๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„ค๊ณ„๋ฅผ ํ•ด์•ผํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ERD๋ฅผ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด DBMS์—์„œ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์Šคํ‚ค๋งˆ์ด๋‹ค. 

 

 

์Šคํ‚ค๋งˆ 3๊ณ„์ธต

์Šคํ‚ค๋งˆ๋Š” ์‚ฌ์šฉ์ž์˜ ๊ด€์ ์— ๋”ฐ๋ผ ์™ธ๋ถ€ ์Šคํ‚ค๋งˆ, ๊ฐœ๋…์Šคํ‚ค๋งˆ, ๋‚ด๋ถ€ ์Šคํ‚ค๋งˆ๋กœ ๋‚˜๋ˆ ์ง„๋‹ค.

 

 

์™ธ๋ถ€ ์Šคํ‚ค๋งˆ (External Schema) = ์‚ฌ์šฉ์ž ๋ทฐ = ์„œ๋ธŒ ์Šคํ‚ค๋งˆ

  • ์‚ฌ์šฉ์ž๋‚˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ฐœ์ธ์˜ ์ž…์žฅ์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ๋ฅผ ์ •์˜
    • ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ•œ ๋…ผ๋ฆฌ์  ๋ถ€๋ถ„์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์„œ๋ธŒ ์Šคํ‚ค๋งˆ๋ผ๊ณ ๋„ ๋ถ€๋ฆ„
  • ๋™์ผํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด, ์„œ๋กœ ๋‹ค๋ฅธ ๊ด€์ ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉ
  • ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์™ธ๋ถ€ ์Šคํ‚ค๋งˆ๊ฐ€ ์กด์žฌ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ•˜๋‚˜์˜ ์™ธ๋ถ€ ์Šคํ‚ค๋งˆ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ณต์šฉ ๊ฐ€๋Šฅ
  • ์‹ค์„ธ๊ณ„์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์–ด๋–ค ํ˜•์‹, ๊ตฌ์กฐ, ๋ฐฐ์น˜ ํ™”๋ฉด์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค„ ๊ฒƒ์ธ์ง€๋ฅผ ๊ธฐ์ˆ 
  • ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” ์งˆ์˜์–ด(SQL)์„ ์ด์šฉํ•ด์„œ DB๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • ์‘์šฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” C,  Java ๋“ฑ์˜ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ DB์— ์ ‘๊ทผ

 

๊ฐœ๋… ์Šคํ‚ค๋งˆ (Conceptual Schema) = ์ „์ฒด์ ์ธ ๋ทฐ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ „์ฒด ์กฐ์ง์— ๋Œ€ํ•œ ๋…ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ 
  • ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ•œ ๋…ผ๋ฆฌ์  ๋ถ€๋ถ„์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์„œ๋ธŒ ์Šคํ‚ค๋งˆ๋ผ๊ณ ๋„ ๋ถ€๋ฆ„
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ €์žฅ๋˜๊ณ , ๋ฐ์ดํ„ฐ๋“ค์˜ ๊ด€๊ณ„๋Š” ์–ด๋– ํ•œ์ง€
  • ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ํ•œ ๊ฐœ์˜ ๊ฐœ๋… ์Šคํ‚ค๋งˆ๋งŒ ์กด์žฌ
  • ๊ฐœ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„ ๋ฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ ์กฐ๊ฑด์— ๋Œ€ํ•œ ๋ช…์„ธ๋ฅผ ์ •์˜
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ์ผ์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•ํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ด๋Š” DBA์— ์˜ํ•ด ๊ตฌ์„ฑ๋จ
  • ๋‹จ์ˆœํ•œ ์Šคํ‚ค๋งˆ๋ผ๊ณ  ํ•˜๋ฉด ๊ฐœ๋…์Šคํ‚ค๋งˆ๋ฅผ ์˜๋ฏธ

 

๋‚ด๋ถ€ ์Šคํ‚ค๋งˆ (Internal Schema) = ์ €์žฅ ์Šคํ‚ค๋งˆ (Storage Schema)

  • ๋ฌผ๋ฆฌ์  ์ €์žฅ์žฅ์น˜์˜ ์ž…์žฅ์—์„œ ๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ธฐ์ˆ ํ•œ ๊ฒƒ
  • ๊ฐœ๋… ์Šคํ‚ค๋งˆ๋ฅผ ๋””์Šคํฌ ๊ธฐ์–ต์žฅ์น˜์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ๊ธฐ์ˆ 
  • ์ €์žฅ๋  ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์˜ ๋‚ด๋ถ€ ๋ ˆ์ฝ”๋“œ ํ˜•์‹, ๋ฌผ๋ฆฌ์  ์ˆœ์„œ ๋“ฑ์„ ๋‚˜ํƒ€๋ƒ„
  • ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋‚˜ ์‹œ์Šคํ…œ ์„ค๊ณ„์ž๊ฐ€ ๋ณด๋Š” ๊ด€์ ์˜ ์Šคํ‚ค๋งˆ

Reference

https://github.com/devSquad-study/2023-CS-Study/blob/main/DB/db_schema.md

 

2023-CS-Study/DB/db_schema.md at main · devSquad-study/2023-CS-Study

์‹ ์ž… ๊ฐœ๋ฐœ์ž ๋ฉด์ ‘ ๋Œ€๋น„ CS ์Šคํ„ฐ๋”” ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ๐Ÿ”ฅ. Contribute to devSquad-study/2023-CS-Study development by creating an account on GitHub.

github.com

https://iingang.github.io/posts/DB-schema/

 

[DB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ์Šคํ‚ค๋งˆ(Schema)์˜ ๊ฐœ๋… ๋ฐ ํŠน์ง•

์Šคํ‚ค๋งˆ(Schema)๋ž€?

iingang.github.io