2010-01-25 3 views
2

(지금 당장은 생각/계획/도면 관계 :]) 기본 웹 사이트를 구축하기위한 작은 모듈 식 시스템 (주로 일반적인 작업을 단순화하기 위해) webdesigners는 일상적으로합니다).다양한/가변 콘텐츠 모듈 시스템을위한 PHP/MySQL 데이터베이스 설계

데이터베이스 디자인/콘텐츠 저장에 대한 생각이 거의 없습니다.

1. 대부분의 웹 사이트에서 (내 경험에 비추어 볼 때) 가장 고통스럽지 만 비슷한 레이아웃/스켈 레트가있는 페이지입니다. 제목, 사진 및 정보 세트 - 그러나 특수 템플릿/특수 모듈을 CMS로 만들면 텍스트로 편집하는 것보다 더 많은 비용이 드는 일이 있습니다. 그러나 여기서 우리는 운영상의 잠재력을 잃어 버립니다. "제목 만"얻을 수는 없습니다. 왜냐하면 CMS/시스템은 하나의 텍스트 필드로 전체 내용을 이해하기 때문에

그래서 나는이 두 테이블을 원한다. 하나는 내용의 구조에 대한 정보를 담고있다. (예 : 사진의 가변 량은 < 1, 500) : title & 텍스트 &) & 갤러리 (대형) 사진 - 방법 -와 "컬렉션"(다양한 구조화 된 정보에 대한 내 작업 이름)의 모든 내용, 모듈 및 부품과 다른 테이블 - 무엇

table module_descriptors (HOW) 
id int 
structure - *???* 

table modules (WHAT) 
id int 
module_type - @link to module_descriptors id 
content - *???* 
,

2. 내가 좋아하는 것은 - 나는 많은 테이블을 필요로하지 않는다. - 나는 6810 개의 테이블을 가진 데이터베이스를 좋아하지 않는다. 숫자와 텍스트 관계, ... 그리고 나는 또한 content_us, content_it, category_id, parent_id과 같은 60 개의 열이있는 테이블을 좋아하지 않습니다.

XML 또는 CSV로 구조 설명과 내용 자체 (??으로 표시)를 보유 할 수 있다고 생각하지만, 아마도 바퀴를 다시 만들려고 노력 중이며 이에 대한 답변이 숨겨져 있습니다. 내가 보지 않은 디자인 패턴.

희망이 있습니다. 나는 어떤 감각을 나타내고 어떤 답장을 얻을 것입니다. 당신의 의견, 찬성, 반대 의견을 말하면서 나 지옥에 보내십시오. 고마워요

EDIT : 제 질문 역시이 방법이 맞습니까? 편집하기 쉬운가요? 더 좋은 점이 없습니까? 그게 도덕적 인거야? 내가 이렇게하면 새끼 고양이가 죽지 않니? 서버용으로 너무 많지 않습니까? &을 읽으려면 DB에서 가져온 30 개의 XML을 비교하십시오 (예 : 뭔가 비교하고 싶습니까?). 기술적 인 부분 - 어떻게하는지 - 질문의 한 부분 일뿐입니다.

답변

1

당신이 암시하는 디자인 패턴은 Serialized LOB입니다. 모든 항목에 대해 동일한 속성의 일부 데이터를 기존 방식으로 (열로) 저장할 수 있습니다. 변수가있는 속성의 경우 XML 또는 MarkDown 또는 원하는대로 형식을 지정하고 텍스트 BLOB에 저장합니다.

물론 SQL 표현식을 사용하여 BLOB 내의 개별 요소를 쿼리하는 기능이 손실됩니다. 검색 또는 정렬에 사용해야하는 모든 것은 기존 열에 있어야합니다.


다시 주석 : 텍스트 덩어리가 XML 형식 인 경우, 나중에 MySQL의 5.1에서 지원 XML functions으로 검색 할 수있다. 그러나 이것은 색인에서 이익을 얻을 수 없으므로 검색 속도가 매우 느려질 것입니다.

LIKE 또는 RLIKE을 와일드 카드와 함께 사용하려는 경우에도 마찬가지입니다. 인덱스를 사용하지 않으면 전체 테이블 스캔이 검색됩니다.

또한 색인을 사용하려고 시도 할 수도 있지만 텍스트 내용과 XML 태그 이름 및 XML 속성 간의 차이점을 알 수 없기 때문에 XML 데이터 검색에 좋은 해결책은 아닙니다.

그래서 검색하거나 정렬하려는 모든 필드에 기존 열을 사용하십시오. 그렇게 행복 할거야.


질문 : 문서에 실제로 가변 구조가 필요한 경우 몇 가지 선택 사항이 있습니다. SQL을 올바르게 사용하면 SQL은 모든 행이 동일한 구조 (즉, 열)를 사용한다고 가정합니다. 귀하의 대안은 다음과 같습니다

어떤 사람들은, 변수 속성을 저장하는 엔티티 - 속성 - 값 (EAV)라는 안티 패턴에 의존하지만, 솔직히 거기 가지마. 이 문제가 얼마나 잘못 될 수 있는지에 대한 기사는 Bad CaRMa을 읽어보십시오.

+0

XML 형식 인 경우에도 그 내용을 검색 할 수 있습니까? 나는 또 다른 질문으로 편집을 추가했다. :) 지금까지 고마워. –

+0

Re를 보내 주셔서 감사합니다. 불행히도 저는 그것을 조사하고 지금 당장 번역 할 에너지가 없습니다. 나중에 읽고 쓰겠습니다. :) –

+0

내 프레젠테이션을 참조하십시오 : http://www.slideshare.net/billkarwin/practical-object -oriented-models-in-SQL –