4

간단하지만 유연한 컨텐츠 관리자를 개발하고 있으며 페이지 관리를 위해 레이아웃을 구성 할 기회를주고 싶습니다. 페이지에서 내용을 드래그하여 두 개 또는 세 개로 나눈 내용 행을 테이블처럼 만들 수 있습니다.PHP/MYSQL - CMS의 페이지 레이아웃 및 내용에 대한 데이터를 저장하는 가장 좋은 방법

다음 이미지는 내가 생각하고있는 것을 설명 할 수 있습니다 : 사용자가 레이아웃이 왼쪽에있는 정적 이미지, 오른쪽에 텍스트를 가질 수

enter image description here

, 그리고 하단에 축소판을 보여주는 이미지 갤러리를 배치 할 수 있습니다.

이제 내 질문에 ... 저장하고 MySQL의에서 데이터를로드하는 방법에 대해

이다 나는 두 가지 옵션이 있습니다

레이아웃에 대한 직렬화 된 데이터와

1) :

page's 테이블에서이 레이아웃에 대한 직렬화 된 데이터를 저장할 필드를 가질 수 있습니다. 그런 다음이 배열을 사용하여 내용을 어셈블 링하고 루프를 만들어야합니다.

배열은 그렇게 될 것이다 : DB에 저장하는

// Rows/divisions ... 
$array[0]['q'] = 2; 
$array[1]['q'] = 1; 

// The content 
$array[0]['c'][0]['t'] = 3;  // 't' = type (3 = image) 
$array[0]['c'][0]['i'] = 124; // 'i' = id to search for this data 
$array[0]['c'][1]['t'] = 1;  // 't' = type (1 = text) 
$array[0]['c'][1]['i'] = 2;  // Referencia ao ID do conteudo 
$array[1]['c'][0]['t'] = 4;  // 't' = type (4 = image gallery) 
$array[1]['c'][0]['i'] = 9;  // Referencia ao ID do conteudo 

및 직렬화 된 데이터 :

a:2:{i:0;a:2:{s:1:"q";i:2;s:1:"c";a:2:{i:0;a:2:{s:1:"t";i:3;s:1:"i";i:124;}i:1;a:2:{s:1:"t";i:1;s:1:"i";i:2;}}}i:1;a:2:{s:1:"q";i:1;s:1:"c";a:1:{i:0;a:2:{s:1:"t";i:4;s:1:"i";i:9;}}}} 

아니면 다른 옵션이 있습니다

2) 모든 데이터베이스에 :

여기서 나는 모두를 저장할 테이블을 만들 수 있습니다. 행/구분을 포함하여 페이지의 "구성 요소"링크는 콘텐츠를 조합하기위한 쿼리를 만들 수 있습니다.

표는 그런 일이 될 것입니다 :

id -> component id 
id_page -> page´s id 
type -> component type, and 0 == row 
value -> id reference to content or quantity of divisions for the rows 

그리고 데이터가 그런 식으로 저장됩니다 :

id/id_page/type/value 
1/1/0/2 --> the first row divided in two 
2/1/3/124 --> the image 
3/1/1/2 --> the text 
4/1/4/9 --> the image gallery 

그래서, 어떤 옵션 너희들이 더 나은 성능을 위해 사용하는 것이 마십시오 더 나은 관리? 이게 내가 원하는 걸 만들 수있는 가장 좋은 방법인가?

내가 어떤 점에서 분명하지 않은 경우 죄송합니다.

정말 고마워요!

답변

0

일부 요소에 대해 이전에 저장 한 데이터 나 구성이 필요하면 키 값 테이블에서 비정규 화 된 것이 더 좋습니다.

element_id | serialized_data 

성능면에서 단지 element_id를 색인하면되며 각 요소 ID에 대해 데이터가있는 1row 히트가됩니다.