From: | Reece Hart <reece(at)harts(dot)net> |
---|---|
To: | Erik Jones <erik(at)myemma(dot)com> |
Cc: | pgsql-general <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: proper use of array datatype |
Date: | 2006-08-01 23:33:04 |
Message-ID: | 1154475184.16476.26.camel@tallac.gene.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Eric Andrews wrote:
> I am not much of a schema designer and have a general questoin about
> the proper use of the array datatype. In my example, I have
> destinations, and destinations can have multiple boxes, and inside
> those boxes are a set of contents. what I want to do is search and
> basically "mine" data from the content sets.
I would use arrays exclusively for data sets for which each datum is
meaningless by itself (for example, a single coordinate in 3D, although
there are better ways to handle points in postgresql). I would recommend
against using arrays for any data you wish to mine, and instead recast
these has-a relationships as many-to-one joins across at least two
tables. For example, a row from the table destination has-a (joins to)
rows from boxes, and a box has-a (joins to) contents.
The same argument goes for a similar representation such as concatenated
values in a text field. The fundamental principle is that it's
relatively easy to turn join separate data into a set of values or
concatenated list, but it's quite cumbersome to turn a set of values
into easily searchable data (i.e., it's often expensive to "peek" inside
the structure of the data for a single value). Furthermore, it's
difficult or impossible to write check or foreign key constraints on
data within such a structure.
-Reece
--
Reece Hart, http://harts.net/reece/, GPG:0x25EC91A0
From | Date | Subject | |
---|---|---|---|
Next Message | Gregory Stark | 2006-08-01 23:50:19 | Re: LISTEN considered dangerous |
Previous Message | Erik Jones | 2006-08-01 22:42:38 | Re: proper use of array datatype |