-
[Database] ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋?๐ปProgramming/Database 2023. 10. 9. 11:05
๋์๋ฆฌ ์คํฐ๋์์ ERD๋ฅผ ์ค๊ณํด๋ณด๋๊ฒ ๊ณผ์ ์ธ๋ฐ, ๊ทธ ๊น์ ์ ๋ฒ ํ๊ธฐ์ ํ๊ต ์์ ์ผ๋ก ๋ค์๋ ๊ฒ์ ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ๋ค.
๐ ๊ด๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ํน์ฑ
- ์ํ์์์ ๋ฆด๋ ์ด์ (relation)๊ณผ ์งํฉ(set)์ ์ด๋ก ์ ๊ธฐ์ด
- ์ผ๋ฐ์ ์ธ ์ฌ์ฉ์๋ ํ ์ด๋ธ ํํ๋ก ์๊ฐํ์ง๋ง, ํต์์ ์ธ ํ ์ด๋ธ์ ๊ฐ๋ ๊ณผ๋ ๋ค๋ฅด๋ค.
- ํ ์ด๋ธ์ ์ด(column)์ ๊ด๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ์ "์ ํธ๋ฆฌ๋ทฐํธ"์ญํ ์ ํ๋ค.
- ํ ์ด๋ธ์ ํ(row)์ ๊ด๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ์ "ํํ" ์ญํ ์ ํ๋ค.
๐ํ์ ํ ์ด๋ธ: ๋ฆด๋ ์ด์
ํ๋ฒ(Sno) ์ด๋ฆ(Sname) ํ๋ (Year) ํ๊ณผ(Dept) 100 ๋ ธ์์ฌ 2 ์ํํธ์จ์ด์ตํฉํ๊ณผ 200 ๋ ธ๋ด๊ตฌ 1 ํต๊ณํ๊ณผ - ์ฌ๊ธฐ์ ์ ํธ๋ฆฌ๋ทฐํธ๋ ํ๋ฒ, ์ด๋ฆ, ํ๋ , ํ๊ณผ์ด๊ณ , ํํ์ (100, ๋ ธ์์ฌ, 2, ์ํํธ์จ์ด์ตํฉํ๊ณผ)์ (200, ๋ ธ๋ด๊ตฌ, 1, ํต๊ณํ๊ณผ)๋ผ๊ณ ์ดํดํ๋ฉด ๋๋ค.
๐ ์ ํธ๋ฆฌ๋ทฐํธ์ ๋๋ฉ์ธ
๐ ๋๋ฉ์ธ(domain)
: ์ ํธ๋ฆฌ๋ทฐํธ๊ฐ ์ทจํ ์ ์๋ ๊ฐ(value)๋ค์ ์งํฉ *์ฝ๊ฒ ์ดํดํ์๋ฉด ๋ฒ์๋ผ๊ณ ๋ณผ ์ ์๋ค. ex. ํ๋ฒ: 10์๋ฆฌ ์์ฐ์๋ง ๊ฐ๋ฅ
๐์ ํธ๋ฆฌ๋ทฐํธ(attribute)
: ๋๋ฉ์ธ์ ์ญํ (role) ์ด๋ฆ์ด๋ค. ํ ๋ฆด๋ ์ด์ ๋ด์์ ์ ํธ๋ฆฌ๋ทฐํธ์ ์ด๋ฆ๋ค์ ๋ชจ๋ ๋ฌ๋ผ์ผํ๋ค.
๐๋จ์ ๋๋ฉ์ธ(simple domain)
: ๋จ์ ์ ํธ๋ฆฌ๋ทฐํธ - ์์๊ฐ(๋์ด์ ์ชผ๊ฐค ์ ์๋ค)
๐๋ณตํฉ ๋๋ฉ์ธ(composite domain)
: ๋ณตํฉ ์ ํธ๋ฆฌ๋ทฐํธ - ๋ณตํฉ ๊ฐ ex. ์ฐ, ์, ์ผ
๐ ๋ฆด๋ ์ด์ ์ ํน์ฑ
๐1. ํํ์ ์ ์ผ์ฑ
- ๋ฆด๋ ์ด์ ์ ํํ๋ค์ "์งํฉ"์ผ๋ก ๊ฐ์ ํํ์ด ์ค๋ณต๋์ด ๋ ๊ฐ ์ด์ ๋ค์ด๊ฐ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. → ํํ๋ค ์ค์์ ๋ด๊ฐ ์ํ๋ ํ๋์ ํํ์ ์ฐพ๊ณ ์ถ์๋ ๊ทธ ํํ์ ๋ฑ ํ๊ฐ์ด์ด์ผ๋ง ํ๋ค.
๐2. ํํ์ ๋ฌด์์์ฑ
- ํํ์ ์์๊ฐ ์๋ค. → ์ฐ๋ฆฌ๋ ์ํ๋ ํํ์ ์์๋ฅผ ์ด์ฉํ์ฌ ์ฐพ์ ์ ์๋ค.
๐3. ์ ํธ๋ฆฌ๋ทฐํธ์ ๋ฌด์์์ฑ
- ๋ฆด๋ ์ด์ ์คํค๋ง๋ ์ ํธ๋ฆฌ๋ทฐํธ๋ค์ "์งํฉ"์ด๋ฏ๋ก, ์ ํธ๋ฆฌ๋ทฐํธ๋ ์์๋ฅผ ์ด์ฉํ์ฌ ์ฐพ์ ์ ์๋ค. → ์๋ฅผ ๋ค์ด์ ์์ ํ์ ํ ์ด๋ธ์์ ํ ํ์์ ํ๋ ์ ์ฐพ์ ๋ ๊ทธ ํ์์ ์ธ ๋ฒ์งธ ์ ํธ๋ฆฌ๋ทฐํธ๋ฅผ ์ฐพ์ผ๋ผ๊ณ ํ์ง ์๊ณ ํ์์ Year์ ์ฐพ์๋ฌ๋ผ๊ณ ํ๋ ๊ฒ์ด๋ค. → ์์์ ๋ฌด์๋ฏธ
๐4. ์ ํธ๋ฆฌ๋ทฐํธ์ ์์์ฑ
- ์ ํธ๋ฆฌ๋ทฐํธ ๊ฐ์ ์์ ๊ฐ์ผ๋ก ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ถํด๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
- null ๊ฐ๋ ์์ ๊ฐ์ผ๋ก ์ทจ๊ธํ๋ค.
- ์๊น ์์์ ๋งํ๋ ๋ณตํฉ ๋๋ฉ์ธ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ์ฉ๋ ์ ์๋ค.
๐ ๋ฐ์ดํ๋ฒ ์ด์ค ํค
๐ํค(key)
- ๊ฐ ํํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ์ ํธ๋ฆฌ๋ทฐํธ์ "์งํฉ"
๐ํ๋ณดํค
- ๋ฆด๋ ์ด์ ์ ๋ํ ์ ํธ๋ฆฌ๋ทฐํธ์ ์งํฉ์ผ๋ก์ ๋ค์ ๋ ์ฑ์ง์ ๋ง์กฑํ๋ค.
1. ์ ์ผ์ฑ(uniqueness)
: ๊ฐ ํํ๋ค์ ์ ์ผํ๋ค.(ํํ์์ ๊ฐ๋ค์ด ๋ชจ๋ ๋ฌ๋ผ์ผํจ)
2. ์ต์์ฑ(minimality)
: ํ๋ณดํค๋ ์ ํธ๋ฆฌ๋ทฐํธ์ ์งํฉ์ผ๋ก์ ๊ฐ ํํ์ ์ ์ผํ๊ฒ ์๋ณํ๋ ๋ฐ ํ์ํ ์ ํธ๋ฆฌ๋ทฐํธ๋ง ํฌํจํ์ฌ์ผ ํ๋ค.
ex. ์์ ํ์ ํ ์ด๋ธ์์ {ํ๋ฒ, ์ด๋ฆ}์ ์งํฉ์ ์ ์ผ์ฑ์ ๋ง์กฑํ์ง๋ง ์ต์์ฑ์ ๋ง์กฑํ์ง ์๋๋ค. ๊ทธ๋ฆฌ๊ณ {ํ๋ฒ}์ ์งํฉ์ ์ ์ผ์ฑ๊ณผ ์ต์์ฑ์ ๋ชจ๋ ๋ง์กฑ์ํจ๋ค.
๐์ํผํค
: ์ ์ผ์ฑ์ ๋ง์กฑํ์ง๋ง ์ต์์ฑ์ ๋ง์กฑํ์ง ์๋ ์ ํธ๋ฆฌ๋ทฐํธ์ ์งํฉ. ์๊น ๋งํ ์์์ {ํ๋ฒ, ์ด๋ฆ} ์งํฉ์ด ์ด ๊ฒฝ์ฐ์ ํด๋นํ๋ค.
๐๊ธฐ๋ณธ ํค
: ํ๋ณด ํค ์ค์์ ์ง์ ๋ ํ๋์ ํค๋ก DBA๊ฐ ์ง์ ํ๋ค. ๊ฐ ํํ์ ๋ํ ๊ธฐ๋ณธ ํค ๊ฐ์ ํญ์ ์ ํจํ ๊ฐ์ด์ด์ผ ํ๋ค. → null ๊ฐ์ด ํ์ฉ๋์ง ์๋๋ค.
๐๋์ฒด ํค
: ํ๋ณดํค ์ค์์ ๊ธฐ๋ณธ ํค๋ฅผ ์ ์ธํ ๋๋จธ์ง ํ๋ณดํค(์ฌ๋ฌ ๊ฐ์ ํ๋ณดํค ์ค์ DBA์ ์ ํ์ ๋ฐ์ ํค๊ฐ ๊ธฐ๋ณธ ํค์ด๊ณ , ์ ํ๋ฐ์ง ๋ชปํ ๋๋จธ์ง ํค๊ฐ ๋์ฒดํค๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.)
๐์ธ๋ ํค(foreign key)
: ๋ฆด๋ ์ด์ R์ ์ ํธ๋ฆฌ๋ทฐํธ ์งํฉ์ธ FK๊ฐ ๋ฆด๋ ์ด์ S์ ๊ธฐ๋ณธ ํค ์ผ๋ ์ด FK๋ R์ ์ธ๋ ํค์ด๋ค. FK์ ๋๋ฉ์ธ๊ณผ S์ ๊ธฐ๋ณธ ํค์ ๋๋ฉ์ธ์ ๊ฐ์์ผ ํ๊ณ , FK์ ๊ฐ์ S์ ์กด์ฌํ๋ ๊ฐ์ด๊ฑฐ๋ null๊ฐ์ด์ด์ผ ํ๋ค.(FK์ ๊ฐ์ด S์ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ์ ๋ฌด๊ฒฐ์ฑ์ด ๊นจ์ง๋ค๊ณ ํ ์ ์๋ค.) R์ ์ฐธ์กฐ ๋ฆด๋ ์ด์ (referencting relation), S๋ฅผ ํผ์ฐธ์กฐ ๋ฆด๋ ์ด์ (referenced relation)์ด๋ผ๊ณ ํ๋ค. → ๋ฆด๋ ์ด์ R์ FK๋ฅผ ํตํด ๋ฆด๋ ์ด์ S๋ฅผ ์ฐธ์กฐํ๋ค.
๐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ(Integrity Constraints)
๐1. ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ(entity integrity)
: ๊ธฐ๋ณธ ํค ๊ฐ์ ์ธ์ ์ด๋ ๋๊ณ null ๊ฐ์ ๊ฐ์ง ์ ์๋ค.
๐2. ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ(referential integrity)
: ์ธ๋ ํค ๊ฐ์ ๋ฐ๋์ ํผ์ฐธ์กฐ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธ ํค ๊ฐ์ด๊ฑฐ๋ null์ด๋ค.
* ์ด ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ(์ด๋ ํ ์์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ด ์๋ ๋ชจ๋ ๋ฐ์ดํฐ ๊ฐ)๊ฐ ํญ์ ๋ง์กฑ์์ผ์ผ ๋ ์ ์ฝ์กฐ๊ฑด์ด๋ค.
๐ ๋ค์ ๊ธ
https://suucong.tistory.com/33
'๐ปProgramming > Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