이론 목록
JOIN: INNER·OUTER·SELF·CROSS
JOIN은 조인 조건에 맞는 행의 쌍을 만드는 연산이다. INNER JOIN은 일치 행만, OUTER JOIN은 지정한 쪽의 불일치 행도 보존한다. SELF JOIN은 같은 테이블의 역할을 별칭으로 구분하며 CROSS JOIN은 모든 조합을 만든다. 중복 키에 따른 행 수 증가, NULL 키, ON과 WHERE의 차이가 결과 계산의 핵심이다.
서브쿼리와 EXISTS·IN·ANY·ALL
서브쿼리는 상위 SQL에 한 값, 값 집합, 존재 여부 또는 테이블 형태의 결과를 제공한다. 상관 여부와 반환 행 수는 서로 다른 분류 기준이다. EXISTS는 행의 존재를, IN은 값의 포함을, ANY와 ALL은 비교의 일부·전체 성립을 판단한다. NULL과 빈 집합이 포함되면 3값 논리에 따라 결과를 확인해야 한다.
집합 연산·뷰·윈도 함수
집합 연산은 동일한 열 구조의 조회 결과를 행 방향으로 결합한다. 일반 뷰는 조회 정의를 저장하며 갱신과 보안에는 별도의 조건이 따른다. 윈도 함수는 개별 행을 유지하면서 PARTITION BY·ORDER BY·프레임을 기준으로 계산한다. UNION과 UNION ALL, RANK와 DENSE_RANK의 차이를 작은 데이터로 계산할 수 있어야 한다.
데이터베이스 구조·스키마·데이터 모델
데이터베이스는 통합·저장·운영·공용 데이터이고 DBMS는 이를 정의·조작·제어하는 소프트웨어다. 스키마는 구조와 제약의 정의이며 인스턴스는 특정 시점의 데이터다. 외부·개념·내부 스키마와 매핑을 구분하면 논리적·물리적 데이터 독립성을 판별할 수 있다. 데이터 모델은 구조·연산·제약조건으로 이루어지며 개념·논리·물리 설계를 거쳐 구현된다.
ER 모델과 관계 모델 변환
ER 모델은 업무를 개체·속성·관계와 참여 제약으로 표현한다. 관계 차수와 카디널리티, 필수·선택 참여를 구분하고 이를 관계형 스키마의 키·외래키로 변환한다. 1:N은 N쪽에 외래키를 두고 N:M은 연결 릴레이션을 만든다. 변환 뒤에는 업무 요구 누락, 식별자·관계·도메인·정규화의 적합성을 검증한다.
키와 무결성 제약조건
슈퍼키는 유일성, 후보키는 유일성과 최소성을 만족하며 기본키는 선택된 후보키다. 외래키는 참조 역할을 하는 속성으로 자식 값의 유일성을 자동 요구하지 않는다. 도메인·개체·참조·사용자 정의 무결성을 SQL 제약조건과 연결해 이해해야 한다. UNIQUE·CHECK·DEFAULT는 NULL 처리와 보장 범위가 서로 다르다.
관계대수와 관계해석
관계대수는 원하는 결과를 얻는 연산 순서를, 관계해석은 결과가 만족할 조건을 표현한다. 선택·투영·조인·디비전 및 일반 집합 연산의 기호와 결과를 계산할 수 있어야 한다. 투영은 고전적인 집합 의미에서 중복을 제거하며 카티션 곱은 행 수를 곱한다. 관계해석은 튜플 변수와 도메인 변수, 존재·전칭 조건을 구분한다.
함수적 종속·이상 현상·정규화
함수적 종속은 같은 결정자 값이 같은 종속자 값을 결정해야 한다는 업무 규칙이다. 정규화는 이 종속에 따라 서로 다른 사실을 분리해 삽입·갱신·삭제 이상을 줄인다. 1NF·2NF·3NF·BCNF는 원자값과 함수 종속을, 4NF·5NF는 다치·조인 종속을 다룬다. 분해에서는 정보 복원과 종속 보존을 구분하고 반정규화에는 중복 관리가 필요함을 이해한다.
물리 스키마·자료형·저장 구조와 성능
물리 설계는 논리 모델을 목표 DBMS의 테이블·칼럼·저장 구조로 구현하는 단계다. 자료형·길이·NULL·제약조건과 함께 스토리지, 행 폭, 예상 용량, 데이터 지역화를 검토한다. 물리 E-R 다이어그램과 CRUD 분석으로 업무–데이터 대응과 구조의 품질을 확인한다. 반정규화는 실제 성능 근거와 중복 데이터 관리 방안을 전제로 검토한다.
인덱스·클러스터링·파티션
인덱스는 필요한 행을 찾는 접근 구조이며 조회 이득과 갱신·저장 비용을 함께 가진다. B-tree·해시·비트맵의 특성과 복합 인덱스의 열 순서를 구분한다. 클러스터링은 관련 행의 물리적 근접성, 파티셔닝은 큰 테이블의 분할을 다룬다. 프루닝과 인덱스 사용은 다른 판단이며 물리 배치가 결과 정렬을 보장하지 않는다.