2012-01-26 5 views
0

내 웹 사이트에 비공개이며 PHP를 통해 전달되는 많은 파일이 있습니다. MySQL 데이터베이스를 사용하여 다운로드를 추적합니다. 현재 각 파일에 대해 열을 사용하고 매일 새 행을 삽입합니다. 많은 파일이 없기 때문에 괜찮습니다.mysql 데이터베이스에 다양한 수의 파일 다운로드 통계 저장하기

그러나 나는 자주 파일을 추가하고 제거하기 시작할 것입니다. 그리고 파일의 수가 매우 커질 것입니다. 내가보기에 나는 두 가지 옵션이 있습니다 :

첫 번째는 각 파일에 대한 열을 추가 및 제거 할 때 추가 및 제거하는 것입니다. 이렇게하면 매우 많은 열이있는 테이블로 신속하게 이어집니다. 나는 스스로 가르치기 때문에 확실하지는 않지만, 아마도 이것은 매우 나쁜 것입니다. 많은 행이 있으면 열을 추가하고 제거하면 매우 비싼 작업처럼 들립니다.

또한 일반 'fileID'필드를 사용하여 새 데이터베이스를 만든 다음 각 파일에 대해 매일 새 행을 추가 할 수 있지만 많은 행이 생길 수 있습니다. 또한 다음날 추적을 작성하는 데 많은 행 삽입 조작이 필요합니다.

어느 것이 더 좋을까요? 아니면 제가 놓친 세 번째 해결책이 있습니까? mysql 이외의 다른 것을 사용해야합니까? 나는 사이트에서 그래프로 통계를 표시 할 수 있도록 쿼리 할 수있는 것을 원한다.

도움을 주시고 시간을내어 읽어 주셔서 감사합니다.

답변

1

필자는 일반 'fileID'필드를 사용하여 새 데이터베이스를 만든 다음 각 파일에 대해 매일 새 행을 추가 할 수 있지만 많은 행이 생길 수 있습니다.

예,이 아니라 "새 데이터베이스"을 "새 테이블를"당신이 —을 할 필요가 있지만, 당신이 무엇을 의미입니다. 이를 참조됩니다

id | name  | created_date | [other fields ...] 
----+-----------+--------------+-------------------- 
    1 | foo.txt | 2012-01-26 | ... 
    2 | bar.txt | 2012-01-27 | ... 

하고 downloads_by_day 테이블 :

는 기본적으로이 같이 수있는 file 테이블을 할 것입니다

id | file_id | `date`  | download_count 
----+---------+------------+---------------- 
    1 |  1 | 2012-01-27 |    17 
    2 |  2 | 2012-01-27 |    23 
    3 |  1 | 2012-01-28 |    6 
    4 |  2 | 2012-01-28 |   195 
+0

아, 당신은 내가 잘 한 것 새 테이블을 의미합니다. –

+0

아, 입력을 제출할 것을 몰랐습니다. 어쨌든 다른 해결책을 찾지 못하면 그 것을 사용할 것입니다. 귀하의 답변에 감사드립니다. 나는 디자인이 얼마나 효율적인지에 대해 새롭고 자신감이 없습니다. –

+1

@JeremyMiller : "다른 해결책을 찾을 수없는 경우"라고 말하지 마십시오. 저를 신뢰하십시오, 이것은 당신이하고 싶은 거의 확실한 것입니다. (나는 내 ​​대답을 약간 확장하여 어떻게 보일지 보여주었습니다.) – ruakh

관련 문제