网页跟踪器的数据库设计

时间:2014-02-19 07:20:20

标签: java mysql database

我想设计一个页面跟踪器数据库表,但我遇到的问题很少。

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相对应的pageVisitsSessionID,则无法在特定时间间隔内查询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插入特定时间的新条目,它会在表中创建大量条目。

有没有有效的方法呢?

1 个答案:

答案 0 :(得分:1)

我假设您希望每次针对pageViews更新pageVisitsSessionID。在这种情况下,第一个插入将说:

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

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

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

在这种情况下,为了维护所有更新,您可以再创建一个名为pageTrackerHistory的表,然后编写触发器,只要在pageTrackerHistory上进行更新,就可以在pageTracker表中插入条目表

通过这样做,您的操作表pageTracker包含最少的行,pageTrackerHistory表包含大量的审计记录。

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