정의되지 않은 값
빈 값 대신 미정 값을 부여할 때 사용
PK는 불가능, FK 가능, UK 가능
NOT NULL 제약조건
- ALTER TABLE [테이블명] MODIFY NOT NULL
NOT NULL 제약조건 삭제
- ALTER TABLE [테이블명] DROP CONSTRAINT [제약조건 이름]
조건식에서 NULL사용
컬럼명 IS NULL : 컬럼값이 NULL이면 참
컬럼명 IS NOT NULL : 컬럼값이 NULL이 아니면 참
NULL 값을 다른 값으로 변경
NVL(컬럼명, 값) : NULL 값 대신에 다른 값으로 변경 후 조회
NVL2(컬럼명,'NULL이 아닐 때 값','NULL일 때 값') :NULL일 때의 값, NULL이 아닐 때의 값을 각각 설정한다.
=================================
삽입/수정/삭제의 이상현상을 제거하기 위한 작업
데이터의 중복을 최소화하는 데에 목적이 있다.
6차 정규화까지 있으나 3차 정규화까지만 진행한다.
상품명
바지1, 바지2, 바지3
행을 늘리면 된다.
상품명
바지1
바지2
바지3
2차 정규화
조합키(복합키)로 구성되었을 경우 조합키의 일부분에만 종속되는 속성이 있을 경우
이름만으로 과를 알 수 있다.
FLOWER
이름P 색상P 꽃말 과
해바라기 노란색 행운 국화
장미 빨간색 사랑 장미
2차 정규화 진행
FLOWER
이름P 색상P 꽃말
해바라기 노란색 행운
장미 빨간색 사랑
FLOWER_TYPE
이름P 과
해바라기 국화
장미 장미
3차 정규화
PK가 아닌 컬럼이 다른 컬럼을 결정하는 경우
회원번호 이름 시 구 동 우편번호
1 한동석 남양주 화도읍 구암리 12345
2 홍길동 서울시 관악구 신림동 45454
우편번호가 다른 컬럼들을 결정해버림.
우편번호 시 구 동
12345 남양주 화도읍 구암리
45454 서울시 관악구 신림동
===============================
데이터베이스를 잘못 설계하면 불필요한 데이터 중복으로 인해 공간이 낭비된다.
이러한 현상을 이상(Anomaly)현상이라고 한다.
회원번호와 프로젝트코드 두 컬럼의 조합키로 설정되어 있는 테이블이고, 한 사람은 하나의 부서만 가질수 있다.
삽입이상
새로운 데이터를 삽입하기 위해 불필요한 데이터도 삽입해야하는 문제
담당 프로젝트가 정해지지 않은 사원이 있다면,
프로젝트 코드에 null을 작성할 수 없으므로 이 사원은 테이블에 추가될 수 없다.
따라서 '미정'이라는 프로젝트 코드를 따로 만들어서 삽입해야 한다.
갱신이상
중복 행 중에서 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제.
한명의 사원은 반드시 하나의 부서에만 속할 수 있다.
만약 '한동석'이 보안팀으로 부서를 옮길 시 3개 모두 갱신해주지 않는다면 개발팀인지 보안팀인지 알 수 없다.
삭제 이상
행을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 문제
'이순신'이 담당한 프로젝트를 박살내서 드랍되면 '이순신'행을 모두 삭제하게 된다.
따라서 프로젝트에서 드랍되면 정보를 모두 드랍하게 된다.
이러한 이상 현상이 발생하는 이유는 테이블이 정규화 되어있지 않기 때문이다.
정규화를 진행하기 위해서는 각 컬럼간의 관련성을 파악해야하고, 이 관련성을 함수적 종속성(Functional Dependency)라고 한다. 따라서 하나의 테이블에서는 반드시 하나의 함수적 종속성만 존재하도록 정규화를 진행한다.
==================================
2차 정규화 진행
================================
3차 정규화 진행
===============================================