2012-12-08 2 views
1

PHP로 작성된 웹 사이트가 있습니다. 사용자가 이미지를 업로드하고 친구 요청을 보내고 메시지를 게시 할 수 있습니다.MySQL을 사용하는 PHP의 이벤트 시스템

웹 사이트는 CodeIgniter 프레임 워크를 기반으로 제작되었습니다.

이러한 모든 이벤트의 "로그"를 갖고 싶습니다. 예를 들어 모든 친구의 최신 이벤트를 표시하고 싶습니다. X가 좋아하는 페이스 북처럼 Y 그림이나 Z가 새로운 메시지를 올렸습니다. 이벤트 테이블

:

ID | user_id | event_type | meta_field | date

나는 우정, 이미지와 같은 더 테이블이있는 등

meta_filedevent_type의를 지정합니다

내 데이터베이스 구조는 무엇인가 같다 다른 테이블의 데이터. 예를 들어,

의 다음 행에 대한

이벤트 테이블 :

1, 4, 3, 12, 2012-12-08

3이 이벤트가 우정 요청 것을 지정되며, 12 우정 테이블에서 ID 12이 될 것이다 어디 이 우정 요청에 대한 모든 세부 정보가 있어야합니다.

질문은 데이터베이스를 디자인하는 좋은 방법입니까? 우정 테이블에 데이터가 채워 졌다고 가정하면 친구들의 최근 이벤트를 어떻게 최적으로 정렬 할 수 있습니까? 성능이나 코드 품질을 향상시키는 캐싱이나 다른 기술에 어떤 기술을 사용하도록 제안합니까?

+1

이것은 테이블 구조에 대한 질문이 적고 적절한 색인 생성에 대한 질문입니다. 합리적으로 조인하고 집계 만하면 적절한 색인을 통해 적절한 성능을 얻을 수 있습니다. 캐싱에 대해 걱정할 필요가 없다는 것을 알 때까지 (조기 최적화는 모든 악의 근원입니다). 표시된 코드가 없으면 코드 품질을 측정하기 어렵습니다. –

답변

1

아주 좋은 접근 방법입니다. 그러나 데이터베이스가 더 커질 때 성능을 향상 시키려면 "meta_field"필드를 색인화해야합니다. 해당 필드를 인덱싱하는 작업은 phpMyAdmin을 사용하여 쉽게 수행 할 수 있습니다.

+0

예, meta_field는 이미 색인이 생성되었습니다. 더 강력한 방법이 있다면 요청했습니다. 답장을 보내 주셔서 감사합니다. –