[sql] JOIN과 데이터 정규화

데이터베이스에서 JOIN은 두 개 이상의 테이블을 연관시켜서 하나의 결과 집합으로 결합하는 데 사용됩니다. JOIN은 데이터베이스 시스템에서 매우 중요하며 데이터를 효율적으로 관리 및 검색하는 데 도움이 됩니다.

INNER JOIN

INNER JOIN은 두 개의 테이블에서 일치하는 행을 선택하여 결합하는 데 사용됩니다. 예를 들어, employees 테이블과 departments 테이블을 연결하여 각 부서에 속한 직원을 검색할 때 INNER JOIN을 사용할 수 있습니다.

아래는 employees 테이블과 departments 테이블을 INNER JOIN하는 SQL 쿼리의 예시입니다.

SELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id;

LEFT JOIN

LEFT JOIN은 왼쪽 테이블의 모든 행을 선택하고 오른쪽 테이블에서 일치하는 행을 선택하여 결합합니다. 오른쪽 테이블에 일치하는 행이 없는 경우에도 왼쪽 테이블의 모든 행을 반환합니다.

SELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id;

RIGHT JOIN

RIGHT JOIN은 LEFT JOIN과는 반대로 오른쪽 테이블의 모든 행을 선택하고 왼쪽 테이블에서 일치하는 행을 선택하여 결합합니다. 왼쪽 테이블에 일치하는 행이 없는 경우에도 오른쪽 테이블의 모든 행을 반환합니다.

SELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.department_id;

데이터 정규화

데이터베이스 설계에서의 데이터 정규화는 중복을 최소화하고 데이터를 일관성 있게 저장하기 위한 프로세스입니다. 데이터 정규화는 데이터베이스의 성능을 향상시키고 무결성을 유지하는 데 도움이 됩니다.

1NF (First Normal Form)

1NF는 각 행이 유일한 값을 가져야 하며, 각 열이 반복되지 않아야 한다는 규칙을 의미합니다.

2NF (Second Normal Form)

2NF는 모든 비주요 속성이 주요 속성에 완전히 종속되어야 한다는 규칙을 의미합니다.

3NF (Third Normal Form)

3NF는 모든 속성이 기본 키에 이행적으로 종속되지 않아야 한다는 규칙을 의미합니다.

BCNF (Boyce-Codd Normal Form)

BCNF는 모든 결정자가 후보 키이어야 한다는 규칙을 가지며, 3NF보다 한 단계 더 엄격한 정규화 형태입니다.

데이터 정규화는 데이터베이스 설계의 중요한 부분이며, 정규화 수준에 따라 데이터의 일관성과 효율성이 크게 달라질 수 있습니다.


참고 자료: