Received: from localhost (unknown [200.46.208.211]) by mail.postgresql.org (Postfix) with ESMTP id ED012632A6C; Sun, 19 Apr 2009 20:56:23 -0300 (ADT) Received: from mail.postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.208.211]) (amavisd-maia, port 10024) with ESMTP id 81346-07; Sun, 19 Apr 2009 20:56:15 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from fetter.org (start.fetter.org [66.92.188.65]) by mail.postgresql.org (Postfix) with ESMTP id 21C156322BA; Sun, 19 Apr 2009 20:56:21 -0300 (ADT) Received: by fetter.org (Postfix, from userid 500) id 060BFFBC82C; Sun, 19 Apr 2009 16:56:19 -0700 (PDT) Date: Sun, 19 Apr 2009 16:56:19 -0700 From: David Fetter To: Robson Fidalgo Cc: pgsql-docs@postgresql.org, pgsql-general@postgresql.org Subject: Re: [GENERAL] Postgresql 8.3X supports Arrays of Composite Types? Message-ID: <20090419235619.GB10700@fetter.org> References: <41534c40904191403m2eeabc27tc4bc6ce206c87464@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <41534c40904191403m2eeabc27tc4bc6ce206c87464@mail.gmail.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=1.12 tagged_above=0 required=5 tests=AWL=1.120 X-Spam-Level: * X-Archive-Number: 200904/40 X-Sequence-Number: 5128 On Sun, Apr 19, 2009 at 06:03:26PM -0300, Robson Fidalgo wrote: > Hello, > I am using postgresql 8.3X and I created a table (see example below) > that has an attribute that is an Array of a Composite Type (ROW). > However, I do not know how can I insert a record in this table. You want a normalized table anyhow. If you want something denormalized, use a view. > Example: > > CREATE table phone ( > cod varchar, > num varchar); > > CREATE TABLE person ( > name varchar, > telephone phone[]); This is better as: CREATE TABLE phone ( cod VARCHAR, num VARCHAR, PRIMARY KEY(cod, num) ); CREATE TABLE person ( name varchar, PRIMARY KEY(name) ) CREATE TABLE person_phone ( name VARCHAR NOT NULL REFERENCES person(name), cod VARCHAR, num VARCHAR, FOREIGN KEY(cod, num) REFERENCES phone(cod, num), PRIMARY KEY(name, cod, num) ); Cheers, David. -- David Fetter http://fetter.org/ Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter Skype: davidfetter XMPP: david.fetter@gmail.com Remember to vote! Consider donating to Postgres: http://www.postgresql.org/about/donate