Re: [SQL] Multiple values for a field

From: Herouth Maoz <herouth(at)oumail(dot)openu(dot)ac(dot)il>
To: "Mike Field" <mike(at)fieldco(dot)com>, <pgsql-sql(at)postgreSQL(dot)org>
Subject: Re: [SQL] Multiple values for a field
Date: 1999-08-15 13:26:31
Message-ID: l03130307b3dc6e665034@[147.233.159.109]
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

At 18:11 +0300 on 13/08/1999, Mike Field wrote:

> Do you see any problem if I put the actual names of the authors, comma
> separated, in the author field (for example:  Mike Field, Tom Lane, ZZ Top)?
> I would do the same for my six fields which may have multiple values
> (author, region, subject, related_projects, doc_type, translations) I have
> about 550 documents to put into the database.

Repeating groups are harder to update. What if you found out that you made
a spelling mistake in some region, and you have to go through the entire
table, find it in each of the strings, and replace with the correct
version. What if you wanted to drop an author? You have to select it, fix
and update. Too much work.

> I know using text fields would take up more space relative to just using a
> number to refer to the author... but using a number makes me perform more
> loops and thus, more processing time.

An alternative may be to create an aggregate function that will give you
the comma-separated list you desired upon request:

CREATE AGGREGATE textcat_all
(
basetype = text,
sfunc1 = textcat,
stype1 = text
);

Then you can do something like:

SELECT da.docid, textcat_all( a.Author_name || ',' )
FROM docs_authors da, authors a
WHERE da.authorid = a.id
GROUP BY da.docid;

This will return a comma-separated list of author names for each doc id,
assuming the actual author name is in a separate table. There is an extra
comma at the end, but I don't suppose that's too much of a problem.

Herouth

--
Herouth Maoz, Internet developer.
Open University of Israel - Telem project
http://telem.openu.ac.il/~herutma

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Herouth Maoz 1999-08-15 13:40:36 Re: [SQL] err: select f() from i where (f()) in (select f() from x group by j);
Previous Message Herouth Maoz 1999-08-15 13:06:06 Re: [SQL] Intentionally inserting duplicates without aborting