데이터베이스·1급 전용·20장
테이블 관계와 정규화
관계 설정과 참조 무결성 옵션, 조인의 종류, 정규화의 목적과 단계, 인덱스의 특성을 정리합니다.
노란 밑줄n회 기출에 나온 지점(숫자는 등장 문항 수)✎ 는 덧붙인 필기
출제 비중 — 참조 무결성11회 과 정규화7회, 인덱스17회 가 번갈아 나온다. 개념을 뒤집어 놓는 보기가 많다.
1. 관계 설정
- [데이터베이스 도구] → 관계. 두 테이블에서 같은 값을 담는 필드(보통 한쪽의 기본 키와 다른 쪽의 외래 키)를 드래그해 연결한다.
- 관계의 종류
| 종류 | 조건 |
|---|---|
| 일대다(1:N) | 가장 일반적. 한쪽이 기본 키(또는 중복 불가 인덱스) 일 때 |
| 일대일(1:1) | 양쪽 모두 기본 키이거나 중복 불가 인덱스일 때 |
| 다대다(N:M) | Access 에서 직접 만들 수 없고, 가운데에 연결(접합) 테이블을 두어 일대다 두 개로 만든다 |
- 관계를 맺는 두 필드는 데이터 형식이 같아야 한다(예외: 일련 번호 ↔ 숫자의 정수형).
- 테이블을 디자인 보기에서 열어 둔 채로는 관계를 만들거나 수정할 수 없다.
2. 참조 무결성 옵션
- 참조 무결성 적용11회 을 체크하면
- 기본 테이블에 없는 값을 관련 테이블에 입력할 수 없다.
- 관련 테이블에 레코드가 있으면 기본 테이블의 레코드를 삭제할 수 없다.
- 함께 쓰는 두 옵션
| 옵션 | 동작 |
|---|---|
| 관련 필드 모두 업데이트 | 기본 테이블의 키 값을 바꾸면 관련 테이블의 외래 키도 함께 바뀐다 |
| 관련 레코드 모두 삭제 | 기본 테이블의 레코드를 지우면 관련 레코드도 함께 지워진다 |
3. 조인
| 조인 | 결과 |
|---|---|
| 내부 조인(INNER JOIN) | 양쪽 모두 일치하는 레코드만 |
| 왼쪽 우선 외부 조인(LEFT JOIN) | 왼쪽 테이블은 모두, 오른쪽은 일치하는 것만 |
| 오른쪽 우선 외부 조인(RIGHT JOIN) | 오른쪽 전부 + 일치하는 왼쪽 |
| 셀프 조인 | 같은 테이블을 자기 자신과 조인 |
| 카티션 곱(크로스 조인) | 조인 조건이 없을 때 모든 조합 |
- 관계 창에서 선을 더블클릭 → 조인 속성에서 1·2·3번 유형을 고른다.
4. 정규화
- 정규화7회: 테이블을 더 작은 테이블로 분해해 데이터 중복을 줄이고 이상(Anomaly) 현상을 없애는 과정.
- 정규화로 막는 이상 현상 3가지: 삽입 이상 · 삭제 이상 · 갱신 이상.
- 단계
| 단계 | 조건 |
|---|---|
| 제1정규형(1NF) | 모든 속성이 원자 값(반복되는 그룹 제거) |
| 제2정규형(2NF) | 1NF + 부분 함수 종속 제거(기본 키 일부에만 종속된 속성 분리) |
| 제3정규형(3NF) | 2NF + 이행적 함수 종속 제거 |
| BCNF | 모든 결정자가 후보 키 |
- 정규화하면 중복과 저장 공간이 줄고 무결성이 좋아지지만, 테이블이 나뉘어 조인이 늘어 검색 속도가 느려질 수 있다.
5. 인덱스
- 인덱스17회: 검색·정렬 속도를 높이기 위해 만드는 색인.
- 기본 키를 지정하면 인덱스가 자동으로 만들어진다(중복 불가).
- 필드 속성의 인덱스: 아니요 / 예(중복 가능) / 예(중복 불가).
- 인덱스를 많이 만들면 검색은 빨라지지만 입력·수정·삭제는 느려진다.
- OLE 개체·첨부 파일·계산 형식 필드에는 인덱스를 만들 수 없다.
마무리 체크
- 다대다는 연결 테이블로 일대다 두 개
- 참조 무결성만 적용하면 변경·삭제가 막히고, 옵션을 켜야 연쇄된다
- LEFT JOIN 은 왼쪽 전부
- 1NF 원자값 / 2NF 부분 종속 제거 / 3NF 이행 종속 제거
- 정규화는 중복↓ 무결성↑ 대신 조인 증가
- 인덱스가 많으면 갱신이 느려진다, 기본 키는 자동 인덱스