16차시
기본키·인덱스·관계 설정과 외부 데이터
Part 3. 데이터베이스 일반 · 출제 빈도 ★★☆
이 차시를 공부하는 이유
참조 무결성은 3과목 이론의 핵심 중 핵심입니다. '부모(기본 테이블)에 없는 값을 자식(관계 테이블)에 넣을 수 없다'는 한 문장만 정확히 이해하면 응용 문제까지 풀 수 있습니다.
학습 목표
기본키와 인덱스의 설정 규칙과 효과를 설명할 수 있다.
테이블 간 관계의 종류와 설정 방법을 이해한다.
참조 무결성 규칙과 연쇄 업데이트·삭제 옵션의 동작을 설명할 수 있다.
외부 데이터 가져오기·연결하기·내보내기의 차이를 구분한다.
핵심 개념
1. 기본키 (Primary Key)
- 각 레코드를 고유하게 식별하는 필드(또는 필드 집합)입니다. 디자인 보기에서 필드 앞에 열쇠 아이콘이 표시됩니다.
- 기본키 필드에는 중복 값이나 Null을 입력할 수 없고, 이미 중복·Null 값이 있는 필드는 기본키로 지정할 수 없습니다.
- 여러 필드를 묶어 기본키로 지정할 수 있지만 기본키 자체는 테이블당 하나입니다. 종류: 일련번호 기본키, 단일 필드 기본키, 다중 필드 기본키
- OLE 개체, 첨부 파일, 계산 형식 필드에는 기본키를 설정할 수 없습니다.
- 기본키를 지정하면 인덱스가 자동으로 '예(중복 불가능)'로 설정됩니다.
- 기본키 없이도 관계를 설정할 수는 있지만, 관계가 설정된 테이블의 기본키는 해제할 수 없으므로 관계를 먼저 제거해야 합니다.
2. 인덱스 (색인)
장점
데이터 검색·정렬·그룹화 속도가 빨라집니다. 데이터가 많을수록 효과가 큽니다.
단점
레코드를 추가·수정·삭제할 때마다 인덱스도 갱신되므로 속도가 느려집니다.
| 인덱스 속성 값 | 의미 |
|---|---|
| 아니요 | 인덱스를 설정하지 않음 |
| 예(중복 가능) | 인덱스를 설정하고 같은 값 입력 허용 |
| 예(중복 불가능) | 인덱스를 설정하고 같은 값 입력 불가 (기본키 지정 시 자동) |
- 한 테이블에 최대 32개 인덱스, 하나의 인덱스에 최대 10개 필드를 사용할 수 있습니다.
- 기본적으로 오름차순으로 정렬되며, 중복 값이 적은 필드에 설정할수록 효과적입니다.
- OLE 개체, 첨부 파일, 계산 형식에는 인덱스를 설정할 수 없습니다.
시험 함정 포인트
'인덱스를 많이 만들수록 모든 작업이 빨라진다'는 오답입니다. 검색은 빨라지지만 입력·수정은 느려집니다.
'인덱스를 많이 만들수록 모든 작업이 빨라진다'는 오답입니다. 검색은 빨라지지만 입력·수정은 느려집니다.
3. 관계 설정과 참조 무결성
[데이터베이스 도구]→[관계]에서 기본 테이블의 기본키를 관련 테이블의 외래키로 드래그해 관계를 만듭니다. 두 필드의 데이터 형식이 같아야 하며(일련번호↔숫자(정수 Long)는 가능), 관계의 종류(1:1, 1:N)는 필드 조건에 따라 자동으로 결정됩니다.
관계 예시: <학과> 1 ─── N <학생>
<학과> (기본 테이블) <학생> (관련 테이블)
학과코드(PK) | 학과명 학번(PK) | 이름 | 학과코드(FK)
D01 | 경영 26001 | 김하늘 | D01
D02 | 전산 26002 | 이바다 | D02
26003 | 박산들 | D02
▶ 참조 무결성 적용 시 <학생>에 학과코드 'D09'는 입력 불가 (학과에 없음)
▶ <학과>의 D02는 학생이 있으므로 그냥 삭제·변경 불가
| '관계 편집' 옵션 | 효과 |
|---|---|
| 항상 참조 무결성 유지 | ① 기본 테이블에 없는 값을 관련 테이블 외래키에 입력 불가 ② 관련 레코드가 있으면 기본 테이블 레코드 삭제 불가 ③ 관련 레코드가 있으면 기본키 값 변경 불가 |
| 관련 필드 모두 업데이트 | 기본 테이블의 기본키 값을 바꾸면 관련 테이블의 외래키 값도 자동 변경 |
| 관련 레코드 모두 삭제 | 기본 테이블의 레코드를 지우면 관련 테이블의 레코드도 자동 삭제 |
- 조인 유형도 관계 편집 창의 [조인 유형]에서 지정합니다(내부 조인, 왼쪽·오른쪽 외부 조인 → 17차시).
- 관련 테이블에 외래키 값이 Null인 레코드는 참조 무결성을 위반하지 않습니다.
시험 함정 포인트
'참조 무결성을 설정하면 관련 테이블의 레코드를 삭제할 수 없다'는 오답입니다. 막히는 것은 기본(부모) 테이블 쪽의 삭제·변경입니다.
'참조 무결성을 설정하면 관련 테이블의 레코드를 삭제할 수 없다'는 오답입니다. 막히는 것은 기본(부모) 테이블 쪽의 삭제·변경입니다.
4. 레코드 추가·삭제
- 새 레코드는 항상 마지막에 추가됩니다. 단축키
Ctrl++, 탐색 단추의 '새 레코드' - 레코드 삭제는
Ctrl+-또는Delete. 삭제 확인 메시지가 나오며, 삭제한 레코드는 되살릴 수 없습니다. - 필드 삭제 시 그 필드의 모든 데이터도 함께 지워지며 복원할 수 없습니다.
5. 외부 데이터: 가져오기·연결·내보내기
| 구분 | 가져오기 | 연결하기 |
|---|---|---|
| 결과 | 원본 데이터를 복사해 새 Access 테이블을 만듦 (기존 테이블에 추가도 가능) | 원본은 그대로 두고 연결 테이블만 만듦 |
| 원본과의 관계 | 가져온 뒤에는 서로 영향 없음 | 연결 테이블을 수정하면 원본도 변경, 원본 변경도 반영 |
| 삭제 시 | Access 테이블만 삭제 | 연결 테이블을 지워도 원본은 삭제되지 않음 |
| 구조 변경 | 가능 | 연결 테이블의 필드 추가·삭제 등 구조 변경 불가 |
- 가져올 수 있는 형식: Access, Excel, 텍스트, XML, HTML, ODBC 데이터베이스, dBASE, SharePoint 목록, Outlook 폴더 등. Excel·텍스트·HTML은 가져올 필드를 제외할 수 있습니다.
- 엑셀에서 가져올 때는 워크시트 단위로 가져오며, 첫 행을 필드 이름으로 쓸지 선택합니다.
- 내보내기: Access, Excel, Word RTF, 텍스트, XML, HTML, ODBC, dBASE, PDF/XPS 등. 쿼리·폼·보고서도 내보낼 수 있습니다.
확인 문제
1 / 5
문제 1
Access의 기본키에 대한 설명으로 옳지 않은 것은?
💡 정답 ③ 해설: OLE 개체, 첨부 파일, 계산 형식의 필드에는 기본키를 설정할 수 없습니다.
문제 2
<학과> 테이블(기본)과 <학생> 테이블(관련)에 참조 무결성이 설정되어 있을 때 발생할 수 없는 상황은?
💡 정답 ③ 해설: 참조 무결성이 설정되면 기본 테이블에 없는 값을 관련 테이블의 외래키에 입력할 수 없습니다.
문제 3
인덱스(색인)에 대한 설명으로 옳은 것은?
💡 정답 ③ 해설: 인덱스는 테이블당 최대 32개, 검색·정렬은 빨라지지만 추가·수정은 느려지며 OLE 개체에는 설정할 수 없습니다.
문제 4
'관계 편집' 대화상자에서 기본 테이블의 레코드를 삭제할 때 관련 테이블의 해당 레코드도 자동으로 함께 삭제되도록 하는 옵션은?
💡 정답 ③ 해설: '관련 레코드 모두 삭제'를 선택하면 기본 테이블에서 레코드를 지울 때 관련 레코드도 자동 삭제됩니다.
문제 5
외부 데이터 '연결하기'로 만든 연결 테이블에 대한 설명으로 옳지 않은 것은?
💡 정답 ② 해설: 연결 테이블을 삭제해도 연결 정보만 없어질 뿐 원본 데이터는 삭제되지 않습니다.
16차시 문제 더 풀기
확인문제와 실전 모의고사에서 이 차시 범위 문제만 모아 해설과 함께 볼 수 있습니다.