[Dbix-class] complex relationships II

Benjamin Hitz hitz at genome.stanford.edu
Thu Sep 20 23:45:44 GMT 2007


And as requested, constraints, although understand this is not  
complete - I am just trying to isolate the regions of the schema  
germaine to my questions.

> CREATE TABLE GO_ANNOTATION
> (GO_ANNOTATION_NO NUMBER(10) NOT NULL
> ,GO_NO NUMBER(10) NOT NULL
> ,FEATURE_NO NUMBER(10) NOT NULL
> ,GO_EVIDENCE VARCHAR2(40) NOT NULL
> ,ANNOTATION_TYPE VARCHAR2(40) NOT NULL
> ,SOURCE VARCHAR2(40) NOT NULL
> ,DATE_LAST_REVIEWED DATE DEFAULT SYSDATE NOT NULL
> ,DATE_CREATED DATE DEFAULT SYSDATE NOT NULL
> ,CREATED_BY VARCHAR2(12) DEFAULT SUBSTR(USER,1,12) NOT NULL
> )
>


ALTER TABLE GO_ANNOTATION
ADD (CONSTRAINT GO_ANNOTATION_UK UNIQUE
   (GO_NO
   ,FEATURE_NO
   ,GO_EVIDENCE
   ,ANNOTATION_TYPE
   ,SOURCE)

ALTER TABLE GO_ANNOTATION ADD (CONSTRAINT
GOANN_GO_FK FOREIGN KEY
   (GO_NO) REFERENCES GO
   (GO_NO))
/

ALTER TABLE GO_ANNOTATION ADD (CONSTRAINT
GOANN_FEAT_FK FOREIGN KEY
   (FEATURE_NO) REFERENCES FEATURE
   (FEATURE_NO) ON DELETE CASCADE)
/


>
> CREATE TABLE GO_REF
> (GO_REF_NO NUMBER(10) NOT NULL
> ,REFERENCE_NO NUMBER(10) NOT NULL
> ,GO_ANNOTATION_NO NUMBER(10) NOT NULL
> ,HAS_QUALIFIER VARCHAR2(1) NOT NULL
> ,HAS_SUPPORTING_EVIDENCE VARCHAR2(1) NOT NULL
> ,DATE_CREATED DATE DEFAULT SYSDATE NOT NULL
> ,CREATED_BY VARCHAR2(12) DEFAULT SUBSTR(USER,1,12) NOT NULL
> )

ALTER TABLE GO_REF
ADD (CONSTRAINT GO_REF_UK UNIQUE
   (REFERENCE_NO
   ,GO_ANNOTATION_NO)

ALTER TABLE GO_REF ADD (CONSTRAINT
GOREF_REF_FK FOREIGN KEY
   (REFERENCE_NO) REFERENCES REFERENCE
   (REFERENCE_NO) ON DELETE CASCADE)
/

ALTER TABLE GO_REF ADD (CONSTRAINT
GOREF_GOANN_FK FOREIGN KEY
   (GO_ANNOTATION_NO) REFERENCES GO_ANNOTATION
   (GO_ANNOTATION_NO) ON DELETE CASCADE)
/

> This table has foreign keys to GO table and FEATURE table, while  
> the GO_REF table acts as a linking table between GO_ANNOTATION and  
> REFERENCE.
>
> CREATE TABLE GO
> (GO_NO NUMBER(10) NOT NULL
> ,GOID NUMERIC(10) NOT NULL
> ,GO_TERM VARCHAR2(240) NOT NULL
> ,GO_ASPECT VARCHAR2(40) NOT NULL
> ,GO_DEFINITION VARCHAR2(2000)
> ,DATE_CREATED DATE DEFAULT SYSDATE NOT NULL
> ,CREATED_BY VARCHAR2(12) DEFAULT SUBSTR(USER,1,12) NOT NULL
> )
>
ALTER TABLE GO
ADD (CONSTRAINT GO_PK PRIMARY KEY
   (GO_NO)
ALTER TABLE GO
ADD (CONSTRAINT GO_TERM_UK UNIQUE
   (GO_TERM
   ,GO_ASPECT)
USING INDEX
PCTFREE 10
STORAGE
(
    PCTINCREASE 0
    INITIAL 500K
    NEXT 500K
)
TABLESPACE INDEX1)
/

ALTER TABLE GO
ADD (CONSTRAINT GO_GOID_UK UNIQUE
   (GOID)
USING INDEX
PCTFREE 5
STORAGE
(
    PCTINCREASE 0
    INITIAL 500K
    NEXT 500K
)
TABLESPACE INDEX1)
/


>
> CREATE TABLE FEATURE
> (FEATURE_NO NUMBER(10) NOT NULL
> ,FEATURE_NAME VARCHAR2(40) NOT NULL
> ,DBXREF_ID VARCHAR2(40) NOT NULL
> ,FEATURE_TYPE VARCHAR2(40) NOT NULL
> ,SOURCE VARCHAR2(40) NOT NULL
> ,COORD_VERSION DATE
> ,STOP_COORD NUMBER(10)
> ,START_COORD NUMBER(10)
> ,STRAND VARCHAR2(1)
> ,GENE_NAME VARCHAR2(10)
> ,NAME_DESCRIPTION VARCHAR2(100)
> ,GENETIC_POSITION NUMBER(5,2)
> ,HEADLINE VARCHAR2(960)
> ,DATE_CREATED DATE DEFAULT SYSDATE NOT NULL
> ,CREATED_BY VARCHAR2(12) DEFAULT SUBSTR(USER,1,12) NOT NULL
> )


ALTER TABLE FEATURE
ADD (CONSTRAINT FEATURE_PK PRIMARY KEY
   (FEATURE_NO)

ALTER TABLE FEATURE
ADD (CONSTRAINT FEAT_DBXREF_ID_UK UNIQUE
   (DBXREF_ID)


>
>
> CREATE TABLE REFERENCE
> (REFERENCE_NO NUMBER(10) NOT NULL
> ,SOURCE VARCHAR2(40) NOT NULL
> ,STATUS VARCHAR2(40) NOT NULL
> ,PDF_STATUS VARCHAR2(40) NOT NULL
> ,DBXREF_ID VARCHAR2(40) NOT NULL
> ,CITATION VARCHAR2(480) NOT NULL
> ,YEAR NUMBER(4) NOT NULL
> ,PUBMED NUMBER(10)
> ,DATE_PUBLISHED VARCHAR2(40)
> ,DATE_REVISED NUMBER(8)
> ,ISSUE VARCHAR2(40)
> ,PAGE VARCHAR2(40)
> ,VOLUME VARCHAR2(40)
> ,TITLE VARCHAR2(400)
> ,JOURNAL_NO NUMBER(10)
> ,BOOK_NO NUMBER(10)
> ,DATE_CREATED DATE DEFAULT SYSDATE NOT NULL
> ,CREATED_BY VARCHAR2(12) DEFAULT SUBSTR(USER,1,12) NOT NULL
> )
>

ALTER TABLE REFERENCE
ADD (CONSTRAINT REFERENCE_PK PRIMARY KEY
   (REFERENCE_NO)

ALTER TABLE REFERENCE ADD (CONSTRAINT
REF_BOOK_FK FOREIGN KEY
   (BOOK_NO) REFERENCES BOOK
   (BOOK_NO))
/

ALTER TABLE REFERENCE ADD (CONSTRAINT
REF_JOUR_FK FOREIGN KEY
   (JOURNAL_NO) REFERENCES JOURNAL
   (JOURNAL_NO))

(but I think these are not relevant)


--
Ben Hitz
Senior Scientific Programmer ** Saccharomyces Genome Database ** GO  
Consortium
Stanford University ** hitz at genome.stanford.edu






More information about the DBIx-Class mailing list