1. 데이터베이스의 기본 개념 및 관리 시스템 [1]

thumbnail 데이터베이스는 시스템이 공유하고 관리하는 데이터의 집합이며, 이를 효율적으로 관리하기 위해 DBMS가 필요하다.

1.1. 데이터베이스의 정의 및 장단점 [1]

  1. 데이터베이스(Database)는 시스템이 공용으로 사용하고 관리하는 데이터의 집합이다. [1]
  2. 데이터베이스 사용의 장점은 다음과 같다. [2]
    1. 종속성과 중복성이 최소화된다. [2]
    2. 일관성 및 무결성이 유지된다. [2]
    3. 공유 및 보안성이 강화된다. [2]
    4. 실시간 처리가 가능하다. [2]
  3. 데이터베이스 사용의 단점은 다음과 같다. [3]
    1. 전문가 부족 문제가 발생할 수 있다. [3]
    2. 전체적인 비용이 증가한다. [3]
    3. 시스템이 복잡하고 느려 회복이 어렵다. [3]

1.2. 데이터베이스 관리 시스템(DBMS)의 기능 [4]

  1. DBMS(Database Management System)는 데이터베이스를 관리하기 위한 시스템이다. [4]
  2. DBMS는 세 가지 주요 기능을 가진다. [4]
    1. 정의(DDL): 데이터베이스를 생성하거나 구조를 수정하는 기능이다. [5]
    2. 조작(DML): 데이터의 검색, 삽입, 삭제, 변경 등의 기능을 수행한다. [5]
    3. 제어(DCL): 데이터의 무결성을 유지하는 기능이다. [5]

2. 관계형 데이터베이스와 SQL 언어 [8]

thumbnail 관계형 데이터베이스는 테이블 구조를 기반으로 하며, SQL 언어를 통해 데이터를 정의하고 조작한다.

2.1. 관계형 데이터베이스의 구조 및 용어 [8]

  1. 관계형 데이터베이스(RDBMS)는 테이블을 이용한 구조를 가진다. [8]
  2. 테이블은 표, 개체 또는 릴레이션을 뜻한다. [10]
    1. 필드: 각 열의 제목으로, 속성 또는 애트리뷰트라고도 한다. [10]
    2. 레코드: 각 행을 의미한다. [10]
    3. 도메인: 하나의 속성에서 취할 수 있는 원자 값의 범위이다. [13]
    4. 차수(Degree): 테이블에서 필드의 개수를 의미한다. [16]
    5. 기수(Cardinality): 레코드의 개수를 의미한다. [17]
  3. 기본 키는 레코드를 구분하기 위한 것으로, 중복이 불가능하며 널(Null) 값을 허용하지 않는다. [18]
  4. 데이터베이스 설계 단계는 다음 순서로 이루어진다. [19]
    1. 개념적 설계 [19]
    2. 논리적 설계 [19]
    3. 물리적 설계 [19]
  5. 정규화는 이상 현상이 일어나지 않도록 테이블을 분해하는 과정이며, 이를 통해 중복성과 종속성이 최소화된다. [20]
  6. 데이터베이스 스키마(구조)는 세 가지로 나뉜다. [22]
    1. 외부 스키마: 일반 사용자나 응용 프로그래머 관점에서 본 스키마이다. [23]
    2. 개념 스키마: 논리적인 구조 및 규칙 등을 정리한 스키마이다. [23]
    3. 내부 스키마: 물리적인 구조나 설계자의 관점에서 본 스키마이다. [23]

