2009-08-12 1 views
0

비슷한 콘텐츠 형식을 사용하는 여러 사이트에서 최근에 작업했지만 달성하고자하는 디자인을 얻지 못했습니다.여러 유사한 콘텐츠 형식에 대한 데이터베이스 디자인

콘텐츠 기사, 인터뷰, 비디오, 갤러리, 블로그 등 여러 유형이 있습니다.이 모델들은 모두 매우 유사한 속성 (제목, 슬러그, 본문, pub_date 등)을 가지고 있습니다. 그리고 장고와 관리자를 사용하고 있기 때문에 거의 모든 관리자 설정이 동일합니다. 대부분은 하나 또는 두 개의 추가 필드 (예 : 비디오 용 파일 이름, 블로그 작성자) 만 가질 것입니다.

전류 옵션 그냥 type_of_content 필드가 다음 단일 모델 "포스트/기사"를 사용

  1. 있습니다. 이렇게하면 검색이 쉽고 빠르며 한 모델을 쉽게 유지 관리 할 수있는 단일 모델이되었습니다. 관리자는 특정 유형의 콘텐츠를 가져올 수 있습니다.

  2. '비디오, 인터뷰, 오디오'모델의 모델을 '게시/기사'라고합니다. 모든 리던던시가 필요없는 다양한 모델로 작업 할 수있는 유연성을 얻습니다. 많은 조인과 모든 관리 코드는 여전히 복제됩니다.

  3. 대다수의 입력란을 공유하더라도 각 유형의 콘텐츠에 대해 매우 중복되어 각기 다른 모델을 만듭니다. 유지 관리가 더 필요하고, DRY가 아니라 최고 수준의 유연성.

더 많은 경험을 가진 사람의 통찰력은 좋을 것입니다.

감사합니다.

답변

1

나는 장고에 대한 많은 경험이 없지만, 당신이하고자하는 것은 Abstract Base Class의 하위 클래스이다. 이렇게하면 추상 부모 클래스에 대한 테이블을 만들지 않아서 조인이 필요없이 옵션 # 2의 장점을 얻을 수 있습니다.

+0

비슷한 문제를 해결하기 위해 추상 기본 클래스를 사용했습니다. 좋은 해결책입니다. 사용자 정의 관리자를 정의하고 기본 클래스에 메서드를 저장하고 하위 클래스와 함께 사용할 수있었습니다. 중복 코드가 많이 저장되었습니다. – Wade

0

그건 내가 원했던 것입니다. 다중 테이블 상속 및 프록시 모델에 대해 알고 있지만 추상 기본 클래스에 익숙하지 않았습니다. 엄청 고마워!