2012-01-26 5 views
0

Я думал о создании таблицы MySQL со следующей структурой:Статистика по базе данных

id | date | page_address | ip_array 
1 | 12-12-12 | /page.php  | ip1, ip2, ip3, ip4 

Тогда для каждой посещенной страницы в моем веб-сайте, это было бы:

  • проверка строки, содержащей сегодняшнюю дату и текущую страницу (если ее нет, вставьте ее).
  • проверьте, включен ли ip-адрес посетителя в поле ip_array, если это не так, включите его.

После этого у меня будет статистика о том, сколько разных посетителей у меня было на каждой странице и каждый день.

Это приемлемый способ сделать это?

+1

таблица со всеми адресами страниц, а затем отдельная таблица со строкой для каждого удара с датой/ip add ress/foreign ключ к первой таблице будет лучшим способом приблизиться к этому, а не использовать разделенный запятыми список IP-адресов. –

+1

Если вы ищете, чтобы заново изобрести колесо, или вам нужны абсолютно точные результаты, конечно. Однако, если вам просто нужна статистика просмотра страниц, Google Analytics - это то, что вы хотите (и бесплатно) http://www.google.com/analytics/ – jakraska

+0

Аналитика тоже хороша, но статистика, показанная там, не соответствует текущей минуте , вам нужно дождаться его обновления. – user1091856

ответ

2

NO, ip_array не очень хорошая идея, вам лучше сделать одну запись за один ip.

id | date | page_address | ip 
1 | 12-12-12 | /page.php  | ip1 
2 | 12-12-12 | /page.php  | ip2 
3 | 12-12-12 | /page.php  | ip3 
4 | 12-12-12 | /page.php  | ip4 

Затем вы можете сделать простой выбор, чтобы подсчитывать количество разных посетителей для каждой страницы и каждый день.

SELECT COUNT(*) FROM your_table WHERE date = ? AND page_address = ? 

Даже вы можете позволить page_address детали магазина в другой таблице, и использовать PAGE_ID, чтобы связать их.

table1:

id | date | page_id | ip 
1 | 12-12-12 | 1  | ip1 
2 | 12-12-12 | 1  | ip2 
3 | 12-12-12 | 1  | ip3 
4 | 12-12-12 | 1  | ip4 

table2:

id | page_address 
1 | /page.php  
2 | /page2.php  

Затем вы делаете ОТБОРНОЕ как:

SELECT COUNT(*) 
FROM table1 
JOIN table2 
ON table1.page_id = table2.id 
WHERE table1.date =? AND table2.page_address = ? 
+0

Возможно, вы можете добавить еще один столбец для посещений страниц из каждого ip, так что если ip посетил страницу 10 раз, вы также можете это знать. – ppp

+0

@AnPel Это зависит от потребностей. – xdazz

Смежные вопросы