관리 메뉴

JeongseokDEV-SimpleU

[데이터베이스] JOIN // 정규화 본문

데이터베이스

[데이터베이스] JOIN // 정규화

SimpleU 2020. 2. 5. 19:04

JOIN  //

 

INNER JOIN - 기본적으로 join은 교집합이다.

LEFT JOIN - 왼쪽 테이블을 중심으로 오른쪽의 테이블을 매치시킴

             - 왼쪽 테이블의 한개의 레코드에 여러개의 오른쪽 테이블 레코드가 일치할 경우 

             - 해당 왼쪽 레코드를 여러번 표시하게 됨

             - 왼쪽은 무조건 표시하고, 매치되는 레코드가 오른쪽에 없으면 null을 표시

 

RIGHT JOIN - 오른쪽 테이블을 중심으로 왼쪽 테이블을 매치시킴

                 - left join에서 방향을 오른쪽으로만 바꾼 것

                 - 해당 레코드가 여러번 표시되거나 null이 표시

 

OUTER JOIN - 조건에 부합하지 않는 행까지도 포함시켜 결합

 

 

정규화

 - 데이터의 중복을 줄이고 무결성을 향상 시키는 등 여러 목적을 달성하기 위해 

  관계형 데이터베이스를 정규화된 형태로 재디자인 하는것을 말함

 

정규화의 목적

  •  - 불필요한 데이터를 제거하고 데이터의 중복을 최소화
  •  - 데이터베이스 구조 확장 시 재디자인을 최소화
  •  - 다양한 관점에서의 쿼리를 지원하기 위해
  •  - 무결성 제약조건의 시행을 간단하게 하기 위해
  •  - 각종 이상 현상을 방지하기 위해 테이블의 구성을 논리적이고 직관적으로 한다.

 

제 1 정규화 ( 1NF )

  • - 테이블이 제 1 정규화를 만족했다는 것은 어떤 Relation에 속한 모든 Domain이 원자값으로 되어 있고 모든 Attribute에 반복되는 그룹이 나타나지 않으며 기본키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 함을 의미

 

제 2 정규화 ( 2NF )

- 제 2 정규화를 수행 했을 경우 테이블의 모든 컬럼이 완전 함수적 종속을 만족한다( 부분 함수적 종속을 모두 제거 )

 

함수적 종속( Functional dependency )

- X의 값에 따라 Y의 값이 결정될 때 X -- > Y 표현하는데 이를 Y는 X에 대해 함수적 종속이라고 함

 EX ) 학번을 알면 이름을 알 수 있는데 이 경우엔 학번이 X 가되고 이름이 Y가 됨

 *) X를 결정자라고 하고 Y는 종속자라고 함 // X가 바뀌었을 경우 Y가 바뀌어야 한다는 것을 의미

 

함수적 종속에서 X의 값이 여러 요소일 경우

즉 [ X1, X2 ] -> Y일 경우 X1와 X2가 Y의 값을 결정할 때 이를 <완전함수적종속>

X1, X2 중 하나만 Y의 값을 결정할 때 <부분함수적종속>

 

제 3 정규화 ( 3NF )

- 테이블이 제 3 정규화를 만족한다는 것은 Relation이 제 2 정규화 되었거나

primary key가 아닌 Attribute들은 Primary key에만 의존해야 한다는 것

 

BCNF

< X - > Y 는 trivial FD이거나 X는 릴레이션의 R의 슈퍼키이다 > 을 만족 시키는 릴레이션을 BCNF라고 함

Tivial FD는 Y가 X의 부분집합인 경우 // 모든 결정자가 기본키인 경우 BCNF 임

 

제 4 정규화 ( 4NF )

4NF는 MVD개념을 통해 정의 MVD는 함수 종속의 일반화된 개념

함수 종속에서는 X에 의해 Y의 값이 하나만 결정 되었다면 MVD에서는 X에 의해 다수의 값이 결정된다

위와 같은 MVD관계는 X --> Y로 표기

 

제 5 정규화 ( 5NF )

조인 종속 정의

만약 어떠한 테이블이 오직 테이블의 cnadidate key를 포함하는 부분집합에 의해서만 조인 종속이 성립되는 것을 말함

 

//릴레이션 R에 존재하는 모든 조인 종속이 릴레이션 R의 후보키를 통해서만 만족되는 경우의 릴레이션

//조인종속성 - 한 릴레이션이 여러 Projection으로 무손실 분해될 수 있는 가능성을 조인속성 또는 JD라 부름

 

 

'데이터베이스' 카테고리의 다른 글

[데이터베이스]  (0) 2020.02.04