반응형
제1정규형
한 칸엔 하나의 데이터만 저장
제2정규형
현재 테이블의 주제와 관련없는 컬럼을 다른 테이블로 이동 시키는 것
composite primary key
- 두개 이상의 컬럼을 합치면, primary key 역할을 할 수 있는 컬럼
partial dependency를 제거한 테이블
- 하나의 composite primary key에 종속되는 컬럼을 다른 테이블로 제외 시키는 작업
단점으로는
해당 테이블 하나로는 데이터를 전부 표현할 수 없음
제3정규형
- 일반 컬럼에만 종속된 컬럼은 다른 테이블로 빼기
- 제2정규형에서 transitive dependency 제거
- 컬럼A라는 Primary key가 있다면 컬럼B는 컬럼A에 종속되고
- 컬럼C는 컬럼B에 종속이 된다면
- 컬럼C를 transitive dependency 라고 부른다
- 이 컬럼C를 다른 테이블로 빼는 것을 제3정규화라고 부른다
Foreign key
- 다른 테이블에 Primary key를 사용하는 컬럼
ALTER TABLE homework.program
ADD CONSTRAINT program_teacher_FK
FOREIGN KEY (강사) REFERENCES homework.teacher(id);
제3정규화를 거친 테이블 예제
create table 구매내역 (
id int,
유저id int,
상품id int,
수량 int,
구매날짜 date,
constraint 구매내역_pk primary key(id),
constraint 구매내역_유저_fk foreign key (유저id) references 유저(id),
constraint 구매내역_상품_kr foreign key (상품id) references 상품(id)
);
create table 유저 (
id int primary key,
아이디 varchar(100),
이름 varchar(100)
)
create table 상품 (
id int ,
상품명 varchar(100),
가격 int,
상품카테고리id int,
constraint 상품_pk primary key(id),
constraint 상품_상품카테고리_fk foreign key (상품카테고리id) references 상품카테고리(id)
)
create table 상품카테고리 (
id int primary key,
상품카테고리 varchar(100),
무료배송여부 boolean
)
광고
광고