Entity-Relationship Digagram (E-R Model)
๊ฐ์ฒด-๊ด๊ณ ๋ชจ๋ธ (Entity-Relationship Modeling, E-R Modeling)์ ์ธ์์ ์ฌ๋ฌผ์ ๊ฐ์ฒด (Entity)์ ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ (Relationship)๋ก ํํํ๋ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๋ฐฉ์์ผ๋ก ๊ฐ๋ ์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๋จ๊ณ์์ ์ฌ์ฉ๋ฉ๋๋ค.
ํ๋ง๋๋ก ๋ฆด๋ ์ด์ ๊ฐ์ ๊ด๊ณ๋ค์ ์ ์ํ๋ ๊ฒ์ด๋ฉฐ Entity (๊ฐ์ฒด)์ Relationship (๊ด๊ณ)๋ฅผ ์ค์ ์ ์ผ๋ก ํ์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ํ ๋์ ์์๋ณด๊ธฐ ์ํด ๊ทธ๋ ค๋๋ ๋ค์ด์ด๊ทธ๋จ์ ๋๋ค.
๊ฐ์ฒด ๊ด๊ณ๋๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ ์ฝ๊ฒ ๋งํด, ์๊ตฌ๋ถ์ ์ฌํญ์์ ์ป์ ์ํฐํฐ์ ์์ฑ๋ค์ ๊ด๊ณ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ํํํ ๊ฒ์ ๋๋ค.
ERD ๊ตฌ์ฑ ์์
Entity
์ํฐํฐ๋ ์ ์ ๊ฐ๋ฅํ ์ฌ๋ฌผ ๋๋ ๊ฐ๋ ์ ์๋ฏธํ๋ค.
์ฌ๋์ด ๋ ์๋ ์๊ณ ํ๋กํ์ด๋ ๋์ ์ ๋ณด์ ๊ฐ์ ๋ฌดํ์ ์ ๋ณด๋ ๋ฐ์ดํฐํ ๊ฐ๋ฅํ๋ค.
Entity ์ด๋ฆ์ ๋จ์ํ์ด๊ณ ์ ์ผํ๋ฉฐ ๋๋ฌธ์๋ก ํฌ๊ฒ ํ๊ธฐํ๋ฉฐ ๋ชจ๋ Entity๋ ํ๋ ์ด์์ ์๋ณ์ (UID : Unique Identifier)๋ฅผ ๊ฐ์ ธ์ผ ํ๊ณ UID๊ฐ ์๋ค๋ฉด Entity๋ก ๋ณผ ์ ์๋ค.
UID (Unique Identifiers)๋ Entity์ ๊ฐ Occureence๋ฅผ ์๋ณํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ Attribute๋ Relationship์ ์กฐํฉ์ ๋งํ๋ค.
Entity์ ๋ชจ๋ Occurence๋ ์ ์ผํ๊ฒ ์๋ณ์ด ๊ฐ๋ฅํด์ผ ํ๋ค!
Attribute
Attribute๋ Entity๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ๊ตฌ์ฑ ์์์ด๋ค.
Attribute (์์ฑ) ์ด๋ฆ์ ์๋ฌธ์๋ก ์๊ฒ ํ๊ธฐํ๋ฉฐ Entity ์ด๋ฆ๊ณผ Attribute ์ด๋ฆ์ด ์ค๋ณต๋๋ฉด ์๋๋ค.
“#”์ UID, “*”๋ ํ์ (Mandatory), “o”๋ ์ ํ (Optional) Attribute ๋ฅผ ์๋ฏธํ๋ค.
์์ ์ Attribute๊ฐ ์๋๋ฉด์ Relation์ ์ํด ์์ ์ Attribute๋ก ํ์ํด์๋ ์๋๋ค.
Relationship
Relationship์ Entity ๊ฐ์ ๊ด๊ณ๋ฅผ ์๋ฏธํ๋ฉฐ, ๋ Entity ๊ฐ์ ์ ์ ๊ธ๊ณ ๊ด๊ณ ๋ช ์นญ์ ๊ธฐ๋กํ๊ฒ ๋๋ค.
- ์ ํ ์ฌํญ์ ํ์ํ๋ค.
๐ ์ ์ ์ ์ ํ์ ์ธ ์ฌํญ์ ์๋ฏธํ๋ค. (may be) // ๋ถ์ ์ ์ฅ์์ ์ฌ์์ ๋ฐฐ์น๋ฐ์ ์๋, ์ ๋ฐ์ ์๋ ์๋ค.
๐ ์ค์ ์ ํ์์ ์ธ ์ฌํญ์ ์๋ฏธํ๋ค. (must be) // ์ฌ์ ์
์ฅ์์๋ ๋ฐ๋์ ๋ถ์์ ๋ฐฐ์น๋์ด ์์ด์ผ ํ๋ค.
- ๊ด๊ณ ํํ๋ฅผ ํ์ํ๋ค.
๐ ์ผ์ง์ฐฝ ๋ชจ์์ ํ๋ ์ด์์ ์๋ฏธํ๋ค. (one or more) // ์ฌ์ ์ฌ๋ฌ ๋ช ์ด ํ ๋ถ์์ ์ํ ์ ์๋ค.
๐ ๋จ์ ์ ํ๋๋ฅผ ์๋ฏธํ๋ค. (one and only one) // ํ ๋ช
์ ์ฌ์์ ํ ๋ถ์์๋ง ์์๋ ์ ์๋ค.
โ [์ฐธ๊ณ ] ๋ํ์ ์ธ ERD ํ๊ธฐ ๋ฐฉ๋ฒ
- ํผํฐ ์ฒธ ํ๊ธฐ๋ฒ
- IE ํ๊ธฐ๋ฒ
- ๋ฐ์ปค ํ๊ธฐ๋ฒ (Oracle์ด ์ฌ์ฉํ๋ ๊ธฐ๋ฒ)
โ [์ฐธ๊ณ ] ๋น์ ํ ๋ฐ์ดํฐ
๋น๊ตฌ์กฐํ ๋ฐ์ดํฐ๋ฅผ ๋งํ๋ฉฐ, ๋ฏธ๋ฆฌ ์ ์๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ด ์๊ฑฐ๋ ๋ฏธ๋ฆฌ ์ ์๋ ๋ฐฉ์์ผ๋ก ์ ๋ฆฌ๋์ง ์์ ์ ๋ณด๋ฅผ ๋งํ๋ค.
์๋ฅผ ๋ค์ด, ์ ํ ๋ฐ์ดํฐ๋ DBMS์ ๋ฏธ๋ฆฌ ์ ์ํด๋ ํ ์ด๋ธ์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ผ๊ณ ๋ณผ ์ ์๋ ๋ฐ๋ฉด์, ๋น์ ํ ๋ฐ์ดํฐ๋ ์ธํฐ๋ท ์์์ ๋ ๋์๋ค๋๋ PDF ํ์ผ, JPEG ์ด๋ฏธ์ง ํ์ผ, ํน์ ์ฃผ์ ์ ๊ด๋ จ๋ ํ ์คํธ, ETC ๋ฑ์ ๋งํ๋ค.
์ถ๊ฐ์ ์ผ๋ก ์์์ ์ค๋ช ํ ERD๋ ๊ด๊ณํ ๊ตฌ์กฐ๋ก ํํํ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ ์ฉํ ์ ์์ง๋ง ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ถฉ๋ถํ ํํํ ์ ์๋ค๋ ๋จ์ ์ด ์๋ค.
ERD ๊ด๊ณ์ ์นด๋๋๋ฆฌํฐ
๊ด๊ณ๊ฐ ์กด์ฌํ๋ ๋ Entity ์ฌ์ด์ ํ Entity์์ ๋ค๋ฅธ Entity ๋ช ๊ฐ์ ๊ฐ์ฒด์ ๋์๋๋์ง ์ ์ฝ์กฐ๊ฑด์ ํ๊ธฐํ๊ธฐ ์ํด ์ ์ ๊ทธ์ด ํํํ๋ค.
๋ํ์ ์ผ๋ก Mapping Cardinality์ ์ข ๋ฅ๋ ๋ค์๊ณผ ๊ฐ๋ค.
โ One to One : 1 ๋ 1 ๋์ (1:1)
โก One to Many : 1 ๋ ๋ค ๋์ (1:N)
โข Many to Many : ๋ค ๋ ๋ค ๋์ (M:N)
Cardinality๋ ํ ์ด๋ธ์์๋ ํํ/ํ์ ์๋ฅผ ์๋ฏธํ์ง๋ง ERD์์๋ ํ ๊ฐ์ฒด์์ ๋ฐ์ํ ์ ์๋ ๋ฐ์ ํ์๋ฅผ ์๋ฏธํ๋ฉฐ ๋ค๋ฅธ ๊ฐ์ฒด์์ ๋ฐ์ํ ์ ์๋ ๋ฐ์ ํ์์ ์ฐ๊ด๋๋ค.
One to One (1:1)
- ํ์๊ณผ ์ ์ฒด์ ๋ณด๋ 1:1๋ก ๋งค์นญ๋๋ค.
- ํ ๋ช ์ ํ์์ ํ๋์ ์ ์ฒด ์ ๋ณด๋ฅผ ๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
One to Many (1:N)
- ํ ๋ช ์ ํ์์ ์ฌ๋ฌ ๊ฐ์ ์ทจ๋ฏธ๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฏ๋ก 1:N์ผ๋ก ๋งค์นญ๋๋ค.
Many to Many (M:N)
- ํ ๋ช ์ ํ์์ ์ฌ๋ฌ ๊ฐ์ ์์ ์ ๋ค์ ์ ์๊ณ , ํ ๊ฐ์ ์์ ์ ์ฌ๋ฌ ๊ฐ์ ํ์์ ๋ฐ์ ์ ์์ผ๋ฏ๋ก N:M์ผ๋ก ๋งค์นญ๋๋ค.
โ [์ฐธ๊ณ ] Many to Many Cardinality ๊ด๊ณ์ ํด์
๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์์๋ ๋ ์ํฐํฐ ๊ฐ์ ๊ด๊ณ๊ฐ N:M ์ผ๋ก ๋งค์นญ๋๋ ๊ฒฝ์ฐ, ์์ฑ๋์ง ์์ ๋ชจ๋ธ๋ก ๊ฐ์ฃผํ๊ธฐ ๋๋ฌธ์ ๋ ์ํฐํฐ์ ๊ด๊ณ๋ฅผ 1:N, 1:M์ผ๋ก ์กฐ์ ํ๋ ์์ ์ด ํ์ํ๋ค
๋ฐ๋ผ์, ๋ ๊ฐ์ ์ํฐํฐ ์ฌ์ด์ ๋ ํ๋์ ์ํฐํฐ๋ฅผ ์ถ๊ฐํ์ฌ ํ๋์ M:N ๊ด๊ณ๋ฅผ ๋ ๊ฐ์ M:1 ๊ด๊ณ๋ก ์ ํํ ์ ์๋ค.
์ด๋ ๊ฒ M:1 ๊ด๊ณ๋ก ์ ํํ๋ ๊ณผ์ ์์ ์๋ก์ด ์ถ๊ฐ๋๋ ์ํฐํฐ๋ฅผ Intersection Entity ๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ Intersection Entity์ UID๋ ์ข ์ข ์ด Entity์ Relationship์ ๋งบ๊ณ ์๋ ์๋์ Entity์ UID๋ค๋ก ๊ตฌ์ฑ๋๋ค.
์ด๋ฐ ๊ฒฝ์ฐ ERD์๋ Relationship์ ๋ํ๋ด๋ ์ ์ UID Bar๋ฅผ ์ฌ์ฉํ์ฌ ํํํ๋ค.
'๐จโ๐ป Back End > MySQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Join (์กฐ์ธ) - ๋ด๋ถ ์กฐ์ธ (Inner Join) & ์ธ๋ถ ์กฐ์ธ (Outer Join) (0) | 2023.07.22 |
---|---|
SubQuery (์๋ธ์ฟผ๋ฆฌ) (0) | 2023.07.22 |
SELECT๋ฌธ ๊ตฌ์กฐ ๋ฐ ์คํ ์์ (0) | 2023.07.22 |
๋ฐ์ดํฐ ๋ชจ๋ธ๋ง (0) | 2023.07.21 |
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ณธ (0) | 2023.07.21 |