데이터베이스를 정규화해야합니까?

현실 세계의 정규화

데이터베이스 정규화는 애플리케이션 개발의 신성한 암소 중 하나입니다. 당신이 읽었거나 읽은 모든 학부 프로그래밍 과정은 정규화 된 데이터베이스 의 중요성을 설교 합니다 .

그 사실주의에 도전 할 때입니다. 때로는 데이터베이스를 비정규 화하는 것이 좋습니다!

정상화해야 할 때?

데이터베이스 정규화는 데이터 무결성을 보호합니다. 많은 경우에 좋은 아이디어이며 정규화를 염두에두고 모든 데이터베이스 디자인 작업을 시작해야합니다. 데이터베이스를 정상화 할 수 있다면 그것을 찾으십시오! 사실,이 사이트에서 데이터베이스를 표준화하는 방법에 대한 실질적인 조언은 다음과 같습니다.

결론은 데이터베이스를 정상화해야만하는 이유가 아니라면 데이터베이스를 정상화 해야 한다는 것입니다. 정상화는 일반적으로 건전한 설계 관행입니다. 중복 정보를 줄이고 성능을 최적화하며 동일한 데이터를 데이터베이스의 다른 구석에 숨겨서 데이터 무결성 문제가 발생할 가능성을 줄입니다.

정상화하지 않는 몇 가지 좋은 이유

즉, 데이터베이스를 정상화하지 않는 것이 좋은 이유가 있습니다. 몇 가지를 살펴 보겠습니다.

  1. 조인은 비쌉니다 . 데이터베이스를 정규화하면 종종 많은 테이블이 생성됩니다. 실제로 5 개 또는 10 개의 테이블에 걸쳐 간단한 쿼리를 사용해야한다고 생각하면 쉽게 마무리 할 수 ​​있습니다. 5 테이블 조인을 시도한 적이 있다면 원칙적으로 작동한다는 것을 알지만 실제로는 느리게 진행됩니다. 큰 테이블에 대해 다중 조인 쿼리를 사용하는 웹 응용 프로그램을 작성하는 경우 "이 데이터베이스 만 정규화되지 않은 경우!"라고 생각할 수도 있습니다. 머리 속에 생각이 들리면 좋은 생각입니다. 비정규 화를 고려하십시오. 데이터 무결성을 실제로 위태롭게하지 않고도 해당 쿼리에서 사용하는 모든 데이터를 하나의 테이블에 저장할 수 있다면 가십시오! 반란군이되어 데이터베이스를 비정규 화하십시오. 되돌아 보지 않을거야!
  2. 표준화 된 디자인은 어렵습니다 . 복잡한 데이터베이스 스키마로 작업하는 경우 정규화의 복잡성을 넘어 테이블에서 머리를 숙일 수도 있습니다. 엄밀히 말하면, 하루 종일 네 가지 표준 형식으로 이동하는 방법을 찾으려는 경우 정규화를 너무 크게 진행할 수 있습니다. 물러서서 계속 가치가 있는지 물어보십시오.
  1. 빠르고 더러운 것은 빠르고 더러워야합니다 . 프로토 타입을 개발하는 중이면 빨리 작동하십시오. 정말. 괜찮아. 신속한 애플리케이션 개발은 때로는 우아한 디자인보다 중요합니다. 프로토 타입 단계를 넘어서 준비를 마치면 돌아가서 디자인을 자세히 살펴보십시오. 신속하고 더러운 데이터베이스 설계에 드는 대가는 생산을 위해 구축 할시기에 버리고 다시 시작해야 할 수도 있다는 것입니다.
  2. NoSQL 데이터베이스를 사용한다면 전통적인 정규화가 바람직하지 않습니다. 대신 훨씬 관대 한 BASE 모델을 사용하여 데이터베이스를 설계하십시오. 이 기능은 전자 메일, 이미지 또는 비디오와 같은 구조화되지 않은 데이터를 저장할 때 유용합니다.

몇 가지주의 사항

일반적으로 데이터베이스 정규화가 좋습니다. 그렇게하는 것이 타당 할 때 표준화 원칙을 따라야합니다. 그러나 모든 지표에서 표준화가 구현하기에 너무 복잡하다는 점을 지적하면 데이터를 보호하면서 작업을 완료하는 방법을 고려하십시오.

마지막으로 - 정규화 규칙에서 벗어나면 데이터베이스 무결성을 강화하는 방법에 대해 더욱 세심한주의를 기울이십시오. 중복 정보를 저장하는 경우 트리거 및 기타 컨트롤을 제 위치에 두어 정보의 일관성을 유지하십시오.