2.2. 테이블 보기 및 필드 속성 [24]

  1. 테이블은 두 가지 보기 형태로 볼 수 있다. [24]
    1. 디자인 보기: 테이블의 구조와 필드의 속성 등을 변경할 수 있다. [24]
    2. 데이터시트 보기: 레코드를 입력하거나 수정할 수 있다. [24]
  2. 필드를 만들 때 지정할 수 있는 데이터 형식은 다음과 같다. [25]
    1. 짧은 텍스트: 텍스트와 숫자를 조합하여 255자까지 입력 가능하다. [25]
    2. 긴 텍스트: 텍스트와 숫자를 조합하여 63,999자까지 입력 가능하다. [26]
    3. 숫자: 정수 롱(Long) 형이 기본값이며, 4바이트 크기를 가진다. [27]
    4. 날짜/시간: 100년부터 1999년까지 입력 가능하며, 8바이트 크기를 가진다. [27]
    5. 일련번호: 자동으로 번호가 부여되며, 데이터 입력 후에는 선택할 수 없고, 삭제된 번호는 다시 부여되지 않는다. [28]
      • 정수 롱 형으로 4바이트, 복제 ID로는 16바이트 크기를 가진다. [30]
    6. 예/아니오: 참/거짓, 켜짐/꺼짐 등 하나의 비트 크기로 표현된다. [31]
    7. OLE 개체: 개체 연결 포함을 뜻하며, 기본 키로 설정할 수 없고 1GB 크기를 배정할 수 있다. [31]
  3. 특정 필드에 조회 속성을 설정하여 텍스트 상자, 콤보 상자, 목록 상자 등으로 표현할 수 있다. [32]
  4. 필드 속성의 주요 항목은 다음과 같다. [33]
    1. 형식: 엑셀의 표시 형식과 동일하다. [33]
    2. 캡션: 데이터시트에 표시되는 레이블(제목)이다. [33]
    3. 기본값: 자동으로 입력되는 값이다. [34]
    4. 필수: 필수로 입력해야 하는 속성이다. [34]
    5. 빈 문자열 허용: 빈 문자열 입력을 허용하는 속성이다. [34]
    6. IME 모드: 한영 키를 누르지 않아도 자료 입력 형태(한글/영어)를 미리 설정하는 기능이다. [34]
    7. 소수 자릿수: 소수점 이하의 자릿수를 결정하는 속성이다. [35]
    8. 유효성 검사: 입력된 데이터가 유효한지 검사하는 기능이다. [35]
    9. 인덱스: 설정 시 정렬 및 검색 속도가 빨라지지만, 전체 업데이트 속도는 느려진다. [36]
    10. 입력 마스크: 정확한 자료 입력을 위한 일종의 틀이다. [37]
      • 숫자 필수: 0, 숫자 선택: 9 [38]
      • 문자/기호 필수: L, 문자/기호 선택: ? [38]
      • 문자/숫자 필수: A, 문자/숫자 선택: a [38]
      • 숫자/기호 선택: # [38]
      • 대문자 변환: > [38]
      • 소문자 변환: < [38]

2.3. 관계 설정 및 조인 유형 [39]

  1. 관계 편집 대화상자에서 참조 무결성 유지를 설정하면 다음과 같은 규칙이 적용된다. [39]
    1. 외래 키 값은 참조된 테이블 필드의 값과 동일해야 한다. [39]
    2. 관련 필드 모두 업데이트 체크 시, 참조된 필드 값이 변경되면 외래 키 값도 자동으로 변경된다. [40]
    3. 관련 레코드 모두 삭제 체크 시, 참조된 필드 값이 삭제되면 외래 키 값도 자동으로 삭제된다. [40]
  2. 조인 유형 중 내부 조인(Inner Join)은 두 테이블의 조인된 필드가 일치하는 행만 포함한다. [41]

