Search

์™ธ๋ž˜ํ‚ค

์™ธ๋ž˜ํ‚ค(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
์•„๋ฌด๋Ÿฐ ์ฒ˜๋ฆฌ๋„ ํ•˜์ง€ ์•Š์Œ