데이터베이스 정규화는 데이터베이스의 설계와 연관
그 이유는 데이터베이스 설계가 결론적으로 데이터가 어떻게 저장될 지 구조를 정해주기 때문
데이터 중복 (data redundancy) 는 실제 데이터의 동일한 복사본이나 부분적인 복사본을 뜻함
이러한 중복성으로 데이터를 복구할 때에 더 수월할 수도 있겠지만 데이터베이스 내에서는 몇가지 문제점을 가짐
데이터 정규화는 이러한 데이터 무결성을 강화하기 위한 목적도 있음
데이터 무결성 (data integrity) 는 데이터의 수명 주기 동안 정확성과 일관성을 유지하는 것을 뜻함
입력된 데이터가 오염되지 않고 입력된 그대로 데이터를 사용할 수 있다는 뜻
데이터 이상 현상 (anomaly) 와 같은 경우에는 데이터에서 기대한 것과 다른 이상 현상을 가리킴
갱신 이상 (update anomaly) 는 동일한 데이터가 여러 행 (레코드) 에 걸쳐 있을 때에 어느 데이터를 갱신해야 하는지에 대한 논리적 일관성이 없어 발생(ID 가 겹칠 때)
삽입 이상 (insertion anomaly) 는 데이터 삽입을 못하는 경우(레코드에 컬럼이 없을 경우(NULL 조차 지정하지 않았을 때))
삭제 이상 (deletion anomaly) 와 같은 경우에는 데이터의 특정 부분을 지울 때에 의도치 않게 다른 부분들도 함께 지워지는 이상 현상
DDL 은 데이터를 정의할 때 사용되는 언어
예를 들어 테이블을 만들 때 사용하는 CREATE 이나 테이블을 제거할 때 사용되는 DROP 등
데이터베이스의 테이블과 같은 오브젝트를 정의할 때 사용
DML 은 데이터베이스에 데이터를 저장할 때 사용되는 언어
INSERT 처럼 새로운 레코드를 추가할 때 사용되는 문법들이 포함
데이터를 삭제하는 DELETE 라든가 변경하는 UPDATE 등이 여기에 포함
DCL 은 데이터베이스에 대한 접근 권한과 관련된 문법
어느 유저가 데이터베이스에 접근할 수 있는지 권한을 설정하거나 없애는 역할
권한을 주는 GRANT 나 권한을 가져가는 REVOKE 등이 포함
DQL 은 정해진 스키마 내에서 쿼리를 할 수 있는 언어
여기에 포함된 문법은 SELECT
따로 언어가 분류되지만 DQL 을 DML 의 일부분으로 말하곤 함
TCL 은 DML 을 거친 데이터 변경사항을 수정할 수 있다.
COMMIT 처럼 DML 이 작업한 내용을 데이터베이스에 커밋하거나 ROLLBACK 처럼 커밋했던 내용을 다시 롤백하는 문법
혼자서 공부하는 내용이라 이런것들이 존재한다 라는 의미로 공부를 했다.
SQL은 많이 사용을 해보면서 익히는것이 좋을 것 같다. SQL를 공부할 때 무조건 외우는 것보단 명령어가 어떻게 작동하는 지에 대한 이해가 필요할 것 같다.