2.4. 외부 데이터 가져오기 및 SQL 언어 [42]

  1. 외부 데이터를 가져올 때 다음 세 가지 방식으로 가져올 수 있다. [42]
    1. 새 테이블로 만들기 [42]
    2. 기존 레코드에 추가하기 [42]
    3. 연결된 테이블로 만들기 [42]
  2. SQL 언어는 데이터 제어, 정의, 조작 명령으로 구성된다. [43]
    1. 데이터 제어(DCL) 명령: COMMIT, ROLLBACK, GRANT, REVOKE 등이 있다. [43]
    2. 데이터 정의(DDL) 명령: CREATE, ALTER, DROP 등이 있으며, CREATE로 테이블이나 데이터베이스를 생성할 수 있다. [44]
      • CREATE TABLE 테이블명 (필드명 형식, ...); 형식으로 사용한다. [45]
    3. 데이터 조작(DML) 명령: SELECT, INSERT, UPDATE, DELETE 등이 있다. [47]
      • SELECT: 데이터를 선택하거나 조회하는 명령이다. [47]
        • SELECT [옵션] 필드 FROM 테이블 WHERE 조건 GROUP BY 그룹필드 HAVING 그룹조건 ORDER BY 정렬필드; 형식으로 사용한다. [49]
        • 옵션: [50]
          • DISTINCT: 중복을 제거한 값을 표현한다. [50]
          • TOP N: 상위 N개의 항목을 추출한다. [50]
        • 함수: 엑셀과 유사한 함수를 사용하며, AVG (평균), COUNT (들어있는 개수) 등이 있다. [51]
        • WHERE/HAVING 조건: [52]
          • OR: '서울 또는 경기'와 같이 여러 조건을 만족하는 경우 사용한다. IN 연산자로도 표현 가능하다. [53]
          • AND: 여러 조건을 모두 만족하는 경우 사용한다. [55]
          • 날짜 조건: 날짜 앞뒤에 #을 붙여 사용한다. (예: #1998-01-01#) [55]
          • BETWEEN A AND B: 특정 구간의 값을 구할 때 사용한다. [58]
          • 와일드카드: LIKE 연산자와 함께 사용한다. [60]
            • 김*: '김'으로 시작하는 글자 [61]
            • ?C: 'C'로 끝나는 두 글자 [62]
          • NOT: 부정문을 표현한다. [63]
          • IS NULL: 빈칸을 검색한다. [63]
          • 매개변수: 사용자에게 직접 입력을 받을 때 대괄호 []로 묶어 조건을 표현한다. [64]
        • ORDER BY: 정렬 기준을 지정한다. [66]
          • ASC (오름차순): 생략 가능하다. [67]
          • DESC (내림차순): 내림차순 정렬한다. [67]
      • INSERT: 레코드를 삽입하는 명령이다. [68]
        • INSERT INTO 테이블명 (필드1, 필드2, ...) VALUES (값1, 값2, ...); 형식으로 사용한다. [69]
      • UPDATE: 레코드의 값을 수정하는 명령이다. [70]
        • UPDATE 테이블명 SET 필드1 = 값1, 필드2 = 값2, ... WHERE 조건; 형식으로 사용한다. [71]
      • DELETE: 레코드의 값을 삭제하는 명령이다. [72]
        • DELETE FROM 테이블명 WHERE 조건; 형식으로 사용한다. [73]
  3. 크로스탭 쿼리는 다음과 같은 특징을 가진다. [74]
    1. 열 머리글은 한 개만 넣을 수 있다. [75]
    2. 행 머리글은 1개에서 3개까지 넣을 수 있다. [75]

3. 폼과 보고서의 활용 및 매크로 [77]

thumbnail

폼과 보고서는 데이터를 편리하게 입력, 편집, 조회, 출력하는 개체이며, 매크로는 반복적인 작업을 자동화한다.

