데이터베이스 정규화 (Database Nurmalization)
데이터베이스 정규화는 데이터베이스 설계와 관련 있다. 데이터베이스 설계에 따라 데이터가 어떻게 저장될지 그 구조를 결정하기 때문이다.
Data Redundancy
데이터 중복(data redundancy)은 실제 데이터의 동일한 복사본이나, 부분적인 복사본을 뜻한다.
물론 이러한 중복으로 데이터를 복구할 때에 더 수월할 수도 있다. 그러나 대체로 데이터베이스 내에서는 몇 가지 문제점을 지닌다.
- 일관된 자료처리의 어려움
- 저장 공간 낭비
- 데이터 효율성 감소
Data integrity
데이터 정규화는 데이터 무결성을 강화하는 목적도 지닌다.
데이터 무결성(data integrity)은 데이터의 수명 주기 동안 정확성과 일관성을 유지하는 것을 뜻한다.
다시 말해 입력된 데이터가 오염되지 않고, 입력된 그대로 데이터를 사용할 수 있다는 뜻이다.
Anomaly
데이터 이상 현상(anomaly)은 기대한 데이터와 다른, 이상 현상을 가르킨다.
- 갱신 이상(update anmaly)
- 삽입 이상(insertion anomaly)
- 삭제 이상(deletion anomaly)
- Update Anomaly
갱신 이상(update anomaly)은 여러 행(레코드)에 걸쳐 동일한 데이터가 있을 때, 어떤행을 갱신해야 하는지 논리적인 일관성이 없는 경우 발생한다.
- Insertion Anomaly
삽입 이상(insertion anomaly)은 데이터를 삽입하지 못하는 경우를 가리킨다.
- Deletion Anomaly
삭제 이상(deletion anomaly)은 데이터의 특정 부분을 지울 때 의도치 않게 다른 부분도 함께 지우는 이상 현상이다.
SQL 종류
SQL에는 데이터를 조회하고 테이블을 만드는 등 다양한 문법이 있다. 그리고 쿼리문을 어떻게 작성하느냐에 따라, 그 기능이나 작업이 달라진다. SQL은 역할에 따라 문법이 다양하게 존재한다.
Data Definition Language(DDL)
DDL(Data Definition Language)은 데이터를 정의할 때 사용하는 언어이다. 테이블을 만들 때 사용하는 CREATE나 테이블을 제거할 때 사용되는 DROP등이 DDL에 해당한다. 데이터베이스의 테이블과 같은 오브젝트를 정의할 때 사용한다.
Data Manipulation Language(DML)
DML(Data Manipulation Language)은 데이터베이스에 데이터를 저장할 때 사용하는 언어이다. INSERT처럼 새로운 레코드를 추가할 때 사용되는 문법을 포함해 데이터를 삭제하는 DELETE나 변경하는 UPDATE가 DML에 포함된다.
Data Control Language(DCL)
DCL(Data Control Language)은 데이터베이스에 대한 접근 권한과 관련된 문법이다. 어느 유저가 데이터베이스에 접근할 수 있는지 권한을 설정한다. 권한을 주는 GRANT나, 권한을 가져가는 REVOKE 등이 DCL에 포함된다.
Data Query Language(DQL)
DQL(Data Query Language)은 정해진 스키마 내에서 쿼리할 수 있는 언어이다. SELECT가 DQL에 해당한다. 이렇게 언어를 분류했지만, DQL을 DML의 일부분으로 취급하기도 한다.
Transaction Control Language(TCL)
TCL(Transaction Control Language)은 DML을 거친 데이터의 변경사항을 수정할 수 있다. COMMIT처럼 DML이 작업한 내용을 데이터베이스에 커밋하거나, ROLLBACK처럼 커밋했던 내용을 다시 롤백하는 문법이 있다.
코드스테이츠 코스에서 Advanced로 SUBQUERY를 알려주었지만 안티패턴으로 생각하고 있어서 생략하겠다.
'TIL > Code States' 카테고리의 다른 글
Code State 59일차 - [인증/보안] 기초 (0) | 2021.10.21 |
---|---|
Code States 58일차 - [인증/보안] 기초 (0) | 2021.10.20 |
Code States 52일차 - [데이터베이스] 관계형 데이터베이스 (0) | 2021.10.08 |
Code States 52일차 - [데이터베이스] 관계형 데이터베이스 (0) | 2021.10.08 |
Code States 51일차 - [자료구조/알고리즘] 코딩 테스트 준비 (0) | 2021.10.07 |