[SQL] 테이블, 정규형

멋쟁이펭귄맨·2021년 8월 1일
0

이 게시글은 패스트캠퍼스의 '데이터베이스와 SQLD 합격패스 Online' 강의를 요약한 내용입니다.


1. 테이블 설계의 기초

  1. 관계형 테이터베이스에서 데이터를 관리 및 저장하는 장소
  2. 데이터를 효율적으로 관리하고 적절하게 관리하기 위한 2차원 표와 유사
  3. 테이블은 함수와 같아서, 기본키의 값을 입력하면 특정 출력 값이 나오는 구조이다.

1.1 집합을 나누는 방법

집합을 나누는 방법에 따라서 테이블은 여러개가 될 수 있다.

회원아이디회원명나이성별회원구분
sujilee이수지클래스프리미엄
kolee이경오속성프리미엄
yhyoon강윤희34일반
boralee강윤희38일반
ijlee이익재42프리미엄

위와 같은 집합이 있을 때, 회원 구분에 따라 TABLE을 나눌 수 있다.


일반회원 TABLE

회원아이디회원명나이성별회원구분
yhyoon강윤희34일반
boralee강윤희38일반

프리미엄 회원 TABLE

회원아이디회원명나이성별회원구분
sujilee이수지클래스프리미엄
kolee이경오속성프리미엄
ijlee이익재42프리미엄

1.2. 데이터베이스와 자바의 비교

데이터베이스자바
테이블클래스
속성
인스턴스
-메소드

1.3. 기본키의 중요성

  1. 기본키는 특정 집합에서 특정 행을 유일하게 식별할 수 있는 속성의 집합 (식별자)
  2. 기본키는 중복되면 안되며, 가급적이면 한 번 정해지면 변경하면 안된다.
  3. 반드시 기본키를 설정해야한다. 기본키 값은 NULL 허용 안됨
  4. 단, 업무상의 이유로 기본키가 없이 운영되는 TABLE도 있다.

회원 아이디라는 기본키가 없다면 아래의 '강윤희'는 구분되지 않을 것이다.

회원아이디회원명나이성별회원구분
sujilee이수지클래스프리미엄
kolee이경오속성프리미엄
yhyoon강윤희34일반
boralee강윤희38일반
ijlee이익재42프리미엄

2. 정규형

  1. 테이블을 정의하는 기본 형태
  2. 제대로 된 형태를 뜻함. 테이블 갱신 시 부정합이 발생하기 어려운 형태
  3. 정규형을 제대로 지키지 않은 경우를 정규화 위반 이라고 한다.

2.1 제 1정규형(1NF) 위반

  1. 테이블의 셀에 여러개의 값을 포함하지 않는다.
회원아이디회원명나이성별회원구분연락처
sujilee이수지클래스프리미엄010-1234-5678, 12340@NAVER.COM
kolee이경오속성프리미엄010-1234-5679, 12341@NAVER.COM
yhyoon강윤희34일반010-1234-5670, 12342@NAVER.COM
boralee강윤희38일반010-1234-5671, 12343@NAVER.COM
ijlee이익재42프리미엄010-1234-5672, 12344@NAVER.COM
  • 연락처 컬럼에 두 가지 값이 들어가 있다. 이 경우 제 1정규형 위반이다.
  • 위의 테이블을 나누어 관리하는 방법으로 제 1 정규형 위반을 해소할 수 있다.

2.2 제 2정규형(2NF) 위반

  1. 부분함수 종속성을 허용하지 않음
  2. 기본키를 구성하는 열의 일부에만 함수 종속이 존재하는 것
고객아이디주문번호주문일자고객명고객등급
11120210801이경오프리미엄
11220210801이경오프리미엄
11320210801이경오프리미엄
21420210801이수지일반
21520210801이수지일반

함수 종속성(Functional Dependency) 분석

  1. 주문일자는 고객아이디와 주문번호로 결정된다
    -> 부분함수 종속 아님, 즉 기본키를 구성하는 열 전부에 함수 종속성 존재

  2. 고객명은 고객아이디로만 결정된다.
    -> 부분함수 종속. 기본키를 구성하는 열의 일부에만 함수 종속성 존재 (제 2정규형 위반)

  3. 고객등급은 고객아이디로만 결정된다.
    -> 2와 도일

  • 위의 테이블을 나누어 관리하는 방법으로 제 2 정규형 위반을 해소할 수 있다. (고객아이디, 주문번호, 주문일자로만 이뤄진 테이블과 고객아이디, 고객명, 고객등급으로 이뤄진 테이블로 나뉘어 관리)

2.3 제 3정규형(3NF) 위반

  1. 기본 키를 제외한 일반 컬럼끼리 함수 종속이 발생
  2. 기본 키 이외의 키 간 발생하는 함수의 종속
고객아이디주문번호주문일자고객명고객등급나이직업코드직업명
11120210801이경오프리미엄36J001SQL개발자
11220210801이경오프리미엄36J001SQL개발자
11320210801이경오프리미엄36J001SQL개발자
21420210801이수지일반27J002변호사
21520210801이수지일반27J002변호사

함수 종속성(Functional Dependency) 분석

  1. 고객명은 고객아이디로 결정된다
    -> 부분함수 종속 아님, 즉 기본키를 구성하는 열 전부에 함수 종속성 존재

  2. 나이는 고객 아이디로 결정된다
    -> 1과 동일

  3. 직업명은 직업코드로 결정된다.
    -> 일반 컬럼인 직업코드에 함수 종속이 존재함. (제 3정규형 위반)

  • 위의 테이블을 나누어 관리하는 방법으로 제 3 정규형 위반을 해소할 수 있다. (직업코드 ,직업명으로 나뉜 별도의 테이블을 만듬)

profile
안녕하세요

0개의 댓글

관련 채용 정보