etc_index
ํด๋ฌ์คํฐ๋ง ์ธ๋ฑ์ค
ํด๋ฌ์คํฐ๋ง ์ธ๋ฑ์ค๋ PK์๋ง ์ ์ฉ๋๋ ๋ด์ฉ์ผ๋ก, ์ฆ PK ๊ฐ์ด ๋น์ทํ ๋ ์ฝ๋๋ผ๋ฆฌ ๋ฌถ์ด์ ์ ์ฅํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ฌ๊ธฐ์ ์ ์ฅ๋๋ ์์น๋ ์ค์ ๋ฌผ๋ฆฌ์ ์ธ ์ ์ฅ ์์น๋ฅผ ์๋ฏธํ๋ฉฐ, ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ์ ํด๋น ๋ ์ฝ๋์ ๋ฌผ๋ฆฌ์ ์ธ ์์น๋ ๋ณ๊ฒฝ๋์ด์ผ ํ๋ค.
ํ ์ด๋ธ ๊ตฌ์กฐ ์์ฒด๋ ์ผ๋ฐ B-Tree์ ๋น์ทํ์ง๋ง, ํด๋ฌ์คํฐ๋ง ์ธ๋ฑ์ค์ ๋ฆฌํ๋ ธํธ์๋ ๋ ์ฝ๋์ ๋ชจ๋ ์ปฌ๋ผ์ด ์ ์ฅ๋๋ค. ํด๋ฌ์คํฐ๋ง ํ ์ด๋ธ์ ๊ทธ ์์ฒด๊ฐ ํ๋์ ๊ฑฐ๋ํ ์ธ๋ฑ์ค ๊ตฌ์กฐ๋ก ๊ด๋ฆฌ๋๋ฉฐ, PK ๊ฐ์ด ์๋ ๊ฒฝ์ฐ์ ์๋์ ๊ท์น์ผ๋ก PK๋ฅผ ์์ฑํ๋ค.
์ง์ ๋ PK๋ฅผ ์ฌ์ฉ
PK๊ฐ ์๋ค๋ฉด NOT NULL + ์ ๋ํฌ ์ธ๋ฑ์ค ์ค ์ฒซ ๋ฒ์งธ ์ปฌ๋ผ์ PK๋ก ์ฌ์ฉ
๋ ๋ค ํด๋นํ์ง ์๋๋ค๋ฉด AUTO_INCREMENT๋ฅผ ์ฌ์ฉํ ์ ๋ํฌ ์ปฌ๋ผ์ ์ถ๊ฐํ์ฌ PK๋ก ์ฌ์ฉ(๋ ธ์ถ๋์ง ์์ผ๋ฉฐ ์ฟผ๋ฆฌ์์ ์ฌ์ฉ ๋ถ๊ฐ๋ฅ)
์ธ์ปจ๋๋ฆฌ ์ธ๋ฑ์ค๊ฐ PK๋ฅผ ์ฐธ์กฐํ๋ ์ด์
InnoDB์์๋ ์ธ์ปจ๋๋ฆฌ ์ธ๋ฑ์ค์์ ์ค์ ๋ ์ฝ๋๊ฐ ์๋, PK๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ค. ๋ง์ฝ PK๊ฐ ์๋ ์ค์ ๋ ์ฝ๋ ์ฃผ์๋ฅผ ์ฐธ์กฐํ์ ๊ฒฝ์ฐ ์๋์ ์ด์ ๋ก ์ฑ๋ฅ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
์ธ์ปจ๋๋ฆฌ ์ธ๋ฑ์ค์์ ์ค์ ๋ ์ฝ๋ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์์
์ค์ ๋ ์ฝ๋ ์ฃผ์์ PK๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ ์ฝ๋์ ์ฃผ์๊ฐ ๋ณ๊ฒฝ๋์ด์ผ ํจ(ํด๋ฌ์คํฐ๋ง ๋ ์ํ์ฌ์ผ ํ๊ธฐ ๋๋ฌธ)
๊ทธ๋๋ง๋ค ํด๋น ํ ์ด๋ธ์ ๋ชจ๋ ์ธ๋ฑ์ค์ ๋ํด ๋ณ๊ฒฝ ์์ ์ด ์ํ๋์ด์ผ ํจ
์ค๋ฒํค๋ ๋ฐ์
PK๋ฅผ ํด๋ฌ์คํฐ๋ง ์ธ๋ฑ์ค๋ก ์ฌ์ฉํ๋ ์ด์
PK๋ฅผ ํด๋ฌ์คํฐ๋ง ์ธ๋ฑ์ค๋ก ์ฌ์ฉํ๋ ์ด์ ๋ ์ฝ๊ธฐ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํจ์ด๊ณ , ๊ทธ ์ฅ๋จ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
์ฅ์
PK๋ก ๊ฒ์ํ ๋ ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ณด์ฅ
ํ ์ด๋ธ์ ๋ชจ๋ ์ธ์ปจ๋๋ฆฌ ์ธ๋ฑ์ค๊ฐ PK๋ฅผ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๋ง์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์
๋จ์
ํ ์ด๋ธ์ ๋ชจ๋ ์ธ์ปจ๋๋ฆฌ ์ธ๋ฑ์ค๊ฐ PK๋ฅผ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ PK ๊ฐ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์ธ์ปจ๋๋ฆฌ ์ธ๋ฑ์ค์ ํฌ๊ธฐ๋ ์ปค์ง
์ธ์ปจ๋๋ฆฌ ์ธ๋ฑ์ค๋ฅผ ํตํ ์กฐํ ์ PK๋ก ๋ค์ ํ ๋ฒ ์กฐํํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์์
๋ฐ์ดํฐ ์ถ๊ฐ ๋ฐ ๋ณ๊ฒฝ ์ PK์ ์ํด ๋ ์ฝ๋ ์ ์ฅ ์์น๊ฐ ๋ณ๊ฒฝ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ด ๋๋ฆผ
์ ๋ํฌ ์ธ๋ฑ์ค
ํ ์ด๋ธ์ด๋ ์ธ๋ฑ์ค์ ๊ฐ์ ๊ฐ์ด 2๊ฐ ์ด์ ์ ์ฅ๋ ์ ์๊ฒ ํ๋ ์ ์ฝ์ ์๋ฏธํ๋ฉฐ, MySQL์์๋ ์ธ๋ฑ์ค ์์ด ์ ๋ํฌ ์ ์ฝ๋ง ์ค์ ํ ๋ฐฉ๋ฒ์ด ์๋ค. ์ ์ผํ๋ค๋ ์ ์์ PK์ ์ ์ฌํ์ง๋ง, ๋ค์๊ณผ ๊ฐ์ ์ฐจ์ด์ ์ด ์กด์ฌํ๋ค.
PK๋ NULL์ ํ์ฉํ์ง ์์ง๋ง, ์ ๋ํฌ ์ธ๋ฑ์ค๋ NULL์ ํ์ฉ
ํด๋ฌ์คํฐ๋ง ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์์(= ๋ ผํด๋ฌ์คํฐ๋ง ์ธ๋ฑ์ค)
์ ๋ํฌ ์ธ๋ฑ์ค๋ ์ผ๋ฐ ์ธ๋ฑ์ค์ ๋์ผํ ์ญํ ์ ์ํํ์ง๋ง, ์ฝ๊ธฐ์ ์ฐ๊ธฐ์ ์์ด์๋ ์ผ๋ฐ ์ธ๋ฑ์ค์ ๋ค์๊ณผ ๊ฐ์ ์ฐจ์ด์ ์ด ์กด์ฌํ๋ค.
์ฝ๊ธฐ: ์ฝ๋ ๊ฑด์๊ฐ ๊ฐ๋ค๋ฉด ๋์ผํ ์๋๋ก ์ฒ๋ฆฌ
์ฐ๊ธฐ: ์ผ๋ฐ์ ์ธ ์ธ๋ฑ์ค ์ฐ๊ธฐ ์์ ์ ์ถ๊ฐ์ ์ผ๋ก ์ค๋ณต ์ฒดํฌ ๊ณผ์ ์ด ์ํ๋์ด ์ฑ๋ฅ ์ ํ ๋ฐ์
์ค๋ณต๊ฐ ์ฒดํฌ ์์ ์ฝ๊ธฐ ์ ๊ธ & ์ฐ๊ธฐ ํ ๋ ์ฐ๊ธฐ ์ ๊ธ์ด ์ฌ์ฉ๋์ด ๋ฐ๋๋ฝ์ด ๋ฐ์ํ ์ ์์
์ธ๋ํค
์ธ๋ํค ์ ์ฝ์ด ์ค์ ๋๋ฉด ์๋์ผ๋ก ์ฐ๊ด๋๋ ํ ์ด๋ธ์ ์ปฌ๋ผ์ ์ธ๋ฑ์ค๊ฐ ์์ฑ๋๋ฉฐ, InnoDB์์๋ ๋ ๊ฐ์ง ์ค์ํ ํน์ง์ด ์๋ค.
ํ ์ด๋ธ์ ๋ณ๊ฒฝ(์ฐ๊ธฐ ์ ๊ธ)์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ์๋ง ์ ๊ธ ๋๊ธฐ๊ฐ ๋ฐ์ํ๋ค.
์ธ๋ํค์ ์ฐ๊ด๋์ง ์์ ์ปฌ๋ผ์ ๋ณ๊ฒฝ์ ์ต๋ํ ์ ๊ธ ๋๊ธฐ๋ฅผ ๋ฐ์์ํค์ง ์๋๋ค.
ํ ์ด๋ธ๊ณผ ๋ ์ฝ๋๊ฐ ์๋์ ๊ฐ์ด ์์ฑ๋์ด ์์ ๋, ์์/๋ถ๋ชจ ํ ์ด๋ธ์ ๋ณ๊ฒฝ ๋๊ธฐ์ ๋ํด ์์๋ณด์.
์์ ํ
์ด๋ธ์ ๋ณ๊ฒฝ ๋๊ธฐ
BEGIN;
UPDATE tb_parent SET fd='changed-2' WHERE id=2;
BEGIN;
UPDATE tb_child SET pid=2 WHERE id=100;
ROLLBACK;
์ปค๋ฅ์ 1 ๋๊ธฐ
COMMIT;
1๋ฒ ์ปค๋ฅ์ ์์ id 2์ธ ๋ ์ฝ๋์ ๋ํด ์ฐ๊ธฐ ์ ๊ธ์ ํ๋
2๋ฒ ์ปค๋ฅ์ ์์ ์์ ํ ์ด๋ธ์ ์ธ๋ํค ์ปฌ๋ผ(pid)์ pid 2๋ก ๋ณ๊ฒฝํ๋ ์ฟผ๋ฆฌ ์คํ
๋ถ๋ชจ ํ ์ด๋ธ์ ๋ณ๊ฒฝ ์์ ์ด ์๋ฃ๋ ๋๊น์ง 2๋ฒ ์ปค๋ฅ์ ์ ๋๊ธฐ
์์ ํ ์ด๋ธ์ ์ธ๋ ํค ์ปฌ๋ผ์ ๋ถ๋ชจ ํ ์ด๋ธ์ ํ์ธ์ด ํ์ํ๋ฏ๋ก, ๋ถ๋ชจ ํ ์ด๋ธ์ ํด๋น ๋ ์ฝ๋๊ฐ ์ฐ๊ธฐ ์ ๊ธ์ด ๊ฑธ๋ ค ์์ผ๋ฉด ํด๋น ์ฐ๊ธฐ ์ ๊ธ์ด ํด์ ๋ ๋๊น์ง ๋๊ธฐํ๊ฒ ๋๋ค. ํ์ง๋ง ์์ ํ ์ด๋ธ์ ์ธ๋ํค(pid)๊ฐ ์๋ ์ปฌ๋ผ์ ๋ถ๋ชจ ํ ์ด๋ธ์ ๋ณ๊ฒฝ ์ฌ๋ถ์ ์๊ด์์ด ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.
๋ถ๋ชจ ํ
์ด๋ธ์ ๋ณ๊ฒฝ ๋๊ธฐ
BEGIN;
UPDATE tb_child SET fd='changed-100' WHERE id=100;
๋ถ๋ชจํค 1์ ์ฐธ์กฐํ๋ ์์ ํ
์ด๋ธ ๋ ์ฝ๋์ ์ ๊ทผ
BEGIN;
DELETE FROM tb_parent WHERE id=1;
ROLLBACK;
์ปค๋ฅ์ 1 ๋๊ธฐ
COMMIT;
1๋ฒ ์ปค๋ฅ์ ์์ ๋ถ๋ชจํค 1์ ์ฐธ์กฐํ๋ ์์ ํ ์ด๋ธ ๋ ์ฝ๋์ ๋ํด ์ฐ๊ธฐ ์ ๊ธ ํ๋
2๋ฒ ์ปค๋ฅ์ ์์ ๋ถ๋ชจ ํ ์ด๋ธ์ id 1์ ๋ํด ์ญ์ ํ๋ ์ฟผ๋ฆฌ ์คํ
์์ ํ ์ด๋ธ์ ๋ณ๊ฒฝ ์์ ์ด ์๋ฃ๋ ๋๊น์ง 2๋ฒ ์ปค๋ฅ์ ์ ๋๊ธฐ
์์ ํ
์ด๋ธ์ด ์์ฑ๋ ๋ ์ ์๋ ์ธ๋ํค ํน์ฑ(ON DELETE CASCADE
) ๋๋ฌธ์ ๋๊ธฐํ๋ ๊ฒ์ผ๋ก,
๋ถ๋ชจ ํ
์ด๋ธ์ ๋ ์ฝ๋๊ฐ ์ญ์ ๋๋ฉด ์์ ํ
์ด๋ธ์ ๋ ์ฝ๋๋ ํจ๊ป ์ญ์ ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ ์ธ
์ ๋ฌธ ๊ฒ์ ์ธ๋ฑ์ค / ๋ฉํฐ ๋ฐธ๋ฅ ์ธ๋ฑ์ค / ํด๋ฌ์คํฐ๋ง ์ธ๋ฑ์ค / R-Tree ์ธ๋ฑ์ค / ํจ์ ๊ธฐ๋ฐ ์ธ๋ฑ์ค ๋ฑ์ด ์กด์ฌํ๋ค.
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?