트랜잭션 DBMS는 데이터베이스가 항상 정확하고 일관된 상태를 유지할 수 있도록 다양한 기능을 제공하는데, 그 중심에는 트랜잭션이 있다. 트랜잭션을 관리함으로써 데이터베이스의 회복과 병행 제어가 가능해져, 결과적으로 데이터베이스가 일관된 상태를 유지할 수 있게 된다. 트랜잭션transaction은 하나의 작업을 수행하는 데 필요한 데이터베이스의 연산들을 모아놓은 것으로, 데이터베이스에서 논리적인 작업의 단위가 된다. 트랜잭션의 특성 트랜잭션이 성공적으로 처리되어 데이터베이스의 무결성과 일관성이 보장되려면 네 가지 특성을 꼭 만족해야 한다. ACID 특성이라고도 한다. 1. 원자성 : 트랜잭션을 구성하는 연산들이 모두 정상적으로 실행되거나 하나도 실행되지 않아야 한다는 all or nothing 방식을 의..
정규화의 개념과 이상 현상 8장에서는 관계 데이터 모델에 기반을 두고 데이터베이스를 설계하는 방법 중 E-R 모델과 릴레이션 변환 규칙을 이용하는 방법을 살펴보았다. 이 장에서는 정규화normalization를 이용해 데이터베이스를 설계하는 방법에 대해 소개한다. 정규화는 설계한 후 설계 결과물을 검증하기 위해 사용하기도 한다. 앞에서도 언급했듯이, 두 설계 방법은 데이터베이스 설계 결과물이 비슷한 수준을 유지하므로 상황에 따라 적절한 방법을 선택하면 된다. 데이터베이스를 잘못 설계하면 부작용(이상anomaly 현상)이 발생한다. 이상 현상의 종류 삽입 이상 : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제 갱신 이상 : 중복 투플 중 일부만 변경하여 데이터가 불일치하게 되는 모순..
데이터베이스 설계 단계 관계 데이터 모델을 기반으로 두고 데이터베이스를 설계할 때는 두 가지 방법을 주로 사용한다. 첫째는 이 장에서 알아볼 E-R 모델과 릴레이션 변환 규칙을 이용한 데이터베이스 설계이고, 둘째는 9장에서 알아볼 정규화를 이용한 데이터베이스 설계다. 두 방법의 설계 과정물은 유사하기 때문에 상황에 따라 설계하면 된다. E-R 모델과 릴레이션 변환 규칙을 이용한 데이터베이스 설계는 5단계로 진행된다. 한 방향으로만 순서대로 진행되지는 않으며, 오류를 발견하여 변경이 필요하면 이전 단계로 되돌아가 설계 내용을 변경할 수도 있다. 1단계 : 요구 사항 분석 데이터베이스의 용도파악 결과물 : 요구 사항 명세서 2단계 : 개념적 설계 DBMS에 독립적인 개념적 구조 설계 결과물 : 개념적 스키마..
SQL의 소개 SQL(Structured Query Language)은 관계 데이터베이스를 위한 표준 질의어로 많이 사용되는 언어다. SQL은 사용자가 처리를 원하는 데이터가 무엇인지 제시하고 데이터를 어떻게 처리해야 하는지를 언급할 필요가 없어 비절차적 데이터 언어의 특징을 띤다고 할 수 있다. SQL은 데이터베이스 관리 시슽메에 직접 접근하여 대화식으로 질의를 작성해 사용할 수도 있고 C나 JAVA같은 언어로 작성한 응용 프로그램에 삽입하여 사용할 수도 있다. 이 장에서는 데이터 정의어와 데이터 조작어를 중심으로 공부하고, 데이터 제어어는 11장에서 따로 다룬다. 복습 SQL(데이터 언어라고 의미해도 무리는 없다)의 분류 데이터 정의어 : 테이블을 생성하고 변경 제거하는 기능을 제공한다. 데이터 조직..
관계 데이터 연산의 개념 관계 데이터 모델에서 연산은 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것으로, 데이터베이스 시스템의 구성 요소 중 데이터 언어의 역할을 한다. 대표적인 관계 데이터 연산으로 관계 대수와 관계 해석이 있다. 관계 대수 : 원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술하는 절차 언어 관계 해석 : 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술하는 비절차 언어 데이터에 대한 처리 요구를 일반적으로 질의(query)라 한다. 관게 대수와 관계 해석은 상용화된 관계 데이터베이스에서는 실제로 사용되지 않는다. 새로운 데이터 언어가 제안되면 해당 데이터 언어의 유용성을 검증해야 하는데 검증의 기준 역할을 하는 것이 관계 대수와 관계 해..
관계 데이터 모델의 개념 관계 데이터 모델의 기본 용어 속성 : 릴레이션의 열 투플 : 릴레이션의 행 도메인 : 속성 하나가 가질 수 있는 모든 값의 집합 도메인을 정의해두면 사용자가 속성 값을 입력하거나 수정할 때 데이터베이스 시스템이 적합성을 판단하여 네 가지 이외의 값은 허용하지 않음으로써 항상 올바른 값만 유지할 수 있다는 장점이 있다. 그러나 도메인을 정확히 정의하기 어려운 경우가 대부분이라 일반적으로 데이터 타입으로 정의한다. 데이터 타입을 도메인, 변수를 속성으로 생각 널 값 : 릴레이션에 있는 특정 투플의 속성을 모르거나, 적합한 값이 없는 경우에는 널null을 사용할 수 잇다. 차수 : 하나의 릴레이션에서 속성의 전체 개수 카디널리티 : 하나의 릴레이션에서 투플의 전체 개수 릴레이션과 데..
데이터 모델링과 데이터 모델의 개념 데이터 모델링 : 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정 추상화 : 저장하여 관리할 만한 가치가 있는 중요 데이터만 찾아내는 작업 개념적 모델링 : 현실 세계에서 중요 데이터를 추출하여 개념 세계로 옮기는 작업 논리적 모델링 : 개념 세계의 데이터를 데이터베이스에 저장할 구조를 결정하고 이 구조로 표현하는 작업 데이터 모델 : 데이터 모델링의 결과물을 표현하는 도구로, 개념적 데이터 모델과 논리적 데이터 모델이 있다. 개념적 데이터 모델 : 사람의 머리로 이해할 수 있도록 현실 세계를 개념적 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구 논리적 데이터 모델 : 개념적 구조를 논리적 모델링하여 데이터베이스의 논리적 구조로 표현..
데이터베이스 시스템의 정의 데이터베이스 시스템은 데이터베이스에 데이터를 저장하고, 저장된 데이터를 관리하여 조직에 필요한 정보를 생성해주는 시스템이다. 데이터베이스 : 데이터를 저장해두는 곳, 즉 저장된 데이터의 집합 데이터베이스 관리 시스템 : 데이터베이스에 저장된 데이터가 일관되고 무결한 상태로 유지되도록 관리하는 역할 데이터베이스 시스템 : 데이터베이스와 데이터베이스 관리 시스템을 이용해 조직에 필요한 정보를 제공해주는 전체 시스템 데이터베이스의 구조 스키마 스키마 : 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것 인스턴스 : 정의된 스키마에 따라 데이터베이스에 실제로 저장된 값 스키마는 자주 변경되지 않지만, 인스턴스는 계속 변한다. 3단계 데이터베이스 구조 개별 사용자 관점에서 바라..