3.1. 폼(Form)의 기능과 속성 [77]

  1. 폼은 테이블, 쿼리, SQL을 원본으로 하여 데이터를 입력하거나 편집하는 것을 편리하게 해주는 개체이다. [77]
  2. 폼에 컨트롤을 추가할 수 있으며, 컨트롤 마법사를 활용하면 쉽게 생성할 수 있다. [78]
    1. 만들어진 컨트롤의 이름은 중복이 불가능하다. [79]
    2. 폼과 원본이 연결되어 있어, 폼에서 데이터를 수정하면 원본 데이터도 함께 수정된다. [80]
  3. 폼과 컨트롤의 주요 속성은 다음과 같다. [81]
    1. 팝업(Popup): 액세스 창 위에 팝업 형태로 열리게 한다. [82]
    2. 모달(Modal): 폼이 열려 있는 경우 다른 창을 선택할 수 없도록 한다. [82]
    3. 레코드 잠금: 여러 사용자가 동시에 레코드를 편집할 수 없도록 잠근다. [83]
    4. 탐색 단추: 폼 아래에 표시되는 탐색 단추를 의미하며, 6번째 내용은 새 레코드를 추가할 수 있는 내용으로 이동한다. [83]
    5. 기본 보기: 폼의 보기 상태를 설정한다. [85]
      • 단일 폼: 하나의 레코드만 표현한다. [85]
      • 연속 폼: 여러 개의 레코드를 표현한다. [85]
      • 데이터시트: 엑셀과 유사한 시트 형태로 표현된다. [86]
      • 분할 표시 폼: 폼 보기와 데이터시트 보기를 동시에 보여주며, 폼과 데이터가 동기화되고 데이터시트의 위치를 설정할 수 있다. [86]
    6. 탭 인덱스: 탭 키를 눌렀을 때 포커스가 맞춰지는 순서이다. [87]
      • 컨트롤이 만들어지는 순서에 따라 탭 순서가 지정된다. [87]
      • 자동 순서 단추를 누르면 위에서 아래로, 왼쪽에서 오른쪽으로 탭 인덱스가 자동으로 지정된다. [88]
      • 탭 순서 속성으로 되어 있어야 포커스가 이동된다. [88]
  4. 하이 폼(Subform)과 하이 보고서(Subreport)는 기존 폼/보고서 안에 포함된 또 다른 폼/보고서이다. [89]
    1. 독립된 개체로 열거나 편집할 수 있다. [91]
    2. 일대다 관계에서 효과적으로 표현할 수 있으며, '일'이 기본 폼, '다'가 하이 폼이 된다. [92]
    3. 하이 폼/보고서를 연결하려면 연결 필드가 있어야 하며, 필드 형식은 같거나 호환되어야 한다. [93]

3.2. 보고서(Report)의 기능과 속성 [94]

  1. 보고서는 테이블 및 쿼리를 원본으로 하여 데이터를 조회하거나 출력할 수 있도록 해주는 개체이다. [94]
    1. 보고서 도구나 보고서 마법사를 이용해 쉽게 만들 수 있다. [95]
    2. 레코드 원본으로 쿼리 작성기를 이용해 여러 개의 테이블을 사용할 수 있다. [96]
    3. 폼과 동일하게 컨트롤로 표현할 수 있지만, 데이터를 입력하거나 편집하는 것은 불가능하다. [97]
  2. 보고서의 보기 상태는 다음과 같다. [98]
    1. 인쇄 미리 보기: 인쇄 전에 페이지가 구분되어 출력되는 화면을 미리 본다. [98]
    2. 레이아웃 보기: 컨트롤의 배치(레이아웃)를 설정할 수 있는 화면이다. [98]
    3. 디자인 보기: 내용이나 속성 등을 변경하기 위한 화면이다. [99]
    4. 보고서 보기: 보고서 내용을 확인할 수 있지만, 페이지 구분이 잘 안 되어 실제로는 잘 사용하지 않는다. [100]
  3. 보고서의 주요 속성 및 기능은 다음과 같다. [102]
    1. 레코드 원본의 필드를 추가하면 자동으로 텍스트 상자로 바인딩된다. [102]
    2. 수식 컨트롤을 사용하려면 반드시 =로 시작해야 한다. [102]
    3. 누적 합계 속성은 각 합계를 표시하는 기능이다. [103]
      • 인덱스 값을 이용해 순번을 표현하려면 =1로 표현하고 누적 합계 속성을 '모두' 또는 '그룹'으로 설정한다. [104]
    4. 중복 내용 숨기기 속성을 이용하면 이전 레코드와 값이 같을 경우 내용을 숨길 수 있다. [105]
    5. 그룹화 및 정렬: [106]
      • 그룹화 기준이 되는 필드는 자동으로 정렬되어 표시된다. [106]
      • 그룹 머리글은 첫 번째 레코드 위에, 그룹 바닥글은 마지막 레코드 아래에 표시된다. [107]
      • 필드나 식을 기준으로 최대 10개까지 그룹하거나 정렬할 수 있다. [108]
      • 날짜 필드는 연도, 분기, 월, 주, 일, 시간, 분별로 그룹할 수 있다. [108]
      • 문자열 필드는 첫 번째 문자 또는 지정한 문자 개수만큼 그룹할 수 있다. [108]
      • 숫자 필드는 일정한 간격으로 그룹할 수 있다. [109]

