정규화는 실제 세계에서 절대적으로 사용됩니다. 그리고 3NF가 세 번째 일 뿐이라는 것을 알고 있기를 바랍니다. 현재는 8입니까? 그러나 3NF는 쉬운 목표가되어야합니다.
그러나 ... 나는 그런 도구가있을 수 없다고 말하려고했다.
기술적으로 정규화는 각 테이블의 속성입니다. 주어진 데이터베이스 내에서 다른 테이블은 다른 수준의 정규화를 가질 수 있습니다.
각 표는 사실 ... 때때로 외래 키를 포함하여 특정 유형의 물건 (사람, 계정, 주문, 배송, 품목, 위치)에 대한 사실을 나타냅니다.
정규화는 테이블에 사실이 얼마나 정확하고 효율적으로 표현되는지와 모호하고 중복 된 데이터 패턴을 방지하는 테이블 디자인 기능과 관련이 있습니다.
따라서 자동화 된 툴의 범위를 벗어난 실제 사실에 대한 이해가 필요합니다.
Q: Is a table with { student, subject, instructor } in 3NF?
A: What are students, subjects and instructors?
모든 강사가 모든 과목을 가르치고 각 학생이 각 강사의 각 과목에서 하나 이상의 코스를 수강 할 수있는 세계에서,이 테이블은 실제로 3NF에 있다고 할 수 있습니다. 실제로이 테이블에 대한 3NF의 주장은 터무니 없습니다.
3NF가 아니라는 것을 이해하려면 그것이 나타내는 사실의 본질을 이해해야합니다. 실제로,이 테이블은 (다른 이유로) 과목과 강사가 학생과 아무런 관련이없는 방식으로 서로 연결되어 있기 때문에 3NF가되지는 않습니다. 강사가 데이터베이스의 다른 곳에 저장된 과목을 가르치는 코스가있는 경우 다른 테이블에서 외래 키 대신 두 값을 모두 복사하여 학생이 코스에 등록했음을 나타내는 이유는 무엇입니까? 강사가 교체되면 여러 장소에서 여러 레코드를 변경해야합니다.
데이터베이스가 정규화 될수록 실제 세계와 본질적으로 일관성이 높아지고 데이터베이스의 사실이 실수로 사실이되기가 더 어려워집니다. 데이터베이스 디자인은 예술이지만 과학이기도합니다.
비록 그가 쓴 모든 내용을 한눈에 볼 수는 없지만 Chris Date의 책, 데이터베이스 디자인 및 관계 이론 : 일반 형식 및 모든 재즈 를 추천합니다. 관계형 모델의 기본 이론에 대한 세부적인 내용을 다루고 있습니다.