-- Views -- -- Tracking and aggregating object views... -- -- Copyright (C) 2003 Jeff Davis -- @author Jeff Davis <davis@xarg.net> -- @creation-date 1/12/2003 -- -- @cvs-id $Id: views-datamodel.sql,v 1.3 2007/08/01 08:59:56 marioa Exp $ -- -- This is free software distributed under the terms of the GNU Public -- License. Full text of the license is available from the GNU Project: -- http://www.fsf.org/copyleft/gpl.html create table views_views ( object_id integer constraint views_object_id_fk references acs_objects(object_id) on delete cascade constraint views_object_id_nn not null, viewer_id integer constraint views_owner_id_fk references parties(party_id) on delete cascade constraint views_viewer_id_nn not null, views_count integer default 1, last_viewed timestamptz default now(), constraint views_views_pk primary key (object_id, viewer_id) ); create unique index views_views_viewer_idx on views_views(viewer_id, object_id); comment on table views_views is ' a simple count of how many times an object is viewed. '; create table view_aggregates ( object_id integer constraint view_aggs_object_id_fk references acs_objects(object_id) on delete cascade constraint view_aggs_object_id_nn not null constraint view_aggregatess_pk primary key, views_count integer default 1, unique_views integer default 1, last_viewed timestamptz default now() ); comment on table view_aggregates is ' a simple count of how many times an object is viewed, multiple visits trigger maintained by updates on views. '; create table views_by_type ( object_id integer constraint views_by_type_object_id_fk references acs_objects(object_id) on delete cascade constraint views_by_type_object_id_nn not null, viewer_id integer constraint views_by_type_owner_id_fk references parties(party_id) on delete cascade constraint views_by_type_viewer_id_nn not null, view_type varchar(100) not null, views_count integer default 1, last_viewed timestamptz default now(), constraint views_by_type_pk primary key (object_id, viewer_id, view_type) ); create unique index views_by_type_viewer_idx on views_by_type(viewer_id, object_id, view_type); comment on table views_by_type is ' a simple count of how many times an object is viewed for each type. '; create table view_aggregates_by_type ( object_id integer constraint view_agg_b_type_ob_id_fk references acs_objects(object_id) on delete cascade constraint view_agg_b_type_ob_id_nn not null, view_type varchar(100) not null, views_count integer default 1, unique_views integer default 1, last_viewed timestamptz default now(), constraint view_aggregates_by_type_pk primary key (object_id, view_type) ); comment on table view_aggregates_by_type is ' a simple count of how many times an object is viewed for each type, multiple visits trigger maintained by updates on views_by_type. ';