정규화
테이블을 올바른 형태(주관적 기준으로 판단)로 변경하고 분할하는 것을 정규화라고 한다.(테이블 쪼개기)
중복되거나 반복되는 부분을 찾아내서 테이블을 분할하고 기본키를 작성해 사용한다.
하나의 데이터는 한 곳에 있어야 한다.
- 제1 정규형
반복되는 데이터를 가로(열 방향)가 아닌 세로(행 방향)로 늘리는 것이 제1정규화의 제1단계이다.
반복되는 부분을 찾아내서 테이블을 분할하고 기본키가 될 열을 지정하는 것이다.
=> 중복되는 행이 없어야 하고, 다중값을 가지지 않아야 함.
- 제2 정규형
부분 함수종속성을 찾아내서 테이블을 분할하는 것이다.
=> 후보키에 종속적이지 않거나 후보키 일부 어트리뷰트에 종속적인 어트리뷰트는 별도 테이블로 분리해야 한다.
- 제3 정규형
기본키 이외의 부분에서 중복이 없는지를 조사하는 것이다.
=> 키가 아닌 어트리뷰트(속성)간에는 서로 종속적인 관계가 없어야 한다.
트랜잭션
트랜잭션이란 작업의 단위라고 생각하면 된다.
트랜잭션에 여러 명령들이 포함될 수 있다.
세트로 실행하고 싶은 SQL 명령을 하나의 트랜잭션으로 묶어서 실행할 수 있다.
어떠한 명령이 특정 원인으로 인해 에러가 발생했을 경우 트랜잭션을 롤백(rollback)해서 모든 변경사항을 없었던 것으로 할 수 있다.
아무런 에러가 발생하지 않으면 커밋(commit)을 통해 변경사항을 적용하고 트랜잭션을 종료할 수 있다.
ex)
START TRANSACTION;
INSERT INTO 주문 VAULES (4, '2014-03-01', 1);
INSERT INTO 주문상품 VALUES (4, '0003', 1);
INSERT INTO 주문상품 VALUES (4, '0004', 2);
COMMIT;
트랜잭션을 시작하고, 3개의 SQL 문에 트랜잭션을 걸었다.
즉 3개의 SQL이 하나의 작업이 된 것이라 생각하면 되는데
이 때 3개의 SQL문 중 하나라도 에러가 발생한다면 나머지 SQL문 명령에 의한 변경사항이 취소가 되는 것이다.
에러가 발생하지 않는다면 COMMIT을 통해 변경사항을 적용하게 된다.
'SQL > SQL 첫걸음' 카테고리의 다른 글
33강[관계형 모델], 34강[데이터베이스 설계] (0) | 2022.10.28 |
---|---|
31강[집합 연산], 32강[테이블 결합] (0) | 2022.10.27 |
29강[인덱스 작성과 삭제], 30강[뷰 작성과 삭제] (0) | 2022.10.26 |
27강[제약], 28강[인덱스 구조] (0) | 2022.10.21 |
25강[데이터베이스 객체], 26강[테이블 작성, 삭제, 변경] (0) | 2022.10.20 |