๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด
- ํ
์ด๋ธ์ ์ ํจํ์ง ์์ ๋ฐ์ดํฐ๊ฐ ์
๋ ฅ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ค.
- ํด๋น ํ
์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ, ์ญ์ , ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ๊ฒ์ฌํ๋ค.
๐ ์ ์ฝ์กฐ๊ฑด์ ์ข
๋ฅ
(1) NOT NULL ์ ์ฝ์กฐ๊ฑด
- ํด๋น ์ปฌ๋ผ์
NULL๊ฐ์ด ์
๋ ฅ๋์ง ๋ชปํ๋๋ก
์ง์ ํ๋ค.
- ํ๋์ ์ปฌ๋ผ์ ๋ ๊ฐ ์ด์์ ์ ์ฝ์กฐ๊ฑด์ ๋ถ์ฌํ ์ ์๋ค.
- ๊ณ ๊ฐํ
์ด๋ธ์ ์ด๋ฆ์ปฌ๋ผ, ๋์ํ
์ด๋ธ์ ์ ๋ชฉ์ปฌ๋ผ, ์ํํ
์ด๋ธ์ ์ํ๋ช
์ปฌ๋ผ
(2) UNIQUE ์ ์ฝ์กฐ๊ฑด(๊ณ ์ ํค ์ ์ฝ์กฐ๊ฑด)
- ํด๋น ์ปฌ๋ผ์ ๊ฐ์ ํ
์ด๋ธ์ ์ฒด์์
๊ณ ์ ํ ๊ฐ
์ ๊ฐ์ ธ์ผํ๋ค. (์ ์ผ์ฑ
)
- NULL๊ฐ์ ์
๋ ฅ์ ๊ฐ๋ฅํ๋ค.
- ๊ณ ๊ฐํ
์ด๋ธ์ ํธ๋ํฐ๋ฒํธ, ์ฌ์ํ
์ด๋ธ์ ์ฃผ๋ฏผ๋ฒํธ์ปฌ๋ผ, ํ์ํ
์ด๋ธ์ ์ด๋ฉ์ผ์ปฌ๋ผ
(3) PRIMARY KEY ์ ์ฝ์กฐ๊ฑด(๊ธฐ๋ณธํค ์ ์ฝ์กฐ๊ฑด)
- ํ
์ด๋ธ์
๊ฐ ํ์ ๊ณ ์ ํ๊ฒ ์๋ณํ ์ ์๋ ๊ฐ
์ ๊ฐ์ ธ์ผํ๋ค.
- ํ
์ด๋ธ์ ์ฒด์์ ๊ณ ์ ํ ๊ฐ์ ๊ฐ์ ธ์ผ ํ๊ณ , NULL๊ฐ์ ํ์ฉํ์ง ์๋๋ค. (
์ ์ผ์ฑ + NOTNULL
)
- ์ฃผ๋ก ์ํ์ค๋ก๋ถํฐ ๋ฐํํ ์ผ๋ จ ๋ฒํธ๋ฅผ PK๋ก ๋ถ์ฌํ๋ค.
(์ ์ฝ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉฐ ๋จ์ํ๊ณ , ๊ฐ์ธ์ ๋ณด๊ฐ ๋ด๊ฒจ์์ง ์๋ค.)
- ํ์ํ
์ด๋ธ์ ํ๋ฒ, ์ฌ์ํ
์ด๋ธ์ ์ฌ์๋ฒํธ, ๊ณผ๋ชฉํ
์ด๋ธ ๊ณผ๋ชฉ์ฝ๋, ํ๋ฐฐํ
์ด๋ธ์ ์ก์ฅ๋ฒํธ
(4) CHECK ์ ์ฝ์กฐ๊ฑด
- ๊ดํธ ์์ ์ ์๋
์กฐ๊ฑด์์ ๋ง์กฑํ๋ ๊ฐ
์ ๊ฐ์ ธ์ผํ๋ค.
- ํด๋น ํ
์ด๋ธ์๋ CHECK(์กฐ๊ฑด์)์ ๋ง์กฑํ๋ ๊ฐ๋ง ์ ์ฅํ ์ ์๋ค.
- ์ฌ์ํ
์ด๋ธ์ ๊ธ์ฌ๋ 0๋ณด๋ค ํฐ ๊ฐ์ ๊ฐ์ ธ์ผํ๋ค.
- ํ์ํ
์ด๋ธ์ ํ๋
์ 1,2,3,4 ์ค์ ํ๋์ฌ์ผ ํ๋ค.
- ๊ณ ๊ฐํ
์ด๋ธ์ ์ฑ๋ณ์ M, F ์ค์ ํ๋์ฌ์ผ ํ๋ค.
- ํ์ํ
์ด๋ธ์ ์ฑ์ ์ 0.0 ~ 4.5 ์ฌ์ด์ ๊ฐ์ด์ด์ผ ํ๋ค.
(5) FOREIGN KEY ์ ์ฝ์กฐ๊ฑด(์ธ๋ํค ์ ์ฝ์กฐ๊ฑด, ์ฐธ์กฐํค ์ ์ฝ์กฐ๊ฑด)
- ํด๋น ์ปฌ๋ผ์ ๊ฐ์
๋ค๋ฅธ ํน์ ์ปฌ๋ผ์ ๊ฐ๊ณผ ๊ด๋ จ๋ ๊ฐ
๋ง ๊ฐ์ ธ์ผ ํ๋ค.
- ์ฐธ์กฐ ํ
์ด๋ธ(๋ถ๋ชจ ํ
์ด๋ธ)
- ์์ํ
์ด๋ธ์ด ์ฐธ์กฐํ๋ ๋ถ๋ชจํ
์ด๋ธ์ ์ปฌ๋ผ์
PRIMARY KEY
****ํน์ UNIQUE ์ ์ฝ์กฐ๊ฑด์ด ์ ์๋ ์ปฌ๋ผ
์ด์ด์ผ ํ๋ค. โ ๊ทธ๋์ผ ์๋ณํ๊ณ ์ฐธ์กฐํ ์ ์์ผ๋๊น
- ์ข
์ ํ
์ด๋ธ(์์ ํ
์ด๋ธ)
- FOREIGN KEY๋ก ์ค์ ๋ ์ปฌ๋ผ์
๋ถ๋ชจํ
์ด๋ธ์ ๊ฐ๊ณผ ์ผ์นํ๊ฑฐ๋ NULL
์ด์ด์ผ ํ๋ค.
- ์ฌ์ํ
์ด๋ธ(์ข
์ํ
์ด๋ธ)์ ๋ถ์์์ด๋๋ ๋ถ์ํ
์ด๋ธ(์ฐธ์กฐํ
์ด๋ธ)์ ๋ถ์ ์์ด๋๋ฅผ ์ฐธ์กฐํ๋ค.
- ๋ถ์ํ
์ด๋ธ(์์ํ
์ด๋ธ)์ ๊ด๋ฆฌ์ ์์ด๋๋ ์ฌ์ํ
์ด๋ธ(๋ถ๋ชจํ
์ด๋ธ)์ ์ฌ์๋ฒํธ๋ฅผ ์ฐธ์กฐํ๋ค.
- ์ฌ์ํ
์ด๋ธ(์์ํ
์ด๋ธ)์ ์ง์ข
์์ด๋๋ ์ง์ข
ํ
์ด๋ธ(๋ถ๋ชจํ
์ด๋ธ)์ ์ง์ข
์์ด๋๋ฅผ ์ฐธ์กฐํ๋ค.
- ์์ํ
์ด๋ธ์์ ์ฐธ์กฐํ๊ณ ์๋ ๋ถ๋ชจํ
์ด๋ธ์ ํ์ ์ญ์ ํ ์ ์๋ค.
์ ์ฝ์กฐ๊ฑด์ ์ ์
๐ก ์์ฆ์๋ E-R ๋ค์ด์ด๊ทธ๋จ์ ์์ฑํ๋ ํด์์ ์๋์ผ๋ก ํ
์ด๋ธ์ ์์ฑํ ์ ์๊ฒ ํด์ฃผ์ด์
์ง์ DDL๋ฌธ์ ์์ฑํ๋ ๊ฒฝ์ฐ๋ ๋ง์ง ์๋ค.
๐ DDL์์ ์ ์ฝ์กฐ๊ฑด ์ ์ ๋ฌธ๋ฒ
USER_EMAIL VARCHAR2(255) UNIQUE
USER_EMAIL VARCHAR2(255) CONSTRAINT USER_EMAIL_UK UNIQUE
UNIQUE(USER_EMAIL)
CONSTRAINT USER_EMAIL_UK UNIQUE(USER_EMAIL)
CREATE TABLE TB_USERS (
USER_NO NUMBER(7),
USER_ID VARCHAR2(100) NOT NULL,
USER_PASSWORD VARCHAR2(100) NOT NULL,
USER_NAME VARCHAR2(100) NOT NULL,
USER_EMAIL VARCHAR2(255),
USER_POINT NUMBER(10),
USER_GRADE VARCHAR2(100),
USER_UPDATED_DATE DATE,
USER_CREATED_DATE DATE DEFAULT SYSDATE,
CONSTRAINT TB_USERNO_PK PRIMARY KEY(USER_NO),
CONSTRAINT TB_USERID_UK UNIQUE (USER_ID),
CONSTRAINT TB_EMAIL_UK UNIQUE (USER_EMAIL),
CONSTRAINT TB_USER_GRADE_FK FOREIGN KEY (USER_GRADE) REFERENCES TB_USER_GRADE (GRADE)
);
- ์ปฌ๋ผ๋ ๋ฒจ ์ ์ฝ์กฐ๊ฑด
- ์ปฌ๋ผ ๋ณ ์ ์ฝ์กฐ๊ฑด์ ์ ์ํ๋ค.
- ํ ์ปฌ๋ผ์ 2๊ฐ ์ด์ ์ ์ฝ์กฐ๊ฑด์ ์ ์ํ๋ ค๋ฉด
CONSTRAINT~
์ด ์ ์ ์คํ์ด์ค ๋ฐ ์น๊ณ ์ถ๊ฐ๋ก ์ ์ผ๋ฉด ๋๋ค.
- ํ
์ด๋ธ ๋ ๋ฒจ ์ ์ฝ์กฐ๊ฑด
- ์ปฌ๋ผ์ ๋ชจ๋ ์ ์ ํ ์ ์ฝ์กฐ๊ฑด์ ์ ์ํ๋ค.
- ํ๋ ์ด์์ ์ปฌ๋ผ์ ๋ํ์ฌ ์ ์ฝ์กฐ๊ฑด์ ์ ์ํ ๋ ์ฌ์ฉํ๋ค.
- ์๋ฅผ ๋ค์ด ํ ํ์์ด ๊ฐ์ ์ฐ๋์ ๊ฐ์ ๊ณผ๋ชฉ์ ์๊ฐํ ์ ์๊ฒ ํ๋ ค๋ฉด ํ๋ฒ, ๊ณผ๋ชฉ์ฝ๋, ์๊ฐ์ฐ๋ ์ธ ์ปฌ๋ผ์ ๊ฐ์ด ๋ชจ๋ ์ค๋ณต๋๋ฉด ์๋๋ค. โ UNIQUE(ํ๋ฒ, ๊ณผ๋ชฉ์ฝ๋, ์๊ฐ์ฐ๋)
- NOT NULL ์ ์ฝ์กฐ๊ฑด์ ํ
์ด๋ธ ๋ ๋ฒจ์์ ์ ์ํ ์ ์๋ค.
- ์ ์ฝ์กฐ๊ฑด์ ๋ณ์นญ :
ํ
์ด๋ธ๋ช
_์ปฌ๋ผ๋ช
_์ ์ฝ์กฐ๊ฑด์๋ํ์ฝ์นญ
(30์ ์ ํ) ํ์์ผ๋ก ์ ๋๋ค.
- ๋ณ์นญ์ ๋ถ์ฌ์ฃผ์ด์ผ ์ ์ฝ์กฐ๊ฑด ์๋ฐฐ๋ก ์ธํ ์ค๋ฅ ๋ฐ์ ์ ์ด๋ค ์ ์ฝ์กฐ๊ฑด์ ์๋ฐฐํ๋์ง ๋น ๋ฅด๊ฒ ์ ์ ์๋ค. (ํ์ง๋ง not null ์ ์ฝ์กฐ๊ฑด์ ๋ณ์นญ์ ๋ถ์ด์ง ์์๋ ๊ด๋ จ ๋ฉ์์ง๊ฐ ๋ฐ์ํ๋ค.)
๐ก ์ ์ฝ์กฐ๊ฑด ์ ์ ์์
- ๋ณดํต ์ปฌ๋ผ ๋ ๋ฒจ์์๋ NOT NULL๋ง ์ ์,
ํ
์ด๋ธ ๋ ๋ฒจ์์๋ UNIQUE, PRIMARY KEY, FOREIGN KEY๋ฅผ ์ ์ํ๋ค.
- ALTER๋ฌธ์์ ๋ณ๋๋ก ์ ์ฝ์กฐ๊ฑด์ ์ถ๊ฐ ์ ์ํ ์๋ ์๋ค.
- ์ธ๋ํค ์ ์ฝ์กฐ๊ฑด๊ณผ ๊ฐ์ด ์ฐธ์กฐ ๊ด๊ณ์ ์๋ ํ
์ด๋ธ ๊ฐ์๋ ๋ถ๋ชจ - ์์์ ์์๋๋ก ์์ฑ๋์ด์ผ ํ๋๋ฐ, ์ํธ์ฐธ์กฐ์ ๊ฒฝ์ฐ์๋ ๊ทธ๋ด ์ ์๋ค.
๋ฐ๋ผ์ ์ด ๊ฒฝ์ฐ์๋ FOREIGN KEY๋ฅผ ALTER๋ฌธ์์ ์ถ๊ฐ ์ ์ํ๋ค.
ํค(key)
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํํ์ ์ฐพ์ ๋ ๊ธฐ์ค์ด ๋๋ ์์ฑ
- ์ ์ผ์ฑ
- ํ๋์ ํค ๊ฐ์ผ๋ก ํํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ์ฑ์ง
- ๊ฐ๊ฐ์ ํํ์ ๊ตฌ๋ถํ ์ ์๋ ์ฑ์ง
- ์ต์์ฑ
- ํค๋ฅผ ๊ตฌ์ฑํ๋ ์์ฑ๋ค ์ค ๊ผญ ํ์ํ ์ต์ํ์ ์์ฑ๋ค๋ก๋ง ํค๋ฅผ ๊ตฌ์ฑํ๋ ์ฑ์ง
- ์๋ฅผ ๋ค์ด (์ฃผ๋ฏผ๋ฒํธ, ์ด๋ฆ, ๋์ด) ๋ก ๊ตฌ์ฑ๋ ํค๊ฐ ์๋ค๋ฉด, ์ด ํค๋ ์ด๋ฆ, ๋์ด๋ฅผ ๋นผ๊ณ ์ฃผ๋ฏผ๋ฒํธ๋ง์ผ๋ก๋ ๊ฐ ํํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ค. ์ ํค์์ ์ฃผ๋ฏผ๋ฒํธ๋ง ๋จ๊ธด๋ค๋ฉด ์ต์์ฑ์ ๋ง์กฑํ๋ค.

