삽질의 현장/- DataBase

[삽잡이::DB] 중복을 없애고 테이블을 최소화하라! 정규화(normalization)

shovelman 2016. 6. 21. 22:29



학부생 때는 잘 느끼지 못했는데 지금 와서 느끼는것은 

Query문도 잘못 실행하면 오랫동안 기다려야하는 사실입니다.


진짜 한번 잘못 실행했다가....

언제까지 하나 보자 하고 화장실을 다녀오고도 

무려 10분을 더 기다렸던 기억이....


오버같죠? 진짜입니다.


그래서 저는 이제 Query문을 실행하기전에

항상 EXPLAIN 을 붙여 어떤식으로 Query문이 실행될지 살펴본답니다.


Index를 타나 안타나 살펴보는건데....


아무튼... 왜 이런 썰을 풀었을까요?


예 그렇습니다.

이번 시간에는 정규화(Normalization)에 대해서 알아보려고 하기 때문입니다.



사실 위의 썰과 정규화는 

뭐... 그다지 정확히! 관련이 있다고 말씀드리긴 힘든데요....


그냥 말하고 싶었던 것이구요... 아무튼...


정신차려! 삽잡이! 


여러분이 사용하고 있는 데이터베이스의 테이블이 

지저분하다고 생각해봅시다.


잘못 Query 날리면 5 - 10분이나 기다려야할 정도로

실제 업무에서 저장되어있는 데이터를 관리하기때문에

아름다운 구조로 테이블을 만들고 관리해야겠지요?


자 그리하여~ 정규화에 대해서 알아봅시다!



 


(출처_ 두산백과)


쉽게 생각하면 중복을 없애는 것입니다.

불필요한 중복을 없애 유일한 테이블에 연결하기 위한 정보만을 가지고 있는 것이지요.


즉, 거품을 뺀다? 는 Feel을 느끼게 된다면



오늘 글의 제목과 같이 '최소화' 와 '중복' 을 없애라는 의미가 와닿으실 것입니다.


이렇게 중복을 없애고 최소화된 테이블을 가지고

데이터관리를 진행하게 된다면,


단위 정보의 크기가 작아지기 때문에

Query문을 통해 검색하고, 입력하고, 업데이트하고 등등

효율적으로 관리할 수 있게 됩니다.


이 때문에 정규화를 진행하는 것이지요.



현실에서는 이와 같이 정규화 형태를 정의하고 있습니다.



어려워보이니 더욱 더 뚫어지게 째려보자!! 



어려워보이고 어떤 말인지 몰라도

핵심은!


고유하며, 중복되지 않고, 최소의 Table을 만들면 되는 것입니다.

결론적으로 각 Table은 뚜렷한 의미를 지니겠지요


우리 모두 아름다운 Table을 관리하고

아름다운 Query를 날려봅시다~


굳~