데이터베이스 정규화 (Database Normalization)와 SQL의 다양한 문법

YoungJoon Suh·2022년 4월 8일

데이터베이스 정규화는 데이터베이스의 설계와 관련이 있습니다. 데이터베이스 설계에 따라 데이터가 어떻게 저장될 지 그 구조를 결정하기 때문입니다.
Data Redudancy(데이터 중복):
데이터 중복은 실제 데이터의 동일한 복사본이나, 부분적인 복사본을 뜻합니다. 물론, 이러한 중복으로 데이터를 복수할 때 더 수월할 수 있습니다. 그러나 대체로 데이터베이스 내에서 몇가지 문제점을 지닙니다.
일관된 자료 처리의 어려움, 저장 공간 낭비, 데이터 효율성 감소

Data Integrity(데이터 무결성):
데이터 정규화는 데이터 무결성을 강화하는 목적도 지닙니다.
데이터 무결성은 데이터의 수명 주기동안 정확성과 일관성을 유지하는 것을 뜻합니다.
다시 말해, 입력된 데이터가 오염되지 않고, 입력된 그대로 데이터를 사용할 수 있다는 뜻입니다.

Anomaly(데이터 이상 현상):
데이터 이상 현상은 기대한 데이터와 다른, 이상현상을 가리킵니다.
갱신이상 (update anomaly):
여러 행에 걸쳐 동일한 데이터가 있을 때, 어떤 행을 갱신해야 하는지 논리적인 일관성이 없는 경우에 발생합니다.

삽입이상 (Insertion anomaly):
데이터를 삽입하지 못하는 경우를 가리킵니다. 새로운 직원이 들어왔을 때, 가르쳐야 할 수업이 아직 정해지지 않았다면 데이터를 추가하지 못합니다. 수업을 NULL값으로 지정하지 않는 이상, 담당 수업이 있어야만 테이블에 추가할 수 있는 이상현상이 발생합니다.

삭제이상 (Deletion Anomaly):
데이터의 특정 부분을 지울 때, 의도치 않게 다른 부분도 함께 지우는 이상 현상입니다. 다음과 같은 경우 한 직원이 담당하는 수업을 삭제합니다. 그러나 이 수업 데이터를 삭제하려면, 레코드 전체가 사라집니다. 결국에는 의도치 않게 직원의 다른 데이터도 함께 삭제되는 현상이 발생합니다.

SQL에도 역할에 따라 다양한 문법이 존재
Data Definition Language (DDL): DDL은 데이터를 정의할 때 사용하는 언어입니다. 테이블을 만들 때 사용하는 CREATE나 테이블을 제거할 때 사용되는 DROP등이 DDL에 해당합니다. 데이터베이스의 테이블과 같은 오브젝트를 정의할 때 사용합니다.

Data Manipulation Language (DML): Data Manipulation Language는 데이터베이스에 데이터를 저장할 때 사용하는 언어입니다. Insert처럼 새로운 레코드를 추가할 때 사용되는 문법을 포함해 데이터를 삭제하는 Delete나, 변경하는 Update가 DML에 포함됩니다.

Data Control Language (DCL): DCL은 데이터베이스에 대한 접근권한과 관련된 문법입니다. 어느 유저가 데이터베이스에 접근할 수 있는지 권한을 설정합니다. 권한을 주는 GRANT나 권한을 가져하는 REVOKE등이 DCL에 포함됩니다.

Data Query Language (DQL): DQL은 정해진 스키마 내에서 쿼리할 수 있는 언어입니다. SELECT가 DQL에 해당합니다. DQL을 DML의 일부분으로 취급하기도 합니다.

Transaction Control Language (TCL): TCL은 DML을 거친 데이터의 변경사항을 수정할 수 있습니다. COMMIT 처럼 DML이 작업한 내용을 데이터베이스에 커밋하거나, ROLLBACK처럼 커밋했던 내용을 다시 롤백하는 문법이 있습니다.

profile
저는 서영준 입니다.

0개의 댓글