这个想法是显示人们访问某个产品页面的次数。
到目前为止,我已经想出了两个选择。
-
在产品表(Mysql)中添加一个名为"views"的新列。
-
创建一个名为"product_views"的新表。有3列。Id,产品Id,视图。从那里,您可以使用join来更新和调用视图计数。
所以我想知道哪个选项更好?
取决于你想要什么。我通常在一个表中记录页面视图,如:
ID (int), PRODUCT_ID (int), IP_ADDRESS (varchar(15)), VIEW_TIME (datetime)
,这使我能够通过IP地址计算完整视图或唯一视图,并在表上做一个COUNT(*)
,并且有访问页面的日志的额外好处。显然,这将增加数据库所需的空间需求。
如果您只打算创建一个产品视图列,那么创建一个存储过程,将产品id作为参数,并在每次运行时将product_view列的值增加1。
Ip地址应为unsigned int(10),您将字符串转换为带有INET_ATON的数字。反之亦然。节省空间,使它更快的排序和过滤ip地址。我有一个表,看起来像这样:
CREATE TABLE statistics
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
productid INT(6) NOT NULL DEFAULT 0,
ip INT(10) UNSIGNED NOT NULL DEFAULT 0,
event char(1) NOT NULL DEFAULT 'V',
intervall TIME NOT NULL DEFAULT 0,
createddate TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);