๋ฌด๊ฒฐ์ฑ ์ ์ฝ(integrity constraint)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ํ์ค ์ธ๊ณ์ ์กด์ฌํ๋ ์ ๋ณด๋ค์ ๋ชจ์ ์์ด ๋ฐ์ํ๋ ์ฑ์ง
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ถ์ด์ผ ํ ์ ์ฝ ์กฐ๊ฑด์ ํญ์ ๋ง์กฑํ๋๋ก ๋ณด์ฅํ๋ ์ฑ์ง
โ
ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์ ์
- ํ์์ ํ๋์ ํ๊ณผ์ ์์๋๋ค
- ํ๋์ ๊ฐ์ข์๋ ํ ๋ช ์ ๋ด๋น๊ต์๊ฐ ๋ฐฐ์ ๋๋ค
- ํ๋์ ๊ต๊ณผ๋ชฉ์ ๊ฐ ํ๊ธฐ๋ง๋ค ๋ ๊ฐ์ข ์ดํ๋ง ๊ฐ์คํ ์ ์๋ค
โ
โ ํ์ค์ธ๊ณ์์ ์ง์ผ์ ธ์ผ ํ๋ ๊ท์ง์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ค๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๋๋ก ๊ฐ์ ํ๋ ์ญํ
โ
๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด์ ์ถฉ์กฑํ๊ธฐ ์ํ ๋ฐฉ๋ฒ
- ๋ฐ์ดํฐ๋ฅผ ์ฝ์ , ์ญ์ , ์์ ํ ๋๋ง๋ค ์ฌ์ฉ์ ์ฆ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ง์ ์ฃผ์ด์ง ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์ ๋ง์กฑ ์ฌ๋ถ๋ฅผ ๊ฒ์ฆ
โฝ ๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์์ ๊ฐ๋ณ์ ์ผ๋ก ์ด๋ฌํ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ ์ฝ๋๋ฅผ ์์ฑํด์ ์คํ
โฝ ๋ฐ์ดํฐ์ ์์ด ๋ฐฉ๋ํ๊ฑฐ๋ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ๋น๋๊ฐ ๋์ ๊ฒฝ์ฐ ๋งค์ฐ ๋ณต์กํ๊ณ ๋นํจ์จ์
โ
๋ฌด๊ฒฐ์ฑ ์ ์ฝ์ ์ ํ
๊ธฐ๋ณธํค ๋ฌด๊ฒฐ์ฑ ์ ์ฝ (primary key integrity constraint)
โ ๊ธฐ๋ณธํค๋ null ๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ๊ธฐ๋ณธํค์ ๊ฐ์ด ๋์ผํ ๋ ์ฝ๋๊ฐ ํ๋์ ํ ์ด๋ธ์ ๋์์ ๋ ๊ฐ ์ด์ ์กด์ฌํ ์ ์์
- ํ ์ด๋ธ์์ ๋ ์ฝ๋๋ค์ด ๋ฐ๋์ ์ ์ผํ๊ฒ ์๋ณ๋ ์ ์์ด์ผ ํ๋ค๋ ์กฐ๊ฑด
- ๊ฐ ๋ ์ฝ๋๊ฐ ํ์ค ์ธ๊ณ์์ ์๋ก ๊ตฌ๋ณ๊ฐ๋ฅํ ๊ฐ์ฒด๋ฅผ ๋ํ๋ผ ๊ฒฝ์ฐ ๋ฐ๋์ ํ์
ํ์ : constraint <์ ์ฝ์๋ช > primary key (<ํ๋ ๋ฆฌ์คํธ>)
โฝ <ํ๋ ๋ฆฌ์คํธ> : ๊ธฐ๋ณธํค๋ก ์ ์ํ ํ๋๋ค์ ๋ฆฌ์คํธ
create table student(
stu_id varchar2(10),
resident_id varchar2(14),
name varchar2(10),
year int,
address varchar2(10),
dept_id varchar2(10),
constraint pk_student primary key (stu_id) )
ํ ์ด๋ธ ์์ฑ ์ ๊ธฐ๋ณธํค๋ฅผ ์ค์ ํ์ง ์์๋ค๋ฉด
โ alter ํ ์ด๋ธ๋ฌธ์ ์ด์ฉํ์ฌ ๊ธฐ๋ณธํค๋ฅผ ๋ณ๋๋ก ์ค์ ๊ฐ๋ฅ
alter table student
add constraint pk_student primary key (stu_id)
์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ
โ ํ ํ ์ด๋ธ์ ๋ ์ฝ๋๊ฐ ๋ค๋ฅธ ํ ์ด๋ธ์ ์ฐธ์กฐ
- ์ฐธ์กฐ๋๋ ํ ์ด๋ธ์ ํด๋น ๋ ์ฝ๋๊ฐ ๋ฐ๋์ ์กด์ฌํ๊ฑฐ๋ null ๊ฐ์ ๊ฐ์ง
- ์ธ๋ํค ์กฐ๊ฑด๊ณผ ๋์ผ
- ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์ ์ธ๋ํค ์ ์์ ์ํด DBMS์์ ์๋์ ์ผ๋ก ๊ฒ์ฆ
ํ์ : constraint <์ ์ฝ์๋ช > foreign key (<ํ๋๋ฆฌ์คํธ1>) references <ํ ์ด๋ธ ์ด๋ฆ> (<ํ๋๋ฆฌ์คํธ2>)
โฝ <ํ๋๋ฆฌ์คํธ1> : ์ธ๋ํค๋ก ์ ์ํ๋ ํ๋๋ค์ ๋ฆฌ์คํธ
โฝ <ํ ์ด๋ธ ์ด๋ฆ> : ์ฐธ์กฐ ๋์์ธ ํ ์ด๋ธ์ ์ด๋ฆ
โฝ <ํ๋๋ฆฌ์คํธ2> : ์ฐธ์กฐ ๋์์ธ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค(์๋ต ๊ฐ๋ฅ)
โ
ํ ์ด๋ธ ์์ฑ ๋น์ ์ธ๋ํค๋ฅผ ์ค์ ํ์ง ์์๋ค๋ฉด
โ alter ํ ์ด๋ธ๋ฌธ์ ์ด์ฉํ์ฌ ์ธ๋ํค๋ฅผ ๋ณ๋๋ก ์ค์ ๊ฐ๋ฅ
alter table student
add constraint fk_dept foreign key (dept_id) references department (dept_id)
ํ ์ด๋ธ์ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ
โฝ ํ ์ด๋ธ์ ๊ฐ ํ๋์ ๋ํด ์ง์ผ์ผํ๋ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด์ ์ ์
- not null
- unique
- check
- default
โ
NOT NULL
โ ํน์ ํ๋์ ๋ํด์ null ๊ฐ์ ์ ๋ ฅ์ ๊ธ์งํด์ผ ํ๋ ๊ฒฝ์ฐ
- ๊ธฐ๋ณธํค๋ ์๋ null ๊ฐ์ ํ์ฉํ์ง ์์ผ๋ฏ๋ก, ๊ธฐ๋ณธํค๋ก ์ ์๋ ํ๋๋ not null ์กฐ๊ฑด์ ์ค์ ํ์ง ์์๋๋จ
โ
์)
create table student(
stu_id varchar2(10),
resident_id varchar2(14) not null,
name varchar2(10),
year int,
address varchar2(10),
dept_id varchar2(10)
)
UNIQUE
โ ํด๋น ํ๋๊ฐ ํ ์ด๋ธ ๋ด์์ ์ค๋ณต๋ ๊ฐ์ ๊ฐ์ง ์๊ณ ๋ฐ๋์ ์ ์ผํ ๊ฐ์ ๊ฐ๋๋ก ํ๋ ์ ์ฝ ์กฐ๊ฑด
- unique ์ ์ฝ์ ๋ถ์ฌํ ์ ์๋ ํ๋๋ค์ ํ ์ด๋ธ์ ํ๋ณดํค๊ฐ ๋ ์ ์์
- ๋จ, not null๋ก ์ง์ ๋์ง ์๋ ํ null ๊ฐ์ ์ ๋ ฅ์ ํ์ฉ
ํ์ : constraint <์ ์ฝ์๋ช > unique (<ํ๋ ๋ฆฌ์คํธ>)
- <์ ์ฝ์๋ช > : unique ์ ์ฝ์ ์ด๋ฆ
- <ํ๋ ๋ฆฌ์คํธ> : unique ์ ์ฝ์ ์ค์ ํ ํ๋๋ค์ ๋ฆฌ์คํธ
โ
์)
create table student(
stu_id varchar2(10),
resident_id varchar2(14),
...
constraint uc_rid unique (resident_id)
)
unique ์ ์ฝ์ ๋ณ๋๋ก ์ง์
alter table student
add constraint uc_rid unique (resident_id)
unique ์ ์ฝ ์ค์ ํด์
alter table student drop constraint uc_rid
CHECK
- ๋๋ฉ์ธ ์ ์ฝ(domain constraint)
- ๊ฐ ํ๋์ ๊ฐ์ ์ ์๋ ๋๋ฉ์ธ์ ์ํ ๊ฐ๋ง ํ์ฉ
- CHECK
โฝ ํ๋๋ฅผ ์ ์ํ ๋ ์ฃผ์ด์ง ๋ฐ์ดํฐ ํ์ ์ด์ธ์๋ ์ข ๋ ์ธ๋ถ์ ์ผ๋ก ํ์ฉํ ์ ์๋ ๊ฐ์ ๋ฒ์๋ฅผ ์ง์
ํ์ : constraint <์ ์ฝ์๋ช > check (<์กฐ๊ฑด์>)
โ
์)
create table student(
stu_id varchar2(10),
resident_id varchar2(14),
name varchar2(10),
year int,
address varchar2(10),
dept_id varchar2(10),
constraint chk_year cheak(year >= 1 and year <= 4)
)
check ์ ์ฝ์ ๋ณ๋๋ก ์ง์
alter table student
add constraint chk_year check(year >= 1 and year <= 4)
check ์ ์ฝ์ ํด์
alter table student drop constraint chk_year
DEFAULT
โ ๋ ์ฝ๋๋ฅผ ์ฝ์ ํ ๋, ํ๋์ ๋ํ ๊ฐ์ด ์ ํด์ง์ง ์์ ๊ฒฝ์ฐ ์ฌ์ ์ ์ ํด๋์ ๊ฐ์ด ์ ๋ ฅ๋๋๋ก default๊ฐ์ ์ค์
- null ๊ฐ ๋์ ์ ์ง์ ๋ ๊ฐ์ด ์๋์ ์ผ๋ก ์ ์ฅ๋จ
์)
create table student(
stu_id varchar2(10),
resident_id varchar2(14),
name varchar2(10),
year int default 1,
address varchar2(10),
dept_id varchar2(10)
)
default ์ ์ฝ์ ๋ณ๋๋ก ์ง์
alter table student
alter column year set default 1
default ์ ์ฝ ํด์
alter table student
alter column year drop default
๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์ค์ ์ ์ ์์
โ ์ง๋์น๊ฒ ๋ง์ ์ ์ฝ์กฐ๊ฑด๋ค์ด ์กด์ฌํ ๊ฒฝ์ฐ ์์ธ์ ์ธ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ๋ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์
โ ๊ฐ ๋ ์ฝ๋์ ๋ํ ์ฝ์ , ์ญ์ , ์์ ์ฐ์ฐ์ ํ ๋ DBMS๊ฐ ์ ์๋ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ๋ค์ด ๋ชจ๋ ๋ง์กฑํ๋์ง ๊ฒ์ฆ
โ
Assertion
ํ์ : create assertion <assertion ์ด๋ฆ> check <์กฐ๊ฑด์>
โ
์์ฉ ํ๋ก๊ทธ๋จ์์์ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ง์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์คํ