โจ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ์์
์๊ตฌ ์กฐ๊ฑด ๋ถ์ → ๊ฐ๋ ์ ์ค๊ณ → ๋ ผ๋ฆฌ์ ์ค๊ณ → ๋ฌผ๋ฆฌ์ ์ค๊ณ → ๊ตฌํ
โจ ๊ฐ๋ ์ ์ค๊ณ(์ ๋ณด ๋ชจ๋ธ๋ง, ๊ฐ๋ ํ)
์ ๋ณด์ ๊ตฌ์กฐ๋ฅผ ์ป๊ธฐ ์ํ์ฌ ํ์ค์ธ๊ณ์ ๋ฌดํ์ฑ๊ณผ ๊ณ์์ฑ์ ์ดํดํ๊ณ , ๋ค๋ฅธ ์ฌ๋๊ณผ ํค์ ํ๊ธฐ ์ํ์ฌ ํ์ค ์ธ๊ณ์ ๋ํ ์ธ์์ ์ถ์์ ๊ฐ๋ ์ผ๋ก ํํํ๋ ๊ณผ์
- E-R ๋ค์ด์ด๊ทธ๋จ
โจ ๋ ผ๋ฆฌ์ ์ค๊ณ(๋ฐ์ดํฐ ๋ชจ๋ธ๋ง)
ํ์ค ์ธ๊ณ์์ ๋ฐ์ํ๋ ์๋ฃ๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ๊ณ ์ฒ๋ฆฌํ ์ ์๋ ๋ฌผ๋ฆฌ์ ์ ์ฅ์ฅ์น์ ์ ์ฅํ ์ ์๋๋ก ๋ณํํ๊ธฐ ์ํด ํน์ DBMS๊ฐ ์ง์ํ๋ ๋ ผ๋ฆฌ์ ์๋ฃ ๊ตฌ์กฐ๋ก ๋ณํmapping์ํค๋ ๊ณผ์
โจ ๋ฌผ๋ฆฌ์ ์ค๊ณ(๋ฐ์ดํฐ ๊ตฌ์กฐํ)
๋ ผ๋ฆฌ์ ์ค๊ณ ๋จ๊ณ์์ ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ๋ก ํํ๋ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ ๋ฑ์ ๋ฌผ๋ฆฌ์ ์ ์ฅ์ฅ์น์ ์ ์ฅํ ์ ์๋ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ๋ก ๋ณํํ๋ ๊ณผ์
โจ ๋ฐ์ดํฐ ๋ชจ๋ธ
ํ์ค ์ธ๊ณ์ ์ ๋ณด๋ค์ ์ปดํจํฐ์ ํํํ๊ธฐ ์ํด์ ๋จ์ํ, ์ถ์ํํ์ฌ ์ฒด๊ณ์ ์ผ๋ก ํํํ ๊ฐ๋ ์ ๋ชจํ
- ๊ตฌ์ฑ ์์: ๊ฐ์ฒดEntity, ์์ฑAttribute, ๊ด๊ณRelationship
- ๋ฐ์ดํฐ ๋ชจ๋ธ์ ํ์ํ ์์: ๊ตฌ์กฐ, ์ฐ์ฐ, ์ ์ฝ ์กฐ๊ฑด
โจ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Relation ๊ตฌ์กฐ
- ํํ Tuple: ๋ฆด๋ ์ด์ ์ ๊ตฌ์ฑํ๋ ๊ฐ๊ฐ์ ํ, ์์ฑ์ ๋ชจ์์ผ๋ก ๊ตฌ์ฑ, ํํ์ ์=์นด๋๋๋ฆฌํฐCardinality=๊ธฐ์=๋์์
- ์์ฑ Attribute: ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ์ฅ ์์ ๋ ผ๋ฆฌ์ ๋จ์, ์์ฑ์ ์=Degree
- ๋๋ฉ์ธ Domain: ํ๋์ ์ ํ๋ฆฌ๋ทฐํธ๊ฐ ์ทจํ ์ ์๋ ๊ฐ์ ํ์ ์ ์์Atomic๊ฐ๋ค์ ์งํฉ
โจ ๋ฌด๊ฒฐ์ฑ Integrity
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ ๊ฐ๊ณผ ๊ทธ๊ฒ์ด ํํํ๋ ํ์ค ์ธ๊ณ์ ์ค์ ๊ฐ์ด ์ผ์นํ๋ ์ ํ์ฑ์ ์๋ฏธ
- ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ: ์ด๋ค ์์ฑ๋ Null ๊ฐ์ด๋ ์ค๋ณต๊ฐ์ ๊ฐ์ง ์ ์๋ค
- ๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ: ์ฃผ์ด์ง ์์ฑ ๊ฐ์ด ์ ์๋ ๋๋ฉ์ธ์ ์ํ ๊ฐ์ด์ด์ผ ํ๋ค
- ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ: ์ธ๋ํค ๊ฐ์ Null์ด๊ฑฐ๋ ์ฐธ์กฐ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธํค ๊ฐ๊ณผ ๋์ผํด์ผ ํ๋ค (์ฐธ์กฐํ ์ ์๋ ์ธ๋ํค ๊ฐ์ ๊ฐ์ง ์ ์๋ค)
- ์ฌ์ฉ์ ์ ์ ๋ฌด๊ฒฐ์ฑ: ์์ฑ ๊ฐ๋ค์ด ์ฌ์ฉ์๊ฐ ์ ์ํ ์ ์ฝ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํ๋ค
โจ ๊ด๊ณ๋์
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํ๋ ์ ๋ณด์ ๊ทธ ์ ๋ณด๋ฅผ ์ ์ํ๊ธฐ ์ํด์ ์ด๋ป๊ฒ ์ ๋ํ๋๊ฐ๋ฅผ ๊ธฐ์ ํ๋ ์ ์ฐจ์ ์ธ ์ธ์ด
- ์์ ๊ด๊ณ ์ฐ์ฐ์: Select, Project, Join, Division
- ์ผ๋ฐ ์งํฉ ์ฐ์ฐ์: UNION(ํฉ์งํฉ), INTERSECTION(๊ต์งํฉ), DIFFERENCE(์ฐจ์งํฉ), CARTESIAN PRODUCT(๊ต์ฐจ๊ณฑ)
โจ ๊ด๊ณํด์ Relational Calculus
๊ด๊ณ ๋ฐ์ดํฐ์ ์ฐ์ฐ์ ํํํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ํ๋ ์ ๋ณด๋ฅผ ์ ์ํ ๋๋ ๊ณ์ฐ ์์์ ์ฌ์ฉ
์ํ๋ ์ ๋ณด๊ฐ ๋ฌด์์ด๋ผ๋ ๊ฒ๋ง ์ ์ํ๋ ๋น์ ์ฐจ์ ํน์ฑ
- ∀ : ์ ์นญ ์ ๋์ For All
- ∃ : ์กด์ฌ ์ ๋์ There Exists
โจ ์ ๊ทํ
ํจ์์ ์ข ์์ฑ ๋ฑ์ ์ข ์์ ์ด๋ก ์ ์ด์ฉํ์ฌ ์๋ชป ์ค๊ณ๋ ๊ด๊ณํ ์คํค๋ง๋ฅผ ๋ ์์ ์์ฑ์ ์ธํธ๋ก ์ชผ๊ฐ์ด ๋ฐ๋์งํ ์คํค๋ง๋ก ๋ง๋ค์ด ๊ฐ๋ ๊ณผ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ์ ์ค๊ณ ๋จ๊ณ์์ ์ํํ๋ค.
- ์ผ๊ด์ฑ, ์ ํ์ฑ, ๋จ์์ฑ, ๋น์ค๋ณต์ฑ, ์์ ์ฑ์ ๋ณด์ฅํ๋ค.
โจ ์ด์(Anomaly)์ ๊ฐ๋ ๋ฐ ์ข ๋ฅ
- ์ฝ์ ์ด์: ๋ฆด๋ ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ๋ ์๋์๋ ์๊ด์์ด ์ํ์ง ์์ ๊ฐ๋ค๋ ํจ๊ป ์ฝ์ ๋๋ ํ์
- ์ญ์ ์ด์: ๋ฆด๋ ์ด์ ์์ ํ ํํ์ ์ญ์ ํ ๋ ์๋์๋ ์๊ด์๋ ๊ฐ๋ค๋ ํจ๊ป ์ญ์ ๋๋ ์ฐ์๊ฐ ์ผ์ด๋๋ ํ์
- ๊ฐฑ์ ์ด์: ๋ฆด๋ ์ด์ ์์ ํํ์ ์๋ ์์ฑ๊ฐ์ ๊ฐฑ์ ํ ๋ ์ผ๋ถ ํํ์ ์ ๋ณด๋ง ๊ฐฑ์ ๋์ด ์ ๋ณด์ ๋ชจ์์ด ์๊ธฐ๋ ํ์
โจ ์ ๊ทํ ๊ณผ์
๋น์ ๊ท ๋ฆด๋ ์ด์
↓ (๋๋ฉ์ธ์ด ์์๊ฐ)
1NF
↓ (๋ถ๋ถ์ ํจ์ ์ข ์ ์ ๊ฑฐ)
2NF
↓ (์ดํ์ ํจ์ ์ข ์ ์ ๊ฑฐ)
3NF
↓ (๊ฒฐ์ ์์ด๋ฉด์ ํ๋ณดํค๊ฐ ์๋ ๊ฒ ์ ๊ฑฐ)
BCNF
↓ (๋ค์น ์ข ์ ์ ๊ฑฐ)
4NF
↓ (์กฐ์ธ ์ข ์์ฑ ์ ๊ฑฐ)
5NF
โจ ๋ฐ์ ๊ทํ
์์คํ ์ ์ฑ๋ฅ ํฅ์, ๊ฐ๋ฐ ๋ฐ ์ด์์ ํธ์์ฑ ๋ฑ์ ์ํด ์ ๊ทํ๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ํตํฉ, ์ค๋ณต, ๋ถ๋ฆฌํ๋ ๊ณผ์
์๋์ ์ผ๋ก ์ ๊ทํ ์์น์ ์๋ฐฐํ๋ ํ์
- ํ ์ด๋ธ ํตํฉ, ํ ์ด๋ธ ๋ถ๋ฆฌ, ์ค๋ณต ํ ์ด๋ธ ์ถ๊ฐ, ์ค๋ณต ์์ฑ ์ถ๊ฐ
โจ ์์คํ ์นดํ๋ก๊ทธ
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ์ ๋ฉํ๋ฐ์ดํฐ(๋ฐ์ดํฐ์ ๋ํ ๋ฐ์ดํฐ)๋ฅผ ์ ์ฅํ๋ ํน๋ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋๋ ํ ์ด๋ธ ๋ชจ์, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฌ์ (Dictionary) ์ญํ ์ ํ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด์ ๋ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ค.
โจ ํธ๋์ญ์
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๋ ํ๋์ ๋ ผ๋ฆฌ์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ ์์ ์ ๋จ์ ๋๋ ํ๊บผ๋ฒ์ ๋ชจ๋ ์ํ๋์ด์ผ ํ ์ผ๋ จ์ ์ฐ์ฐ๋ค์ ์๋ฏธํ๋ค.
- ์์์ฑ Atomicity : ๋ชจ๋ ๋ฐ์ ํน์ ์ ํ ๋ฐ์๋์ง ์๋๋ก ๋กค๋ฐฑ
- ์ผ๊ด์ฑ Consistency
- ๋ ๋ฆฝ์ฑ Isolation
- ์์์ฑ Durability : ์๊ตฌ์ ์ผ๋ก ๋ฐ์
โจ ์ธ๋ฑ์ค Index
๋ฐ์ดํฐ ๋ ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ์ ๊ทผํ๊ธฐ ์ํด <ํค ๊ฐ, ํฌ์ธํฐ> ์์ผ๋ก ๊ตฌ์ฑ๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ
- ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ์ ๋ฐ์ ํ ๊ด๊ณ
- ์ธ๋ฑ์ค๋ฅผ ํตํด ํ์ผ์ ๋ ์ฝ๋์ ๋ํ ์ก์ธ์ค๋ฅผ ๋น ๋ฅด๊ฒ ์ํํ ์ ์๋ค.
- ๋ ์ฝ๋์ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ์์๋ก ์ผ์ด๋๋ ๊ฒฝ์ฐ์๋ ์ธ๋ฑ์ค์ ๊ฐ์๋ฅผ ์ต์๋ก ํ๋ ๊ฒ์ด ํจ์จ์
- ๋ฐ์ดํฐ ์ ์์ดDDL๋ฅผ ์ด์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์์ฑ, ๋ณ๊ฒฝ, ์ ๊ฑฐํ ์ ์๋ค.
โจ ๋ทฐ View
์ฌ์ฉ์์๊ฒ ์ ๊ทผ์ด ํ์ฉ๋ ์๋ฃ๋ง์ ์ ํ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ํ๋ ์ด์์ ๊ธฐ๋ณธ ํ ์ด๋ธ๋ก๋ถํฐ ์ ๋๋, ์ด๋ฆ์ ๊ฐ์ง๋ ๊ฐ์ ํ ์ด๋ธ
- ์ ์ฅ์ฅ์น ๋ด์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์กด์ฌํ์ง ์์ง๋ง, ์ฌ์ฉ์์๊ฒ๋ ์๋ ๊ฒ์ฒ๋ผ ๊ฐ์ฃผ๋๋ค.
- ๋ฐ์ดํฐ์ ๋ ผ๋ฆฌ์ ๋ ๋ฆฝ์ฑ์ ์ ๊ณต
- ์ผ๋จ ์ ์๋ ๋ทฐ๋ ๋ค๋ฅธ ๋ทฐ์ ์ ์์ ๊ธฐ์ด๊ฐ ๋ ์ ์๋ค.
- ๋ทฐ ์ ์: CREATE, ์ ๊ฑฐ: DROP
โจ ํํฐ์ Patition
๋์ฉ๋์ ํ ์ด๋ธ์ด๋ ์ธ๋ฑ์ค๋ฅผ ์์ ๋ ผ๋ฆฌ์ ๋จ์์ธ ํํฐ์ ์ผ๋ก ๋๋๋ ๊ฒ
→ ์ฑ๋ฅ ์ ํ ๋ฐฉ์ง, ๋ฐ์ดํฐ ๊ด๋ฆฌ ์ฉ์ด
- ๋ฒ์ ๋ถํ
- ํด์ ๋ถํ
- ์กฐํฉ ๋ถํ
- ๋ชฉ๋ก ๋ถํ
- ๋ผ์ด๋ ๋ก๋น ๋ถํ
โจ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค
๋ ผ๋ฆฌ์ ์ผ๋ก ํ๋์ ์์คํ ์ ์ํ์ง๋ง ๋ฌผ๋ฆฌ์ ์ผ๋ก๋ ๋คํธ์ํฌ๋ฅผ ํตํด ์ฐ๊ฒฐ๋ ์ฌ๋ฌ ๊ฐ์ ์ปดํจํฐ ์ฌ์ดํธ์ ๋ถ์ฐ๋์ด ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ชฉํ: ์์น ํฌ๋ช ์ฑ, ์ค๋ณต ํฌ๋ช ์ฑ, ๋ณํ ํฌ๋ช ์ฑ, ์ฅ์ ํฌ๋ช ์ฑ
โจ ์ ๊ทผํต์ ๊ธฐ์
- SQL ๋ช ๋ น์ด: GRANT, REVOKE
โจ DDL ๋ฐ์ดํฐ ์ ์์ด
- CREATE
- ALTER
- DROP
โจ DML ๋ฐ์ดํฐ ์กฐ์์ด
- SELECT: SELECT~ FROM~ WHERE~
- INSERT: INSERT INTO~ VALUES~
- DELETE: DELETE~ FROM~ WHERE~
- UPDATE: UPDATE~ SET~ WHERE~
โจ DCL ๋ฐ์ดํฐ ์ ์ด์ด
๋ฐ์ดํฐ์ ๋ณด์, ๋ฌด๊ฒฐ์ฑ, ํ๋ณต, ๋ณํ ์ ์ด ๋ฑ์ ์ ์
- COMMIT
- ROLLBACK
- GRANT: ๊ถํ ๋ถ์ฌ
- REVOKE: ๊ถํ ์ทจ์
- SAVEPOINT
โจ ํธ๋ฆฌ๊ฑฐ Trigger
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์์ ๋ฐ์ดํฐ์ ์ฝ์ , ๊ฐฑ์ , ์ญ์ ๋ฑ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ๊ด๋ จ ์์ ์ด ์๋์ผ๋ก ์ํ๋๋ ์ ์ฐจํ SQL
โจ ORM
Object-Relational Mapping
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ธฐ์