DB - Schema

Kjjeddยท2026๋…„ 1์›” 19์ผ

DB

๋ชฉ๋ก ๋ณด๊ธฐ
5/11
post-thumbnail

๐Ÿงฉ ์Šคํ‚ค๋งˆ(Schema)๋ž€ ๋ฌด์—‡์ธ๊ฐ€

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ ์ €์žฅ์˜ ์ถœ๋ฐœ์ ์€ ํ•ญ์ƒ ์Šคํ‚ค๋งˆ๋‹ค.
ํ…Œ์ด๋ธ”๋ณด๋‹ค ๋จผ์ €, ์ปฌ๋Ÿผ๋ณด๋‹ค ๋จผ์ €, ์Šคํ‚ค๋งˆ๋ถ€ํ„ฐ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.


๐Ÿ“š ์–ด์›์œผ๋กœ ์ดํ•ดํ•˜๋Š” ์Šคํ‚ค๋งˆ

  • ๊ณ ๋Œ€ ๊ทธ๋ฆฌ์Šค์–ด ฯƒฯ‡ฮฎฮผฮฑ (์Šค์ผ€๋งˆ)
    โ†’ ํ˜•ํƒœ, ๊ตฌ์กฐ, ํ‹€
  • ์ฒ ํ•™ยท๋…ผ๋ฆฌํ•™
    โ†’ ๊ฐœ๋…์„ ๊ตฌ์„ฑํ•˜๋Š” ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ
  • ์ปดํ“จํ„ฐ ๊ณผํ•™
    โ†’ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š” ๊ตฌ์กฐ์™€ ๊ทœ์น™์˜ ์ง‘ํ•ฉ

์ฆ‰, ์Šคํ‚ค๋งˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ํ˜•ํƒœ๋กœ ์กด์žฌํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์„ค๊ณ„๋„๋‹ค ๐Ÿ—บ๏ธ


๐Ÿ“ ์—‘์…€๋กœ ๋น„์œ ํ•ด๋ณด๋Š” ์Šคํ‚ค๋งˆ

์Šคํ‚ค๋งˆ๋ฅผ ๊ฐ€์žฅ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—‘์…€(์Šคํ”„๋ ˆ๋“œ์‹œํŠธ)์ด๋‹ค.

[ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ํŒŒ์ผ ]
 โ”œโ”€ Sheet1 (ํ•™์ƒ)
 โ”œโ”€ Sheet2 (๊ฐ•์˜)
 โ””โ”€ Sheet3 (์ˆ˜๊ฐ•์‹ ์ฒญ)
  • ๐Ÿ“„ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ํŒŒ์ผ ํ•˜๋‚˜ โ†’ ์Šคํ‚ค๋งˆ
  • ๐Ÿ“‘ ์‹œํŠธ ํ•˜๋‚˜ โ†’ ํ…Œ์ด๋ธ”

์ฆ‰, ํ•˜๋‚˜์˜ ์Šคํ‚ค๋งˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.


โš™๏ธ ๊ธฐ์ˆ ์  ์ •์˜ (MySQL ๊ธฐ์ค€)

์Šคํ‚ค๋งˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

  • ํ…Œ์ด๋ธ”
  • ์ธ๋ฑ์Šค
  • ์ œ์•ฝ์กฐ๊ฑด
  • ํŠธ๋ฆฌ๊ฑฐ, ๋ทฐ, ํ”„๋กœ์‹œ์ € ๋“ฑ

MySQL์—์„œ๋Š” Schema = Database๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.

CREATE SCHEMA my_schema;
CREATE DATABASE my_schema;
โ†’ ์™„์ „ํžˆ ๋™์ผํ•œ ์˜๋ฏธ

๐Ÿง  ์Šคํ‚ค๋งˆ์˜ 3๋‹จ๊ณ„ ๋ถ„๋ฅ˜

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๋Š” 3๋‹จ๊ณ„ ์‚ฌ๊ณ  ๊ตฌ์กฐ๋กœ ๋‚˜๋‰œ๋‹ค.

[ ๊ฐœ๋…์  ] โ†’ [ ๋…ผ๋ฆฌ์  ] โ†’ [ ๋ฌผ๋ฆฌ์  ]
   ์ƒ๊ฐ        ์„ค๊ณ„        ๊ตฌํ˜„

๐Ÿงฉ 1. ๊ฐœ๋…์  ์Šคํ‚ค๋งˆ (Conceptual Schema)

๋น„์ฆˆ๋‹ˆ์Šค์™€ ๋„๋ฉ”์ธ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ๊ณ„๋‹ค.

  • ์—”ํ‹ฐํ‹ฐ(๊ฐœ๋…)์™€ ๊ด€๊ณ„๋งŒ ํ‘œํ˜„
  • ์ปฌ๋Ÿผ, ํƒ€์ž…, DBMS ๊ด€์‹ฌ ์—†์Œ
  • ํ™”์ดํŠธ๋ณด๋“œ์— ์†์œผ๋กœ ๊ทธ๋ ค๋„ OK โœ๏ธ

๐ŸŽ“ ์˜ˆ์‹œ: ํ•™์ƒ ์ˆ˜๊ฐ• ์‹œ์Šคํ…œ

  • ํ•™์ƒ(Student)
  • ๊ฐ•์˜(Course)
  • ์ˆ˜๊ฐ•(Enrollment)
