[엉박사] 1.10.1 DB구조

impala·2023년 1월 12일
0
post-thumbnail

1.10.1 DB구조

DB를 설계할 때에만 해도 지금까지 DB를 배워본 적이 없어서 뭘 어떻게 해야하는지도 모르고 대충 인터넷에서 PK와 FK가 어떤건지 간단하게 찾아보고 필요한 필드들을 적어 비슷한것끼리 묶어만 두었다. 그리고 프로젝트를 진행하면서도 그때그때 필요하다고 생각되는 필드와 테이블들을 마구잡이로 데이터베이스에 추가하다보니 결국에는 DB가 난잡해지게되었다.

테이블에는 있지만 사용하지 않거나 용도가 불분명한 필드도 있었고, 테이블의 이름도 정리되지 않은 느낌이 있었다. 키나 자료형에 대한 이해도 부족해서 결과적으로 겉보기에는 멀쩡해보이지만 마음에 들지 않는 데이터베이스가 만들어졌다.

추후 개선을 위해서는 많은 요소들이 고려되어야 하겠지만 데이터베이스 정규화에 대한 내용만 소개하겠다.

데이터베이스 정규화

정규화란 테이블 간 중복된 데이터를 허용하지 않도록 데이터베이스를 분해하는 것을 말한다. 데이터베이스를 정규화하면 중복된 데이터가 없으므로 무결성을 유지할 수 있으며, DB의 저장용량또한 줄일 수 있다는 장점이 있다.

DB정규화에는 대표적으로 3가지 종류가 있다.

  1. 제1 정규화 : 테이블의 모든 column이 원자값(Atomic value : 하나의 값)을 갖도록 테이블을 분해하는 것
  2. 제2 정규화 : 제1 정규형을 만족하는 테이블에 대해 Partial Dependency를 제거하는 것
    • Partial Dependency : 하나의 Composite Primary Key에 종속된 경우
    • Composite Primary Key : 두개 이상의 column의 조합이 Primary Key의 역할을 하는 것
  3. 제3 정규화 : 제2 정규형을 만족하는 테이블에 대해 Transitive functional Dependency를 제거하는 것
    • Transitive functional Dependency : x->y, y->z이면 x->z인 관계. 일반 column에 종속된 경우.

이외에도 다양한 정규화가 존재하지만, 일반적으로 관계형 데이터베이스의 경우 제3 정규형을 만족하도록 데이터베이스를 구성한다.

0개의 댓글