Programing_Java
[SQLD] ์์ฑ๊ณผ ์ํฐํฐ ์๋ณ์ ๋ณธ๋ฌธ
#1 ์์ฑ
: ์ ๋ฌด์์ ํ์ํ ์ ๋ณด์ธ Entity๊ฐ ๊ฐ์ง๋ ํญ๋ชฉ
: ๋ ์ด์ ๋ถ๋ฆฌ๋์ง ์๋ ๋จ์
: Instance์ ๊ตฌ์ฑ์์, ์๋ฏธ์ ์ผ๋ก ๋ ์ด์ ๋ถํด๋์ง ์์
Instance : ํน์ ์์ ์ DB์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์งํฉ
Schema : DB์ ๊ตฌ์กฐ → ์ด ๊ตฌ์กฐ์ ์ ์ฅ๋ ์ค์ ๋ฐ์ดํฐ = Instance
1-1) ํน์ง
: ์ ๋ฌด์์ ๊ด๋ฆฌ๋๋ ์ ๋ณด
: ํ๋์ ๊ฐ๋ง ๊ฐ์ง
: ์ฃผ์๋ณ์์๊ฒ ํจ์์ ์ผ๋ก ์ข ์, ๊ธฐ๋ณธํค๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์์ฑ์ ๊ฐ๋ ๋ณ๊ฒฝ
1-2) ์ข ๋ฅ
: ๋ถํด ์ฌ๋ถ์ ๋ฐ๋ฅธ ์์ฑ์ ์ข ๋ฅ
์ข ๋ฅ | ์ค๋ช |
๋จ์ผ ์์ฑ | ํ๋์ ์๋ฏธ๋ก ๊ตฌ์ฑ๋ ๊ฒ Ex) ํ์ID, ์ด๋ฆ |
๋ณตํฉ ์์ฑ | ์ฌ๋ฌ๊ฐ์ ์๋ฏธ๊ฐ ์๋ ๊ฒ Ex) ์ฃผ์ → ์, ๊ตฐ, ๋ ๋ฑ์ผ๋ก ๋ถํด๊ฐ ๊ฐ๋ฅ |
๋ค์ค๊ฐ ์์ฑ | ์์ฑ์ ์ฌ๋ฌ๊ฐ์ ๊ฐ์ ๊ฐ์ง ์ ์๋ ๊ฒ ๋ค์ค๊ฐ ์์ฑ์ Entity๋ก ๋ถํด Ex) ์ํ ๋ฆฌ์คํธ์ Category |
: ํน์ฑ์ ๋ค๋ฅธ ์์ฑ์ ์ข ๋ฅ
์ข ๋ฅ | ์ค๋ช |
๊ธฐ๋ณธ | ๋น์ฆ๋์ค ํ๋ก์ธ์ค์์ ๋์ถ๋๋ ๋ณธ๋์ ์์ฑ Ex) ํ์ID, ์ด๋ฆ, ๊ณ์ข๋ฒํธ |
์ค๊ณ | ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๊ณผ์ ์์ ๋ฐ์๋๋ ์์ฑ → Concept ์์ฑ ์ ์ผํ ๊ฐ์ ๋ถ์ฌ Ex) ์ํ์ฝ๋, ์ง์ ์ฝ๋ |
ํ์ | ๋ค๋ฅธ ์์ฑ์ ์ํด์ ๋ง๋ค์ด์ง๋ ์์ฑ Ex) ํฉ๊ณ, ํ๊ท |
Domain : ์์ฑ์ด ๊ฐ์ง ์ ์๋ ๊ฐ์ ๋ฒ์ → ์ฑ๋ณ์ด๋ผ๋ ์์ฑ์ ๋๋ฉ์ธ == ๋จ์ & ์ฌ์
#1-1 ๊ด๊ณ Relationship
: Entity ๊ฐ์ ๊ด๋ จ์ฑ์ ์๋ฏธ, ์กด์ฌ ๊ด๊ณ์ ํ์ ๊ด๊ณ๋ก ๋ถ๋ฅ
์กด์ฌ ๊ด๊ณ : ๋ ๊ฐ์ Entity๊ฐ ์กด์ฌ ์ฌ๋ถ์ ๊ด๊ณ๊ฐ ์๋ ๊ฒ
ํ์ ๊ด๊ณ : ๋ ๊ฐ์ Entity๊ฐ ์ด๋ค ํ์์ ์ํ ๊ด๋ จ์ฑ์ด ์๋ ๊ฒ
1-1) ์กด์ฌ ๊ด๊ณ
: Entity๊ฐ์ ์ํ๋ฅผ ์๋ฏธ → ๊ณ ๊ฐ์ด ๊ด๋ฆฌ์ ์ "์์" // ๊ด๊ณ, ์ํ
1-2 ํ์ ๊ด๊ณ
: Entity ๊ฐ์ ์ด๋ค ํ์๊ฐ ์๋ ๊ฒ → ๊ณ์ข๋ฅผ ์ฌ์ฉํด์ ์ฃผ๋ฌธ์ ๋ฐ์ฃผํ๋ ๊ด๊ณ๊ฐ ๋ง๋ค์ด์ง
1-3 ๊ด๊ณ ์ฐจ์ Cardinality
: ๋๊ฐ์ Entity ๊ฐ์ ๊ด๊ณ์ ์ฐธ์ฌํ๋ ์๋ฅผ ์๋ฏธ → ํ๋ช ์ ๊ณ ๊ฐ์ ์ฌ๋ฌ๊ฐ์ ๊ณ์ข๋ฅผ ๊ฐ์คํ ์ ์์ = 1 ๋ N ๊ด๊ณ
1-3-1) ์ข ๋ฅ
1. ์ต๋ ๊ธฐ์์ฑ → 1 ๋ 1, 1 ๋ M, M ๋ N
2. ์ต์ ๊ธฐ์์ฑ → ํ์, ์ ํ : ๊ณ ๊ฐ์ ์ผ๋จ ํ๋์ ๊ณ์ข๋ฅผ ๋ง๋ค์ด์ผ ํจ ⇒ 1 ๋ 1 ๊ด๊ณ์ ์ ์ฌ
M ๋ N → ์๋ก ๊ฐ์ ๊ด๊ณ๊ฐ ๋ณต์กํ๊ฒ ์ฝํ์๋ ๊ฒ ⇒ 1 ๋ 1 ๋๋ 1 ๋ M ์ผ๋ก ํด์ํ๋ ๊ณผ์ ๋ ํ์
1-3-2) 1 ๋ 1 ๊ด๊ณ
: ์์ or ์ ํ์
์์ → ํ๋์ Entity์ ๊ด๊ณ๋๋ Entity์ ๊ด๊ณ๊ฐ ํ๋์ธ ๊ฒฝ์ฐ ⇒ ๋ฐ๋์ ์กด์ฌํด์ผํจ
์ ํ์ → ํ๋์ Entity์ ๊ด๊ณ๋๋ Entity์ ๊ด๊ณ๊ฐ ํ๋์ด๊ฑฐ๋ ์์ ์๋ ์์
1-3-3) 1 ๋ N ๊ด๊ณ
: Entity์ ํ์ด ํ๋ ์์ ๋ ๋ค๋ฅธ Entity์ ๊ฐ์ด ์ฌ๋ฌ๊ฐ ์๋ ๊ด๊ณ
→ ๊ณ ๊ฐ์ ์ฌ๋ฌ๊ฐ์ ๊ณ์ข๋ฅผ ๊ฐ์ง ์ ์์
1-3-4) M ๋ N ๊ด๊ณ
: ๋ ๊ฐ์ Entity๊ฐ ์๋ก ์ฌ๋ฌ ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒ
→ ํ๋ช ์ ํ์์ด ์ฌ๋ฌ๊ฐ์ ๊ณผ๋ชฉ์ ์๊ฐ // ํ๊ฐ์ ๊ณผ๋ชฉ์ ์ฌ๋ฌ ๋ช ์ ํ์์ด ์๊ฐ
: ๊ด๊ณํ DB์์ M ๋ N ๊ด๊ณ์ Join์ ์นดํ ์์ ๊ณฑ์ด ๋ฐ์ → 1 ๋ N ๋๋ N ๋ 1๋กค ํด์ํด์ผํจ (ํ์์ ๋ฐ๋ผ ์กด์ฌ)
1-3-5) ํ์์ ๊ด๊ณ
: ๋ฐ๋์ ํ๋๋ ์กด์ฌํด์ผ ํ๋ ๊ด๊ณ → | ๋ก ํํ
→ ๊ณ ๊ฐ์ด ๋ฐ๋์ ์์ด์ผ ๊ณ์ข ๊ฐ์ค ๊ฐ๋ฅ
1-3-6) ์ ํ์ ๊ด๊ณ
: ์์ ์๋ ์๋ ๊ด๊ณ → 0 ์ผ๋ก ํํ
→ ๊ณ ๊ฐ์ด ์์ด๋ ๊ณ์ข๊ฐ ์์ ์ ์์
1-4 ์กด์ฌ ๊ด๊ณ → Entity ๊ฐ์ ์ํ๋ฅผ ๋ํ๋ด๋ ๊ฒ
1-4-1) ์๋ณ ๊ด๊ณ (Identification Relationship) → ๊ตฌ๋ถํ ์ ์๋ ๊ด๊ณ
Ex) ๊ณ ๊ฐ & ๊ณ์ข Entity
๊ณ ๊ฐ → ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ ์ ์๋ ๊ฐํ ๊ฐ์ฒด (Strong Entity)
๊ณ์ข → ์ฝํ ๊ฐ์ฒด (Week Entity)
๊ฐํ ๊ฐ์ฒด → ๋๊ตฌ์๊ฒ๋ ์ง๋ฐฐ๋์ง ์๋ ๋ ๋ฆฝ์ ์ธ ๊ฐ์ฒด
์ฝํ ๊ฐ์ฒด → ๊ฐ์ฒด์ ์กด์ฌ๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์ ์กด์ฌ์ ๋ฌ๋ ค์๋ ๊ฐ์ฒด : ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ ๋ณํ๋ฉด ์ฝํ ๊ฐ์ฒด๋ ๋ณํจ
๊ฐํ ๊ฐ์ฒด
: ๋ค๋ฅธ Entity์ ์์กดํ์ง ์๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌ
: ๋ค๋ฅธ Entity์ ๊ด๊ณ๋ฅผ ๊ฐ์ง ๋ ๋ค๋ฅธ Entity์๊ฒ ๊ธฐ๋ณธํค ๊ณต์
: ์๋ณ ๊ด๊ณ๋ก ํํ๋จ
→ ๊ณ ๊ฐ Entity์ ๊ธฐ๋ณธํค์ธ ํ์ID๋ฅผ ๊ณ์ข Entity์ ๊ธฐ๋ณธํค์ ํ๋๋ก ๊ณต์
: ๊ฐํ ๊ฐ์ฒด์ ๊ธฐ๋ณธํค ๊ฐ์ด ๋ณ๊ฒฝ ๋ ๋, ์๋ณ๊ด๊ณ์ ์๋ Entity์ ๊ฐ๋ ๋ณ๊ฒฝ
1-4-2) ๋น์๋ณ ๊ด๊ณ (Non-Identification Relationship)
: ๊ฐํ ๊ฐ์ฒด์ ๊ธฐ๋ณธํค๋ฅผ ๋ค๋ฅธ Entity์ ๊ธฐ๋ณธํค๊ฐ ์๋ ์ผ๋ฐ ์นผ๋ผ์ผ๋ก ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ ๊ฒ
: ๋น์๋ณ ๊ด๊ณ๋ ์ ์ ์ผ๋ก ํํ
#2 ์ํฐํฐ ์๋ณ์ (Entity Identifier)
์๋ณ์ : Entity๋ฅผ ๋ํํ ์ ์๋ ์ ์ผ์ฑ์ ๋ง์กฑํ๋ ์์ฑ → ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ, ๊ณ์ข๋ฒํธ, ์ฌ๊ถ๋ฒํธ ๋ฑ
ํค์ ์ข ๋ฅ
DB ํค | ์ค๋ช |
๊ธฐ๋ณธํค (Primary Key) | ํ๋ณดํค ์ค์์ Entity๋ฅผ ๋ํํ ์ ์๋ ํค |
ํ๋ณดํค (Candidate Key) | ์ ์ผ์ฑ๊ณผ ์ต์์ฑ์ ๋ง์กฑํ๋ ํค → ๋ถ๋ณ์ฑ์ ์ง๋์ง ๋ชปํจ |
์ํผํค (Super Key) | ์ ์ผ์ฑ์ ๋ง์กฑํ์ง๋ง ์ต์์ฑ์ ๋ง์กฑํ์ง ์๋ ํค |
๋์ฒดํค (Alternate Key) | ์ฌ๋ฌ ๊ฐ์ ํ๋ณดํค ์ค์์ ๊ธฐ๋ณธํค๋ฅผ ์ ์ ํ๊ณ ๋จ์ ํค → ๊ธฐ๋ณธํค๋ก ๋ฐ๋ ์๋ ์์ |
์ธ๋ํค (Foreign Key) | ํ๋ ํน์ ๋ค์์ ๋ค๋ฅธ ํ
์ด๋ธ์ ๊ธฐ๋ณธ ํค ํ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ์ผ๋ก ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ํ์ธํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํค → ํ์ฉ๋ ๋ฐ์ดํฐ ๊ฐ๋ง DB์ ์ ์ฅํ๊ธฐ ์ํด์ ์ฌ์ฉ → ๊ธฐ๋ณธํค์ ์ฐ๋์ด ๋๋ฉด์ ์ ์ผํ๊ฒ ๋์ฌ ์ ์๋๋ก |
2-1) ์ฃผ์๋ณ์ (๊ธฐ๋ณธํค, Primary Key)
์ต์์ฑ | ์ต์์ฑ์ ๋ง์กฑํ๋ ํค |
๋ํ์ฑ | Entity๋ฅผ ๋ํํ ์ ์์ด์ผ ํจ |
์ ์ผ์ฑ | Instance๋ฅผ ์ ์ผํ๊ฒ ์๋ณ |
๋ถ๋ณ์ฑ | ์์ฃผ ๋ณ๊ฒฝํ์ง ์์์ผํจ |
2-2) ์ธ์กฐ ์๋ณ์
: ์ธ์์ ์ผ๋ก ๋ง๋ค์ด์ง๋ ์๋ณ์
2-3) ์๋ณ์ ์ข ๋ฅ
1. ๋ํ์ฑ
: ์ฃผ์๋ณ์ & ๋ณด์กฐ์๋ณ์
→ ์ฃผ์๋ณ์ : Entity๋ฅผ ๋ํํ ์ ์๋ ์๋ณ์, ๋ค๋ฅธ Entity์ ์ฐธ์กฐ ๊ด๊ณ๋ก ์ฐ๊ฒฐ๋ ์ ์์
→ ๋ณด์กฐ ์๋ณ์ : ์ ์ผ์ฑ๊ณผ ์ต์์ฑ์ ๋ง์กฑํ์ง๋ง ๋ํ์ฑ์ ๋ง์กฑํ์ง ๋ชปํ๋ ์๋ณ์
2. ์์ฑ ์ฌ๋ถ
: ๋ด๋ถ ์๋ณ์ & ์ธ๋ถ ์๋ณ์
→ ๋ด๋ถ ์๋ณ์ : Entity ๋ด๋ถ์์ ์ค์ค๋ก ์์ฑ๋๋ ์๋ณ์
→ ์ธ๋ถ ์๋ณ์ : ๋ค๋ฅธ Entit์์ ๊ด๊ณ๋ก ๋ง๋ค์ด์ง๋ ์๋ณ์
3. ์์ฑ์ ์
: ๋จ์ผ ์๋ณ์ & ๋ณตํฉ ์๋ณ์
→ ๋จ์ผ ์๋ณ์ : ํ๋์ ์์ฑ
→ ๋ณตํฉ ์๋ณ์ : ๋๊ฐ ์ด์์ ์์ฑ
4. ๋์ฒด ์ฌ๋ถ
: ๋ณธ์ง ์๋ณ์ & ์ธ์กฐ ์๋ณ์
→ ๋ณธ์ง ์๋ณ์ : ๋น์ฆ๋์ค ํ๋ก์ธ์ค์์ ๋ง๋ค์ด์ง๋ ์๋ณ์
→ ์ธ์กฐ ์๋ณ์ : ์ธ์์ ์ผ๋ก ๋ง๋ค์ด์ง๋ ์๋ณ์
⇒ ํ๋ณด ์๋ณ์ ์ค์์ ์ฃผ์๋ณ์๋ก ์ ์ ํ ๊ฒ์ด ์๊ฑฐ๋, ์ฃผ์๋ณ์๊ฐ ๋๋ฌด ๋ง์ ์ปฌ๋ผ์ผ๋ก ๋์ด์๋ ๊ฒฝ์ฐ ์ฌ์ฉ, ์์ ๋ฒํธ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ณ์๋ฅผ ๋ง๋ฌ
'๐พ SQL_' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQL] MySQL - ์์ฑํ Table ์์ ๋ฐ ๊ฐ ์ง์ด๋ฃ๊ธฐ (2) | 2025.02.12 |
---|---|
[SQL] MySQL - User & Table(Attribute)๊น์ง ๋ง๋ค์ด๋ณด๊ธฐ (0) | 2025.02.11 |
[SQLD] ์คํค๋ง์ ์ํฐํฐ (0) | 2025.02.10 |
[SQLD] Data Modeling (0) | 2025.02.09 |
[SQLD] SQL Developer ์ค์น ๋ฐ Oracle DB ์ฐ๊ฒฐ (0) | 2025.02.08 |