스퐁지송 개발노트

데이터베이스 정규화 해보기 예제 본문

DATABASE

데이터베이스 정규화 해보기 예제

강준석 2023. 1. 11. 15:33
728x90

오라클로 테이블 만들고 데이터 넣기

create table 고객(
    고객번호 number(4) primary key,
    이름 varchar2(50),
    회원등급 varchar2(50)
);
create table 구매현황 (
    고객번호 number(4),
    상품 varchar2(50) --var = 가변형으로 2 = 2000btye -> 4000byte로
    
);

--코드로 테이블에 데이터 넣기
insert into 구매현황 values (1001,'셔츠');
insert into 구매현황 values (1002,'바지');
insert into 구매현황 values (1003,'바지');
insert into 구매현황 values (1004,'반팔티');

 

외래키 지정해주기

--외래키 지정해주기
alter table 구매현황 --구매현황 테이블을 수정해줄꺼다
    add constraint fk_고객번호 -- 제약조건 이름지정 
    foreign key(고객번호) -- 구매현황테이블의 고객번호를 외래키로 지정
    REFERENCES 고객고객번호) -- 고객테이블의 고객번호를 참조하는
    on delete cascade; --기본키가 지워지면 외래키도 따라서 지워져라
    (지정해주지않으면 기본적설정으로 안지워짐 막혀있음)

 

정규화 적용전

<구매내역>

아이디 이름 상품명 상품카테고리 구매수량 구매일자 가격 무료배송여부
qwe 티모 청바지 하의 2 1월1일 8000 o
asd 마이 반바지 하의 1 1월2일 5000 o
zxc 베인 반팔티 상의 3 1월2일 6000 x

 

정규화 기본 조건(예시)

상품카테고리상품명에 의해 결정됨

무료배송여부상품카테고리에 의해 결정됨

가격은 상품1개의 가격임

 

정규화 적용

<상품카테고리>테이블

상품명(PK) 상품카테고리(FK) 가격 무료배송여부
청바지 하의 8000 O
반바지 하의 5000 O
반팔티 상의 6000 X

 

<무료배송여부> 테이블

상품카테고리(PK) 무료배송여부
하의 O
상의 X

 

<회원정보>테이블

아이디(PK) 이름
qwe 티모
asd 마이
zxc 베인

 

<구매내역>테이블

아이디(FK) 상품명 구매수량 구매일자
qwe 청바지 2 1월1일
asd 반바지 1 1월2일
zxc 반팔티 3 1월2일

 

TIP : 테이블안에서 없어도 다른 데이터로 의미을 유추할 수 있는 데이터가 있으면 뺄수있지만

        연관된 유추 가능한 데이터가 없으면 테이블에서 뺄 수 없다

 

 

 

728x90
Comments