데이터베이스 정규화

Purple·2021년 11월 15일
0

TIL

목록 보기
54/73

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처럼 커밋했던 내용을 다시 롤백하는 문법이 있다.
profile
다시 보면, 더 많은 것들이 보인다.

0개의 댓글