์ธ๋ํค(Foreign Key)
์ ์
ํ ํ
์ด๋ธ์ ํ๋ ์ค ๋ค๋ฅธ ํ
์ด๋ธ์ ๊ธฐ๋ณธํค๋ฅผ ์ฐธ์กฐํ๋ ํ๋์
๋๋ค.
ํน์ง
โข
์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅ: ์ธ๋ํค๊ฐ ์ฐธ์กฐํ๋ ๊ธฐ๋ณธํค ๊ฐ์ด ์กด์ฌํ์ง ์๋ ๋ฐ์ดํฐ๋ ์
๋ ฅํ ์ ์์
โข
ํ
์ด๋ธ ๊ฐ์ ๊ด๊ณ ์ ์: ๋ถ๋ชจ ํ
์ด๋ธ๊ณผ ์์ ํ
์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ช
์์ ์ผ๋ก ์ ์ธ
โข
CASCADE ์ต์
์ง์: ๋ถ๋ชจ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์์ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ ์๋์ผ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ
โข
NULL ๊ฐ ํ์ฉ: ์ธ๋ํค ํ๋๋ NULL ๊ฐ์ ๊ฐ์ง ์ ์์
์ฝ๋
์์ฑ
CREATE TABLE board (
board_id INT PRIMARY KEY,
title VARCHAR(255) NOT NULL
);
CREATE TABLE reply (
reply_id INT PRIMARY KEY,
board_id INT,
content TEXT,
FOREIGN KEY (board_id) REFERENCES board(board_id)
);
SQL
๋ณต์ฌ
์์
-- ์ธ๋ํค ์ ์ฝ์กฐ๊ฑด ์ญ์ ํ ์ฌ์์ฑ
ALTER TABLE reply
DROP FOREIGN KEY fk_constraint_name;
ALTER TABLE reply
ADD CONSTRAINT fk_new_name
FOREIGN KEY (user_id) REFERENCES users(id);
SQL
๋ณต์ฌ
์ญ์
-- ์ธ๋ํค ์ ์ฝ์กฐ๊ฑด ์ญ์
ALTER TABLE reply
DROP FOREIGN KEY fk_constraint_name;
SQL
๋ณต์ฌ
์ฐธ๊ณ : ์ธ๋ํค ์ ์ฝ์กฐ๊ฑด์ ์ด๋ฆ์ SHOW CREATE TABLE ๋ช
๋ น์ด๋ก ํ์ธํ ์ ์์ต๋๋ค.
์ธ๋ํค ์ต์ ํค์๋
์ธ๋ํค๋ฅผ ์ง์ ํ๊ณ ON UPDATE, ON DELETE ํค์๋๋ก ๋ถ๋ชจ ํ
์ด๋ธ ์์ ์, ์ญ์ ์์ ๋ฐ๋ผ ์ฐธ์กฐ(์์) ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ต์
์ ์ง์ ํ ์ ์์ต๋๋ค.
์ต์
ํค์๋ | ์ค๋ช
|
CASCADE | ์ฐธ์กฐ๋ ํ์ด ์์ /์ญ์ ๋๋ฉด ํด๋น ์ธ๋ํค๋ฅผ ๊ฐ์ง ํ๋ ํจ๊ป ์์ /์ญ์ ๋จ |
SET NULL | ์ฐธ์กฐ๋ ํ์ด ์์ /์ญ์ ๋๋ฉด ์ธ๋ํค ์ปฌ๋ผ ๊ฐ์ NULL๋ก ์ค์ |
RESTRICT | ์ฐธ์กฐ๋ ํ์ด ์ฌ์ฉ ์ค์ด๋ฉด ์์ /์ญ์ ๋ฅผ ๊ฑฐ๋ถํจ (์ฆ, ์์ ๋ ์ฝ๋๊ฐ ์์ผ๋ฉด ๋ถ๊ฐ) |
NO ACTION | ์๋ฌด๋ฐ ์ฒ๋ฆฌ๋ ํ์ง ์์ |