테이블이란? 행(인스턴스)과 열(릴레이션 스키마)로 이루어진 데이터 집합 뷰란? 데이터 베이스에 존재하는 일종의 가상 테이블 키 Key란? 검색, 정렬 시 튜블을 구별하는 기준이 되는 속성 정규화란? 데이터 중복 저장과 이상현상 문제를 해결하기 위해 데이터를 구조화하는 작업 Join이란? 여러 테이블의 레코드를 조합하여 하나의 열로 표현한 것
하나의 릴레이션을 분해하고 다시 조인 연산을 했을 때, 데이터 손실이 없어야 함(무손실 조인)
함수적 종속성을 보존
설명
비고
제 1 정규형 (1NF)
테이블 칼럼이 분해되지 않는 원자값을 가져야 함
제 2 정규형 (2NF)
제 1정규형 만족
모든 칼럼이 부분적 종속이 없어져야 함.
= 모든 칼럼이완전 함수 종족을 만족해야 함. = 기본키에 종속되도록 하기
👆완전 함수 종속? 어떤 속성이 기본키에 대해 완전히 종속일 때 👆부분 함수 종속? 어떤 속성이 기본키가 아닌 다른 속성에 종속되거나, 기본키가 여러 속성으로 구성되어 있을 때 기본키를 구성하는 속성 중 일부만 종속될 때.
제 3 정규형 (3NF)
제 2정규형 만족
기본키를 제외한 속성들 간에이행 종속성이 없어야 함.
👆이행 종속성? A → B , B → C 인 경우 A → C 가 성립될 때.즉, A를 알면 B를 알고 그를 통해 C를 알 수 있는 경우를 의미
BCNF 정규형
제 3정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해
👍 장점 - 이상현상 문제 해결 - 저장 공간의 최소화 - 데이터 베이스 변경 시 재구성 최소화
👎 단점 - 조인 연산이 많아져 성능 저하
✅ JOIN
관계형 데이터베이스에서 두 개 이상의 테이블을 연결하여 데이터를 검색하는 방법. 여러 개의 테이블을 하나인 것처럼 활용한다.
관계형 데이터베이스에서 1:N 관계란 하나의 entity(table)가 관계를 맺은 entity의 여러 객체를 가질 수 있는 구조로 보통 primary key - foreign key 구조로 나타낼 수 있다.
관계형 데이터베이스에서 N:M 관계란 양쪽 entity 모두가 서로에게 1:N 관계를 갖는 구조로 보통 새로운 테이블을 통해 관계를 맺는다. 예를 들어 학생 테이블과 수강 과목 테이블이 있을 때, 학생과 수강 과목 테이블의 primary key를 foreign key로 갖는 '수강신청'이라는 새로운 테이블을 만들어 N:M 관계를 나타낸다.
🔺 Inner Join
서로 연관된 내용만 검색하는 조인 방법 (교집합)
🔺Left outer join
기준 테이블 값과 조인 테이블과의 중복된 값 (왼쪽 테이블 기준으로 Join)
🔺Right outer join
오른쪽 테이블 기준으로 Join
🔺Full outer join
모든 테이블의 데이터 (합집합)
🔺Cross join
모든 경우의 수를 표현
🔺Nested Loop Join (중첩 반복 조인)
2개 이상의 테이블에서 하나의 테이블을 기준으로 순차적으로 상대방의 row 를 결합해 원하는 결과를 추출하는 방법
Driving Table의 처리 범위를 하나씩 액세스 하면서 추출된 값으로 Driven Table을 조인하는 방식으로 동작
선행 테이블(Driving Table) : 조인 시 먼저 액세스 되는 테이블
후행 테이블(Driven Table) : 조인 시 나중에 액세스 되는 테이블 (Driving이 아닌 나머지 테이블)