我想设计一个页面跟踪器数据库表,但我遇到了一些问题。
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)
);
如果我更新特定SessionID
对应的pageviews
和pageVisits
,则无法在特定时间间隔内查询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
作为特定时间的新条目,它会在表中创建大量条目。
有没有有效的方法可以做到这一点?
我假设您想每次针对SessionID
更新pageViews
和pageVisits
.在这种情况下,第一个插入将说:
Session ID = 23R4E11, pageViews = 1, pageVisits = 1
现在,如果同一用户重新访问同一页面,您将更新现有行为:
Session ID = 23R4E11, pageViews = 2, pageVisits = 1
在这种情况下,要维护所有更新,您可以再创建一个名为 pageTrackerHistory
的表,然后编写触发器,只要对表进行更新pageTrackerHistory
就可以在表中插入条目pageTracker
该触发器。
通过执行此操作,您的操作表pageTracker
包含最少的行pageTrackerHistory
并且表包含大量审核记录。
希望这能给你一些方向。