Received: from localhost (maia-5.hub.org [200.46.204.182]) by postgresql.org (Postfix) with ESMTP id 6CF3E9FBED5 for ; Thu, 14 Jun 2007 12:22:16 -0300 (ADT) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.182]) (amavisd-maia, port 10024) with ESMTP id 39737-07 for ; Thu, 14 Jun 2007 12:22:09 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.4 Received: from an-out-0708.google.com (an-out-0708.google.com [209.85.132.248]) by postgresql.org (Postfix) with ESMTP id 25DCC9FB8E6 for ; Thu, 14 Jun 2007 12:22:09 -0300 (ADT) Received: by an-out-0708.google.com with SMTP id c36so122142ana for ; Thu, 14 Jun 2007 08:22:08 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=BALw7a63JkKq/NEfY9P3cVvXA+glTM2YlAqA0Axq7F01MbM5hKij6kgU8yummEPOOCiOcZShcxVkAyoUprHIOI8OoSp5IcuvKQatpijHDWUNWh1bkxXq3aqDwWc0heCjTwl5dR7HIv3zOOaQYVaJJgDrJAs5g+9MMZNjRCBMis4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=qdSvtCTlDgSgBP+P8Au0JwRa91+Y66V4Afot2hBPrvO7dvITZF/csDhhNf19AGWT/6SZesxZMEOdq6gmPqEMmvrXX+vY49u0hkA97etrawfx720FU1Ee5Ey8x9QM3qVCnd+PIhIsVY8U3zWqJ3XVX7LXXYU67tcB9tb3RB45pTg= Received: by 10.100.124.5 with SMTP id w5mr1175555anc.1181834528081; Thu, 14 Jun 2007 08:22:08 -0700 (PDT) Received: by 10.100.33.20 with HTTP; Thu, 14 Jun 2007 08:22:08 -0700 (PDT) Message-ID: Date: Thu, 14 Jun 2007 10:22:08 -0500 From: "=?UTF-8?Q?Rodrigo_De_Le=C3=B3n?=" To: pgsql-sql@postgresql.org, "Salman Tahir" Subject: Re: Organization of tables In-Reply-To: <2049e51a0706140421u1ef40ab7m7281ca91457396df@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <2049e51a0706140421u1ef40ab7m7281ca91457396df@mail.gmail.com> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200706/109 X-Sequence-Number: 28599 On 6/14/07, Salman Tahir wrote: > Any help on how best to structure such data would be mostly appreciated. See: http://en.wikipedia.org/wiki/Database_normalization *** Grossly oversimplified example follows *** CREATE TABLE PEPTIDE( NAME TEXT PRIMARY KEY ); CREATE TABLE FRAGMENT( NAME TEXT PRIMARY KEY , MASS TEXT ); CREATE TABLE PEPTIDE_FRAGMENT( FRAGMENT TEXT NOT NULL REFERENCES FRAGMENT(NAME) , PEPTIDE TEXT NOT NULL REFERENCES PEPTIDE(NAME) ); INSERT INTO PEPTIDE VALUES ('Peptide 1'),('Peptide 2'),('Peptide 3'); INSERT INTO FRAGMENT VALUES ('A','x'),('Q','y'),('K','z'); INSERT INTO PEPTIDE_FRAGMENT VALUES ('A','Peptide 1'),('A','Peptide 2'),('Q','Peptide 1') ,('K','Peptide 2'),('K','Peptide 3'); SELECT F.NAME AS FRAGMENT, F.MASS , (SELECT ARRAY_TO_STRING(ARRAY( SELECT PEPTIDE FROM PEPTIDE_FRAGMENT WHERE FRAGMENT = F.NAME ORDER BY NAME ), ',')) AS PEPTIDE FROM FRAGMENT F; fragment | mass | peptide ----------+------+--------------------- A | x | Peptide 1,Peptide 2 Q | y | Peptide 1 K | z | Peptide 2,Peptide 3