์ถ์ฒ : https://kosaf04pyh.tistory.com/201
๐ ํ๋ณดํค (Candidate Key)
- ๋ฆด๋ ์ด์
์ ๊ตฌ์ฑํ๋ ์์ฑ๋ค ์ค
ํํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ์์ฑ๋ค์ ๋ถ๋ถ์งํฉ
- ๋ชจ๋ ๋ฆด๋ ์ด์
์ ๋ฐ๋์ ํ๋ ์ด์์ ํ๋ณดํค๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
- ๋ฆด๋ ์ด์
์ ์๋ ๋ชจ๋ ํํ์ ๋ํด์
์ ์ผ์ฑ๊ณผ ์ต์์ฑ
์ ๋ง์กฑ
๐ ๊ธฐ๋ณธํค (Primary Key)
- ํ๋ณดํค ์ค์์ ์ ํํ ์ฃผ ํค(Main Key)
- ํ ๋ฆด๋ ์ด์
์์ ํน์ ํํ์
์ ์ผํ๊ฒ ๊ตฌ๋ณ
ํ ์ ์๋ ์์ฑ
- Null ๊ฐ์ ๊ฐ์ง ์ ์๊ณ , ๋์ผํ ๊ฐ์ด ์ค๋ณต๋์ด ์ ์ฅ๋ ์ ์๋ค.
๐ ๋์ฒดํค (Alternate Key)
- ํ๋ณดํค๊ฐ ๋ ์ด์์ผ ๋ ๊ธฐ๋ณธํค๋ฅผ ์ ์ธํ ๋๋จธ์ง ํ๋ณดํค๋ค์ ๋งํ๋ค.
- ๋ณด์กฐํค๋ผ๊ณ ๋ ํ๋ค.
๐ ์ํผํค (Super Key)
- ํ ๋ฆด๋ ์ด์
๋ด์ ์๋ ์์ฑ๋ค์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋ ํค
- ์ฌ๋ฌ ์์ฑ์ด ํ๋์ ์งํฉ์ผ๋ก ํค๋ฅผ ์ด๋ฃจ์ด, ๋ญ์ณค์ ๋๋ ์ ์ผ์ฑ์ด ์๊ธฐ์ง๋ง ๊ฐ๋ณ๋ก ํฉ์ด์ง๋ฉด
๋ช๋ช ์์ฑ๋ค์ ํผ์์๋ง์ผ๋ก๋ ์ ์ผ์ฑ ์๋ ํค๊ฐ ๋์ง ๋ชปํ ์ ์๋ค.
โ ์ ์ผ์ฑ ๋ง์กฑ, ์ต์์ฑ ๋ถ๋ง์กฑ
- ์: (ํ๋ฒ, ์ฃผ๋ฏผ๋ฒํธ, ์ฑ๋ช
)์ผ๋ก ์ด๋ฃจ์ด์ง ์ํผํค
๐ ์ธ๋ํค (Foreign Key)
- ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๋ ๋ ๋ฆด๋ ์ด์
์์,
์ฐธ์กฐ๋๋(๋ถ๋ชจ) ๋ฆด๋ ์ด์
์ ๊ธฐ๋ณธํค์ ๊ฐ์ ๊ฐ
์ ๊ฐ์ง๋ ์ฐธ์กฐํ๋(์์)๋ฆด๋ ์ด์
์ ์์ฑ
- ํ ์์ฑ์ ์ธ๋ํค ์ ์ฝ์กฐ๊ฑด์ด ์ง์ ๋๋ฉด, ์ฐธ์กฐํ
์ด๋ธ์ ๊ธฐ๋ณธํค์ ์๋ ๊ฐ์ ์
๋ ฅํ ์ ์๋ค. ์ฐธ์กฐํ๋ ํ
์ด๋ธ์ ๊ธฐ๋ณธํค์ด๊ฑฐ๋, ์๋๋ฉด NULL์ด๊ฑฐ๋ ๋ ์ค ํ๋์ด๋ค.
๐ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ NULL ๊ฐ์ ์์ง ์ ํด์ง์ง ์์, ํด๋น ์์์ ์๋ฏธํ๋
์๋ฌด๊ฒ๋ ์๋ ํน์ํ ๋ฐ์ดํฐ์ด๋ค.