๐๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฌด๊ฒฐ์ฑ: ๊ฐ์ฒด, ์ฐธ์กฐ, ์์ฑ, ์ฌ์ฉ์, ํค | ๐์ ์ฒ๊ธฐ ์ค๊ธฐ ๋๋น ๋ฌธ์ ํฌํจ
์์ฝ
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ํ์ฑ๊ณผ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ 5๊ฐ์ง ๋ฌด๊ฒฐ์ฑ(๊ฐ์ฒด, ์ฐธ์กฐ, ์์ฑ, ์ฌ์ฉ์, ํค)์ ๊ฐ๋ ๊ณผ ์์๋ฅผ ์์๋ณด๊ณ , ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ ๋๋น ๋ฌธ์ ๋ก ํ์ต์ ๋ง๋ฌด๋ฆฌํฉ๋๋ค.
๐ก ์ ์ฒ๊ธฐ ์ค๊ธฐ ๋๋น๋ฅผ ์ํ ์ฃผ๊ด์ ๋ฌธ์ ๋ ํฌ์คํ ๋ง์ง๋ง์ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ๋ฒ ํธ๋ ๊ฑธ ๊ถ์ฅํฉ๋๋ค.
โ๏ธ์ค๋ช ์ ๋ณด๊ณ ์ด๋ค ๋ฌด๊ฒฐ์ฑ์ธ์ง ํ๋จํ๋๊ฒ ์ค์ํฉ๋๋ค.
๐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฌด๊ฒฐ์ฑ ์ข ๋ฅ ์์ฝ
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฌด๊ฒฐ์ฑ์ ๋ฐ์ดํฐ์ ์ ํ์ฑ, ์ผ๊ด์ฑ, ์ ํจ์ฑ์ ์ ์งํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ขฐ๋๋ฅผ ๋์ด๊ธฐ ์ํด ๋ค์ํ ์ ์ฝ์กฐ๊ฑด์ ์ฌ์ฉํฉ๋๋ค.
๊ตฌ๋ถ | ํต์ฌ ํค์๋ | ์ค๋ช |
---|---|---|
๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ | PRIMARY KEY | ๊ธฐ๋ณธํค๋ NULL ๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ๋ฆด๋ ์ด์
๋ด์์ ์ ์ผํด์ผ ํฉ๋๋ค. |
์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ | FOREIGN KEY | ์ธ๋ํค ๊ฐ์ ์ฐธ์กฐ ๋ฆด๋ ์ด์
์ ๊ธฐ๋ณธํค ๊ฐ์ด๊ฑฐ๋ NULL ์ด์ด์ผ ํฉ๋๋ค. |
์์ฑ(๋๋ฉ์ธ) ๋ฌด๊ฒฐ์ฑ | DOMAIN , CHECK , DEFAULT | ์์ฑ ๊ฐ์ ์ ์๋ ๋๋ฉ์ธ(๋ฐ์ดํฐ ํ์ , ๋ฒ์ ๋ฑ)์ ์ํด์ผ ํฉ๋๋ค. |
์ฌ์ฉ์ ๋ฌด๊ฒฐ์ฑ | TRIGGER | ์ฌ์ฉ์๊ฐ ๋น์ฆ๋์ค ๊ท์น์ ๋ง๊ฒ ์ง์ ์ ์ํ๋ ๋ฌด๊ฒฐ์ฑ ์กฐ๊ฑด์ ๋๋ค. |
ํค ๋ฌด๊ฒฐ์ฑ | UNIQUE | ํ๋์ ๋ฆด๋ ์ด์ ์ ๋์ผํ ํค ๊ฐ์ ๊ฐ์ง ํํ์ด ์กด์ฌํ ์ ์์ต๋๋ค. |
1. ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ (Entity Integrity)
๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ์ ๋ฆด๋ ์ด์ ์ ๋ชจ๋ ํํ(ํ)์ด ์๋ก ๊ตฌ๋ณ๋ ์ ์๋๋ก ๋ณด์ฅํ๋ ์ ์ฝ์กฐ๊ฑด์ ๋๋ค. ์ด๋ฅผ ์ํด ๊ธฐ๋ณธํค(Primary Key) ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๊ธฐ๋ณธํค๋ ๋ค์ ๋ ๊ฐ์ง ์กฐ๊ฑด์ ๋ฐ๋์ ๋ง์กฑํด์ผ ํฉ๋๋ค.
NULL
๊ฐ์ ๊ฐ์ง ์ ์์ต๋๋ค. (Not Null)- ๋ฆด๋ ์ด์ ๋ด์์ ์ ์ผํ ๊ฐ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค. (Unique)
- ์์:
ํ์
ํ ์ด๋ธ์์ํ๋ฒ
์ ๊ธฐ๋ณธํค๋ก ์ค์ ํ๋ฉด, ๋ชจ๋ ํ์์ ๊ณ ์ ํ ํ๋ฒ์ ๊ฐ์ ธ์ผ ํ๋ฉฐ ํ๋ฒ์ด ์๋ ํ์ ๋ฐ์ดํฐ๋ ์กด์ฌํ ์ ์์ต๋๋ค.
CREATE TABLE ํ์ (
ํ๋ฒ INT PRIMARY KEY,
์ด๋ฆ VARCHAR(50) NOT NULL,
์ ๊ณต VARCHAR(50)
);
2. ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ (Referential Integrity)
์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ๋ ๋ฆด๋ ์ด์
๊ฐ์ ๊ด๊ณ๊ฐ ํญ์ ์ ํจํ๋๋ก ๋ณด์ฅํ๋ ์ ์ฝ์กฐ๊ฑด์
๋๋ค. ์ธ๋ํค(Foreign Key) ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ๊ฐ์ ํ๋ฉฐ, ์ธ๋ํค๋ ์ฐธ์กฐํ๋ ๋ฆด๋ ์ด์
์ ๊ธฐ๋ณธํค ๊ฐ ์ค ํ๋์ด๊ฑฐ๋ NULL
๊ฐ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
- ์์:
์๊ฐ
ํ ์ด๋ธ์ํ๋ฒ
์ํ์
ํ ์ด๋ธ์ํ๋ฒ
์ ์ฐธ์กฐํ๋ ์ธ๋ํค์ ๋๋ค. ๋ฐ๋ผ์์๊ฐ
ํ ์ด๋ธ์ ์ ๋ ฅ๋๋ํ๋ฒ
์ ๋ฐ๋์ํ์
ํ ์ด๋ธ์ ์กด์ฌํ๋ ํ๋ฒ์ด์ด์ผ ํฉ๋๋ค. ์กด์ฌํ์ง ์๋ ํ์์ ์๊ฐ ์ ๋ณด๋ฅผ ์ ๋ ฅํ ์ ์์ต๋๋ค.
CREATE TABLE ์๊ฐ (
์๊ฐID INT PRIMARY KEY,
ํ๋ฒ INT,
๊ณผ๋ชฉ์ฝ๋ VARCHAR(10),
FOREIGN KEY (ํ๋ฒ) REFERENCES ํ์(ํ๋ฒ)
);
3. ์์ฑ(๋๋ฉ์ธ) ๋ฌด๊ฒฐ์ฑ (Attribute (Domain) Integrity)
์์ฑ(๋๋ฉ์ธ) ๋ฌด๊ฒฐ์ฑ์ ๋ฆด๋ ์ด์
์ ๊ฐ ์์ฑ(์ด) ๊ฐ์ด ์ ํจํ ๊ฐ์ ๋ฒ์(๋๋ฉ์ธ)์ ์ํ๋๋ก ๋ณด์ฅํ๋ ์ ์ฝ์กฐ๊ฑด์
๋๋ค. ๋ฐ์ดํฐ ํ์
, NULL
ํ์ฉ ์ฌ๋ถ, ๊ธฐ๋ณธ๊ฐ, CHECK
์ ์ฝ์กฐ๊ฑด ๋ฑ์ ํตํด ์ค์ ํ ์ ์์ต๋๋ค.
- ์์:
ํ์
ํ ์ด๋ธ์์์ฑ์
์์ฑ์ ๊ฐ์ 0์์ 4.5 ์ฌ์ด์ ์ซ์๋ง ํ์ฉํ๊ณ ,์ฑ๋ณ
์ '๋จ' ๋๋ '์ฌ'๋ง ์ ๋ ฅ๋๋๋ก ๊ฐ์ ํ ์ ์์ต๋๋ค.
CREATE TABLE ํ์ (
ํ๋ฒ INT PRIMARY KEY,
์ด๋ฆ VARCHAR(50) NOT NULL,
์ฑ๋ณ VARCHAR(2) CHECK(์ฑ๋ณ IN ('๋จ', '์ฌ')),
์ฑ์ DECIMAL(2, 1) CHECK(์ฑ์ BETWEEN 0.0 AND 4.5),
๋ฑ๋ก์ผ DATE DEFAULT CURRENT_DATE
);
4. ์ฌ์ฉ์ ๋ฌด๊ฒฐ์ฑ (User-Defined Integrity)
์ฌ์ฉ์ ๋ฌด๊ฒฐ์ฑ์ ํน์ ๋น์ฆ๋์ค ๊ท์น์ด๋ ์กฐ์ง์ ์ ์ฑ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉํ๊ธฐ ์ํด ์ฌ์ฉ์๊ฐ ์ง์ ์ ์ํ๋ ์ ์ฝ์กฐ๊ฑด์ ๋๋ค. ์ฃผ๋ก ํธ๋ฆฌ๊ฑฐ(Trigger) ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ๋ฉ๋๋ค.
- ์์:
์ํ
ํ ์ด๋ธ์์ ์ํ์ ์ฌ๊ณ ๊ฐ 10๊ฐ ๋ฏธ๋ง์ผ๋ก ๋จ์ด์ง๋ฉด, ์๋์ผ๋ก์ฌ์ฃผ๋ฌธ
ํ ์ด๋ธ์ ํด๋น ์ํ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ ๊ท์น์ ๋ง๋ค ์ ์์ต๋๋ค.
CREATE TRIGGER ์ฌ๊ณ ๋ถ์กฑ_์๋ฆผ
AFTER UPDATE ON ์ํ
FOR EACH ROW
BEGIN
IF NEW.์ฌ๊ณ < 10 THEN
INSERT INTO ์ฌ์ฃผ๋ฌธ (์ํ์ฝ๋, ์ฃผ๋ฌธ์์ฒญ์ผ) VALUES (NEW.์ํ์ฝ๋, NOW());
END IF;
END;
5. ํค ๋ฌด๊ฒฐ์ฑ (Key Integrity)
ํค ๋ฌด๊ฒฐ์ฑ์ ๋ฆด๋ ์ด์
์ ๋ชจ๋ ํํ์ด ๊ณ ์ ํ ํค ๊ฐ์ ๊ฐ๋๋ก ๋ณด์ฅํ๋ ์ ์ฝ์กฐ๊ฑด์
๋๋ค. ๊ธฐ๋ณธํค(Primary Key) ์ ์ฝ์กฐ๊ฑด์ ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ๊ณผ ํค ๋ฌด๊ฒฐ์ฑ์ ๋ชจ๋ ํฌํจํ์ง๋ง, UNIQUE
์ ์ฝ์กฐ๊ฑด์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธํค๊ฐ ์๋ ์์ฑ์๋ ์ ์ผ์ฑ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
- ์์:
ํ์
ํ ์ด๋ธ์์์ด๋ฉ์ผ
์ ๊ธฐ๋ณธํค๋ ์๋์ง๋ง, ๋ชจ๋ ํ์์ด ์๋ก ๋ค๋ฅธ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ๊ฐ๋๋กUNIQUE
์ ์ฝ์กฐ๊ฑด์ ์ค์ ํ ์ ์์ต๋๋ค.
CREATE TABLE ํ์ (
ํ์ID INT PRIMARY KEY,
์ด๋ฆ VARCHAR(50) NOT NULL,
์ด๋ฉ์ผ VARCHAR(100) UNIQUE NOT NULL
);
๐ ์ ์ฒ๊ธฐ ์ค๊ธฐ ๋๋น ๋ฌธ์
๋ฌธ์ | ๊ธฐ๋ณธํค๋ NULL ๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ๋ฆด๋ ์ด์ ๋ด์์ ์ ์ผํ ๊ฐ์ ๊ฐ์ ธ์ผ ํ๋ค๋ ์ ์ฝ์กฐ๊ฑด์ ๋ฌด์์ธ๊ฐ? |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |
๋ฌธ์ | ์ธ๋ํค ๊ฐ์ ์ฐธ์กฐํ๋ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธํค ๊ฐ์ด๊ฑฐ๋ NULL์ด์ด์ผ ํ๋ค๋ ์ ์ฝ์กฐ๊ฑด์ ๋ฌด์์ธ๊ฐ? |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |
๋ฌธ์ | ์์ฑ ๊ฐ์ด ๋ฏธ๋ฆฌ ์ ์๋ ๋ฐ์ดํฐ ํ์ ์ด๋ ๋ฒ์์ ์ํด์ผ ํ๋ค๋ ์ ์ฝ์กฐ๊ฑด์ ๋ฌด์์ธ๊ฐ? |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |
[ํ์]ํ ์ด๋ธ
ํ๋ฒ | ์ด๋ฆ | ์ ๊ณต |
---|---|---|
1001 | ๊น์ฒ ์ | ์ปดํจํฐ๊ณตํ |
1002 | ์ด์ํฌ | ์ํํธ์จ์ด๊ณตํ |
NULL | ๋ฐ๋ฏผ์ค | ์ ๋ณดํต์ |
๋ฌธ์ | ์ 'ํ์' ํ ์ด๋ธ์ ์ด๋ค ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์๋ฐํ๋๊ฐ?(๋จ ํ๋ฒ์ด ๊ธฐ๋ณธํค์ด๋ค.) |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |
๊ตฌ๋ถ | ( 1 ) ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด | ( 2 ) ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด | ( 3 ) ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด |
---|---|---|---|
์ ์ฝ ๋์ | ์์ฑ | ํํ | ์์ฑ๊ณผ ํํ |
๊ด๋ จ ํค | - | ๊ธฐ๋ณธํค | ์ธ๋ํค |
๋ฆด๋ ์ด์ ๋ด ์ ์ฝ์กฐ๊ฑด์ ๊ฐ์ | ์์ฑ์ ๊ฐ์์ ๋์ผ | 1๊ฐ | 0 ๊ฐ~์ฌ๋ฌ ๊ฐ |
๋ฌธ์ | ์ ํ์ 1, 2, 3 ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ๊ฐ๊ฐ ๋ฌด์์ธ๊ฐ? |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |