๐พDatabase System
- ๊ฐ ์กฐ์ง์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์์ ํตํฉํ๊ณ ์๋ก ๊ณต์ ํ์ฌ ์๊ธฐ๋ ์ฅ์ ์ ์ด์ฉํ๋ ์์คํ
๐๊ตฌ์ฑ
1) ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
(DBMS) : ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐ์์ผ์ฃผ๋ ์ํํธ์จ์ด
2) ๋ฐ์ดํฐ๋ฒ ์ด์ค (Database) : ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ปดํจํฐ ๋ด๋ถ์ ํ๋๋์คํฌ์ ์ ์ฅ
3) ๋ฐ์ดํฐ ๋ชจ๋ธ(Data Model) : ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ธฐ๋ฒ(์ค๊ณ๋๋ฅผ ๋ง๋๋ ๊ณผ์ )
<ํ์ผ ์ฒ๋ฆฌ ์์คํ
vs. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
>


<DBMS ๊ณผ์ ๊ทธ๋ฆผ>

๐พ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ด๋ฆฌ์์คํ
(DBMS)
๐๊ธฐ๋ฅ
- ์ ์ ๊ธฐ๋ฅ(definition) : ๋ฐ์ดํฐ์ ํํ, ๊ตฌ์กฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ์ ๊ดํ ๋ด์ฉ ์ ์
- ์กฐ์ ๊ธฐ๋ฅ(manipulation) : ์ฌ์ฉ์์ ์๊ตฌ์ ๋ฐ๋ผ ๊ฒ์, ๊ฐฑ์ , ์ฝ์
, ์ญ์ ๋ฑ์ ์ง์
- ์ ์ด ๊ธฐ๋ฅ(control) : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ด์ฉ์ ๋ํด ์ ํ์ฑ๊ณผ ์์ ์ฑ์ ์ ์งํ๋ ๊ธฐ๋ฅ (๋ฌด๊ฒฐ์ฑ ์ ์ง, ๋ณด์, ๋ณํ ์ํ ์ ์ด)
๐จ๏ธ๋ฐ์ดํฐ ์ธ์ด
1) DDL (Data Definition Language) ๋ฐ์ดํฐ ์ ์์ด <-- DB ์ค๊ณ์
2) DML (Data Manipulation language) ๋ฐ์ดํฐ ์กฐ์์ด <-- ์์ฉ ํ๋ก๊ทธ๋๋จธ(application programmer)
3) DCL (Data Control Language) ๋ฐ์ดํฐ ์ ์ด์ด <--DB๊ด๋ฆฌ์ (DBA)
- ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ์ดํฐ
ex. System metadata(critical in a DBMS), Business metadata (critical in a data warehouse)
๐พ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค (Relational DataBase)
๐๋ฆด๋ ์ด์
- ๋ฆด๋ ์ด์
(ํ
์ด๋ธ)์ผ๋ก ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ ํญ๋ชฉ๋ค์ ์งํฉ
- ๋ฆด๋ ์ด์
= ํ(row)& ์ด(column)๋ก ๊ตฌ์ฑ๋ 2์ฐจ์ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
- ์คํค๋ง : ๊ฐ ํญ๋ชฉ์ ์ ์ํ์ฌ ๋ง๋ ํ
์ด๋ธ์ ํ/ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ ์ฝ์กฐ๊ฑด์ ์ ์ํ ๊ฒ (ex. ํ์ = ์ด๋ฆ, ํ๋ฒ, ํ๊ณผ, ์ถ์๋
๋)
- ์์ : ์์ฑ(attribute), ๋๋ฉ์ธ(domain), ์ฐจ์(degree)
1) ์์ฑ(attribute) : ๋ฆด๋ ์ด์
์ ๊ฐ ์ด(column)์ ๋ถ์ฌ๋ ์ด๋ฆ
2) ๋๋ฉ์ธ(domain) : ์์ฑ ํ๋๊ฐ ๊ฐ์ง ์ ์๋ ๊ฐ์ ์งํฉ (ex. ์ฑ๋ณ ์์ฑ์ ๋๋ฉ์ธ์ '๋จ' ๋๋ '์ฌ')
3) ์ฐจ์(degree) : ํํ์ ๊ตฌ์ฑํ๋ ์์ฑ์ ๊ฐ์.
- ์ธ์คํด์ค : ์ ์๋ ์คํค๋ง์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค์ ๋ก ์ ์ฅ๋ ๊ฐ.
- ์์ : ํฌํ(tuple), ์นด๋๋ ๋ฆฌํฐ(cardinality)
1) ํํ(tuple) : ๋ฆด๋ ์ด์
์ ๊ฐ ํ. ํํ ํน์ ๋ ์ฝ๋๋ผ๊ณ ํจ.
2) ์นด๋๋ ๋ฆฌํฐ(cardinality) : ํํ์ ๊ฐ์
* ๋(null) : ์์ฑ ๊ฐ์ด ์ ํด์ง์ง ์์๊ฑฐ๋ ์๋ ๊ฒฝ์ฐ์ ๊ฐ (unknown data)


