gwooden_코린이

오라클 데이터 베이스 정규화/정규형 본문

데이터베이스

오라클 데이터 베이스 정규화/정규형

gwooden22 2023. 1. 11. 11:34
728x90

1. 오라클 정규화/정규형

  • 데이터베이스 중복을 제거하다보면 이상현상이 생기게됨
    • 이상현상이 생기는걸 방지하기 위한 것
    • 이상현상 EX)
      • 공간낭비
      • 테이터중복
      • 갱신이상
      • 삽입이상
      • 삭제이상

 

- 제1정규화

  • 하나의 컬럼은 하나의 값만 가져야 한다 (원자값을 가진다)


 

- 제2정규화

  • 테이블에 연관없는 컬럼을 다른테이블로 옮기는 것
  • 한개 이상의 데이터(컬럼)들로 구성된 후보키가 없으면 제 2 정규형
  • PARTIAL DEPENDENCY를 제거한 테이블 -> 제2정규형




 


- 제3 정규화

  • 테이블이 제2정규형에 해당
  • 기본키가 아닌 모든 컬럼이 기본키에 이행적 함수 종속이 되지 않으면 제3정규형 테이블이 됨
    • 전이 의존성


테이블 만들기 CREATE

CREATE TABLE 고객(
    고객번호 NUMBER(4) PRIMARY KEY,
    이름 VARCHAR2(50),
    회원등급 VARCHAR2(50)
);

CREATE TABLE 구매현황 (
    고객번호 NUMBER(4),
    상품 VARCHAR2(50)
);

 

데이터 추가하기 INSERT INTO

INSERT INTO 구매현황 VALUES (1001, '셔츠');
INSERT INTO 구매현황 VALUES (1002, '바지');
INSERT INTO 구매현황 VALUES (1003, '바지');
INSERT INTO 구매현황 VALUES (1003, '반팔티');

 

테이블 수정 및 외래키 생성 

ALTER TABLE 구매현황
    ADD CONSTRAINT FK_고객번호 --제약조건 이름
    FOREIGN KEY(고객번호)
    REFERENCES 고객(고객번호) --참조할 테이블과 컬럼
    ON DELETE CASCADE; --기본키를 삭제하면 외래키도 삭제 되게 설정 UPDATE로 하면 수정
    
    ON DELETE SET NULL --다 지워지는게 아닌 NULL로 바뀜

 

외래키 설정은 엄격한 제약 설정이 필요할때만, 중요한 테이블일때 사용

 


정해진 구매내역을 토대로 정규화 작업 진행해보기

  • 쇼핑몰 -> DB (EX. 판매자, 회원 등)
  • 게시판 -> DB(게시판, 댓글, 추천 등)
  • 커피숍 -> DB
  • 등~
728x90
Comments