๐ฉ๐ป๐ป๊ณผ๋ชฉI. ์ 2์ฅ ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ์ฑ๋ฅ
โจ์ 1์ ์ ๊ทํ
๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ์ ๊ทํ(Normalization) |
||
์ 1์ ๊ทํ | ๋ชจ๋ ์์ฑ์ ๋ฐ๋์ ํ๋์ ๊ฐ์ ๊ฐ์ ธ์ผ ํ๋ค. |
๊ฐ์ ์ฑ๊ฒฉ, ๋ด์ฉ ์ปฌ๋ผ์ด ์ฐ์๋ ๋ ์ปฌ๋ผ ์ ๊ฑฐ, ํ
์ด๋ธ ์์ฑ
|
์ 2์ ๊ทํ | ์ํฐํฐ์ ์ผ๋ฐ์์ฑ์ ์ฃผ์๋ณ์ ์ ์ฒด์ ์ข ์์ ์ด์ด์ผ ํ๋ค. |
PK ๋ณตํฉํค ๊ตฌ์ฑ์ผ ๋ ๋ถ๋ถ์ ํจ์ ์ข
์ ๊ด๊ณ ํ
์ด๋ธ ๋ถ๋ฆฌ
|
์ 3์ ๊ทํ | ์ํฐํฐ์ ์ผ๋ฐ์์ฑ ๊ฐ์๋ ์๋ก ์ข ์์ ์ด์ง ์๋๋ค. | ๋ง์ผ ๊ณ ๊ฐ์ด ์ด๋ฆ์ ๋ฐ๊ฟ ๊ณ ๊ฐ๋ช
์ด ๋ณ๊ฒฝ๋์๋ค๋ฉด, ์ฃผ๋ฌธ ์ํฐํฐ์ ๊ณ ๊ฐ๋ช
์ ์ ๋ถ ๊ฐฑ์ ํด์ผ ํ๋ค. ์ด๋์ฃผ๋ฌธ๊ณผ๋ ์ ํ ์ฐ๊ด์ด ์๋ ํธ๋์ญ์
์ด๋ค. ๐ก๊ณ ๊ฐ ์ํฐํฐ๋ฅผ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํด์ผ ํ๋ค. |
๋ฐ์ ๊ทํ์ ์ฑ๋ฅ | ๋ฐ์ ๊ทํ๋ ์ ๊ทํ๋ฅผ ๋ฐ๋๋ก ํ๋ ๊ฒ์ผ๋ก ์ญ์ ๊ทํ ๋ผ๊ณ ๋ ํ๋ค. ํ
์ด๋ธ ๋ณํฉ(1:1๊ด๊ณ, 1:M๊ด๊ณ, ์ํผ/์๋ธํ์
)
|
์ ๊ทํ๋ ๋ฐ์ดํฐ์ ์ค๋ณต์ ์ต์ํํ๋ค๋ฉด, ๋ฐ์ ๊ทํ๋ ์ฑ๋ฅ์ ์ํด ๋ฐ์ดํฐ ์ค๋ณต์ ํ์ฉํ๋ ๊ฒ์ด๋ค. |
โจ์ 2์ ๊ด๊ณ์ ์กฐ์ธ์ ์ดํด
๊ด๊ณ(Relationship) ๋ ์ฌ์ ์ ์ผ๋ก ์ ์ํ๋ฉด '์ํธ ์ฐ๊ด์ฑ์ด ์๋ ์ํ' ์ด๋ค.
SQL์์ ๊ด๊ณ๋ฅผ ๋งบ๋๋ค๋ ๊ฑด ์๋ณ์๋ฅผ ์์ํ๊ณ , ์์๋ ์์ฑ์ ๋งคํํค๋ก ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒฐํฉํ๋ค๋ ์๋ฏธ๋ค.
์ด๋ฅผ ์กฐ์ธ(Join) ์ด๋ผ๊ณ ํ๋ค. ๋ ๋ฐ์ดํฐ ์งํฉ ๊ฐ ์ฐ๊ฒฐ๊ณ ๋ฆฌ(๊ต์งํฉ) ์ด๋ผ๊ณ ์ดํดํ ์์๋ค.
๊ณ์ธตํ ๋ฐ์ดํฐ ๋ชจ๋ธ | ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ ์๊ธฐ ์์ ์ ์กฐ์ธํ ์์๋ค.(Self-Join) |
์ํธ ๋ฐฐํ์ (Exclusive-OR) ๊ด๊ณ | ์ํฐํฐ๊ฐ ๋ ๊ฐ ์ด์์ ๋ค๋ฅธ ์ํฐํฐ์ ํฉ์งํฉ ๊ด๊ณ๋ฅผ ๊ฐ๋ ๊ฒ |
โจ์ 3์ ๋ชจ๋ธ์ด ํํํ๋ ํธ๋์ญ์ ์ ์ดํด
ํธ๋์ญ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ์ ์ฐ์ฐ๋ค์๋ค.
๊ณ์ข์ด์ฒด๋ฅผ ์๋ก ๋ค์๋ฉด, ๋์ ๋ณด๋ด๋ ์ฌ๋์ ๊ณ์ข์์ ์ด์ฒด๊ธ์ก์ ์ฐจ๊ฐํ๊ณ
๋์ ๋ฐ๋ ์ฌ๋์ ๊ณ์ข์ ์ด์ฒด๊ธ์ก์ ๊ฐ์ฐํ๋ค.
์ฆ ๊ณ์ข์ด์ฒด๋ผ๋ ์ ๋ฌด๋ ์ด๋ฌํ 2๊ฐ์ง ๋จ๊ณ๋ก ์งํ๋๋ฉฐ,
๋ฐ์ดํฐ ์ ํฉ์ฑ์ ์ํด ์ ์์ ์ ์ ๋ถ ์คํ๋๋์ง ์๋๋ฉด ์ ๋ถ ์ต์๋๋์ง ํด์ผ ํ๋ค.
*๋ฐ๋์ ํ๋์ ์ ๋ฌด ๋จ์๋ก ๋ฌถ์ฌ์ ์ฒ๋ฆฌ๋ผ์ผ ํ๋ค.
์ด๋ฌํ ์ ๋ฌด ๋จ์๋ฅผ ํธ๋์ญ์ (Transaction) ์ด๋ผ๊ณ ํ๋ค.
๐ก๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ์งํ ์์๋ ํธ๋์ญ์ ์ ํํํ ์ ์๋ค.
ํธ๋์ญ์ (Transaction)์ ํน์ง(์ง์ผ์ผ ํ ์กฐ๊ฑด)
DBMS๋ ์์์ฑ(Atomicity), ์ผ๊ด์ฑ(Consistency), ๊ณ ๋ฆฝ์ฑ(Isolation), ์ง์์ฑ(Durability) ์ด ๋ง์กฑํด์ผ ํ๋ค.
๋ค์ ์กฐ๊ฑด๋ค์ ์์ด ์ฒซ ๋จ์ด๋ฅผ ์ธ์ฉํด ACID ํน์ฑ(ACID property)๋ผ๊ณ ํ๋ค.
์์์ฑ(Atomicity) | ํธ๋์ญ์
์คํ ๋์ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ, ์ค๋จ๋ ์ํ๊ฐ ์๋ ๋ชจ๋ ์คํจํ๊ฑฐ๋, ๋ชจ๋ ์์ฑ ๋ ์ค ํ๋์ ์ํ๊ฐ ๋์ด์ผ ํฉ๋๋ค. ์ฆ 100๊ฐ ๋ช ๋ น์ด๋ก ๊ตฌ์ฑ๋ ํธ๋์ญ์ ์ค 99๊ฐ ์๋ฃ 1๊ฐ ์คํจ๊ฐ ๋๋ค๋ฉด, ์ด๋ ๋ฌด์กฐ๊ฑด ์คํจ๋ก ๊ฐ์ฃผํ์ฌ ํธ๋์ญ์ ์์ ์ ์ํ๋ก ๋๋ ค์ผ ํฉ๋๋ค. ๋ํ, 100๊ฐ ๋ชจ๋๊ฐ ์ฑ๊ณตํ์ ์ ํธ๋์ญ์ ์ ์ฑ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ ์ค๊ฐ์ํ๋ ์์ต๋๋ค. |
์ผ๊ด์ฑ(Consistency) | ์ผ๊ด์ฑ์ด๋ ํธ๋์ญ์
์๋ฃ ํ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ผ๊ด๋ ์ํ๋ก ์ ์ง๋์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ณ์ข์ด์ฒด๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์คํํ๋ค๋ฉด, A๊ณ์ข์ ์์ก๊ณผ B๊ณ์ข์ ์์ก์ ํฉ์ด ํธ๋์ญ์ ์คํ ์ ์ ํฉ๊ณผ ๋์ผํด์ผ ํฉ๋๋ค. |
๊ณ ๋ฆฝ์ฑ(Isolation) | ๊ณ ๋ฆฝ์ฑ์ด๋ ํ๋์ ํธ๋์ญ์
์ด ์คํํ๋ ๋์ค์ ๋ณ๊ฒฝํ ๋ฐ์ดํฐ๋ ์ด ํธ๋์ญ์
์ด ์๋ฃ๋ ๋๊น์ง ๋ค๋ฅธ ํธ๋์ญ์
์ด ์ฐธ์กฐํ์ง ๋ชปํ๊ฒ ํ๋ ํน์ฑ์
๋๋ค. ํ๋์ ํธ๋์ญ์ ์ด A๋ผ๋ ๊ณ์ข์์ ์์ ์ ํ๊ณ ์๋ค๋ฉด, ๋ค๋ฅธ ํธ๋์ญ์ ์ด A๊ณ์ข์ ๋ํด ์ฐธ์กฐํ๊ฑฐ๋ ๊ด์ฌ ํ ์ ์๊ณ ์์ ์ด ๋๋ ๋๊น์ง ๋๊ธฐํ๊ฑฐ๋ ํด์ผํฉ๋๋ค. |
์ง์์ฑ(Durability) | ์ง์์ฑ์ ํธ๋์ญ์ ์ด ์๋ฃ๋๋ฉด, ์ฃผ๊ธฐ์ต์ฅ์น๊ฐ ์๋ ๋์คํฌ์ ๊ฐ์ ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ์ ์ฅ๋๊ฑฐ๋ ๊ทธ๋ ์ง ์๋๋ผ๋ ์์คํ ์ฅ์ ๊ฐ ํ๋ณต๋๊ณ ๋ ํ์ ์ด๋ ํ ํํ๋ก๋ ์ง ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ณต๊ตฌ ํ ์ ์๊ฒ ํด์ผํจ์ ๋ปํฉ๋๋ค. |
Active(ํ๋) | ํธ๋์ญ์ ์ด ์คํ ์ค์ ์๋ ์ํ, ์ฐ์ฐ๋ค์ด ์ ์์ ์ผ๋ก ์คํ ์ค์ธ ์ํ |
Failed(์ฅ์ ) | ํธ๋์ญ์ ์ด ์คํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์ค๋จ๋ ์ํ |
Aborted(์ฒ ํ) | ํธ๋์ญ์ ์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋์ด Rollback ์ฐ์ฐ์ ์ํํ ์ํ |
Partially Committed(๋ถ๋ถ ์๋ฃ) | ํธ๋์ญ์ ์ด ๋ง์ง๋ง ์ฐ์ฐ๊น์ง ์คํํ์ง๋ง, Commit ์ฐ์ฐ์ด ์คํ๋๊ธฐ ์ง์ ์ ์ํ |
Committed(์๋ฃ) | ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ข ๋ฃ๋์ด Commit ์ฐ์ฐ์ ์คํํ ํ์ ์ํ |
โจ์ 4์ Null ์์ฑ์ ์ดํด
* ๊ธฐ๋ณธ๊ฐ๋
- NULL๊ฐ์ ์ฐ์ฐ์ ์ธ์ ๋ NULL์ด๋ค.
- ์ง๊ณํจ์๋ NULL ๊ฐ์ ์ ์ธํ๊ณ ์ฒ๋ฆฌํ๋ค.
- NULL๊ฐ์ผ๋ก ๊ฐ๋ฅํ ์ฐ์ฐ์ IS NULL, IS NOT NULL ๋ฐ์ ์๋ค.
์) ์ฃผ๋ฌธ ๋ฐ์ดํฐ
์ฃผ๋ฌธ๋ฒํธ | ์ฃผ๋ฌธ๊ธ์ก | ์ฃผ๋ฌธ์ทจ์๊ธ์ก |
1100001 | 100,000 | 20,000 |
1100002 | 15,000 |
SELECT SUM(์ฃผ๋ฌธ๊ธ์ก) - SUM(์ฃผ๋ฌธ์ทจ์๊ธ์ก) COL1
, NVL(SUM(์ฃผ๋ฌธ๊ธ์ก-์ฃผ๋ฌธ์ทจ์๊ธ์ก),0) COL2
, NVL(SUM(์ฃผ๋ฌธ๊ธ์ก,0)-NVL(์ฃผ๋ฌธ์ทจ์๊ธ์ก,0) COL3
FROM ์ฃผ๋ฌธ
SQL ์ํ ๊ฒฐ๊ณผ
COL1 | COL2 | COL3 |
80,000 | 80,000 | 80,000 |
0 | 15,000 |
COL3 ๋ ๊ฐ ์์ฑ๋ณ๋ก NVL ์ฒ๋ฆฌ๋ฅผ ํ๊ณ , ์ดํ ์ฃผ๋ฌธ๊ธ์ก์์ ์ฃผ๋ฌธ์ทจ์๊ธ์ก์ ์ ์ธํ์๋ค.
Null ๊ฐ์ ๋ํ ์ดํด๋ฅผ ์์งํ ๊ฒฝ์ฐ๋ก ๋ณผ ์ ์๋ค.
โจ์ 5์ ๋ณธ์ง์๋ณ์ VS ์ธ์กฐ์๋ณ์
๋ณธ์ง์๋ณ์ | ์ ๋ฌด์ ์ํด ๋ง๋ค์ด์ง ์๋ณ์ |
์ธ์กฐ์๋ณ์ | ์ ๋ฌด์ ์ผ๋ก ๋ง๋ค์ด์ง์ง๋ ์์ง๋ง ๋ณธ์ง์๋ณ์๊ฐ ๋ณต์กํ ๊ตฌ์ฑ์ ๊ฐ๊ณ ์์ผ๋ฏ๋ก ์ธ์์ ์ผ๋ก ๋ง๋ ์๋ณ์ |
'IT์๊ฒฉ์ฆ ๊ณต๋ถ > SQLD ์๊ฒฉ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQL ์ ๋ฌธ๊ฐ] ๊ณผ๋ชฉII. ์ 1์ฅ SQL ๊ธฐ๋ณธ (0) | 2022.04.13 |
---|---|
[SQL ์ ๋ฌธ๊ฐ] ๊ณผ๋ชฉI. ์ 2์ฅ ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ์ฑ๋ฅ - ์ฐ์ต๋ฌธ์ (0) | 2022.04.11 |
[SQL ์ ๋ฌธ๊ฐ] ์ 1์ฅ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ดํด - ์ฐ์ต๋ฌธ์ (0) | 2022.04.11 |
[SQLD] ๊ธฐ์ถ 35ํ 40๋ฒ ( ROLLUP ) (15) | 2022.04.10 |
[SQL ์ ๋ฌธ๊ฐ] ๊ณผ๋ชฉ I. ์ 5์ ์๋ณ์ (0) | 2022.04.07 |