-
๋ฆด๋ ์ด์
์ ํน์ง
1) ์์ฑ์ ๋จ์ผ ๊ฐ์ ๊ฐ์ง. ๋๋ฉ์ธ์ ์ ์๋ ๊ฐ๋ง์ ๊ฐ์ง.
2) ์์ฑ์ ํ ๋ฆด๋ ์ด์
์์ ์๋ก ๋ค๋ฅธ ์ด๋ฆ์ ๊ฐ์ง.
3) ํ ์์ฑ์ ๊ฐ์ ๋ชจ๋ ๊ฐ์ ๋๋ฉ์ธ ๊ฐ์ ๊ฐ์ง.
4) ๋ฆด๋ ์ด์
๋ด์ ์ค๋ณต๋ ํํ์ ํ์ฉX.
-
ํค(key) : ๋ฆด๋ ์ด์
์์ ํํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ํ๋ ์ด์์ ์์ฑ ๋ชจ์.
1) ํ๋ณด ํค (candidate key): ๊ฐ ํํ์ ๊ตฌ๋ถํ ์ ์๋ ์ต์ํ์ ์์ฑ๋ง์ผ๋ก ๊ตฌ์ฑ๋ ํค
2) ๊ธฐ๋ณธ ํค (primary key) : ํ๋ณด ํค๊ฐ ๋ ๊ฐ ์ด์์ผ ๋ ๋ํ๋ก ์ผ์ ํค. (NULL๊ฐ ํ์ฉX)
3) ๋์ฒด ํค (alternate key) : ๊ธฐ๋ณธ ํค ์๋ ํ๋ณดํค
4) ๋๋ฆฌ ํค (surrogate key) / ์ธ์กฐ ํค (artificial key) : ๊ธฐ๋ณธ ํค๊ฐ ๋ณด์์ ์ํ๊ฑฐ๋, ์ฌ๋ฌ ๊ฐ์ ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋์ด ๋ณต์กํ๊ฑฐ๋, ๋ง๋
ํ ๊ธฐ๋ณธ ํค๊ฐ ์์ ๋๋ ์ผ๋ จ ๋ฒํธ ๊ฐ์ ๊ฐ์์ ์์ฑ์ ๋ง๋ค์ด ๊ธฐ๋ณธ ํค๋ก ์ผ๋ ๊ฒฝ์ฐ.
5) ์ธ๋ ํค (foreign key) : ๋ค๋ฅธ ๋ฆด๋ ์ด์
์ ๊ธฐ๋ณธ ํค๋ฅผ ์ฐธ์กฐํ๋ฉฐ ๋ฆด๋ ์ด์
๊ฐ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ํค. (NULL ๊ฐ๊ณผ ์ค๋ณต ๊ฐ ํ์ฉ/ ์๊ธฐ ์์ ์ ๊ธฐ๋ณธ ํค๋ฅผ ์ฐธ์กฐํ๋ ์ธ๋ ํค๋ ๊ฐ๋ฅ)
* sql(Structured Query Language) : ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
(RDBMS)์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ค๊ณ๋ ํน์ ๋ชฉ์ ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด.
๐๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด : ๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ, ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ, ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ
- DB์ํ๊ฐ ๋ง์กฑํด์ผ ํ๋ ์กฐ๊ฑด์ผ๋ก DB ๊ฐฑ์ ์ ๋ง๋ค DBMS๊ฐ ์๋๊ฒ์ฌ
1) ๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด : ๊ฐ ์์ฑ์ ๊ฐ์ ๋ฐ๋์ ๋๋ฉ์ธ์ ์ง์ ๋ ๊ฐ๋ง ๊ฐ์ ธ์ผํจ.(์์ฑ์ ๊ธฐ๋ณธ ๊ฐ, ๋ฐ์ดํฐ ํ์, ๋ ๊ฐ์ ํ์ฉ ์ฌ๋ถ, ์ฒดํฌ ๋ฑ์ ์ง์ )
2) ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด : ๊ธฐ๋ณธ ํค๋ฅผ ๊ตฌ์ฑํ๋ ์ด๋ค ์์ฑ๋ ๋ ๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ์ค์ง ํ๋์ด ๊ฐ๋ง ์กด์ฌ
3) ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด : ์์ ๋ฆด๋ ์ด์
์ ์ธ๋ ํค์ ๊ฐ์ ์ฐธ์กฐ๋ ๋ถ๋ชจ ๋ฆด๋ ์ด์
์ ๊ธฐ๋ณธ ํค ๊ฐ๊ณผ ๊ฐ์์ผ ํจ. ์์ ๋ฆด๋ ์ด์
์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋ ๋ถ๋ชจ ๋ฆด๋ ์ด์
์ ์ ์ฝ์ ๋ฐ์.
๐๊ด๊ณ๋์ (Relational Algebra)
: ๋ฆด๋ ์ด์
์์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด ์ํ์ ๋์์ ๊ฐ์ ์ฐ์ฐ์ ์ด์ฉํ์ฌ ์ง์ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ์ ํ๋ ์ธ์ด
1) ์งํฉ ์ฐ์ฐ (set operations) : ๋ฆด๋ ์ด์
์ ํ์ ์งํฉ์ผ๋ก ๋ณด๊ณ ์ ์ฉ. -> ํฉ์งํฉ(union), ๊ต์งํฉ(intersection), ์ฐจ์งํฉ(difference), ์นดํฐ์
ํ๋ก๋ํธ(cartesian product)
- ํฉ์งํฉ : ๋ ๊ฐ์ ๋ฆด๋ ์ด์
์ ํฉํ์ฌ ํ๋์ ๋ฆด๋ ์ด์
์ ๋ฐํํจ. (์๋ก ๊ฐ์ ์์ฑ ์์์ ๋๋ฉ์ธ์ ๊ฐ์ ธ์ผ ํจ)
- ๊ต์งํฉ : ํฉ๋ณ ๊ฐ๋ฅํ ๋ ๋ฆด๋ ์ด์
์ ๋์์ผ๋ก ํ๋ฉฐ, ๋ ๋ฆด๋ ์ด์
์ด ๊ณตํต์ผ๋ก ๊ฐ์ง๊ณ ์๋ ํฌํ์ ๋ฐํํจ.
- ์ฐจ์งํฉ : ์ฒซ ๋ฒ์งธ ๋ฆด๋ ์ด์
์๋ ์ํ๊ณ ๋ ๋ฒ์งธ ๋ฆด๋ ์ด์
์๋ ์ํ์ง ์๋ ํํ์ ๋ฐํํจ.
- ์นดํฐ์ ํ๋ก๋ํธ (cartesian product) : ๋ชจ๋ ๊ฒฝ์ฐ์ ์ / ํ ๋ฆด๋ ์ด์
์ ์ํ ๋ชจ๋ ๊ฐ ํ๋ค์ ๋ค๋ฅธ ๋ฆด๋ ์ด์
์ ๋ชจ๋ ํ๊ณผ ์ฐ๊ฒฐ์ํจ ๊ฒฐ๊ณผ ํ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฆด๋ ์ด์
์ ๋ง๋ค์ด ๋.
2) ๊ด๊ณ ์ฐ์ฐ (relational operations) : ๋ฆด๋ ์ด์
์ ์ ์ฉํ ์ ์๋๋ก ํน๋ณํ ๊ฐ๋ฐ๋ ๊ด๊ณ ์ฐ์ฐ -> select, project, join
- ์ ํ์ฐ์ฐ(selection) : ๋ฆด๋ ์ด์
์์ ์ฃผ์ด์ง ์กฐ๊ฑด์(predicate)์ ๋ง์กฑํ๋ ํ๋ค์ ์ ํํ๋ ์ฐ์ฐ.(์ํ์ ๋ถ๋ถ์งํฉ)
- ์ถ์ถ์ฐ์ฐ(projection) : ๋ฆด๋ ์ด์
์์ ํน์ ์์ฑ(column)์ ์ ํํ๋ ์ฐ์ฐ. (์์ง์ ๋ถ๋ถ์งํฉ)
- ์กฐ์ธ์ฐ์ฐ(join) : ๋ ๊ฐ์ ๋ฆด๋ ์ด์
์์ ํน์ ์ด ๊ฐ ๊ฐ์ ๋น๊ต ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ๋ค์ ์ฐ๊ฒฐํ์ฌ ๊ฒฐ๊ณผ ๋ฆด๋ ์ด์
์ ๋ง๋ค์ด๋ด๋ ์ฐ์ฐ. ๋ ๊ฐ์ ๋ฆด๋ ์ด์
์ ์ฐ๊ฒฐํ๋ ์นดํฐ์ ํ๋ก๋ํธ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ซ ์ต์ ์ ํํ๋ ์ ํ์ฐ์ฐ์ ๊ฒฐํฉ์ด๋ผ๊ณ ๋ณผ ์ ์์.
๐พ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง
: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ๊ณผ์ ์์ ์ปดํจํฐ์ ์ ์ฅํ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ๋
ผ๋ฆฌ์ ์ผ๋ก ํํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋๊ตฌ
: ๋ชจ๋ธ์ ํ์ค์ธ๊ณ์ ๊ตฌ์กฐ์ ๋ํ ์ธ์์ ํํ - ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๊ณผ์ ์ ์ด ์ธ์์ ๋ํ ์ค๋ฅ๋ฅผ ์์ ํ๋ ๊ณผ์ - ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๊ณผ์ ์์ ๊ด์ ์ ์ ์ ํ๊ณ , ์ถ์ํ ํ๋ ์ผ์ ํจ

