2011-07-26 6 views
1

바보 같은 제목 죄송합니다,하지만 난 그래서 난에 데이터를 저장하는 매우 간단한 콘텐츠 관리 시스템을 구축하기 위해 노력하고있어이 질문 :"콘텐츠 유형"데이터베이스 필드

의 이름을 지정하는 방법 밖에 모르는 데이터베이스

데이터 유형 중 하나는 "콘텐츠 유형"(WordPress의 게시물/맞춤 게시물 유형과 유사)입니다.

콘텐츠 유형은 무엇이든 할 수있다 : 페이지, 자동차 목록, 댓글, 각 콘텐츠 형식 자체 필드가 ​​책 제품 등

은. 예를 들어 제목, 텍스트 :

  • 페이지이 있습니다.
  • 자동차 목록이 있습니다 제조사, 모델, 유형, 연식, 가격, ...
  • 이있다 : 제목, 저자, 가격

등등 ...

아이디어는 이러한 콘텐츠 형식이 동적이며 해당 필드도 마찬가지라는 아이디어입니다. 그것들은 CMS의 확장을 통해 추가 될 것입니다. 유일하게 내장 된 콘텐츠 유형은 페이지입니다.

어쨌든, 나는 그들을 위해 데이터베이스 테이블을 설정하는 방법에 대한 조언이 필요합니다. 이 작업은 주 CMS에서 수행해야하며 CMS API를 사용하여 작성하기가 매우 쉬운 확장 프로그램이 아닙니다.

특정 콘텐츠 형식 필드를 기반으로 검색하는 것이 매우 빠를 수 있도록 테이블/테이블 필드를 어떻게 설정해야합니까?

WP는 필드에 다른 테이블을 사용하고 첨부 된 게시물을 가리키는 ID가있는 행으로 저장합니다. 하지만 여러 필드를 검색 할 때 이것은 매우 느립니다 ...

+0

Couch와 Mongo와 같은 비 관계형 데이터베이스가 실제로 비추는 것은 이러한 종류의 작업입니다. –

답변

1

다양한 옵션이 있습니다.

가장 일반적으로 콘텐츠 항목 옆에 "키/값"쌍이 저장됩니다 (WP 모델이라고 생각합니다). 이 모델에는 많은 문제가 있습니다. 검색 할 때 부울 논리가 이해하기 어려워지면 코드에서 내용 유형을 쉽게 정의하고 유효성을 검사 할 수 없습니다 (예 : "모든 CAR 내용 유형에 특성 엔진 크기가 있어야 함"등). 그러나 이들은 콘텐츠 형식을 쉽게 만들고 변경할 수 있습니다.

또 다른 모델은 컨텐츠 유형을 기준으로 데이터베이스 테이블을 생성하는 것이며 일반적으로 "기본"컨텐츠 항목을 루트로 사용합니다. 데이터베이스 테이블을 모델링하는 방법에 대한 Larman의 책 ("UML 및 패턴 적용")에 대한 좋은 토론이 있습니다. 이 디자인은 많은 양의 하우스 키핑 코드를 생성합니다. 데이터베이스 테이블을 만들고 수정하는 것은 쉽지 않습니다. 많은 콘텐츠 유형이 필요한 솔루션에 대해서는 권장하지 않습니다.

필자가 본 가장 강력한 솔루션은 XML을 사용하여 콘텐츠를 저장하는 것입니다. XML을 사용하면 DTD 또는 스키마를 사용하여 내용 유형을 정의하고 유효성을 검사하거나 쿼리 할 수 ​​있습니다. 그래도 SQL만큼 빠르지는 않습니다 ...

1

id는 4 개의 테이블이있는 구조가 필요한 Neville K의 첫 번째 솔루션을 제안합니다.
contents,
content_properties_name,
content_properties_valuescontents_properties (content_id , content_property_id , content_value_id)에 합류했습니다.

빠른 쿼리는 약간 복잡합니다.

관련 문제