3.3. 보고서 구역 및 함수 [110]

  1. 보고서의 구역은 다음과 같이 출력된다. [110]
    1. 보고서 머리글: 보고서 처음 한 번 출력된다. [110]
    2. 보고서 바닥글: 보고서 마지막에 출력된다. [111]
    3. 페이지 머리글: 매 페이지 상단에 출력된다. [111]
    4. 페이지 바닥글: 매 페이지 하단에 출력된다. [111]
    5. 그룹 머리글: 그룹의 첫 번째 레코드 위에 출력된다. [112]
    6. 그룹 바닥글: 그룹의 마지막 레코드 아래에 출력된다. [112]
    7. 본문: 모든 레코드를 출력한다. [113]
    8. 이러한 내용들은 모든 영역에 적용할 수 있다. [114]
  2. 액세스에서 사용하는 함수는 엑셀과 다른 점이 있다. [115]
    1. 엑셀의 AVERAGE는 액세스에서 AVG로 사용한다. [115]
    2. 엑셀의 COUNTIF는 액세스에서 COUNT로 사용한다. [116]
      • 액세스에는 COUNTA와 COUNTBLANK 함수가 존재하지 않는다. [117]
    3. 엑셀의 IF는 액세스에서 IIF로 철자가 다르다. [118]
    4. 엑셀의 MOD는 PDS 소속 매개변수 나누는 형식으로 나머지를 받지만, 액세스에서는 PDS 소속 MOD로 사용한다. [118]
    5. 엑셀의 TEXT는 액세스에서 FORMAT 함수로 사용한다. [120]
    6. 액세스의 D 함수는 엑셀과 다르게 필드와 테이블을 조건 형태로 조회 순서를 바꿔야 한다. [121]
  3. 페이지 번호를 넣을 때 Page는 현재 페이지 번호를, Pages는 전체 페이지 번호를 가리킨다. [122]
  4. 조건부 서식은 엑셀과 마찬가지로 조건을 만족하면 지정된 서식을 적용하는 기능이다. [123]
    1. 필드값이 다른 레코드와 비교 등으로 생성할 수 있다. [123]
    2. 여러 개를 설정할 수 있으며, 순서를 바꿀 수 있고 상위 항목이 우선순위가 높다. [124]
    3. 텍스트와 콤보 상자 컨트롤에만 적용할 수 있으며, 최대 50개까지 설정 가능하다. [126]
    4. 조건부 서식이 걸려있는 폼이나 보고서를 다른 파일 형식으로 내보낼 때 조건부 서식은 유지되지 않는다. [127]

3.4. 매크로(Macro)의 활용 [128]

  1. 매크로는 반복적인 명령이나 작업을 자동화하여 빠르게 수행할 수 있는 기능이다. [128]
    1. 엑셀과 다르게 기록이 아니라 매크로 함수를 이용해 생성한다. [129]
    2. 여러 개의 매크로 함수를 포함할 수 있으며, 폼이나 보고서 등에 있는 컨트롤 이벤트에 포함하여 실행할 수 있다. [130]
  2. 대표적인 매크로 함수는 다음과 같다. [131]
    1. If: 조건을 만족하면 실행한다. [131]
    2. ApplyFilter: 필터를 이용해 조건에 맞게 설정한다. [131]
    3. FindRecord: 특정 레코드의 정보를 찾거나 고친다. [131]
    4. GoToRecord: 특정 레코드로 이동한다. [131]
    5. MessageBox: 메시지 박스로 메시지를 표시한다. [131]
    6. OutputTo: 텍스트, 폼 등의 형식으로 내보낸다. [131]
    7. OpenForm: 폼을 연다. [131]
    8. OpenQuery: 쿼리를 연다. [131]
    9. OpenReport: 보고서를 연다. [131]
    10. OpenTable: 테이블을 연다. [131]
    11. RunMacro: 매크로를 실행한다. [131]
    12. CloseWindow: 창을 닫는다. [132]
    13. QuitAccess: 액세스 자체를 종료한다. [132]