Database 기초
데이터 모델 및 데이터베이스 설계
데이터 모델링 과정
- 개체 정의 : 현실 세계에서 개체를 찾아 정의하는 단계
- 식별자 정의 : 각각의 개체를 식별하기 위해 특성화하는 단계
- 상세화 : 각각의 개체를 구체화하는 단계
- 통합 : 개체와 개체 사이의 관련성을 파악하여 전체를 통합하는 단계
- 검증 : 실체 맞는지를 검증하는 단계
정보 모델링 과정
- 정보 모델링
현실 세계에서 개체 요소를 추상화시켜 개체 타입을 만든 다음, 이 개체 타입과 개체 타입의 관련성을 가지고 현실 세계에 있는 그대로 사람이 이해할 수 있는 형태의 정보 구조로 만들어 가는 과정 - 데이터 모델링
정보 모델링 과정에서 생성된 정보 구조를 컴퓨터 이해할 수 있는 형태의 논리적 구조로 만들어 가는 과정
모델링 단계
- 현실 단계
- 개념적 단계
- 논리적 단계
데이터 모델의 개념
- 현실 세계를 데이터 베이스에 표현하는 중간 과정, 즉 데이터 베이스 설계 과정에서 데이터의 구조를 표현하기 위해 사용되는 도구이다.
개념적 데이터 모델
- 속성들로 기술된 개체 타입과 이 개체 타입들 간의 관계를 이용하여 현실 세계를 표현하는 방법
종류
- E-R 모델
- 이진 모델
- 의미적 데이터 모델
- 정보 논리 모델
- 함수적 데이터 모델
논리적 데이터 모델
데이터 모델의 구성요소
- 데이터의 논리적 구조
- 개체 인스턴스를 처리하는 연산
- 개체 인스턴스에 대한 논리적 제약 사항
관계 스키마 설계 원칙
- 필요한 속성, 개체, 관계성을 식별하여 릴레이션을 구성한다.
- 불필요한 데이터의 중복이 발생하지 않도록 설계한다.
- 속성 사이의 관계성과 데이터의 종속성을 고려하여 설계한다.
- 효율적 데이터 처리와 일관성 유지 방법 등을 고려하여 설계한다.
스키마 변환
관련된 속성을 수집하고, 이들 간에 존재하는 종속성을 파악하여 속성의 집합인 릴레이션으로 만든 다음 보다 바람직한 형태의 릴레이션들도 다시 변환하는 과정
스키마 변환 원리
- 공해의 원칙
- 정보 무손실의 원칙
- 데이터 중복 감소의 원칙
Anomaly 현상
관계 스키마가 잘못되면 불필요한 데이터 중복을 초래한다. 이러한 데이터 중복은 릴레이션을 조작하는 중에 삽입, 삭제, 수정 이상을 발생시킨다.
- 삭제 이상
임의의 튜플을 삭제했을 때 그것과 관계를 형성하고 있는 관계성까지 모두 삭제되는 현상 - 삽입 이상
임의의 튜플을 삽입했을 때 삽입 의도가 없는 관계까지도 삽입되는 현상 - 갱신 이상
임의의 데이터를 갱신했을 때 그것과 관계를 맺고 있는 데이터에 대해 일관성을 유지할 수 없는 현상
함수종속
좋은 릴레이션 설계를 위한 정형적 기준으로 속성의 의미와 속성 상호 간의 관계에서 유도되는 일종의 제약 조건이다.
함수 종속 정의
어떤 릴레이션 R에서 A,B가 릴레이션 R의 부분 속성이라고 할 때 속성 A의 도메인 값 각각에 대해 시간에 관계없이 속성 B의 도메인 값이 오직 한 개만 연관된다면 B는 A의 함수 종속이라 하고, A → B로 표기한다. 여기서 A는 결정자 B는 종속자라 한다.
Normalization의 과정
Normalization 개념
- 정규화란 하나의 릴레이션에 하나의 의미만 존재할 수 있도록 릴레이션을 분해해 나가는 과정
- 정규현이란 특정 조건에 만족하는 릴레이션 스키마의 형태를 말함
- 기본 정규형에 1NF, 2NF, 3NF, BCNF, 4NF, 5NF이 있다.
Normalization의 목적
- 구성되는 모든 릴레이션이 중복되지 않게 효과적으로 데이터베이스 내에 표현이 가능하도록 한다.
- 보다 간단한 연산자에 의해 효과적인 연산이 가능하도록 구성한다.
- 릴레이션에 삽입 이상, 삭제 이상, 갱신 이상의 문제가 발생하지 않도록 한다.
- 새로운 형태의 데이터가 삽입될 때 릴레이션을 재구성할 필요성을 감소시키도록 한다.
Normalization의 필요성
- 자료의 저장공간을 최소화한다.
- 자료의 불일치를 최소화시킨다.
- 자료 구조를 안정화시킨다.
- 자료의 삽입, 삭제, 갱신 시 이상 현상을 방지한다.
Normalization 과정
- 비정규형
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
제 1 정규형
어떤 릴레이션 R에 속한 모든 도메인이 원자값으로 되어 있다면, 제 1 정규형에 속한다.
제 2 정규형
어떤 릴레이션 R이 제 1정규형에 속하고, 기본키에 속하지 않는 모든 속성이 기본키에 완전 함수적 종속이면, 제 2 정규형에 속한다.
제 3 정규형
어떤 릴레이션 R이 제 2정규화를 만족하면서 기본키에 속하지 않는 모든 속성이 기본키에 이행적 함수 종속이 아니면 제 3 정규형에 속한다.
BCNF
릴레이션 R의 모든 결정자가 후보키이면, 릴레이션 R은 BCNF를 만족한다.
데이터베이스의 생명주기
데이터베이스의 설계 순서
- 요구 조건 분석 단계 : 사용자 식별 및 범위 설정
- 개념적 설계 단계 : 개념 스키마 모델링, 트랜잭션 모델링
- 논리적 설계 단계 : DBMS에 따라 논리적 모델로 변환, 트랜잭션의 인터페이스 설계/스키마 평가 및 정제
- 물리적 설계 단계 : 물리적 구조 설계, 트랜잭션의 세부 사항 설계
- 구현 단계 : DDL로 스키마 작성, 트랜잭션 프로그래밍
- 요구사항 분석 단계
요구되는 개체와 속성, 관계성, 제약조건, 트랜잭션의 유형, 실행 횟수 등을 파악하고 사용 기관의 사용 목적과 내규, 법적인 규정, 데이터베이스의 사용자 식별, 사용 범위 결정을 분석하는 단계 - 개념적 설계 단계
개념 스키마 모델링과 트랜잭션 모델링을 병행적으로 수행하는 단계
- 개념 스키마 모델링
요구 분석 단계에서 나온결과를 E-R 다이어그램과 같은 DBMS에 독립적이고 고차원적인 표현 기법으로 기술하는 과정을 의미 - 트랜잭션 모델링
요구 조건 분석 결과로 식별된 응용을 검토해서 이들을 구현할 수 있는 트랜잭션을 고차원 명세로 기술하는 과정을 의미
- 논리적 설계 단계
개념적 설계를 바탕으로 사용할 데이터베이스 관리 시스템이 어떤 모델을 지원하는가를 파악하여 그 지원 모델에 일치하게 논리적 데이터 모델로 변환시키는 단계
- 트랜잭션에 대한 인터페이스를 설계한다.
- 설계에 논리적 데이터 모델을 이용한다.
- 스키마에 대한 평가 및 정제 작업이 이루어진다.
- 물리적 설계 단계
논리적 설계를 바탕으로 물리적으로 구현 가능하도록 설계하는 것으로 데이터베이스에 포함될 여러 파일 타입에 대한 저장 레코드의 양식, 순서, 접근 경로를 설계하여 성능에 중대한 영향을 미친다. - 구현 단계
물리적 데이터베이스의 설계가 끝나면 목표 DBMS의 DDL로 데이터베이스 스키마를 기술하고 컴파일하여 데이터베이스를 생성하고 데이터가 적재되며, 트랜잭션들은 응용 프로그래머에 의하여 프로그래밍되어 구현되는 단계
관계 데이터베이스의 기본
- 속성
어떤 개체 정보의 특성이나 특징에 대한 이름을 의미하며, 파일 시스템의 레코드 필드에 해당하는 개념 - 도메인
한 속성의 의미로 들어오는 실제 값들의 집합을 의미한다. - 튜플
릴레이션 스키마에 따라 각 속성으로 실제 값이 입력됐을 때 하나의 행 값에 해당하는 개념이다. - 릴레이션
데이터 간의 관계를 나타내는 표(Table)자체를 릴레이션이라고 한다. - 차수
하나의 릴레이션에서 정의된 속성의 개수, 즉 필드의 수를 나타내는 것이다. - 카디날리티
하나의 릴레이션에 형성된 튜플의 개수 - 널 값
Empty 또는 모르는 값, 정의되어 있지 않은 값을 의미한다.
관계 데이터베이스의 키 제약사항
키는 각각의 튜플을 유일하게 구분할 수 있는 개념으로 관계형 모델에서는 대단히 중요한 개념이다.
키는 유일한 식별성과 최소성을 가지고 있어야 하며, 하나의 릴레이션에는 최소한 하나의 키가 있어야 한다.
- 후보키 선정 조건
- 유일성 : 릴레이션으로 입력되는 모든 튜플을 유일하게 구별할 수 있는 성질
- 최소성 : 가장 적은 개수의 속성으로 구성될 수 있는 성질
- 키의 종류
- 후보키 : 유일성과 최소성을 가지고 있는 모든 속성 또는 속성 집합
- 기본키 : 후보키들 중 데이터베이스의 설계자에 의해 선택된 한 개의 키
- 대체키 : 후보키 내의 기본키를 제외한 모든 키를 대체키
- 외래키 : 다른 릴레이션의 기본 키를 참조하는 키
- 슈퍼키 : 최소성이 없이 단지 튜플을 식별하기 위하여 두 개 이상의 속성 집합으로 이루어진 키
무결성 제약 조건
- Domain Integrity
모든 값은 속성으로 정의 되거나 제약된 도메인 영역에 있어야 하는 것을 말함 - Entity Integrity
중복된 튜플이 존재해서는 안 된다는 제약 - Referential Integrity
참조 하는 외래키는 참조 되는 기본키를 기준으로 만들어진다. 고로, 참조 되는 릴레이션의 기본키가 존재해야 함.