Can object oriented table design help to solve this problem? - Mailing list pgsql-general

From Alan T. Miller
Subject Can object oriented table design help to solve this problem?
Date
Msg-id 00cc01c2c509$6082fd50$6e01a8c0@webdev
Whole thread Raw
In response to Documentation needs significant improvement  (Chris Johnson <chris@chaska.com>)
Responses Re: Can object oriented table design help to solve this problem?
Hit Summaries
List pgsql-general
I have a farily general question about structuring a database, and
considering this is the 'general' mailist for postgresql my database of
choice for the project I am working on, I thought this would be a good place
to start. Please forgive me if this should be posted elsewhere. Of course a
hint on where it should be posted would be great if this is not the correct
place to ask this.

Anyway, I am trying to come up with a logging table scheme for an
application that indexes rental properties around the world. Currently we do
not have anything in place in our current database tables to keep an
accurate ongoing tally of the hits each of these properties gets on any kind
of time interval.

What I do have is a table that keeps a running total for each property. The
way that is implimented is through a javascript function that makes a
request to a script that then updates the database table containing a unique
id for that property and then ups its count for each hit. So we have a table
that looks like...

TABLENAME:     Hits
TABLE COLUMNS:     ID_Property | hit_total | last_updated

However, we want to expand this and be able to keep a running tally of hits
per week, month, day perhaps. But I am having trouble wrapping my head
around the best way to go about doing so. A sensible table scheme escapes
me.

My first inclination was to create a table as follows...

TABLENAME:     Weekly hit total table
TABLE COLUMNS:     ID_property | week 1 | week 2 | week 3 | week 4 | etc...

That table would be populated via an automated script that would tally up
the weekly totals for each property based upon the number of hits drawn off
of a modified version of the hits table described earlier. In other words,
the current hit counter table would be cleared every week to make way for
the tally to start fresh for the next week.

The problem with the above scheme however is that I would be adding a column
to the table every week, and it just seems like bad design to do so. There
must be a better way.

To avoid having to create a table that requires that I alter its structure
every week, I thought of the following solution but It seems overkill, as it
would add a huge number of tables. Anyway, this scheme would have a seperate
table for each property with a structure something like the following.

TABLENAME:     Hit Totals for Property 'foo'
TABLE COLUMNS:     Week | weekly hit total

For every week there would be a new row added to the table, again, it would
be populated by a cron script. However, I do not like this solution as I am
not interested in having 5000 tables set up for all the properties, and then
each time one of the properties were added or deleted I have to alter the
database to add or delete tables.

to sum it up....

Solution 1 which provides a unique row for each property, seems inadaquate
because it will require adding columns to the database on each update, thus
altering the table structure on a constant basis.

Solution 2 which provides a unique table for each property in the database
seems inadaquate for the same reason as above, I am altering the database
itself all too often, not to mention I have to deal with thousands of
tables.

Considering postgreSQL is an object oriented database, and I am new to that
concept in databases, I was hoping maybe someone here had a workable
solution or suggestion that may or may not take advantage of PostgreSQL's
object oriented features. Any help or suggestions on this would be very
highly appreciated.

Thanks,
Alan



pgsql-general by date:

Previous
From: Iker Arizmendi
Date:
Subject: Re: [RFC] libpq extensions - followup
Next
From: Jeffrey Melloy
Date:
Subject: Re: Can object oriented table design help to solve this problem?