문제

블로그 데이터 모델에 대한 다음 설정이 있습니다.

Blog               Articles             Categories
-----              --------          1  ----------
ID  \ 1         *  ID            /----- ID
Name \------------ BlogID       /       Name 
Owner              Name      * /      
                   CategoryID-/

이 데이터 모델이 블로그의 '모범 사례'와 어떻게 일치하는지 걱정합니다. 블로그가 삭제 된 경우 해당 블로그의 모든 기사를 삭제해야합니까? 카테고리가 삭제되면 기사는 어떻게 되나요?

더 좋은 방법이 있습니까? 내가 놓친 것이 있습니까? '베스트 팩터'는 무엇을 제안합니까?

도움이 되었습니까?

해결책

이것은 실제로 사용 사례에 따라 다릅니다. 많은 블로그 애플리케이션은 기사를 보는 것보다 많은 태그와 관련된 기사를 보는 것이 더 의미가 있기 때문에 일대일 relationsip의 범주 대신에 다수의 관계를 가진 태그를 사용합니다. " "카테고리 내에서"포함되어 있습니다.

블로그의 논리가 기사가 카테고리에 엄격하게 포함되어 있다는 것이라면, 일대일 관계가 정당화됩니다. 그리고 어떤 상황에서는 계단식 삭제도 정당화 될 것입니다. 결국, 고아가있는 기사는 어디에 존재했을까요?

이것은 사용자 기반의 직관을 예상 해야하는 경우입니다. 어떤 것 그들 자연 스럽다고 가정합니다.

덧붙여서, 그것은 훨씬 더 많은 일이지만, 그것이 나라면, 나는 계단식 삭제를하지 않을 것입니다. 나는 기사를 고아로 표시하고 대부분의 견해에서 숨길 것입니다. 또한 고아가있는 기사를 복원하기위한 인터페이스도 제공 할 것입니다. 그리고 나는 일정 기간 이상으로 고아가 된 것을 삭제하는 스크립트를 제공하는 것을 고려할 것입니다. 이렇게하면 사용자가 발생할 것으로 예상되는 일에 대해 틀린 경우 문제를 해결할 수 있습니다.

다른 팁

이것 (구형) 게시물 자세한 토론을 포함하여 일부 태그 관련 DB 스키마 변형을 소개합니다. 아마도 좋은 출발점 일 수도 있습니다.

의존합니다. 블로그 엔진에 지정된 범주가없는 항목이 허용되지 않으면 결과를 사용자에게 알리고 기사를 삭제해야합니다. 그렇지 않으면 사용할 수 있습니다 ON DELETE SET NULL 대신에.

관계가 제대로 설정되면 모든 관련 데이터를 먼저 삭제하지 않고 카테고리를 삭제할 수 없습니다. 카테고리를 삭제하면 기사를 삭제하는 것이 이상하게 보이지만, 동시에 카테고리가 더 이상 유효하지 않으면 기사도 없어야합니다.

아마도 모든 기사를 새로운 카테고리로 재구성하는 옵션 일 것입니다.

몇 가지 질문. 기사에 둘 이상의 범주가있을 수 있습니까? 기사가 그들과 관련된 0 범주를 가질 수 있도록 허용하고 있습니까? 그래도 설명에 따르면 기사를 삭제하고 싶지 않다고 말합니다. 블로그를 개발할 때의 경험에서 카테고리는 일반적으로 기사/게시물 (여러 게시물을 설명하는 여러 범주)과 많은 관계입니다. 그래서 나는 그것들을 삭제하지는 않지만 다시 한 번 당신의 비즈니스 논리와 당신이 그것을 처리하는 방법에 따라 다릅니다.

글쎄, 당신의 외국 열쇠 ( ~해야 한다 존재) 블로그 카테고리를 블로그 게시물과 관련하여 허용되지 않습니다. 기사 및 참조 무결성을 유지하려면 기사의 범주를 다른 기사로 변경하는 것을 고려해야합니다.

데이터 모델을 잊고, 객체 모델을 사용하는지, 즉 데이터가 구현되고, 객체는 인터페이스이며 요구 사항에 더 가깝습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top