我想设计一个页面跟踪器数据库表,但是我面临着一些问题。
create table pageTracker(
ID bigint(20) NOT NULL,
TrackerID bigint(20) NOT NULL,
SessionID varchar(100) NOT NULL,
pageViews bigint,
pageVisits bigint,
primary key(ID)
);
如果我更新对应于特定
pageviews
的pageVisits
和SessionID
,则无法在特定时间间隔内查询pageViews
和pageVisits
。create table pageTracker(
ID bigint(20) NOT NULL,
TrackerID bigint(20) NOT NULL,
SessionID varchar(100) NOT NULL,
pageViews bigint,
pageVisits bigint,
time TimeStamp,
primary key(ID)
);
但是,如果我增加了额外的列时间,如果我想将每个
pageViews
和pageVisits
插入为特定时间的新条目,则会在表中创建大量条目。有什么有效的方法吗?
最佳答案
我假设您想每次针对pageViews
更新pageVisits
和SessionID
。在这种情况下,第一个插入内容会说:
Session ID = 23R4E11, pageViews = 1, pageVisits = 1
现在,如果同一用户重新访问同一页面,则将现有行更新为:
Session ID = 23R4E11, pageViews = 2, pageVisits = 1
在这种情况下,要维护所有更新,您可以再创建一个称为
pageTrackerHistory
的表,然后编写触发器,每当对pageTrackerHistory
表进行更新时,触发器都可以在pageTracker
表中插入条目。这样,您的操作表
pageTracker
包含最少的行,而pageTrackerHistory
表包含大量的审核记录。希望这会给您一些指导。 :-)