19.05.03 테이블의 개념과 정규형

Back-End/Data Base 2019. 5. 3. 23:31
728x90
반응형

-테이블 이란?-

 

각각의 행이 어떤 공통적인 특징을 가진 집합이어야 한다.

또한 테이블은 현실 세계를 반영한다. ('개념' 이나 '집합' 으로)

 

 

 

-열 이란?-

 

개체의 속성을 의미한다.

 

 

 

-기본키-

 

테이블 안에 있는 객체를 구분할 수 있는 키.

또한 기본키는 중복되거나 NULL 값이 올 수 없다. (다른 객체를 구분할 수 없기 때문)

그리고 기본키는 값이 바뀌면 곤란하다. (변경 후 값의 유일성을 보증할 수 없고, 과거 데이터와의 결합이 어렵다.)

 

 

 

-정규형-

 

데이터의 갱신이 발생한 경우에도 부정합이 발생하기 어려운 테이블의 형태 (이상현상을 방지하기 위해 테이블을 무손실 분해하는것)

 

 

 

-제 1정규형-

 

테이블 셀에 복합적인 값을 포함하지 않는다 (하지만 관계형 데이터베이스에서는 이 정의에 반하는 테이블을 작성하는 것이 기술적으로 불가)

복합적인 값을 셀에 넣으면 기본키가 행의 값을 고유하게 특정할 수 없기 때문.

 

 

-비 제1정규형 테이블-

 

사원 ID 

이름 

나이 

성별 

피부양자 

S001

김미경 

38 

여 

박초롱 

S002 

박유안 

30 

남 

박안나 

S003 

이관식 

62 

남 

(이수빈, 이수인) 

 

 

 

-함수 종속성-

 

기본키와 다른 열 사이에 성립하는 함수적인 유일성을 관계형 데이터베이스에서는 '함수 종속성' 이라고 하며 다음과 같이 열을

중괄호 ({ })로 감싸서 화살표(->)로 연결해 표현 합니다.

 

 

  {사원 ID} -> {이름}

 

 

 

 

-제 2정규형-

 

제 1정규형을 만족하고 부분함수 종속성을 제거한 정규형을 말한다.

(기본키는 현재 고객 기업 ID와 주문번호 인데, 고객기업 ID만으로도 기업명과 고객 기업규모를 특정할수 있어 주문번호 열이 쓸데없는 값이 되기 때문)

이와 같은 부분함수 종속이 존재할 경우 해당 키와 종속하는 열만 다른 테이블로 만들어 외부로 꺼내야 합니다.

비정규형 테이블을 사용할 때 같은 내용의 행이 복수 행 존재할수 있으므로 일부가 잘못 등록될 위험이 있기 때문에 제 2정규형을 사용한다.

 

-비 제2정규형 테이블-

 

고객기업 ID 

주문번호 

주문접수일 

고객기업명 

고객기업 규모 

CA

O001

2014 / 12 / 20

A 상사

대규모

CA

O002

2014 / 12 / 21 

A 상사

대규모 

CB 

O001

2014 / 12 / 12

B 건설 

중규모 

CB

O002 

2014 / 12 / 25

B 건설 

중규모 

CB

O003 

2014 / 12 / 25

B 건설 

중규모 

CC

O001 

2014 / 12 / 1

C 화학 

소규모 

 

 

 

-제 3정규형-

 

제 2정규형을 만족하고, 이행 함수 종속을 제거한 정규형을 말한다.

(예를 들어 아래 테이블에서 앞으로 관리하고 싶은 업계는 석유, 건설, 바이오 외에도 시스템 또는 유통 등 다양하다고 해도 지금은

이 테이블에 해당 업계를 등록할 방법이 없습니다. 이 테이블이 '기업' 이라는 단위의 집합을 반영하고 있어서 '유통' 이라는 업계에 속한

기업과 거래를 하지 않은 이상 해당 업계의 레코드를 만들 수 없기 때문입니다.)

 

-비 제3정규형 테이블-

 

고객기업 ID 

고객기업명 

고객기업규모 

업계코드 

계명 

CA

A상사

대규모

D001

석유

CB 

B건설 

중규모 

D002 

건설 

CC 

C화학 

소규모 

D003 

바이오 

 

 

 

  {고객기업 ID} -> {업계코드} -> {업계명} //(고객기업 ID가 업계코드를 정하고 업계코드가 업계명을 정하는 함수종속을 '이행함수종속'이라 한다)

 

 

 

 

-ER 다이어그램-

 

정규화를 수행하면 테이블이 나누어져 그 수가 증가하게 되는데 '갱신 이상'의 위험을 없애는 것이 목적이지만, 결과적으로 테이블 수가

늘어나는 것도 사실입니다. 이런 테이블 간의 관련성을 한눈에 알 수 있게 고안된 기술이 ER 다이어그램 입니다.

Entity(엔티티, 실체)란 '테이블' , 'Relationship(릴레이션십, 관계, 관련성)' 이란 '테이블 간의 관계' 를 의미합니다.

이를 표시하는데 그래픽으로 이해하기 쉽도록 해주는 기술이 ER 다이어그램 입니다.

 

 

 

-엔터티란?-

 

간단히 설명하면 테이블과 같고 사각형으로 표시합니다.

복잡한 정보를 간략화하기 위한 기술.

위 절반의 부분에는 '기본키'를 아래 절반의 부분에는 '기타 열(기본키가 아닌 열)'을 기재합니다.

 

 업계코드(PK)

 업계명

 

 

 

-릴레이션십이란?-

 

외래키가 존재하는 테이블은 해당 열이 다른 테이블의 기본키 열을 참조하는 것을 의미합니다.

이 관련성을 '릴레이션십' 이라고 합니다.

 

728x90
반응형
: