[DBMS] 트랜잭션, TCL, 함수적 종속성, 정규화, 데이터 무결성, like조건
[트랜잭션]
데이터베이스 상태를 변화시키기 위해 수행하는 작업의 단위
작업의 단위는 SQL 한 문장이 아니며 많은 SQL 명령문을 사람이 정하는 기준에 따라 정해짐
특징
원자성 : 모두 반영되거나 모두 반영되지 않거나
일관성 : 처리결과가 항상 일관되어야함. 트랜잭션 진행 도중 DB가 변경되더라도 처음 참조한 DB로 진행
독립성 : 둘 이상의 트랜잭션 동시 실행되는 경우 각각의 연산에 끼어들 수 없음
지속성 : 작업완료한 트랜잭션 결과가 중도 사라지지 않고 유지됨
[TCL _ Transaction Control Language]
트랜잭션 제어명령
COMMIT
트랜잭션 처리가 정상종료되어 변경내용을 반영하는 연산으로 DB에서 자동실행됨
트랜잭션이 완료되면 DB는 변경되며 이 상태에서는 시스템 오류가 발생하더라도 취소되지 않음
ROLLBACK
트랜잭션 처리가 비정상종료되어 DB의 일관성이 깨졌을때 모든 변경 작업을 취소하고 이전 상태로 되돌리는 연산
받았던 자원과 잠금을 모두 반환하고 재시작 또는 폐기됨
ROLLBACK 연산 시 마지막 COMMIT 이후 작업으로 돌아가는데 만약 COMMIT 하지 않았다면 모든작업 사라짐
ROLLBACK TO 'SAVEPOINT_NAME';
LOCK
트랜잭션 수행되는 동안 특정 데이터에 대해 다른 트랜잭션의 동시접근제한
SAVEPOINT
ROLLBACK과 함께 사용. 저장된 SAVEPOINT는 ROLLBACK TO SAVEPOINT문을 사용하여 지정한 곳까지 ROLLBACK 가능
여러 SQL문을 수반하는 경우, 중간 단계에서 SAVEPOINT 지정가능
여러개 생성 가능하며 SAVEPOINT 후 COMMIT 연산 하게되면 COMMIT 연산 이전에 만든 SAVEPOINT는 모두 사라짐
SAVEPOINT 포인터명;
START TRANSACTION
트랜잭션 시작명령 (=BEGIN)
[함수적 종속성]
릴레이션R의 X,Y가 각각 속성의 부분집합일 때
X값을 알면 Y값을 식별할 수 있고 X값에 의해 Y값이 달라질때 X는 Y의 함수적 종속
X : 결정자, Y : 종속자 (X→Y)
ex.
결정자 : 주민등록번호
종속자 : 이름, 나이, 성별 등
주민등록번호를 알면 이름, 나이, 성별 식별가능하고 주민등록번호가 다르면 그에 따른 값도 다르다
완전 함수적 종속 : 종속자가 기본키에만 종속
ex. 이름,나이,거주지역 속성은 기본키인 회원번호를 알아야 식별가능하므로 완전 함수적 종속 관계
부분 함수적 종속 : 종속자가 기본키가 아닌 다른 속성에 종속
ex. 주문상품 속성은 기본키 중 상품코드만 알아도 식별가능하므로 부분 함수적 종속 관계
이행 함수적 종속 : X→Y,Y→Z의 관계에서 X→Z가 성립될 때
ex. 상품번호를 알면 소분류를 알 수 있고, 소분류를 알면 대분류도 알 수 있으므로 이행 함수적 종속 관계
대분류는 소분류에 의해 관계되는 항목이지만 상품번호를 통해 귀속됨
[정규화]
모델링을 하면서 불필요한 속성이나 요소를 걸러내는 작업
논리모델링시 진행
정규화의 장점
테이블 간 중복데이터를 허용하지 않아 무결성을 유지할 수 있고 DB 용량 (저장공간) 줄일 수 있음
데이터 변경시 데이터의 불일치성 최소화
연산작업 최소화
제1정규화 : 테이블 속성이 하나의 값을 갖도록 분해
제2정규화 : 완전 함수적 종속을 만족하도록 분해 (기본키의 부분집합이 결정자가 되면 안됨)
제3정규화 : 이행 함수적 종속을 없애도록 분해
BCNF정규화 : 모든 결정자가 후보키가 되도록 분해 (기본키가 아닌데도 결정자가 되는 경우 제거하기 위함)
[데이터무결성]
데이터의 정확성, 일관성, 유효성이 유지되는 것
장점 : 스키마 정의 시 일관성 조건 한번만 명시
단점 : 복잡한 작업, 반복구현, 조건 간 충돌발생
데이터무결성 제약조건 종류
개체 무결성 : 기본키는 테이블 내에 유일하고 null 값이 올 수 없음
참조 무결성 : 외래키 속성은 참조할 수 없는 값은 가질 수 없고 null 이거나 참조 릴레이션(상위테이블)의 기본키와 동일해야함
도메인 무결성 : 필드타입 등을 정의하고 바르게 입력되었는지 확인 ex. 숫자필드에 문자가 입력되면 도메인 무결성이 깨진 것
null 무결성 : 테이블의 특정 속성 값이 null이 될 수 없음
고유 무결성 : 테이블 특정 속성의 각 레코드들이 갖는 값이 서로 달라야함
키 무결성 : 테이블에 적어도 하나의 키가 존재해야 함
관계 무결성 : 테이블의 레코드 삽입 가능 여부 또는 레코드 사이 관계 적절성 여부 지정
[like 조건]
컬럼에 저장된 문자열 중 like 연산자에서 지정한 문자 패턴과 부분일치하면 참이되는 연산자
% : 글자 수 제한X
%DB : DB로 끝나는 문자열
DB% : DB로 시작하는 문자열
%DB% : 문자열 내부에 DB가 포함되면 됨
_ : 글자 수 제한O
_DB : DB로 끝나는 문자(3글자)
__DB : DB로 끝나는 문자(4글자)
DB_ : DB로 시작하는 문자(3글자)
_DB_ : DB가 포함된 문자(4글자)