당신은 위의 의견을 썼습니다 :
외래 키 열에 NULL 값이 많은 경우 교차 테이블을 사용하는 것이 좋습니다 (예 : 직원의 98 % 인 경우) 부서를 관리하지 마십시오)
외래 키 열에 NULL 값이 많으면 프로그램에서 처리하는 각 레코드마다이 빈 열을 처리해야합니다. 열은 모든 경우의 98 %에서 비어 있지만 일부 디스크 공간을 차지할 것입니다. 관계를 쿼리한다는 것은 해당 열을 쿼리하여 더 많은 네트워크 트래픽을 제공하고 ORM을 사용하는 경우 테이블에서 클래스를 생성하는 경우 프로그램을 의미합니다 또한 클라이언트쪽에 필요한 것보다 많은 공간이 필요합니다. 교차 테이블을 사용하면이를 피할 수 있으며, 그렇지 않으면 동등한 외래 키가 NULL이 아닌 경우 필요한 링크 레코드 만 있습니다.
반대로, NULL 값이 몇 개가 아닌 경우 50 % 이상의 관계가 NULL이 아니라고 가정하면 교차 테이블을 사용하면 디스크 공간이 많고 복잡성이 높아져 네트워크 트래픽이 증가하는 등의 반대 효과가 나타납니다.
따라서 교차 테이블을 사용하는 것은 최적화의 한 형태 일 뿐이며, 특정 경우에만, 특히 요즘에는 디스크 공간과 메모리가 저렴 해지고 훨씬 덜 자주 필요한 오늘날에만 합리적입니다. "데이터베이스 시스템의 기초"는 원래 20 년 이상 전에 작성되었으며 (1994 년부터 두 번째 버전에 대한 참조를 찾았습니다), 당시에는 권장 사항이 이미 있었다고 생각합니다. 1994 년 이전에는 대용량 스토리지가 여전히 비싸고 컴퓨터와 네트워크가 오늘날보다 훨씬 느리기 때문에 공간 최적화가 오늘날보다 훨씬 더 중요했을 것입니다.
까다로운 의견에 대한 부수적 인 설명으로, 위의 진술은 "데이터베이스 시스템의 기초"의 저자가 자신의 권장 사항을 염두에두고 생각한 것을 예상하려고 노력하고 있습니다. 일부 데이터베이스에는 교차 테이블을 사용하지 않는 "스파 스 열"과 같은 다른 최적화가 있습니다.
따라서 그 추천을 잘못하지 마십시오. 이 책은 {0,1}:n
일반적으로 관계에 대한 교차 테이블을 선호 하거나, 당신이 쓴 것처럼 이것이 "올바른 방법"이라고 말하지 않습니다 . 이와 같은 최적화를 사용하면 실제로 필요할 때만 프로그램을 더 복잡하게 만들 수 있습니다.