PHP로 작성된 웹 사이트가 있습니다. 사용자가 이미지를 업로드하고 친구 요청을 보내고 메시지를 게시 할 수 있습니다.MySQL을 사용하는 PHP의 이벤트 시스템
웹 사이트는 CodeIgniter 프레임 워크를 기반으로 제작되었습니다.
이러한 모든 이벤트의 "로그"를 갖고 싶습니다. 예를 들어 모든 친구의 최신 이벤트를 표시하고 싶습니다. X가 좋아하는 페이스 북처럼 Y 그림이나 Z가 새로운 메시지를 올렸습니다. 이벤트 테이블
:
ID | user_id | event_type | meta_field | date
나는 우정, 이미지와 같은 더 테이블이있는 등
meta_filed
및 event_type
의를 지정합니다
내 데이터베이스 구조는 무엇인가 같다 다른 테이블의 데이터. 예를 들어,
의 다음 행에 대한이벤트 테이블 :
1, 4, 3, 12, 2012-12-08
3이 이벤트가 우정 요청 것을 지정되며, 12 우정 테이블에서 ID 12이 될 것이다 어디 이 우정 요청에 대한 모든 세부 정보가 있어야합니다.
질문은 데이터베이스를 디자인하는 좋은 방법입니까? 우정 테이블에 데이터가 채워 졌다고 가정하면 친구들의 최근 이벤트를 어떻게 최적으로 정렬 할 수 있습니까? 성능이나 코드 품질을 향상시키는 캐싱이나 다른 기술에 어떤 기술을 사용하도록 제안합니까?
이것은 테이블 구조에 대한 질문이 적고 적절한 색인 생성에 대한 질문입니다. 합리적으로 조인하고 집계 만하면 적절한 색인을 통해 적절한 성능을 얻을 수 있습니다. 캐싱에 대해 걱정할 필요가 없다는 것을 알 때까지 (조기 최적화는 모든 악의 근원입니다). 표시된 코드가 없으면 코드 품질을 측정하기 어렵습니다. –