ํ•™์ƒ โ”€โ”€โ”€< ์ˆ˜๊ฐ• >โ”€โ”€โ”€ ๊ฐ•์˜
1๋ช…       N:N      1๊ฐœ

๐Ÿ‘‰ ์ด ๋‹จ๊ณ„์—์„œ๋Š” โ€œ๋ฌด์—‡์ด ์กด์žฌํ•˜๋Š”๊ฐ€โ€๋งŒ ์ค‘์š”ํ•˜๋‹ค.


๐Ÿงฑ 2. ๋…ผ๋ฆฌ์  ์Šคํ‚ค๋งˆ (Logical Schema)

๊ฐœ๋…์  ์Šคํ‚ค๋งˆ๋ฅผ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋กœ ๊ตฌ์ฒดํ™”ํ•œ ๋‹จ๊ณ„๋‹ค.

  • ํ…Œ์ด๋ธ” ์ด๋ฆ„
  • ์ปฌ๋Ÿผ
  • PK / FK
  • ๋ฐ์ดํ„ฐ ํƒ€์ž…

๐Ÿ“ ๋…ผ๋ฆฌ ๊ตฌ์กฐ ์˜ˆ์‹œ

STUDENTS
- student_id (PK)
- name
- birthdate

COURSES
- course_id (PK)
- course_name

ENROLLMENTS
- enrollment_id (PK)
- student_id (FK)
- course_id (FK)
- enrollment_date

๐Ÿ‘‰ ์ด ๋‹จ๊ณ„๋Š” ERD ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ์ž์ฃผ ํ‘œํ˜„๋œ๋‹ค.


โš™๏ธ 3. ๋ฌผ๋ฆฌ์  ์Šคํ‚ค๋งˆ (Physical Schema)

๋…ผ๋ฆฌ์  ์Šคํ‚ค๋งˆ๋ฅผ ์‹ค์ œ DBMS์— ๊ตฌํ˜„ํ•œ ๋‹จ๊ณ„๋‹ค.

  • CREATE TABLE
  • ์ธ๋ฑ์Šค
  • ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„
  • ์„ฑ๋Šฅ ์ตœ์ ํ™”

๐Ÿ› ๏ธ ๊ตฌํ˜„

STUDENTS ํ…Œ์ด๋ธ”
| id | name   | birthdate |
|----|--------|-----------|
| 1  | ๊ฐ•๋™์› | 1990-01-01 |
| 2  | ๊น€ํƒœ๋ฆฌ | 1992-02-02 |

๐Ÿ‘‰ ์ด ๋‹จ๊ณ„๋ถ€ํ„ฐ๋Š” ์„ฑ๋Šฅ, ์ธ๋ฑ์Šค, ์ฟผ๋ฆฌ ํšจ์œจ์ด ์ค‘์š”ํ•ด์ง„๋‹ค ๐Ÿš€


๐ŸŽฏ ์™œ ์ด 3๋‹จ๊ณ„๋ฅผ ๊ตฌ๋ถ„ํ•ด์„œ ์•Œ์•„์•ผ ํ• ๊นŒ?

  • ๐Ÿง  ๊ธฐํš ๋‹จ๊ณ„ โ†’ ๊ฐœ๋…์  ์Šคํ‚ค๋งˆ
  • ๐Ÿ“ ์„ค๊ณ„ ๋‹จ๊ณ„ โ†’ ๋…ผ๋ฆฌ์  ์Šคํ‚ค๋งˆ
  • ๐Ÿ› ๏ธ ๊ฐœ๋ฐœยท์šด์˜ โ†’ ๋ฌผ๋ฆฌ์  ์Šคํ‚ค๋งˆ

์ˆ™๋ จ๋œ ๊ฐœ๋ฐœ์ž๋Š” ๊ธฐ๋Šฅ ๋ช…์„ธ์„œ๋ฅผ ๋ณด๋ฉด์„œ ๋™์‹œ์— ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•œ๋‹ค.

โ€œ์ด ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋˜๋ฉด
ํ…Œ์ด๋ธ” ํ•˜๋‚˜ ๋” ์ƒ๊ธฐ๊ฒ ๋„ค,
FK ํ•˜๋‚˜ ๋Š˜๊ฒ ๋„ค,
์ธ๋ฑ์Šค๋„ ํ•„์š”ํ•˜๊ฒ ๋„คโ€

๐Ÿ‘‰ ์Šคํ‚ค๋งˆ๋ฅผ ์ดํ•ดํ•œ๋‹ค๋Š” ๊ฑด
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค ๐Ÿ’ก


๐Ÿง  ํ•œ ์ค„ ์š”์•ฝ

  • ์Šคํ‚ค๋งˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์„ค๊ณ„๋„
  • ๊ฐœ๋… โ†’ ๋…ผ๋ฆฌ โ†’ ๋ฌผ๋ฆฌ ๋‹จ๊ณ„๋กœ ์‚ฌ๊ณ 
  • ํ…Œ์ด๋ธ”์€ ์Šคํ‚ค๋งˆ์˜ ์ผ๋ถ€์ผ ๋ฟ
profile
Gongbuhaja

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