데이터베이스 시험문제 중에

athxue의 이미지

DB시험문제 중에 'BCNF는 데이터베이스 최적화 기법이다. 이것이 맞냐 틀리냐'라는 문제가 출제되었었습니다. 원래 진짜 정확한 답은 '정규화'이겠지만, 생각해보면 DB에서의 정규화가 결국은 최적화를 의미하는것이 아니었나
싶었습니다. 답은 '맞다'라고 썼는데 괜시리 불안해지네요.

moonend의 이미지

중복되는 데이터가 없게되는 것은 양이 줄어드는 것도 있지만, 무결성을 지켜준다는 점이 더 크다고 생각합니다.
내용을 수정하기 위해 더 적은 수의 필드에 접근해야하므로 프로그램의 논리구조도 좀 더 단순화 될 수 있습니다.
데이터베이스에 들어있는 자료들이 BCNF를 지켜준다면, 필연적으로 최적화가 되겠죠.

들어온 말 때문인지 데이터베이스 최적화하면 우선 SQL문 튜닝을 어떻게 해야하나하는 생각이 듭니다... -_-;;

익명사용자의 이미지

정규화 상태를 이루고 있는것만이 최적의 데이터베이스 상태는 아닙니다. 물론 정규형 릴레이션은 데이터 이상을 발생시키지 않는 좋은 데이터모델입니다만, 이것만을 가지고 최적이라고 말하긴 힘들죠. 정규형이 최적화된 (관계형)데이터베이스 모델이이라면 BCNF보다 제 5정규형이 더 "최적화"된 데이터베이스 모델이 되겠죠.
"최적의 데이터베이스"란, 데이터베이스의 최종적인 목적을 가장 효율적으로 수행할 수 있는 상태의 데이터베이스가 아닐까 생각됩니다. 이 효율성이란 낮은 운영비용(작은 크기의 데이터베이스로인한 디스크 비용 감소 등)과 빠른 응답속도 등을 생각할 수 있겠죠. 일반적으로 속도의 개선을 위한 반정규화(denomalization)는 흔히 사용되는 방법입니다. 따라서 BCNF가 가장 최적의 데이터베이스다 라는 명제는 거짓이라고 생각 합니다.

pool007의 이미지

말씀하신대로 '정규화기법이다'가 답일 듯 하네요.

최적화의 의미는 다양하게 해석될 수 있겠지만, 시험 출제
의도상 정규화가 답이 아닐까 싶군요.

--
Passion is like genius; a miracle.

--
Passion is like genius; a miracle.