[데이터베이스] JOIN // 정규화
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라 부름