2012-07-13 3 views
0

안녕하세요 저는 웹 개발의 초보자입니다. 소셜 네트워킹 사이트를 개발하려고합니다. 데이터베이스 디자인 수준에서 나는 약간의 문제가있는 것처럼 느낀다. 여기 내 문제가있다.엄청난 양의 상태 및 의견 처리에 문제가 있음

나는 속성은 상태 테이블이 있습니다

  • status_id (AUTO_INCREMENT)
  • USER_ID
  • 상태를

내 홈 페이지로드는 그것을 찾을 때 내 계획은 내 릴레이션 테이블 (관계 테이블 있음) 및 관계 테이블에서 user_id 함께 최신 상태로 상태 테이블을로드합니다. 좋은 계획입니까? 이 테이블은 수백만 개의 행을 포함 할 수 있기 때문에 (행운이지만 가장 효율적인 방법이 필요합니다) 한 사용자가 200 또는 300 명의 친구를 쿼리하면 느려 집니까? 테이블에 아주 오래된 상태를 유지해야합니까? 제게 조언 해주세요. 이 테이블은 자주 삽입되므로 인덱싱은 좋지 않을 수 있습니다. 어떻게 생각하십니까? 또한 속성은 테이블에 대해 언급했다 :

  • USER_ID
  • friend_id
  • status_id (코멘트를 그 상태에 대한)
  • 코멘트 여기

에 (주석있는 상태에서) 기본 키가 없습니다. 이 표에 대한 질문은 같습니다. MySQL 데이터베이스와 MyISAM을 데이터베이스 엔진으로 사용하고 있습니다. InnoDB는 어떻습니까? 소셜 네트워킹에 가장 적합한 엔진은 무엇입니까? 미리 감사드립니다.

+0

이 사이트에 얼마나 큰 기대가 있습니까? 이것은 숙제/자기 학습 운동입니까? 큰 소셜 네트워크는 성능 때문에 NoSQL 데이터베이스를 사용합니다. –

+0

1) 너무 많은 질문. 2) 귀하의 의견 테이블 friend_id, 필요하지 않습니다 및 아마도 기본 키로 comment_id – Ghost

+0

나는 rdms 함께 이렇게하는 가장 좋은 방법을 원한다 –

답변

0

기록 상태를 저장해야합니까? 그렇지 않다면 Users 테이블의 NVARCHAR 필드로 설정하십시오. 2011 년 7 월 3 일에 Bill의 지위를 알고 싶다면 날짜가 필요합니다. 나는 마이크로 소프트 SQL 더 잘 알고,이 같은 그것을 수행해야합니다, 당신은 또한 Users 테이블에 CurrentStatus을 저장하거나와 구체화 된 뷰를 사용할 수

CREATE TABLE Statuses 
(
UserID INT NOT NULL REFERENCES Users (UserID) ON DELETE CASCADE, 
EffectiveDate DATETIME NOT NULL DEFAULT NOW(), 
PRIMARY KEY (UserID, EffectiveDate DESC), 
Status NVARCHAR(100) NOT NULL 
) 

언젠가 부적절하게 수행 끝 경우 각 사용자의 최근 상태.

관련 문제