[์ ์ฝ์กฐ๊ฑด]
ํ ์ด๋ธ์ ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ๋ง ์ ๋ ฅ๋ฐ๊ณ ์๋ชป๋ ๋ฐ์ดํฐ๋ ๋ค์ด์ค์ง ๋ชปํ๋๋ก ์ปฌ๋ผ๋ง๋ค ์ ํ๋ ๊ท์น
์ ์ฝ ์กฐ๊ฑด์ ๊ฑฐ๋ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ์ ์ ํ์ฑ์ด ๋์์ง๋ค.
๋ฐ์ดํฐ์ ์ ํ์ฑ, ๋ฌด๊ฒฐ์ฑ, ์ ๋ขฐ์ฑ์ด ๋์์ง
[์ ์ฝ์กฐ๊ฑด์ ์ข ๋ฅ]
[NOT NULL]
null ๊ฐ์ด ์ ๋ ฅ๋์ง ๋ชปํ๋๋ก ํ๋ค.
[UNIQUE]
์ค๋ณต๋ ๊ฐ์ด ์ ๋ ฅ๋์ง ๋ชปํ๋๋ก ํ๋ค.
[PRIMARY KEY / ๊ธฐ๋ณธํค ]
NOT NULL + UNIQUE ํน์ง์ ๊ฐ์ง๋ค. ๋ฐ์ดํฐ๋ค๋ผ๋ฆฌ์ ์ ์ผ์ฑ์ ๋ณด์ฅํ๋ ์ปฌ๋ผ์ ์ค์ ํ๋ค. (ํ ์ด๋ธ ๋น 1๊ฐ๋ง ์ค์ )
[FOREIGEN KEY / ์ธ๋ํค]
๋ค๋ฅธ ํ ์ด๋ธ์ ์ปฌ๋ผ์ ์ฐธ์กฐํด์ ๊ฒ์ฌํ๋ค.
* FOREIGN KEY ๋ ๊ฐ์ ํ ์ด๋ธ์ ์๋ก ์ฐธ์กฐํ๋๋ก ์ค์ ๋๋ค.
* ์ธ๋ฑ์ค๋ฅผ ์์ฑํด์ฃผ๋ ์ด์ !
์์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ ๋๊ธฐ ์ , ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฐ์ด ๋ถ๋ชจํ ์ด๋ธ์ ์๋์ง ๋จผ์ ์กฐ์ฌํ๊ณ , ํด๋น ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ์ ๋ ฅ ํ๊ฐ / ์ฆ, ์์ํ ์ด๋ธ, ๋ถ๋ชจํ ์ด๋ธ์ ๋ณ๊ฒฝ-์ญ์ ์ ๋ฐ๋ ํ ์ด๋ธ์ ์ ๋ถ ์ฝ์ด์ ํ์ธํด์ผํ๋ ๋นํจ์จ์ ์ํฉ์ด ์๊ธด๋ค.
์ด ๊ฒฝ์ฐ ์ธ๋ฑ์ค๋ฅผ ์์ฑํด์ฃผ๋ฉด ์ฑ๋ฅ์ด ์ข์์ง๋ค.
* ๋ถ๋ชจ ํ ์ด๋ธ : ์ ๋ณด๋ฅผ ์ ๊ณตํด์ฃผ๋ ์ชฝ -> ์ฐธ์กฐํค
* ์์ ํ ์ด๋ธ : ์ ๋ณด๋ฅผ ๋ฐ๋ ์ชฝ -> ์ธ๋ํค
[CHECK]
์ค์ ๋ ๊ฐ๋ง ์ ๋ ฅ์ ํ์ฉํ๊ณ ๋๋จธ์ง๋ ๊ฑฐ๋ถ๋๋ค.
* UNIQUE , PK ๋ ์ค๋ผํด์ด ์๋์ผ๋ก UNIQUE INDEX ๋ฅผ ์์ฑํด์ ๊ด๋ฆฌํ๋ค. (์ธ๋ฑ์ค ์์ฑ์ผ๋ก ์ธํ ์๊ฐ, ๋ถํ๊ฐ ์ฌํด์ง ์ ์๋ค๋ ์ !)
[์ ์ฝ์กฐ๊ฑด ์ฌ์ฉํ๊ธฐ]
* ํ ์ด๋ธ ์์ฑ ์ ์ง์
CREATE TABLE new_emp1
(no NUMBER(4)
CONSTRAINT emp1_no_pk PRIMARY KEY,
name VARCHAR2(20)
CONSTRAINT emp1_nam_nn NOT NULL,
jumin VARCHAR(13)
CONSTRAINT emp1_jumin_nn NOT NULL
CONSTRAINT emp1_jumin_uk UNIQUE,
loc_code NUMBER(1)
CONSTRAINT emp1_area_ck CHECK (loc_code < 5),
deptno VARCHAR2(6)
CONSTRAINT emp1_deptno_fk REFERENCES dept2(dcode)
);
* ์ ์ฝ ์กฐ๊ฑด์ ์ด๋ฆ์ ์ง์ ์ง์ & ๋ฏธ์ง์
์ ์ฝ ์กฐ๊ฑด (๋นํ์ฑํ/ํ์ฑํ/์ญ์ ) ๋ฅผ ์ํด์๋ ์ ์ฝ ์กฐ๊ฑด์ ์ด๋ฆ์ ์์์ผํ๋ฏ๋ก ์ง์ ์ง์ ํ๋ ๊ฒ์ ๊ถ์ฅ
์ง์ ์ง์ ํ์ง ์์ผ๋ฉด ์ค๋ผํด์ด ์๋์ผ๋ก ์ด๋ฆ์ ๊ฒฐ์ ํ๋ค.
no NUMBER(4) CONSTRAINT emp1_no_pk PRIMARY KEY,
no NUMBER(4) PRIMARY KEY
* ํ ์ด๋ธ ์์ฑ ํ ์ถ๊ฐ
ALTER TABLE new_emp2
ADD CONSTRAINT emp2_name_uk UNIQUE(name);
-- name ์ปฌ๋ผ์ ์ ๋ํฌ ํค ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ
[์ ์ฝ์กฐ๊ฑด ๊ด๋ฆฌํ๊ธฐ]
์ ์ฝ ์กฐ๊ฑด๋ค์ ์ผ์์ ์ผ๋ก DISABLE / ENABLE ๊ฐ๋ฅํ๋ค.
ex) ์ด๋ฏธ ๊ฒ์ฆ๋ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ ธ์์ ์ ๋ ฅํ ๊ฒฝ์ฐ
[DISABLE ํ๊ธฐ]
[ENABLE ํ๊ธฐ]
[์ ์ฝ ์กฐ๊ฑด ์กฐํํ๊ธฐ]
ํ ์ด๋ธ์ด ์ ์ฝ์กฐ๊ฑด์ , ๋์ ๋๋ฆฌ์ ์ ์ฅ๋์ด์๋ค.
SELECT owner, constraint_name, constraint_type, status
FROM user_constraints
WHERE table_name="NEW_EMP2"; --ํ
์ด๋ธ ์ด๋ฆ ๋๋ฌธ์
[์ ์ฝ ์กฐ๊ฑด ์ญ์ ํ๊ธฐ]
ALTER TABLE new_emp2
DROP CONSTRAINT emp2_name_fk;