我想设计一个页面跟踪器数据库表,但是我面临着一些问题。

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)
);


如果我更新对应于特定pageviewspageVisitsSessionID,则无法在特定时间间隔内查询pageViewspageVisits

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)
    );


但是,如果我增加了额外的列时间,如果我想将每个pageViewspageVisits插入为特定时间的新条目,则会在表中创建大量条目。

有什么有效的方法吗?

最佳答案

我假设您想每次针对pageViews更新pageVisitsSessionID。在这种情况下,第一个插入内容会说:

Session ID = 23R4E11, pageViews = 1, pageVisits = 1


现在,如果同一用户重新访问同一页面,则将现有行更新为:

Session ID = 23R4E11, pageViews = 2, pageVisits = 1


在这种情况下,要维护所有更新,您可以再创建一个称为pageTrackerHistory的表,然后编写触发器,每当对pageTrackerHistory表进行更新时,触发器都可以在pageTracker表中插入条目。

这样,您的操作表pageTracker包含最少的行,而pageTrackerHistory表包含大量的审核记录。

希望这会给您一些指导。 :-)

10-08 17:13