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