์คํค๋ง๋(Schema)๋?
1. ์คํค๋ง ์ ์
์คํค๋ง(Schema)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ์ ์ค๊ณ๋ฅผ ์ ์ํ๋ ์ฒญ์ฌ์ง(blueprint)/์ค๊ณ๋ ์ด๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ: ํ ์ด๋ธ, ์ปฌ๋ผ, ๋ฐ์ดํฐ ํ์ , ์ ์ฝ ์กฐ๊ฑด, ๊ด๊ณ ๋ฑ์ ํฌํจํ๋ค.
- ์ฝ๊ฒ ๋งํด, ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ์ ์ฅ๋๊ณ ๊ด๋ฆฌ๋ ์ง๋ฅผ ์ ์ํ ๊ฒ์ด๋ค.
2. ์คํค๋ง์ ์ข ๋ฅ
์คํค๋ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฌ์ฉ ๋ชฉ์ ๊ณผ ์์ค์ ๋ฐ๋ผ ์ฌ๋ฌ ์ข ๋ฅ๋ก ๋๋๋ค.
- ๋ฌผ๋ฆฌ์ ์คํค๋ง(Physical Schema)
- ๋ฐ์ดํฐ๊ฐ ์ค์ ๋ก ์ ์ฅ๋๋ ๋ฐฉ์๊ณผ ์ ์ฅ์์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ค.
- ๋์คํฌ์ ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ๋ฐฐ์น๋๋์ง, ์ธ๋ฑ์ค ์์ฑ ์ฌ๋ถ ๋ฑ์ ํฌํจํ๋ค.
- ์: ํ ์ด๋ธ ํ์ผ, ๋ฐ์ดํฐ ๋ธ๋ก, ์ธ๋ฑ์ค ๊ตฌ์กฐ.
- ๋
ผ๋ฆฌ์ ์คํค๋ง(Logical Schema)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ์ ์ค๊ณ๋ฅผ ์ ์ํ๋ค.
- ํ ์ด๋ธ, ๋ทฐ, ์ ์ฝ ์กฐ๊ฑด, ๊ด๊ณ ๋ฑ์ ํฌํจํ๋ค.
- ์: `users` ํ ์ด๋ธ์ `id`, `name`, `email` ๋ฑ์ ์ปฌ๋ผ๊ณผ ๊ด๊ณ
- ๊ฐ๋
์ ์คํค๋ง(Conceptual Schema)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉ์ ๊ด์ ์์ ์ ์ํ๋ค.
- ๋ฐ์ดํฐ์ ๊ทธ ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ค๋ฃธ.
- ์: ์ฌ์ฉ์๋ ์ฃผ๋ฌธ์ ํ๊ณ , ์ฃผ๋ฌธ์ ์ ํ๊ณผ ์ฐ๊ฒฐ๋๋ค.
3. ์คํค๋ง ์ค๊ณ์ ์ฃผ์ ๊ตฌ์ฑ ์์
- ํ ์ด๋ธ(Table): ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ตฌ์กฐํ๋ ๋จ์
- ์ปฌ๋ผ(Column): ๋ฐ์ดํฐ์ ์์ฑ์ ๋ํ๋. ๊ฐ ํ ์ด๋ธ์ ์ปฌ๋ผ์ผ๋ก ์ ์ํ๋ค.
- ๋ฐ์ดํฐ ํ์
(Data Type): ๊ฐ ์ปฌ๋ผ์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ์ ์ข
๋ฅ๋ฅผ ์ง์ ํ๋ค.
- ์: `VARCHAR`, `INTEGER`, `DATE`
- ์ ์ฝ ์กฐ๊ฑด(Constraint): ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํจ.
- ์: `PRIMARY KEY`, `FOREIGN KEY`, `NOT NULL`, `UNIQUE`
- ๊ด๊ณ(Relationship): ํ
์ด๋ธ๊ฐ์ ์ฐ๊ฒฐ์ ์๋ฏธ.
- ์: `users` ์ `orders` ๊ฐ 1:N ๊ด๊ณ
์คํค๋ง ์์
๋ค์์ ์ฌ์ฉ์์ ์ฃผ๋ฌธ ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ ์คํค๋ง ์์ ์ด๋ค.
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL
);
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
product_name VARCHAR(100),
order_date DATE,
FOREIGN KEY (user_id) REFERENCES users(id)
);
ERD(Entity-Relationship Diagram)๋?
1. ERD ์ ์
ERD๋ ์ํฐํฐ(Entity), ์์ฑ(Attribute), ๊ทธ๋ฆฌ๊ณ ๊ด๊ณ(Relationship)๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํ ๋ค์ด์ด๊ทธ๋จ์ด๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ธ๋งํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
- ๋ฐ์ดํฐ ๊ฐ์ ๊ตฌ์กฐ์ ๊ด๊ณ๋ฅผ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ๋๋๋ค.
2. ERD์ ์ฃผ์ ๊ตฌ์ฑ ์์
- ์ํฐํฐ(Entity)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ด๋ฆฌํด์ผ ํ ๊ฐ์ฒด๋ฅผ ๋ํ๋.
- ์: `User`, `Order`, `Product`
- ERD์์ ์ฌ๊ฐํ์ผ๋ก ํํํจ.
- ์์ฑ(Attribute)
- ์ํฐํฐ๊ฐ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ธ๋ค.
- ์: `User` ์ํฐํฐ์ ์์ฑ์ผ๋ก `id`, `name`, `email` ๋ฑ์ด ํฌํจ๋๋ค.
- ERD์์ ํ์์ผ๋ก ํํ๋จ.
- ๊ด๊ณ(Relationship)
- ์ํฐํฐ ๊ฐ์ ์ฐ๊ด์ฑ์ ๋ํ๋ธ๋ค.
- ์: ์ฌ์ฉ์(`User`)๋ ์ฌ๋ฌ ์ฃผ๋ฌธ(`Order`)์ ํ ์ ์๋ค(1:N ๊ด๊ณ).
- ERD์์ ๋ง๋ฆ๋ชจ๋ก ํํ.
- ํค(Key)
- ๊ฐ ์ํฐํฐ์ ๊ณ ์ ์ฑ์ ๋ณด์ฅํ๋ ์์ฑ์ด๋ค.
- ๊ธฐ๋ณธ ํค(Primary Key): ๊ฐ ์ํฐํฐ์์ ๊ณ ์ ํ ๊ฐ์ ๋งํจ.
- ์ธ๋ ํค(Foreign Key): ๋ค๋ฅธ ์ํฐํฐ์์ ๊ด๊ณ๋ฅผ ์ ์ํ๋ค.
3. ๊ด๊ณ์ ์ข ๋ฅ
- 1:1 ๊ด๊ณ(One-to-One)
- ํ๋์ ์ํฐํฐ๊ฐ ๋ค๋ฅธ ํ๋์ ์ํฐํฐ์๋ง ์ฐ๊ฒฐ๋จ์ ์๋ฏธํ๋ค.
- ์: ์ฌ์ฉ์์ ์ฌ์ฉ์ ํ๋กํ
- 1:N ๊ด๊ณ(One-to-Mant)
- ํ๋์ ์ํฐํฐ๊ฐ ์ฌ๋ฌ ์ํฐํฐ์ ์ฐ๊ฒฐ๋จ.
- ์: ์ฌ์ฉ์์ ์ฃผ๋ฌธ
- N:M ๊ด๊ณ(Many-to-Many)
- ์ฌ๋ฌ ์ํฐํฐ๊ฐ ์๋ก ์ฌ๋ฌ ๊ฐ์ ์ฐ๊ฒฐ๋จ.
- ์:ํ์๊ณผ ๊ฐ์(ํ์์ ์ฌ๋ฌ ๊ฐ์๋ฅผ ์๊ฐํ ์ ์๊ณ , ๊ฐ์์๋ ์ฌ๋ฌ ํ์์ด ์ฐธ์ฌ๊ฐ ๊ฐ๋ฅํ๋ค.)
ERD ์์
๋ค์์ ์ฌ์ฉ์(`User`)์ ์ฃผ๋ฌธ(`Order`) ๊ฐ์ ๊ด๊ณ๋ฅผ ํํํ ERD์ด๋ค.
+------------+ 1 N +------------+
| User |----------------------| Order |
+------------+ +------------+
| id (PK) | | id (PK) |
| name | | product |
| email | | order_date |
+------------+ | user_id (FK)|
+------------+
4. ์คํค๋ง์ ERD์ ์ฐจ์ด์
๊ตฌ๋ถ | ์คํค๋ง(Schema) | ERD(Entity-Relationship Diagram) |
๋ชฉ์ | ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ์ ์ค๊ณ๋ฅผ ์ ์ | ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๋จ๊ณ์์ ๋ฐ์ดํฐ ๊ฐ ๊ด๊ณ ์๊ฐํ |
ํํ ๋ฐฉ์ | SQL ์ฝ๋, ๋ฐ์ดํฐ ์ ์ ์ธ์ด (DDL) | ๋ค์ด์ด๊ทธ๋จ(๊ทธ๋ํฝ) |
๋ด์ฉ | ํ ์ด๋ธ, ์ปฌ๋ผ, ๋ฐ์ดํฐ ํ์ , ์ ์ฝ ์กฐ๊ฑด ๋ฑ ์ ์ | ์ํฐํฐ, ์์ฑ, ๊ด๊ณ ๋ฑ์ ์๊ฐ์ ์ผ๋ก ํํ |
์ฌ์ฉ ์์ | ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถ ๋ฐ ๊ด๋ฆฌ ๋จ๊ณ | ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ๋ฐ ๋ชจ๋ธ๋ง ์ด๊ธฐ ๋จ๊ณ |
๋์ | ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ(DBMS)์์ ์ฌ์ฉ | ์ค๊ณ์, ๊ฐ๋ฐ์, ๋น์ฆ๋์ค ๋ถ์๊ฐ ๋ฑ์ด ์ดํดํ ์ ์๋๋ก ์ ๊ณตํจ |
5. ์คํค๋ง์ ERD ํ์ฉ ๊ณผ์
- ์๊ตฌ์ฌํญ ๋ถ์
- ์ค๊ณํ๋ ค๋ ๋ฐ์ดํฐ์ ๊ด๊ณ๋ฅผ ์ ์ํจ.
- ERD ์์ฑ
- ๋ฐ์ดํฐ๋ฅผ ์ํฐํฐ์ ์์ฑ์ผ๋ก ๋๋๊ณ , ๊ด๊ณ๋ฅผ ์ ์ํ๋ค.
- ์คํค๋ง ๊ตฌํ
- ERD๋ฅผ ๊ธฐ๋ฐ์ผ๋ก SQL ๋ฌธ๋ฒ์ผ๋ก ์คํค๋ง๋ฅผ ์์ฑํจ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ
- ์์ฑ๋ ์คํค๋ง๋ฅผ DBMS์ ์ ์ฉํ๋ค.
์ ๋ฆฌ ๐งน
- ์คํค๋ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ฉฐ, ์ฃผ๋ก ๊ฐ๋ฐ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถ ๋จ๊ณ์์ ์ฌ์ฉ๋๋ค.
- ERD๋ ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ์ ๊ตฌ์กฐ๋ฅผ ์๊ฐํํ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ์ด๊ธฐ ๋จ๊ณ์์ ๋ง์ด ํ์ฉ๋๋ค.
'AI ๐ค > Django โ๏ธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[250121] ์ฟผ๋ฆฌ์ (QuerySet)์ด๋? (0) | 2025.01.21 |
---|---|
[250120] HttpResponse์ render์ ์ฐจ์ด์ (1) | 2025.01.20 |
[250115] REST ์ RESTful ์ ๋ํ ์ ๋ฐ์ ์ธ ๊ฐ๋ ์ ๋ฆฌ~ (1) | 2025.01.15 |
[250114] Django์ ๋ค์ค App๊ณผ URL์ด๋? (0) | 2025.01.14 |
[250110] ORM(Object-Relational Mapping)์ด๋? (0) | 2025.01.10 |