정규화

테이블을 올바른 형태(주관적 기준으로 판단)로 변경하고 분할하는 것을 정규화라고 한다.(테이블 쪼개기)

중복되거나 반복되는 부분을 찾아내서 테이블을 분할하고 기본키를 작성해 사용한다.

하나의 데이터는 한 곳에 있어야 한다.

 

- 제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을 통해 변경사항을 적용하게 된다.

 

 

 

 

+ Recent posts