Home
>
DB
>
๐พ[Database] ์คํค๋ง(Schema)๋ ๋ฌด์์ผ๊น์?
Database
๐พ[Database] ์คํค๋ง(Schema)๋ ๋ฌด์์ผ๊น์?
- ์คํค๋ง(Schema)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ์ฉ์ด๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ์ ์ฅ๋๊ณ , ์ด๋ป๊ฒ ์กฐ์งํ๋๋์ง๋ฅผ ์ค๋ช
ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ์คํค๋ง(Schema)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋
ผ๋ฆฌ์ ์ค๊ณ๋ฅผ ๋ํ๋ด๋ฉด, ํ
์ด๋ธ, ๋ทฐ, ์ธ๋ฑ์ค, ํธ๋ฆฌ๊ฑฐ, ์ ์ฅ ํ๋ก์์ , ์ ์ฝ ์กฐ๊ฑด ๋ฑ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ค์ด ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๋์ง๋ฅผ ์ ์ํฉ๋๋ค.
1๏ธโฃ ์คํค๋ง์ ์ฃผ์ ์์.
1๏ธโฃ ํ
์ด๋ธ(Table).
- ์คํค๋ง(Schema)์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์์๋ก, ๋ฐ์ดํฐ๋ฅผ ํ(Row)๊ณผ ์ด(Column) ํ์์ผ๋ก ์ ์ฅํฉ๋๋ค.
- ๊ฐ ํ
์ด๋ธ์ ํ๋์ ์ํฐํฐ(์: ์ฌ์ฉ์, ์ ํ ๋ฑ)๋ฅผ ํํํ๋ฉฐ, ํ
์ด๋ธ์ ์ด(Column)์ ์์ฑ์, ํ์ ๊ฐ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋
๋๋ค.
2๏ธโฃ ์ปฌ๋ผ(Column).
- ํ
์ด๋ธ์ ๊ฐ ํ๋๋ฅผ ๋ํ๋ด๋ฉฐ, ๋ฐ์ดํฐ ์ ํ(์ ์, ๋ฌธ์์ด ๋ฑ)๊ณผ ์ ์ฝ ์กฐ๊ฑด(์:
NOT NULL
, UNIQUE
)์ด ์ค์ ๋ฉ๋๋ค.
- ์คํค๋ง(Schema)์์ ์ปฌ๋ผ(Column, ์ด)์ ์ด๋ฆ, ๋ฐ์ดํฐ ํ์
, ํฌ๊ธฐ ๋ฑ์ ์ ์ํฉ๋๋ค.
3๏ธโฃ ๊ธฐ๋ณธ ํค(Primary Key)
- ํ
์ด๋ธ์์ ๊ฐ ํ(Row)์ ๊ณ ์ ํ๊ฒ ์๋ณํ ์ ์๋ ํน์ ์ด(๋๋ ์ด์ ์กฐํฉ)์
๋๋ค.
- ์คํค๋ง(Schema)์์ ๊ธฐ๋ณธ ํค(Primary Key)๋ ํน์ ํ
์ด๋ธ์์ ์ค๋ณต๋์ง ์๋ ๊ฐ์ผ๋ก ์ ์๋ฉ๋๋ค.
4๏ธโฃ ์ธ๋ ํค(Foreign Key)
- ๋ค๋ฅธ ํ
์ด๋ธ์ ๊ธฐ๋ณธ ํค(Primary Key)์ ์ฐ๊ฒฐ๋๋ ์ด(Column)๋ก, ๋ ํ
์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ์คํค๋ง(Schema)์์ ์ธ๋ ํค(Foreign Key)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ ๊ฐ์ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๋๋ก ํฉ๋๋ค.
5๏ธโฃ ์ธ๋ฑ์ค(Index)
- ๊ฒ์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ํ
์ด๋ธ์ ํน์ ์ด(Column)์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ์ ์ํฉ๋๋ค.
- ์คํค๋ง(Schema)์์ ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ์ ํจ์จ์ ์ธ ๊ฒ์์ ์ํ ์ถ๊ฐ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋ํ๋
๋๋ค.
6๏ธโฃ ๋ทฐ(View)
- ํ๋ ์ด์์ ํ
์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ์ฌ ๋ณด์ฌ์ฃผ๋ ๊ฐ์์ ํ
์ด๋ธ์
๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ์ฅ๋์ง ์๊ณ , SQL(Structured Query Language) ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํตํด ์์ฑ๋ฉ๋๋ค.
7๏ธโฃ ์ ์ฝ ์กฐ๊ฑด(Constraints)
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ํ
์ด๋ธ์ด๋ ์ด(Column)์ ์ ์ฉ๋๋ ๊ท์น์
๋๋ค.
- ์๋ฅผ ๋ค์ด,
NOT NULL
, UNIQUE
, CHECK
, FOREIGN KEY
๋ฑ์ ์ ์ฝ ์กฐ๊ฑด์ด ์คํค๋ง์ ์ ์๋ฉ๋๋ค.
2๏ธโฃ ์คํค๋ง์ ์ข
๋ฅ.
1๏ธโฃ ๋
ผ๋ฆฌ์ ์คํค๋ง(Logical Schema)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฒด์ ์ธ ๋
ผ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ๋ํ๋
๋๋ค.
- ํ
์ด๋ธ, ๋ทฐ, ์ธ๋ฑ์ค ๋ฑ์ ๋
ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์๋ค์ด ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๋ณผ์ง๋ฅผ ์ค๋ช
ํฉ๋๋ค.
2๏ธโฃ ๋ฌผ๋ฆฌ์ ์คํค๋ง(Physical Schema)
- ๋ฐ์ดํฐ๊ฐ ์ค์ ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ป๊ฒ ์ ์ฅ๋๋์ง๋ฅผ ๋ํ๋
๋๋ค.
- ์ด๋ ํ๋์จ์ด ๋ ๋ฒจ์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๋ฐฉ์์ ์ค๋ช
ํ๋ฉฐ, ๋ฐ์ดํฐ ํ์ผ, ์ธ๋ฑ์ค ํ์ผ ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.
3๏ธโฃ ์ฌ์ฉ์ ์คํค๋ง(User Schema)
- ํน์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ๋ํ๋
๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์๋ ์ ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋, ํน์ ๋ทฐ๋ ํ
์ด๋ธ๋ง ์ ๊ทผํ ์ ์๋๋ก ์ค์ ๋ฉ๋๋ค.
3๏ธโฃ ์คํค๋ง ์์.
- ์คํค๋ง๋ SQL์ ํตํด ์ ์ํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ๊ฐ ์ค์ ๋ฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์ ํ
์ด๋ธ์ ์คํค๋ง๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ ์ ์์ต๋๋ค.
CREATE TABLE Users (
user_id INT PRIMARY KEY, -- ๊ธฐ๋ณธ ํค
username VARCHAR(50) NOT NULL -- NULL์ ํ์ฉํ์ง ์์
email VARCHAR(100) UNIQUE, -- ๊ณ ์ ํ ๊ฐ
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
- ์ ์คํค๋ง ์ ์์์๋
User
ํ
์ด๋ธ์ด ์์ฑ๋๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค.
-
user_id
: ๊ธฐ๋ณธ ํค(Primary Key)๋ก, ๊ณ ์ ํ ์ฌ์ฉ์ ์๋ณ์์
๋๋ค.
-
username
: ์ฌ์ฉ์์ ์ด๋ฆ์ ์ ์ฅํ๋ฉฐ, NULL
์ ํ์ฉํ์ง ์์ต๋๋ค.
-
email
: ์ฌ์ฉ์์ ์ด๋ฉ์ผ์ ์ ์ฅํ๋ฉฐ, ๊ณ ์ ํ ๊ฐ์ด์ด์ผ ํฉ๋๋ค.
-
created_at
: ์ฌ์ฉ์๊ฐ ์์ฑ๋ ์๊ฐ์ ๋ํ๋ด๋ฉฐ, ๊ธฐ๋ณธ๊ฐ์ผ๋ก ํ์ฌ ์๊ฐ์ ์ ์ฅํฉ๋๋ค.
4๏ธโฃ ์คํค๋ง์ ์ญํ .
-
๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ์
- ์คํค๋ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ๋ชจ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ํฉ๋๋ค.
- ์ด๋ ํ
์ด๋ธ, ์ด(Column), ์ ์ฝ ์กฐ๊ฑด ๋ฑ์ ๋ช
ํํ๊ฒ ์ ์ํจ์ผ๋ก์จ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค.
-
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ง
- ์คํค๋ง๋ ์ ์ฝ ์กฐ๊ฑด๊ณผ ๊ท์น์ ์ค์ ํ์ฌ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, ์ธ๋ ํค(Foreign Key) ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ์ดํฐ ๊ฐ์ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํฉ๋๋ค.
-
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ
- ์คํค๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๋ฆฌ๋ฅผ ์ฉ์ดํ๊ฒ ํ๋ฉฐ, ๊ฐ๋ฐ์๋ DBA(Database Administrator)๊ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๊ณ ์ ์ง๋ณด์ํ ์ ์๋๋ก ๋์ต๋๋ค.
5๏ธโฃ ์์ฝ.
- ์คํค๋ง(Schema)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ์ ์ค๊ณ๋ฅผ ๋ํ๋ด๋ฉฐ, ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ์ ์ฅ๋๊ณ ์กฐ์ง๋๋์ง๋ฅผ ์ ์ํฉ๋๋ค.
- ํ
์ด๋ธ(Table), ์ด(Column), ์ธ๋ฑ์ค(Index), ๋ทฐ(View), ์ ์ฝ ์กฐ๊ฑด(Constraints) ๋ฑ์ด ์คํค๋ง์ ํฌํจ๋๋ฉฐ, ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ์คํค๋ง(Schema)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋
ผ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ๋ฐ ๋งค์ฐ ์ค์ํ ์์์ด๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํจ์จ์ ์ธ ์ด์๊ณผ ๊ด๋ฆฌ์ ํ์์ ์
๋๋ค.