From: | Rodrigo De León <rdeleonp(at)gmail(dot)com> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org, "Salman Tahir" <salmantahir1(at)gmail(dot)com> |
Subject: | Re: Organization of tables |
Date: | 2007-06-14 15:22:08 |
Message-ID: | a55915760706140822w5bac639ax169abca1bcf6e7b9@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On 6/14/07, Salman Tahir <salmantahir1(at)gmail(dot)com> 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
From | Date | Subject | |
---|---|---|---|
Next Message | Campbell, Lance | 2007-06-14 19:40:56 | Re: Random Unique Integer |
Previous Message | Michael Fuhr | 2007-06-14 13:25:41 | Re: Random Unique Integer |