인덱스 - 테이블 안의 데이터를 쉽고 빠르게 찾을 수 있도록 만든 데이터베이스 객체 - 책에서 원하는 내용이 설명된 페이지를 목차나 색인을 통해 쉽게 찾는 것과 같은 원리 필요성 - 실제 데이터베이스 안의 테이블 데이터가 저장되는 곳은 디스크와 같은 보조기억장치 - SQL 실행 시 디스크로부터 필요한 데이터를 찾음 - 디스크 안의 데이터베이스 파일로부터 필요한 블록을 반복해서 주기억장치로 읽어오게 되는데, 문제는 디스크 접근 속도가 주기억장치 접근 속도보다 훨씬 느리다는 점 - 디스크 접근 횟수를 줄여 검색 속도를 높이기 위해 인덱스 사용 인덱스의 구조 - 대부분의 DBMS는 B-트리 구조의 인덱스 지원 - 루트노드, 중간 노드, 리프노드로 구성 - 리프노드들이 같은 레벨에 존재하는 균형 트리 - 리프 ..
정규화와 이상 현상 - 잘못된 스키마 정의는 원하지 않는 여러 이상 현상을 발생 - 잘못된 스카 정의를 바로 잡는 데이터베이스 설계 방법이 정규화 정규화의 필요성 - 잘못된 데이터베이스 설계는 여러 부작용 - 데이터 관리가 어려워지고, 일관성/무결성 훼손 - 부작용은 대부분 불필요한 데이터 중복 때문에 발생 - 좋은 설계는 데이터 중복을 최소화하는 형태로 릴레이션 스키마를 정의하는 것 이상 현상 - 릴레이션 처리 과정에서 불필요한 데이터 중복으로 인해 발생하는 부작용 - 이는 잘못된 릴레이션 스키마 설계 때문 종류 1) 삽입 이상 - 불필요한 데이터를 함께 입력하지 않고서는 원하는 데이터만 입력하는 것이 불가능한 상황 2) 갱신 이상 - 중복된 속성 값 중 일부가 수정되지 않을 경우 데이터 불일치가 발생..
트랜잭션 - 한 묶음으로 처리되어야 하는 SQL 문들의 집합 - 트랜잭션에 속한 SQL 문들은 모두 정상처리 되어야 트랜잭션이 완료될 수 있음 - 트랜잭션의 실행 결과를 데이터베이스에 최종적으로 반영하는 것을 커밋이라 함 - 실행 결과를 반영하지 않고, 취소하여 원래 상태로 되돌리는 것을 롤백이라 함 - 커밋되기 전까지는 데이터베이스에 완전하게 반영되었다고 할 수 없는 임시 실행 결과일 뿐 필요성 - 여러 사용자의 동시 접근성을 제어하고 장애 발생 시 안정적으로 데이터를 복구하기 위해 트랜잭션의 4가지 특성(ACID) 1) 원자성(Atomicity) - 트랜잭션 안의 SQL 명령문을 모두 성공적으로 실행하여 완료하거나 아니면 모두 철회하여 무효화해야함을 의미 2) 일관성(Consistency) - 데이터..
내장 함수 - SQL 명령문 안에서 검색 결과를 반환하거나 원하는 결과로 가공하는 SQL 함수 사용 가능 - DBMS가 제공하는 내장 함수와 사용자가 직접 정의하는 사용자 정의 함수로 구분 MySQL 주용 내장 함수 표 저장 프로시저 - 미리 작성하여 데이터베이스 안에 저장한 SQL 문의 묶음 - 독립된 프로그램으로 데이터베이스 안에 하나의 객체로 저장 - 보통 DBA가 데이터베이스 관리를 수행하기 위해 사용하는 기능들이 DBMS에 의해 저장 프로시저로 제공됨 - 직접 저장 프로시저를 정의하면, 복잡한 조건의 SQL 작업을 함수처럼 인자만 전달해서 실행 가능 - 최적화된 SQL문을 미리 데이터베이스에 작성해둘 수 있고, 복잡한 SQL문을 전달할 필요가 없어 네트워크 부하가 줄어들며 여러 응용 프로그램간의..
뷰 - 실제 데이터를 저장하지 않는 가상 테이블 - 사용자에게는 똑같은 테이블로 보이지만 CREATE TABLE 명령어로 만들어진 물리적인 기반 테이블과는 다름 - 테이블이 전체 조직의 관점에서 여러 사용자 요구를 수용하여 최적의 저장단위로서 만들어졌다면 뷰는 개인 관점에서 필요로 하는 접근 구조로서 자유롭게 정의할 수 있음 - 데이터베이스에 저장된 테이블 구조를 각 사용자별로 서로 다르게 볼 수 있도록 한다 - 뷰는 주로 기반 테이블로부터 정의되지만 또 다른 뷰를 기반으로도 정의될 수 있음 장점 1) 편의성, 재사용성 - 복잡한 질의문 작성이 쉽고 간단해짐 - 조인, 중첩 질의 등을 사용하여 뷰를 미리 생성하면, 복잡한 SQL문을 다시 작성할 필요가 없음 - 작성 빈도가 높거나 빈번하게 참조되는 검색 ..
1. 관계 대수 연산 - 릴레이션을 내부적으로 처리하기 위한 연산들의 집합 - SQL 데이터베이스 언어의 이론적 토대를 제공 - 모든 연산의 적용 대상도 릴레이션이고, 연산 결과 또한 릴레이션 - 2개의 그룹으로 분류; 수학 집합 이론에 기반을 둔 집합 연산 그룹과 관계형 데이터 모델을 위해 추가된 관계 연산 그룹 1.1 집합 연산 - 일반적인 수학의 집합 연산과 의미와 기능이 같음 - 합집합, 교집합, 차집합 연산은 두 입력 릴레이션이 서로 합병 가능(union compatible)해야 함 - 합병 가능하려면, 두 릴레이션의 차수가 같고 대응하는 속성의 순서와 도메인이 같아야 함 - 속성 이름은 서로 달라도 되며 연산 적용 후 결과 릴레이션의 속성 이름은 첫번째 릴레이션의 속성 이름을 따름 합집합 - ..
1. 관계형 데이터 모델 1.1 데이터 모델의 구성 요소 - 데이터 모델은 데이터 구조와 연산, 제약 조건와 같이 3가지 요소로 구성된다. 데이터 구조 - 데이터를 어떤 형태로 저장하는지를 표현 연산 - 데이터를 어떤 방식으로 처리하는지를 표현 제약 조건 - 데이터 구조를 지정할 때의 구조적 제약 사항과 연산을 적용할 때의 행위적 제약 사항을 표현 1.2 관계형 데이터 모델의 구성 요소 - 관계형 데이터 모델은 테이블 형태의 릴레이션을 통해 데이터를 저장하고 데이터 간의 관련성도 표현 - 데이터 구조는 릴레이션, 연산은 관계 대수, 제약 사항은 무결성 제약 조건으로 명세 2. 관계형 데이터 구조 2.1 관계형 데이터 구조의 개념 - 릴레이션 - 1970년대 IBM 연구소의 E. F. Codd가 제안한 데..
데이터베이스 사용자의 종류와 역할 데이터 언어의 종류 데이터베이스 관리 시스템의 구성요소와 기능 데이터 모델의 종류와 DBMS와의 관계 3단계 데이터베이스의 구조와 데이터 독립성 1. 데이터베이스 시스템의 구성요소 - 데이터베이스, 사용자, 언어, DBMS, 서버, 모델 등 6가지로 구성 1.1 데이터베이스 시스템의 개념 데이터베이스와 DBMS를 포함. 사용자, 데이터베이스에 접근하기 위해 사용하는 데이터 언어, 데이터베이스에 대한 다양한 접근 요청을 효율적으로 실행하는 데이터베이스 서버까지 추가적으로 포함하는 포괄적 개념 1.2 데이터베이스 사용자 접근 목적에 따라 분류 일반 사용자 - end user 응용 프로그래머 - 응용 프로그램을 개발할 목적으로 데이터베이스에 접근하는 사용자 유형 데이터베이스 ..