1. ๊ฐ๋
์ ๋ชจ๋ธ๋ง (conceptual data model) : ํ์ค ์ธ๊ณ์ ์กด์ฌํ๋ ๋ฌด์ํ ๋ง์ ๊ฐ์ฒด(entity)๋ค ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ ๋์๋ค์ ์ถ์ถ -> ์ด๋ฅผ ์ถ์ํ ์ํจ ๊ฐ๋
์ผ๋ก ํํํ๋ ๊ณผ์ . (์๊ตฌ์ฌํญ ์์ง&๋ถ์ํ ๊ฒฐ๊ณผ๋ฅผ ํ ๋๋ก ์
๋ฌด์ ํต์ฌ๊ฐ๋
๊ตฌ๋ถ, ์ ์ฒด์ ๋ผ๋ ๋ง๋๋ ๊ณผ์ ) (ex. E-R Model)
2. ๋
ผ๋ฆฌ์ ๋ชจ๋ธ๋ง (logical data model) : ๊ฐ๋
์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ปดํจํฐ(DBMS)๊ฐ ์ดํดํ ์ ์๋๋ก ๋ณํ. ๊ฐ๋
์ ๋ชจ๋ธ๋ง์์ ๋ง๋ ERD๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ DBMS์ ๋ง๊ฒ ๋งคํํ์ฌ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๊ตฌํํ๊ธฐ ์ํ ๋ชจ๋ธ์ ๋ง๋๋ ๊ณผ์ .
๐Entity-Relationship Model (E-R Model)
: ์ธ์์ ์ฌ๋ฌผ์ ๊ฐ์ฒด(entity)์ ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ(relationship)๋ก ํํ.
๊ตฌ์ฑ์์
- Entity ๊ฐ์ฒด : ์
๋ฌด์ ๋์์ผ๋ก์ ์ ํ์๊ฐ ์์ผ๋ฉฐ ๋ณด๊ดํ ํ์๊ฐ ์๋ ์ค์ํ ์ ๋ณด. (๋ช
์ฌํ/ ์ฌ๋ฌผ์ ๋ฒ์ฃผ๋ ์ ํ)/ ์ฌ๋ฌ ๊ฐ์ occurrence๋ฅผ ๊ฐ์ง ์ ์์./ ์ด๋ฆ์ ๋จ์ํ์ ์ ์ผํ ์ด๋ฆ ์ฌ์ฉ, ๋๋ฌธ์ ์ฌ์ฉ.
- Attribute ์์ฑ : entity๋ฅผ ๊ธฐ์ ํ๋ ๊ตฌ์ฒด์ ์ธ ์ ๋ณด. ์ํฐํฐ๋ฅผ ์๋ณํ๊ฑฐ๋ ๊ณ๋ํ์ํค๊ฑฐ๋ ์ํ๋ฅผ ๋ํ๋ผ ์ ์๋ ๋ชจ๋ ํญ๋ชฉ. (์ํฐํฐ ์ง์ - ์์ฑ ์ฌ๋ฒ, ์ด๋ฆ, ์ง๊ธ ๋ฑ๋ฑ)/ ๋จ์ํ, ์๋ฌธ์/ ํ์ํ ์์ฑ '*', ๊ทธ๋ ์ง ์์ผ๋ฉด 'o' ๋ถ์ด๊ธฐ.
- Relationship ๊ด๊ณ : entity๊ฐ์ ๊ด๊ณ. ์
๋ฌด์์ ์๊ตฌ๋๋ ์ ๋ณด๋ค์ ์ฐ๊ฒฐํ๋ ์
๋ฌด๊ท์น.
- UID unique identifiers : ์ํฐํฐ์ ๊ฐ occurrence๋ฅผ ์๋ณํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์์ฑ์ด๋ ๊ด๊ณ์ ์กฐํฉ. '#'๋ถ์ฌ์ฃผ๊ธฐ, secondary UID๋ '(#)' ๋ถ์ด๊ธฐ.



