2014-03-06 5 views
1

고객 리뷰와 같은 것들이 데이터베이스에 어떻게 저장됩니까? 하나의 제품이 2 개의 리뷰를 가질 수 있고 다른 하나의 제품이 리뷰를 위해 별도의 파일에 저장되었다고 가정하면 ID는 항목 당 하나의 파일이 아니므로 각 항목에 대한 행과 각 리뷰의 열이 있다고 상상해보십시오! 나 혼자서이 하나를 그림 수 있도록 데이터를 저장에 대해 충분히 몰라!고객 리뷰 및 캘린더 항목 등 데이터베이스의

비슷한 상황은 온라인 캘린더와 비슷합니다. 각 약속 (시간, 기간, 위치 등)에 대한 모든 정보가 있으며 매일 매일 모든 사용자에게 이러한 정보가 많이있을 수 있습니다! 논리적 인 방법은 모든 사용자가 자신의 약속을 모두 가지고있는 테이블을 만드는 것이지만, 동시에 1,000 개 이상의 사용자가있는 경우 테이블이 많아서 비논리적 인 것처럼 보입니다.

기본적으로이 ID는 '가장 큰 동적 데이터'를 저장하는 가장 일반적인 방법입니다.

+2

관계형 데이터베이스에 대해 읽어야합니다. 재미 있어요. 당신이 그것에 익숙해지기 시작하면 몇 가지 더 구체적인 질문을 올리거나 게시 할 수 있습니다. :) –

답변

1

고객 리뷰는 일대 다 관계로 두 테이블을 사용하여 쉽게 저장할 수 있습니다.

제품/기사/검토 할만한 가치가있는 테이블이 있다고 가정합니다. 각각 고유 ID 및 기타 속성을가집니다.

Table "products" 
+-------------------------------------+ 
| id | name | attribute1 | attribute2 | 
+-------------------------------------+ 

그런 다음 이름이 무엇인지 나타내는 다른 테이블을 만듭니다. 적어도 하나의 고유 한 ID와 다른 테이블의 ID에 대한 열을 포함해야합니다.

Table "products_reviews" 
+--------------------------------------------+ 
| id | product_id | user_email | review_text | 
+--------------------------------------------+ 

지금까지 너무 좋아 :의 그것은 또한 검토와 (분명히) 리뷰 텍스트 자체를 제출 한 사용자의 이메일을해야합니다 가정 해 봅시다. 사과를 파는다고 가정 해 봅시다.

Table "products" 
+-------------------------------+ 
| 1 | 'Apple' | 'green' | '30$' | 
+-------------------------------+ 

그런 다음 두 명의 고객이 방문하여 30 달러짜리 사과 한 개를 사서 좋아합니다. 둘 다 리뷰를 남깁니다.

SELECT * 
FROM products_reviews 
INNER JOIN products ON products_reviews.product_id = products.id 
WHERE products.name = 'Apple'; 

이제 쇼핑 페이지에서 표시 할 수 있습니다 :

Table "products_reviews" 
+-------------------------------------------------------------------------------+ 
| 1 | 2 | [email protected] | 'I really like these green apples, they are awesome' | 
| 2 | 2 | [email protected] | 'These apples rock!'         | 
+-------------------------------------------------------------------------------+ 

그래서 지금 당신이 할 일은 당신의 사과에 대한 모든 리뷰를 가져 얼마나 많은 고객 그들처럼 대해 행복입니다 사과를 위해 (다만 $ 30를 요한 언급하지 말라).

온라인 캘린더와 같은 원칙이 적용됩니다. 사용자가있는 테이블 하나와 그 사용자와 관련된 약속, 회의 등 다른 것들을 가진 많은 테이블이 있습니다.

그러나 모임과 같은 항목은 많은 사람들 (일반적으로)이 공유하므로 다 대다 테이블에 표시하는 것이 좋습니다. 여기에 link이 매우 시각적으로 표시되어 있습니다. 여기에 question 여기에 PHP 용 샘플 코드가 들어 있습니다. 직접 가서 테스트 해보십시오.

건배 :)

+0

awesome answer! 그리고 거기에 나는 한 사람과 관련된 모든 것이 별개의 테이블이 필요하다고 생각하고있었습니다. :) – Giovanni