1. Database Normalization(데이터베이스 정규화)
- 데이터베이스 정규화는 데이터베이스의 설계와 관련이 있다. 데이터베이스 설계에 따라 데이터가 저장될지 그 구조를 결정하기 때문이다.
이를 위해서 크게 중요한 부분은
1-1. DATA REDUNDANCY (데이터 중복)
- 데이터 중복은 실제 데이터의 동일한 복사본이나, 부분적인 복사본을 뜻한다. 이러한 중복은 데이터를 복구할 때에 더 수월할 수도 있지만, 몇가지 문제점을 지닌다.
- 일관된 자료 처리의 어려움
- 저장 공간 낭비
- 데이터 호율성 감소
1-2. DATA INTEGRITY(데이터 무결성)
- 데이터 정규화는 데이터 무결성을 강화하는 목적을 지닌다.
- 데이터 무결성은 데이터의 수명 주기 동안 정확성과 일관성을 유지하는 것을 뜻한다. 다시말해 입력된 데이터가 오염되지 않고, 입력된 그대로 데이터를 사용할 수 있다는 뜻이다.
1-3. ANOMALY(데이터 이상)
- 데이터 이상 현상은 기대한 데이터와 다른, 이상 현상을 가리킨다.
1-3-1. 갱신 이상 (Update anomaly)
- 갱신 이상은 여러행(레코드)에 걸쳐 동일한 데이터가 있을 때, 어떤 행을 갱신해야 하는지 논리적인 일관성이 없는 경우에 발생한다.
- 예) 기존 데이터 중 같은 값이 2개 있고, 그 값인 경우 데이터를 update 하라고 입력한 경우 어떤 데이터를 갱신해야하는 지 알 수 없다.
1-3-2. 삽입 이상 (insertion anomaly)
- 삽입 이상은 데이터를 삽입하지 못하는 경우를 가리킨다.
예) 삽입하려는 데이터의 모양과 기존의 데이터 테이블 모양이 다른 경우
1-3-3. 삭제 이상 (deletion anomaly)
- 삭제 이상은 데이터의 특정 부분을 지울 때 의도치 않게 다른 부분도 함께 지우는, 이상 현상이다.
2. SQL 종류
- SQL에는 데이터를 조회하고 테이블을 만드는 등 다양한 문법이 있다. 일반적으로 SQL 문법을 다음과 같이 분류한다.
2-1. Data Definition Language(DDL)
- DDL은 데이터를 정의할 때 사용하는 언어이다. 테이블을 만들때 사용하는 CREATE나 테이블을 제거할 때 사용하는 DROP등이 DDL에 해당된다. 데이터베이스의 테이블과 같은 오브젝트를 정의할 때 사용한다.
2-2. Data Manipulation Language(DML)
- DML은 데이터베이스에 데이터를 저장할 때 사용하는 언어이다. INSERT처럼 새로운 레코드를 추가할 때 사용되는 문법을 포함해 데이터를 삭제하는 DELETE나, 변경하는 UPDATE가 DML에 포함된다.
2-3. Data Control Language(DCL)
- DCL은 데이터베이스의 대한 접근 권한과 관련된 문법이다. 어느 유저가 데이터베이스에 접근할 수 있는지 권한을 설정한다. 권한을 주는 GRANT나, 권한을 가져가는 REVOKE 등이 DCL에 포함된다.
2-4. Data Query Language
- DQL은 정해진 스키마 내에서 쿼리 할 수 있는 언어이다. SELECT가 DQL에 해당한다. 이렇게 언어를 분류했지만, DQL을 DML의 일부분으로 취급하기도 한다.
2-5. Transaction Control Language(TCL)
- TCL은 DML을 거친 데이터의 변경사항을 수정할 수 있다. COMMIT 처럼 DML이 작업한 내용을 데이터베이스에 커밋하거나, ROLLBACK처럼 커밋했던 내용을 다시 롤백하는 문법이 있다.