- Each EMPLOYEE must be assigned to one and only one DEPARTMENT.
- Each DEPARTMENT may be composed of one or more EMPLOYEEs.
โข Many-to-One (M : 1) : ๊ณ ๊ฐ๊ณผ ์์
์ฌ์, ๋ถ์์ ์ง์
โข Many-to-Many (M : M) : ํ์์ ๊ฐํธ์ฌ, ์ฃผ๋ฌธ๊ณผ ์ํ, ํ์๊ณผ ์๊ฐ๊ณผ๋ชฉ
โข One-to-One (1 : 1) : ์์ ๊ฑฐ์ ์์ ๊ฑฐ ์ ์, ์ ๋๊ณผ ์ ๋ถ
โข Resolving Many-to-Many relationships : ๋๊ฐ์ ์ํฐํฐ ์ฌ์ด์ ๋ ํ๋์ ์ํฐํฐ๋ฅผ ์ถ๊ฐํ์ฌ ํ๋์ M:M relationship์ ๋ ๊ฐ์ M:1 relationship์ผ๋ก ์ ํํ ์ ์์.
โข Intersection Entity : M:M -> M:1 ์ ํ๊ณผ์ ์์ ์๋ก์ด ์ถ๊ฐ๋๋ ์ํฐํฐ. Intersection entity์ UID๋ ์ข
์ข
์๋์ ์ํฐํฐ๋ค์ UID๋ค๋ก ๊ตฌ์ฑ๋จ. >> ์ด๋ฐ ๊ฒฝ์ฐ relationship์ ๋ํ๋ด๋ ์ ์ UID bar๋ฅผ ์ฌ์ฉํ์ฌ ํํ.

์ ๋ง ์ข์ ์ ๋ณด ๊ฐ์ฌํฉ๋๋ค!