Milestone 1 solution

 

Here is SQL statement for creating tables in Postgres, the modified statement is highlighted. You are welcome to make additional  modification wherever you see a fit.

 

CREATE TABLE T_GOFunction (

            source VARCHAR ( 255 ) NOT NULL,

            function VARCHAR ( 255 ) NOT NULL,

            T_Protein_ID INTEGER NOT NULL,

            T_GOFunction_ID serial,

            CONSTRAINT PK_T_GOFunction17 PRIMARY KEY (T_GOFunction_ID)

            );

CREATE INDEX TC_T_GOFunction49 ON T_GOFunction (T_Protein_ID );

CREATE TABLE T_Match (

            fromA INTEGER NOT NULL,

            fromB INTEGER NOT NULL,

            toA INTEGER NOT NULL,

            toB INTEGER NOT NULL,

            score DOUBLE PRECISION NOT NULL,

            T_Protein_T_Protein_ID INTEGER NOT NULL,

            T_Protein_ID INTEGER NOT NULL,

            T_Match_ID serial PRIMARY KEY

            );

CREATE INDEX TC_T_Match44 ON T_Match (T_Protein_T_Protein_ID , T_Protein_ID );

CREATE TABLE T_Protein (

            accessionNumber VARCHAR ( 255 ) NOT NULL,

            name VARCHAR ( 255 ) NOT NULL,

            organism VARCHAR ( 255 ) NOT NULL,

            sequence TEXT NOT NULL,

            T_Protein_ID serial,

            T_ProteinSource_ID INTEGER NOT NULL,

            CONSTRAINT PK_T_Protein12 PRIMARY KEY (T_Protein_ID)

            );

CREATE INDEX TC_T_Protein43 ON T_Protein (T_ProteinSource_ID );

CREATE TABLE T_ProteinSource (

            dbName VARCHAR ( 255 ) NOT NULL,

            date VARCHAR ( 255 ) NOT NULL,

            T_ProteinSource_ID serial,

            CONSTRAINT PK_T_ProteinSource15 PRIMARY KEY (T_ProteinSource_ID)

            );

CREATE TABLE T_LocalAlignment (

            totalScore DOUBLE PRECISION NOT NULL,

            T_Protein_ID INTEGER NOT NULL,

            T_Protein_T_Protein_ID INTEGER NOT NULL,

            CONSTRAINT PK_T_LocalAlignment14 PRIMARY KEY (T_Protein_T_Protein_ID, T_Protein_ID)

            );

CREATE INDEX TC_T_LocalAlignment46 ON T_LocalAlignment (T_Protein_T_Protein_ID );

CREATE INDEX TC_T_LocalAlignment45 ON T_LocalAlignment (T_Protein_ID );

CREATE TABLE T_GeneFusionEvent (

            ComputedFunction SMALLINT,

            T_Protein_T_Protein_ID INTEGER NOT NULL,

            T_Protein_ID INTEGER NOT NULL,

            T_LocalAlignment_T_Protein_T_Protein_ID INTEGER NOT NULL,

            T_LocalAlignment_T_Protein_ID INTEGER NOT NULL,

            CONSTRAINT PK_T_GeneFusionEvent16 PRIMARY KEY (T_LocalAlignment_T_Protein_T_Protein_ID, T_LocalAlignment_T_Protein_ID, T_Protein_T_Protein_ID, T_Protein_ID)

            );

CREATE INDEX TC_T_GeneFusionEvent47 ON T_GeneFusionEvent (T_Protein_T_Protein_ID , T_Protein_ID );

CREATE INDEX TC_T_GeneFusionEvent48 ON T_GeneFusionEvent (T_LocalAlignment_T_Protein_T_Protein_ID , T_LocalAlignment_T_Protein_ID );

ALTER TABLE T_GeneFusionEvent ADD CONSTRAINT FK_T_GeneFusionEvent21 FOREIGN KEY (T_Protein_T_Protein_ID, T_Protein_ID) REFERENCES T_LocalAlignment (T_Protein_T_Protein_ID, T_Protein_ID)  ON DELETE NO ACTION ON UPDATE NO ACTION;

ALTER TABLE T_GeneFusionEvent ADD CONSTRAINT FK_T_GeneFusionEvent22 FOREIGN KEY (T_LocalAlignment_T_Protein_T_Protein_ID, T_LocalAlignment_T_Protein_ID) REFERENCES T_LocalAlignment (T_Protein_T_Protein_ID, T_Protein_ID)  ON DELETE NO ACTION ON UPDATE NO ACTION;

ALTER TABLE T_Protein ADD CONSTRAINT FK_T_Protein24 FOREIGN KEY (T_ProteinSource_ID) REFERENCES T_ProteinSource (T_ProteinSource_ID)  ON DELETE NO ACTION ON UPDATE NO ACTION;

ALTER TABLE T_LocalAlignment ADD CONSTRAINT FK_T_LocalAlignment18 FOREIGN KEY (T_Protein_ID) REFERENCES T_Protein (T_Protein_ID)  ON DELETE NO ACTION ON UPDATE NO ACTION;

ALTER TABLE T_LocalAlignment ADD CONSTRAINT FK_T_LocalAlignment19 FOREIGN KEY (T_Protein_T_Protein_ID) REFERENCES T_Protein (T_Protein_ID)  ON DELETE NO ACTION ON UPDATE NO ACTION;

ALTER TABLE T_GOFunction ADD CONSTRAINT FK_T_GOFunction20 FOREIGN KEY (T_Protein_ID) REFERENCES T_Protein (T_Protein_ID)  ON DELETE NO ACTION ON UPDATE NO ACTION;