# Description of Schema

## Tables
tableinfo
db
dbxref
cv
cvterm
cvterm_relationship
cvtermpath
cvtermsynonym
cvterm_dbxref
cvtermprop
dbxrefprop
cvprop
chadoprop
pub
pub_relationship
pub_dbxref
pubauthor
pubprop
organism
organism_dbxref
organismprop
feature
featureloc
featureloc_pub
feature_pub
feature_pubprop
featureprop
featureprop_pub
feature_dbxref
feature_relationship
feature_relationship_pub
feature_relationshipprop
feature_relationshipprop_pub
feature_cvterm
feature_cvtermprop
feature_cvterm_dbxref
feature_cvterm_pub
synonym
feature_synonym
analysis
analysisprop
analysisfeature
analysisfeatureprop
phenotype
phenotype_cvterm
feature_phenotype
genotype
feature_genotype
environment
environment_cvterm
phenstatement
phendesc
phenotype_comparison
phenotype_comparison_cvterm
genotypeprop
featuremap
featurerange
featurepos
featuremap_pub
phylotree
phylotree_pub
phylonode
phylonode_dbxref
phylonode_pub
phylonode_organism
phylonodeprop
phylonode_relationship
contact
contact_relationship
expression
expression_cvterm
expression_cvtermprop
expressionprop
expression_pub
feature_expression
feature_expressionprop
eimage
expression_image
project
projectprop
project_relationship
project_pub
project_contact
mageml
magedocumentation
protocol
protocolparam
channel
arraydesign
arraydesignprop
assay
assayprop
assay_project
biomaterial
biomaterial_relationship
biomaterialprop
biomaterial_dbxref
treatment
biomaterial_treatment
assay_biomaterial
acquisition
acquisitionprop
acquisition_relationship
quantification
quantificationprop
quantification_relationship
control
element
elementresult
element_relationship
elementresult_relationship
study
study_assay
studydesign
studydesignprop
studyfactor
studyfactorvalue
studyprop
studyprop_feature
stock
stock_pub
stockprop
stockprop_pub
stock_relationship
stock_relationship_cvterm
stock_relationship_pub
stock_dbxref
stock_cvterm
stock_cvtermprop
stock_genotype
stockcollection
stockcollectionprop
stockcollection_stock
stock_dbxrefprop
library
library_synonym
library_pub
libraryprop
libraryprop_pub
library_cvterm
library_feature
library_dbxref
cell_line
cell_line_relationship
cell_line_synonym
cell_line_cvterm
cell_line_dbxref
cell_lineprop
cell_lineprop_pub
cell_line_feature
cell_line_cvtermprop
cell_line_pub
cell_line_library
nd_geolocation
nd_experiment
nd_experiment_project
nd_experimentprop
nd_experiment_pub
nd_geolocationprop
nd_protocol
nd_reagent
nd_protocol_reagent
nd_protocolprop
nd_experiment_stock
nd_experiment_protocol
nd_experiment_phenotype
nd_experiment_genotype
nd_reagent_relationship
nd_reagentprop
nd_experiment_stockprop
nd_experiment_stock_dbxref
nd_experiment_dbxref
nd_experiment_contact

### tableinfo | Top

Comments:
$Id: general.sql,v 1.31 2007-03-01 02:45:54 briano Exp $
==========================================
Chado general module
================================================
TABLE: tableinfo
================================================
NULL

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
tableinfo_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
name | varchar | 30 |  | UNIQUE, NOT NULL |
primary_key_column | varchar | 30 | NULL |  |
is_view | integer | 10 | 0 | NOT NULL |
view_on_table_id | integer | 10 | NULL |  |
superclass_table_id | integer | 10 | NULL |  |
is_updateable | integer | 10 | 1 | NOT NULL |
modification_date | date | 0 | now() | NOT NULL |

### Constraints

Type | Fields
--- | ---
NOT NULL | tableinfo_id
NOT NULL | name
NOT NULL | is_view
NOT NULL | is_updateable
NOT NULL | modification_date
UNIQUE | name

### db | Top

Comments:
================================================
TABLE: db
================================================
A database authority. Typical databases in bioinformatics are FlyBase, GO, UniProt, NCBI, MGI, etc. The authority is generally known by this shortened form, which is unique within the bioinformatics and biomedical realm. To Do - add support for URIs, URNs (e.g. LSIDs). We can do this by treating the URL as a URI - however, some applications may expect this to be resolvable - to be decided.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
db_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
name | varchar | 255 |  | UNIQUE, NOT NULL |
description | varchar | 255 | NULL | contact_id int, |
urlprefix | varchar | 255 | NULL |  |
url | varchar | 255 | NULL |  |

### Constraints

Type | Fields
--- | ---
NOT NULL | db_id
NOT NULL | name
UNIQUE | name

### dbxref | Top

Comments:
================================================
TABLE: dbxref
================================================
A unique, global, public, stable identifier. Not necessarily an external reference - can reference data items inside the particular chado instance being used. Typically a row in a table can be uniquely identified with a primary identifier (called dbxref_id); a table may also have secondary identifiers (in a linking table _dbxref). A dbxref is generally written as : or as ::.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
dbxref_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
db_id | integer | 10 |  | UNIQUE, NOT NULL | db.db_id
accession | varchar | 255 |  | UNIQUE, NOT NULL, The local part of the identifier. Guaranteed by the db authority to be unique for that db. |
version | varchar | 255 |  | UNIQUE, NOT NULL |
description | text | 64000 |  |  |

### Indices

Name | Fields
--- | ---
dbxref_idx1 | db_id
dbxref_idx2 | accession
dbxref_idx3 | version

### Constraints

Type | Fields
--- | ---
NOT NULL | dbxref_id
NOT NULL | db_id
FOREIGN KEY | db_id
NOT NULL | accession
NOT NULL | version
UNIQUE | db_id, accession, version

### cv | Top

Comments:
$Id: cv.sql,v 1.37 2007-02-28 15:08:48 briano Exp $
==========================================
Chado cv module
=================================================================
Dependencies:
:import dbxref from general
=================================================================
================================================
TABLE: cv
================================================
A controlled vocabulary or ontology. A cv is composed of cvterms (AKA terms, classes, types, universals - relations and properties are also stored in cvterm) and the relationships between them.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cv_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
name | varchar | 255 |  | UNIQUE, NOT NULL, The name of the ontology. This corresponds to the obo-format -namespace-. cv names uniquely identify the cv. In OBO file format, the cv.name is known as the namespace. |
definition | text | 64000 |  | A text description of the criteria for membership of this ontology. |

### Constraints

Type | Fields
--- | ---
NOT NULL | cv_id
NOT NULL | name
UNIQUE | name

### cvterm | Top

Comments:
================================================
TABLE: cvterm
================================================
A term, class, universal or type within an ontology or controlled vocabulary. This table is also used for relations and properties. cvterms constitute nodes in the graph defined by the collection of cvterms and cvterm_relationships.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cvterm_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
cv_id | integer | 10 |  | UNIQUE, NOT NULL, The cv or ontology or namespace to which this cvterm belongs. | cv.cv_id
name | varchar | 1024 |  | UNIQUE, NOT NULL, A concise human-readable name or label for the cvterm. Uniquely identifies a cvterm within a cv. |
definition | text | 64000 |  | A human-readable text definition. |
dbxref_id | integer | 10 |  | UNIQUE, NOT NULL, Primary identifier dbxref - The unique global OBO identifier for this cvterm. Note that a cvterm may have multiple secondary dbxrefs - see also table: cvterm_dbxref. | dbxref.dbxref_id
is_obsolete | integer | 10 | 0 | UNIQUE, NOT NULL, Boolean 0=false,1=true; see GO documentation for details of obsoletion. Note that two terms with different primary dbxrefs may exist if one is obsolete. |
is_relationshiptype | integer | 10 | 0 | NOT NULL, Boolean 0=false,1=true relations or relationship types (also known as Typedefs in OBO format, or as properties or slots) form a cv/ontology in themselves. We use this flag to indicate whether this cvterm is an actual term/class/universal or a relation. Relations may be drawn from the OBO Relations ontology, but are not exclusively drawn from there. |

### Indices

Name | Fields
--- | ---
cvterm_idx1 | cv_id
cvterm_idx2 | name
cvterm_idx3 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | cvterm_id
NOT NULL | cv_id
FOREIGN KEY | cv_id
NOT NULL | name
NOT NULL | dbxref_id
FOREIGN KEY | dbxref_id
NOT NULL | is_obsolete
NOT NULL | is_relationshiptype
UNIQUE | name, cv_id, is_obsolete
UNIQUE | dbxref_id

### cvterm_relationship | Top

Comments:
A name can mean different things in different contexts; for example "chromosome" in SO and GO. A name should be unique within an ontology or cv. A name may exist twice in a cv, in both obsolete and non-obsolete forms - these will be for different cvterms with different OBO identifiers; so GO documentation for more details on obsoletion. Note that occasionally multiple obsolete terms with the same name will exist in the same cv. If this is a possibility for the ontology under consideration (e.g. GO) then the ID should be appended to the name to ensure uniqueness.
The OBO identifier is globally unique.
================================================
TABLE: cvterm_relationship
================================================
A relationship linking two cvterms. Each cvterm_relationship constitutes an edge in the graph defined by the collection of cvterms and cvterm_relationships. The meaning of the cvterm_relationship depends on the definition of the cvterm R refered to by type_id. However, in general the definitions are such that the statement "all SUBJs REL some OBJ" is true. The cvterm_relationship statement is about the subject, not the object. For example "insect wing part_of thorax".

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cvterm_relationship_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
type_id | integer | 10 |  | UNIQUE, NOT NULL, The nature of the relationship between subject and object. Note that relations are also housed in the cvterm table, typically from the OBO relationship ontology, although other relationship types are allowed. | cvterm.cvterm_id
subject_id | integer | 10 |  | UNIQUE, NOT NULL, The subject of the subj-predicate-obj sentence. The cvterm_relationship is about the subject. In a graph, this typically corresponds to the child node. | cvterm.cvterm_id
object_id | integer | 10 |  | UNIQUE, NOT NULL, The object of the subj-predicate-obj sentence. The cvterm_relationship refers to the object. In a graph, this typically corresponds to the parent node. | cvterm.cvterm_id

### Indices

Name | Fields
--- | ---
cvterm_relationship_idx1 | type_id
cvterm_relationship_idx2 | subject_id
cvterm_relationship_idx3 | object_id

### Constraints

Type | Fields
--- | ---
NOT NULL | cvterm_relationship_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | subject_id
FOREIGN KEY | subject_id
NOT NULL | object_id
FOREIGN KEY | object_id
UNIQUE | subject_id, object_id, type_id

### cvtermpath | Top

Comments:
================================================
TABLE: cvtermpath
================================================
The reflexive transitive closure of the cvterm_relationship relation.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cvtermpath_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
type_id | integer | 10 |  | UNIQUE, The relationship type that this is a closure over. If null, then this is a closure over ALL relationship types. If non-null, then this references a relationship cvterm - note that the closure will apply to both this relationship AND the OBO_REL:is_a (subclass) relationship. | cvterm.cvterm_id
subject_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
object_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
cv_id | integer | 10 |  | NOT NULL, Closures will mostly be within one cv. If the closure of a relationship traverses a cv, then this refers to the cv of the object_id cvterm. | cv.cv_id
pathdistance | integer | 10 |  | UNIQUE, The number of steps required to get from the subject cvterm to the object cvterm, counting from zero (reflexive relationship). |

### Indices

Name | Fields
--- | ---
cvtermpath_idx1 | type_id
cvtermpath_idx2 | subject_id
cvtermpath_idx3 | object_id
cvtermpath_idx4 | cv_id

### Constraints

Type | Fields
--- | ---
NOT NULL | cvtermpath_id
FOREIGN KEY | type_id
NOT NULL | subject_id
FOREIGN KEY | subject_id
NOT NULL | object_id
FOREIGN KEY | object_id
NOT NULL | cv_id
FOREIGN KEY | cv_id
UNIQUE | subject_id, object_id, type_id, pathdistance

### cvtermsynonym | Top

Comments:
================================================
TABLE: cvtermsynonym
================================================
A cvterm actually represents a distinct class or concept. A concept can be refered to by different phrases or names. In addition to the primary name (cvterm.name) there can be a number of alternative aliases or synonyms. For example, "T cell" as a synonym for "T lymphocyte".

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cvtermsynonym_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
synonym | varchar | 1024 |  | UNIQUE, NOT NULL |
type_id | integer | 10 |  | A synonym can be exact, narrower, or broader than. | cvterm.cvterm_id

### Indices

Name | Fields
--- | ---
cvtermsynonym_idx1 | cvterm_id

### Constraints

Type | Fields
--- | ---
NOT NULL | cvtermsynonym_id
NOT NULL | cvterm_id
FOREIGN KEY | cvterm_id
NOT NULL | synonym
FOREIGN KEY | type_id
UNIQUE | cvterm_id, synonym

### cvterm_dbxref | Top

Comments:
================================================
TABLE: cvterm_dbxref
================================================
In addition to the primary identifier (cvterm.dbxref_id) a cvterm can have zero or more secondary identifiers/dbxrefs, which may refer to records in external databases. The exact semantics of cvterm_dbxref are not fixed. For example: the dbxref could be a pubmed ID that is pertinent to the cvterm, or it could be an equivalent or similar term in another ontology. For example, GO cvterms are typically linked to InterPro IDs, even though the nature of the relationship between them is largely one of statistical association. The dbxref may be have data records attached in the same database instance, or it could be a "hanging" dbxref pointing to some external database. NOTE: If the desired objective is to link two cvterms together, and the nature of the relation is known and holds for all instances of the subject cvterm then consider instead using cvterm_relationship together with a well-defined relation.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cvterm_dbxref_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
dbxref_id | integer | 10 |  | UNIQUE, NOT NULL | dbxref.dbxref_id
is_for_definition | integer | 10 | 0 | NOT NULL, A cvterm.definition should be supported by one or more references. If this column is true, the dbxref is not for a term in an external database - it is a dbxref for provenance information for the definition. |

### Indices

Name | Fields
--- | ---
cvterm_dbxref_idx1 | cvterm_id
cvterm_dbxref_idx2 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | cvterm_dbxref_id
NOT NULL | cvterm_id
FOREIGN KEY | cvterm_id
NOT NULL | dbxref_id
FOREIGN KEY | dbxref_id
NOT NULL | is_for_definition
UNIQUE | cvterm_id, dbxref_id

### cvtermprop | Top

Comments:
================================================
TABLE: cvtermprop
================================================
Additional extensible properties can be attached to a cvterm using this table. Corresponds to -AnnotationProperty- in W3C OWL format.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cvtermprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
type_id | integer | 10 |  | UNIQUE, NOT NULL, The name of the property or slot is a cvterm. The meaning of the property is defined in that cvterm. | cvterm.cvterm_id
value | text | 64000 |  | UNIQUE, NOT NULL, The value of the property, represented as text. Numeric values are converted to their text representation. |
rank | integer | 10 | 0 | UNIQUE, NOT NULL, Property-Value ordering. Any cvterm can have multiple values for any particular property type - these are ordered in a list using rank, counting from zero. For properties that are single-valued rather than multi-valued, the default 0 value should be used. |

### Indices

Name | Fields
--- | ---
cvtermprop_idx1 | cvterm_id
cvtermprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | cvtermprop_id
NOT NULL | cvterm_id
FOREIGN KEY | cvterm_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | value
NOT NULL | rank
UNIQUE | cvterm_id, type_id, value, rank

### dbxrefprop | Top

Comments:
================================================
TABLE: dbxrefprop
================================================
Metadata about a dbxref. Note that this is not defined in the dbxref module, as it depends on the cvterm table. This table has a structure analagous to cvtermprop.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
dbxrefprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
dbxref_id | integer | 10 |  | UNIQUE, NOT NULL | dbxref.dbxref_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 |  | NOT NULL |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
dbxrefprop_idx1 | dbxref_id
dbxrefprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | dbxrefprop_id
NOT NULL | dbxref_id
FOREIGN KEY | dbxref_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | value
NOT NULL | rank
UNIQUE | dbxref_id, type_id, rank

### cvprop | Top

Comments:
================================================
TABLE: cvprop
================================================
Additional extensible properties can be attached to a cv using this table. A notable example would be the cv version

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cvprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
cv_id | integer | 10 |  | UNIQUE, NOT NULL | cv.cv_id
type_id | integer | 10 |  | UNIQUE, NOT NULL, The name of the property or slot is a cvterm. The meaning of the property is defined in that cvterm. | cvterm.cvterm_id
value | text | 64000 |  | The value of the property, represented as text. Numeric values are converted to their text representation. |
rank | integer | 10 | 0 | UNIQUE, NOT NULL, Property-Value ordering. Any cv can have multiple values for any particular property type - these are ordered in a list using rank, counting from zero. For properties that are single-valued rather than multi-valued, the default 0 value should be used. |

### Constraints

Type | Fields
--- | ---
NOT NULL | cvprop_id
NOT NULL | cv_id
FOREIGN KEY | cv_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | cv_id, type_id, rank

### chadoprop | Top

Comments:
================================================
TABLE: chadoprop
================================================
This table is different from other prop tables in the database, as it is for storing information about the database itself, like schema version

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
chadoprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
type_id | integer | 10 |  | UNIQUE, NOT NULL, The name of the property or slot is a cvterm. The meaning of the property is defined in that cvterm. | cvterm.cvterm_id
value | text | 64000 |  | The value of the property, represented as text. Numeric values are converted to their text representation. |
rank | integer | 10 | 0 | UNIQUE, NOT NULL, Property-Value ordering. Any cv can have multiple values for any particular property type - these are ordered in a list using rank, counting from zero. For properties that are single-valued rather than multi-valued, the default 0 value should be used. |

### Constraints

Type | Fields
--- | ---
NOT NULL | chadoprop_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | type_id, rank

### pub | Top

Comments:
$Id: pub.sql,v 1.27 2007-02-19 20:50:44 briano Exp $
==========================================
Chado pub module
=================================================================
Dependencies:
:import cvterm from cv
:import dbxref from general
=================================================================
================================================
TABLE: pub
================================================
A documented provenance artefact - publications, documents, personal communication.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
title | text | 64000 |  | Descriptive general heading. |
volumetitle | text | 64000 |  | Title of part if one of a series. |
volume | varchar | 255 |  |  |
series_name | varchar | 255 |  | Full name of (journal) series. |
issue | varchar | 255 |  |  |
pyear | varchar | 255 |  |  |
pages | varchar | 255 |  | Page number range[s], e.g. 457--459, viii + 664pp, lv--lvii. |
miniref | varchar | 255 |  |  |
uniquename | text | 64000 |  | UNIQUE, NOT NULL |
type_id | integer | 10 |  | NOT NULL, The type of the publication (book, journal, poem, graffiti, etc). Uses pub cv. | cvterm.cvterm_id
is_obsolete | boolean | 0 | false |  |
publisher | varchar | 255 |  |  |
pubplace | varchar | 255 |  |  |

### Indices

Name | Fields
--- | ---
pub_idx1 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | pub_id
NOT NULL | uniquename
NOT NULL | type_id
FOREIGN KEY | type_id
UNIQUE | uniquename

### pub_relationship | Top

Comments:
================================================
TABLE: pub_relationship
================================================
Handle relationships between publications, e.g. when one publication makes others obsolete, when one publication contains errata with respect to other publication(s), or when one publication also appears in another pub.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
pub_relationship_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
subject_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id
object_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id

### Indices

Name | Fields
--- | ---
pub_relationship_idx1 | subject_id
pub_relationship_idx2 | object_id
pub_relationship_idx3 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | pub_relationship_id
NOT NULL | subject_id
FOREIGN KEY | subject_id
NOT NULL | object_id
FOREIGN KEY | object_id
NOT NULL | type_id
FOREIGN KEY | type_id
UNIQUE | subject_id, object_id, type_id

### pub_dbxref | Top

Comments:
================================================
TABLE: pub_dbxref
================================================
Handle links to repositories, e.g. Pubmed, Biosis, zoorec, OCLC, Medline, ISSN, coden...

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
pub_dbxref_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id
dbxref_id | integer | 10 |  | UNIQUE, NOT NULL | dbxref.dbxref_id
is_current | boolean | 0 | true | NOT NULL |

### Indices

Name | Fields
--- | ---
pub_dbxref_idx1 | pub_id
pub_dbxref_idx2 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | pub_dbxref_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
NOT NULL | dbxref_id
FOREIGN KEY | dbxref_id
NOT NULL | is_current
UNIQUE | pub_id, dbxref_id

### pubauthor | Top

Comments:
================================================
TABLE: pubauthor
================================================
An author for a publication. Note the denormalisation (hence lack of _ in table name) - this is deliberate as it is in general too hard to assign IDs to authors.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
pubauthor_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id
rank | integer | 10 |  | UNIQUE, NOT NULL, Order of author in author list for this pub - order is important. |
editor | boolean | 0 | false | Indicates whether the author is an editor for linked publication. Note: this is a boolean field but does not follow the normal chado convention for naming booleans. |
surname | varchar | 100 |  | NOT NULL |
givennames | varchar | 100 |  | First name, initials |
suffix | varchar | 100 |  | Jr., Sr., etc |

### Indices

Name | Fields
--- | ---
pubauthor_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | pubauthor_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
NOT NULL | rank
NOT NULL | surname
UNIQUE | pub_id, rank

### pubprop | Top

Comments:
================================================
TABLE: pubprop
================================================
Property-value pairs for a pub. Follows standard chado pattern.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
pubprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 |  | NOT NULL |
rank | integer | 10 |  | UNIQUE |

### Indices

Name | Fields
--- | ---
pubprop_idx1 | pub_id
pubprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | pubprop_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | value
UNIQUE | pub_id, type_id, rank

### organism | Top

Comments:
$Id: organism.sql,v 1.19 2007-04-01 18:45:41 briano Exp $
==========================================
Chado organism module
============
DEPENDENCIES
============
:import cvterm from cv
:import dbxref from general
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
================================================
TABLE: organism
================================================
The organismal taxonomic classification. Note that phylogenies are represented using the phylogeny module, and taxonomies can be represented using the cvterm module or the phylogeny module.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
organism_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
abbreviation | varchar | 255 | NULL |  |
genus | varchar | 255 |  | UNIQUE, NOT NULL |
species | varchar | 255 |  | UNIQUE, NOT NULL, A type of organism is always uniquely identified by genus and species. When mapping from the NCBI taxonomy names.dmp file, this column must be used where it is present, as the common_name column is not always unique (e.g. environmental samples). If a particular strain or subspecies is to be represented, this is appended onto the species name. Follows standard NCBI taxonomy pattern. |
common_name | varchar | 255 | NULL |  |
comment | text | 64000 | NULL |  |

### Constraints

Type | Fields
--- | ---
NOT NULL | organism_id
NOT NULL | genus
NOT NULL | species
UNIQUE | genus, species

### organism_dbxref | Top

Comments:
================================================
TABLE: organism_dbxref
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
organism_dbxref_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
organism_id | integer | 10 |  | UNIQUE, NOT NULL | organism.organism_id
dbxref_id | integer | 10 |  | UNIQUE, NOT NULL | dbxref.dbxref_id

### Indices

Name | Fields
--- | ---
organism_dbxref_idx1 | organism_id
organism_dbxref_idx2 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | organism_dbxref_id
NOT NULL | organism_id
FOREIGN KEY | organism_id
NOT NULL | dbxref_id
FOREIGN KEY | dbxref_id
UNIQUE | organism_id, dbxref_id

### organismprop | Top

Comments:
================================================
TABLE: organismprop
================================================
Tag-value properties - follows standard chado model.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
organismprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
organism_id | integer | 10 |  | UNIQUE, NOT NULL | organism.organism_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
organismprop_idx1 | organism_id
organismprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | organismprop_id
NOT NULL | organism_id
FOREIGN KEY | organism_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | organism_id, type_id, rank

### feature | Top

Comments:
$Id: sequence.sql,v 1.69 2009-05-14 02:44:23 scottcain Exp $
==========================================
Chado sequence module
=================================================================
Dependencies:
:import cvterm from cv
:import pub from pub
:import organism from organism
:import dbxref from general
=================================================================
================================================
TABLE: feature
================================================
A feature is a biological sequence or a section of a biological sequence, or a collection of such sections. Examples include genes, exons, transcripts, regulatory regions, polypeptides, protein domains, chromosome sequences, sequence variations, cross-genome match regions such as hits and HSPs and so on; see the Sequence Ontology for more. The combination of organism_id, uniquename and type_id should be unique.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
dbxref_id | integer | 10 |  | An optional primary public stable identifier for this feature. Secondary identifiers and external dbxrefs go in the table feature_dbxref. | dbxref.dbxref_id
organism_id | integer | 10 |  | UNIQUE, NOT NULL, The organism to which this feature belongs. This column is mandatory. | organism.organism_id
name | varchar | 255 |  | The optional human-readable common name for a feature, for display purposes. |
uniquename | text | 64000 |  | UNIQUE, NOT NULL, The unique name for a feature; may not be necessarily be particularly human-readable, although this is preferred. This name must be unique for this type of feature within this organism. |
residues | text | 64000 |  | A sequence of alphabetic characters representing biological residues (nucleic acids, amino acids). This column does not need to be manifested for all features; it is optional for features such as exons where the residues can be derived from the featureloc. It is recommended that the value for this column be manifested for features which may may non-contiguous sublocations (e.g. transcripts), since derivation at query time is non-trivial. For expressed sequence, the DNA sequence should be used rather than the RNA sequence. The default storage method for the residues column is EXTERNAL, which will store it uncompressed to make substring operations faster. |
seqlen | integer | 10 |  | The length of the residue feature. See column:residues. This column is partially redundant with the residues column, and also with featureloc. This column is required because the location may be unknown and the residue sequence may not be manifested, yet it may be desirable to store and query the length of the feature. The seqlen should always be manifested where the length of the sequence is known. |
md5checksum | char | 32 |  | The 32-character checksum of the sequence, calculated using the MD5 algorithm. This is practically guaranteed to be unique for any feature. This column thus acts as a unique identifier on the mathematical sequence. |
type_id | integer | 10 |  | UNIQUE, NOT NULL, A required reference to a table:cvterm giving the feature type. This will typically be a Sequence Ontology identifier. This column is thus used to subclass the feature table. | cvterm.cvterm_id
is_analysis | boolean | 0 | false | NOT NULL, Boolean indicating whether this feature is annotated or the result of an automated analysis. Analysis results also use the companalysis module. Note that the dividing line between analysis and annotation may be fuzzy, this should be determined on a per-project basis in a consistent manner. One requirement is that there should only be one non-analysis version of each wild-type gene feature in a genome, whereas the same gene feature can be predicted multiple times in different analyses. |
is_obsolete | boolean | 0 | false | NOT NULL, Boolean indicating whether this feature has been obsoleted. Some chado instances may choose to simply remove the feature altogether, others may choose to keep an obsolete row in the table. |
timeaccessioned | timestamp | 0 | current_timestamp | NOT NULL, For handling object accession or modification timestamps (as opposed to database auditing data, handled elsewhere). The expectation is that these fields would be available to software interacting with chado. |
timelastmodified | timestamp | 0 | current_timestamp | NOT NULL, For handling object accession or modification timestamps (as opposed to database auditing data, handled elsewhere). The expectation is that these fields would be available to software interacting with chado. |

### Indices

Name | Fields
--- | ---
feature_name_ind1 | name
feature_idx1 | dbxref_id
feature_idx2 | organism_id
feature_idx3 | type_id
feature_idx4 | uniquename

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_id
FOREIGN KEY | dbxref_id
NOT NULL | organism_id
FOREIGN KEY | organism_id
NOT NULL | uniquename
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | is_analysis
NOT NULL | is_obsolete
NOT NULL | timeaccessioned
NOT NULL | timelastmodified
UNIQUE | organism_id, uniquename, type_id

### featureloc | Top

Comments:
COMMENT ON INDEX feature_c1 IS 'Any feature can be globally identified
by the combination of organism, uniquename and feature type';
================================================
TABLE: featureloc
================================================
The location of a feature relative to another feature. Important: interbase coordinates are used. This is vital as it allows us to represent zero-length features e.g. splice sites, insertion points without an awkward fuzzy system. Features typically have exactly ONE location, but this need not be the case. Some features may not be localized (e.g. a gene that has been characterized genetically but no sequence or molecular information is available). Note on multiple locations: Each feature can have 0 or more locations. Multiple locations do NOT indicate non-contiguous locations (if a feature such as a transcript has a non-contiguous location, then the subfeatures such as exons should always be manifested). Instead, multiple featurelocs for a feature designate alternate locations or grouped locations; for instance, a feature designating a blast hit or hsp will have two locations, one on the query feature, one on the subject feature. Features representing sequence variation could have alternate locations instantiated on a feature on the mutant strain. The column:rank is used to differentiate these different locations. Reflexive locations should never be stored - this is for -proper- (i.e. non-self) locations only; nothing should be located relative to itself.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
featureloc_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_id | integer | 10 |  | UNIQUE, NOT NULL, The feature that is being located. Any feature can have zero or more featurelocs. | feature.feature_id
srcfeature_id | integer | 10 |  | The source feature which this location is relative to. Every location is relative to another feature (however, this column is nullable, because the srcfeature may not be known). All locations are -proper- that is, nothing should be located relative to itself. No cycles are allowed in the featureloc graph. | feature.feature_id
fmin | integer | 10 |  | The leftmost/minimal boundary in the linear range represented by the featureloc. Sometimes (e.g. in Bioperl) this is called -start- although this is confusing because it does not necessarily represent the 5-prime coordinate. Important: This is space-based (interbase) coordinates, counting from zero. To convert this to the leftmost position in a base-oriented system (eg GFF, Bioperl), add 1 to fmin. |
is_fmin_partial | boolean | 0 | false | NOT NULL, This is typically false, but may be true if the value for column:fmin is inaccurate or the leftmost part of the range is unknown/unbounded. |
fmax | integer | 10 |  | The rightmost/maximal boundary in the linear range represented by the featureloc. Sometimes (e.g. in bioperl) this is called -end- although this is confusing because it does not necessarily represent the 3-prime coordinate. Important: This is space-based (interbase) coordinates, counting from zero. No conversion is required to go from fmax to the rightmost coordinate in a base-oriented system that counts from 1 (e.g. GFF, Bioperl). |
is_fmax_partial | boolean | 0 | false | NOT NULL, This is typically false, but may be true if the value for column:fmax is inaccurate or the rightmost part of the range is unknown/unbounded. |
strand | integer | 5 |  | The orientation/directionality of the location. Should be 0, -1 or +1. |
phase | integer | 10 |  | Phase of translation with respect to srcfeature_id. Values are 0, 1, 2. It may not be possible to manifest this column for some features such as exons, because the phase is dependant on the spliceform (the same exon can appear in multiple spliceforms). This column is mostly useful for predicted exons and CDSs. |
residue_info | text | 64000 |  | Alternative residues, when these differ from feature.residues. For instance, a SNP feature located on a wild and mutant protein would have different alternative residues. for alignment/similarity features, the alternative residues is used to represent the alignment string (CIGAR format). Note on variation features; even if we do not want to instantiate a mutant chromosome/contig feature, we can still represent a SNP etc with 2 locations, one (rank 0) on the genome, the other (rank 1) would have most fields null, except for alternative residues. |
locgroup | integer | 10 | 0 | UNIQUE, NOT NULL, This is used to manifest redundant, derivable extra locations for a feature. The default locgroup=0 is used for the DIRECT location of a feature. Important: most Chado users may never use featurelocs WITH logroup > 0. Transitively derived locations are indicated with locgroup > 0. For example, the position of an exon on a BAC and in global chromosome coordinates. This column is used to differentiate these groupings of locations. The default locgroup 0 is used for the main or primary location, from which the others can be derived via coordinate transformations. Another example of redundant locations is storing ORF coordinates relative to both transcript and genome. Redundant locations open the possibility of the database getting into inconsistent states; this schema gives us the flexibility of both warehouse instantiations with redundant locations (easier for querying) and management instantiations with no redundant locations. An example of using both locgroup and rank: imagine a feature indicating a conserved region between the chromosomes of two different species. We may want to keep redundant locations on both contigs and chromosomes. We would thus have 4 locations for the single conserved region feature - two distinct locgroups (contig level and chromosome level) and two distinct ranks (for the two species). |
rank | integer | 10 | 0 | UNIQUE, NOT NULL, Used when a feature has >1 location, otherwise the default rank 0 is used. Some features (e.g. blast hits and HSPs) have two locations - one on the query and one on the subject. Rank is used to differentiate these. Rank=0 is always used for the query, Rank=1 for the subject. For multiple alignments, assignment of rank is arbitrary. Rank is also used for sequence_variant features, such as SNPs. Rank=0 indicates the wildtype (or baseline) feature, Rank=1 indicates the mutant (or compared) feature. |

### Indices

Name | Fields
--- | ---
featureloc_idx1 | feature_id
featureloc_idx2 | srcfeature_id
featureloc_idx3 | srcfeature_id, fmin, fmax

### Constraints

Type | Fields
--- | ---
NOT NULL | featureloc_id
NOT NULL | feature_id
FOREIGN KEY | feature_id
FOREIGN KEY | srcfeature_id
NOT NULL | is_fmin_partial
NOT NULL | is_fmax_partial
NOT NULL | locgroup
NOT NULL | rank
UNIQUE | feature_id, locgroup, rank
CHECK |

### featureloc_pub | Top

Comments:
COMMENT ON INDEX featureloc_c1 IS 'locgroup and rank serve to uniquely
partition locations for any one feature';
================================================
TABLE: featureloc_pub
================================================
Provenance of featureloc. Linking table between featurelocs and publications that mention them.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
featureloc_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
featureloc_id | integer | 10 |  | UNIQUE, NOT NULL | featureloc.featureloc_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
featureloc_pub_idx1 | featureloc_id
featureloc_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | featureloc_pub_id
NOT NULL | featureloc_id
FOREIGN KEY | featureloc_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | featureloc_id, pub_id

### feature_pub | Top

Comments:
================================================
TABLE: feature_pub
================================================
Provenance. Linking table between features and publications that mention them.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_id | integer | 10 |  | UNIQUE, NOT NULL | feature.feature_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
feature_pub_idx1 | feature_id
feature_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_pub_id
NOT NULL | feature_id
FOREIGN KEY | feature_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | feature_id, pub_id

### feature_pubprop | Top

Comments:
================================================
TABLE: feature_pubprop
================================================
Property or attribute of a feature_pub link.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_pubprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_pub_id | integer | 10 |  | UNIQUE, NOT NULL | feature_pub.feature_pub_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
feature_pubprop_idx1 | feature_pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_pubprop_id
NOT NULL | feature_pub_id
FOREIGN KEY | feature_pub_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | feature_pub_id, type_id, rank

### featureprop | Top

Comments:
================================================
TABLE: featureprop
================================================
A feature can have any number of slot-value property tags attached to it. This is an alternative to hardcoding a list of columns in the relational schema, and is completely extensible.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
featureprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_id | integer | 10 |  | UNIQUE, NOT NULL | feature.feature_id
type_id | integer | 10 |  | UNIQUE, NOT NULL, The name of the property/slot is a cvterm. The meaning of the property is defined in that cvterm. Certain property types will only apply to certain feature types (e.g. the anticodon property will only apply to tRNA features) ; the types here come from the sequence feature property ontology. | cvterm.cvterm_id
value | text | 64000 | NULL | The value of the property, represented as text. Numeric values are converted to their text representation. This is less efficient than using native database types, but is easier to query. |
rank | integer | 10 | 0 | UNIQUE, NOT NULL, Property-Value ordering. Any feature can have multiple values for any particular property type - these are ordered in a list using rank, counting from zero. For properties that are single-valued rather than multi-valued, the default 0 value should be used |

### Indices

Name | Fields
--- | ---
featureprop_idx1 | feature_id
featureprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | featureprop_id
NOT NULL | feature_id
FOREIGN KEY | feature_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | feature_id, type_id, rank

### featureprop_pub | Top

Comments:
For any one feature, multivalued property-value pairs must be differentiated by rank.
================================================
TABLE: featureprop_pub
================================================
Provenance. Any featureprop assignment can optionally be supported by a publication.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
featureprop_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
featureprop_id | integer | 10 |  | UNIQUE, NOT NULL | featureprop.featureprop_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
featureprop_pub_idx1 | featureprop_id
featureprop_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | featureprop_pub_id
NOT NULL | featureprop_id
FOREIGN KEY | featureprop_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | featureprop_id, pub_id

### feature_dbxref | Top

Comments:
================================================
TABLE: feature_dbxref
================================================
Links a feature to dbxrefs. This is for secondary identifiers; primary identifiers should use feature.dbxref_id.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_dbxref_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_id | integer | 10 |  | UNIQUE, NOT NULL | feature.feature_id
dbxref_id | integer | 10 |  | UNIQUE, NOT NULL | dbxref.dbxref_id
is_current | boolean | 0 | true | NOT NULL, True if this secondary dbxref is the most up to date accession in the corresponding db. Retired accessions should set this field to false |

### Indices

Name | Fields
--- | ---
feature_dbxref_idx1 | feature_id
feature_dbxref_idx2 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_dbxref_id
NOT NULL | feature_id
FOREIGN KEY | feature_id
NOT NULL | dbxref_id
FOREIGN KEY | dbxref_id
NOT NULL | is_current
UNIQUE | feature_id, dbxref_id

### feature_relationship | Top

Comments:
================================================
TABLE: feature_relationship
================================================
Features can be arranged in graphs, e.g. "exon part_of transcript part_of gene"; If type is thought of as a verb, the each arc or edge makes a statement [Subject Verb Object]. The object can also be thought of as parent (containing feature), and subject as child (contained feature or subfeature). We include the relationship rank/order, because even though most of the time we can order things implicitly by sequence coordinates, we can not always do this - e.g. transpliced genes. It is also useful for quickly getting implicit introns.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_relationship_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
subject_id | integer | 10 |  | UNIQUE, NOT NULL, The subject of the subj-predicate-obj sentence. This is typically the subfeature. | feature.feature_id
object_id | integer | 10 |  | UNIQUE, NOT NULL, The object of the subj-predicate-obj sentence. This is typically the container feature. | feature.feature_id
type_id | integer | 10 |  | UNIQUE, NOT NULL, Relationship type between subject and object. This is a cvterm, typically from the OBO relationship ontology, although other relationship types are allowed. The most common relationship type is OBO_REL:part_of. Valid relationship types are constrained by the Sequence Ontology. | cvterm.cvterm_id
value | text | 64000 | NULL | Additional notes or comments. |
rank | integer | 10 | 0 | UNIQUE, NOT NULL, The ordering of subject features with respect to the object feature may be important (for example, exon ordering on a transcript - not always derivable if you take trans spliced genes into consideration). Rank is used to order these; starts from zero. |

### Indices

Name | Fields
--- | ---
feature_relationship_idx1 | subject_id
feature_relationship_idx2 | object_id
feature_relationship_idx3 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_relationship_id
NOT NULL | subject_id
FOREIGN KEY | subject_id
NOT NULL | object_id
FOREIGN KEY | object_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | subject_id, object_id, type_id, rank

### feature_relationship_pub | Top

Comments:
================================================
TABLE: feature_relationship_pub
================================================
Provenance. Attach optional evidence to a feature_relationship in the form of a publication.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_relationship_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_relationship_id | integer | 10 |  | UNIQUE, NOT NULL | feature_relationship.feature_relationship_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
feature_relationship_pub_idx1 | feature_relationship_id
feature_relationship_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_relationship_pub_id
NOT NULL | feature_relationship_id
FOREIGN KEY | feature_relationship_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | feature_relationship_id, pub_id

### feature_relationshipprop | Top

Comments:
================================================
TABLE: feature_relationshipprop
================================================
Extensible properties for feature_relationships. Analagous structure to featureprop. This table is largely optional and not used with a high frequency. Typical scenarios may be if one wishes to attach additional data to a feature_relationship - for example to say that the feature_relationship is only true in certain contexts.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_relationshipprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_relationship_id | integer | 10 |  | UNIQUE, NOT NULL | feature_relationship.feature_relationship_id
type_id | integer | 10 |  | UNIQUE, NOT NULL, The name of the property/slot is a cvterm. The meaning of the property is defined in that cvterm. Currently there is no standard ontology for feature_relationship property types. | cvterm.cvterm_id
value | text | 64000 | NULL | The value of the property, represented as text. Numeric values are converted to their text representation. This is less efficient than using native database types, but is easier to query. |
rank | integer | 10 | 0 | UNIQUE, NOT NULL, Property-Value ordering. Any feature_relationship can have multiple values for any particular property type - these are ordered in a list using rank, counting from zero. For properties that are single-valued rather than multi-valued, the default 0 value should be used. |

### Indices

Name | Fields
--- | ---
feature_relationshipprop_idx1 | feature_relationship_id
feature_relationshipprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_relationshipprop_id
NOT NULL | feature_relationship_id
FOREIGN KEY | feature_relationship_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | feature_relationship_id, type_id, rank

### feature_relationshipprop_pub | Top

Comments:
================================================
TABLE: feature_relationshipprop_pub
================================================
Provenance for feature_relationshipprop.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_relationshipprop_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_relationshipprop_id | integer | 10 |  | UNIQUE, NOT NULL | feature_relationshipprop.feature_relationshipprop_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
feature_relationshipprop_pub_idx1 | feature_relationshipprop_id
feature_relationshipprop_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_relationshipprop_pub_id
NOT NULL | feature_relationshipprop_id
FOREIGN KEY | feature_relationshipprop_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | feature_relationshipprop_id, pub_id

### feature_cvterm | Top

Comments:
================================================
TABLE: feature_cvterm
================================================
Associate a term from a cv with a feature, for example, GO annotation.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_cvterm_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_id | integer | 10 |  | UNIQUE, NOT NULL | feature.feature_id
cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL, Provenance for the annotation. Each annotation should have a single primary publication (which may be of the appropriate type for computational analyses) where more details can be found. Additional provenance dbxrefs can be attached using feature_cvterm_dbxref. | pub.pub_id
is_not | boolean | 0 | false | NOT NULL, If this is set to true, then this annotation is interpreted as a NEGATIVE annotation - i.e. the feature does NOT have the specified function, process, component, part, etc. See GO docs for more details. |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
feature_cvterm_idx1 | feature_id
feature_cvterm_idx2 | cvterm_id
feature_cvterm_idx3 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_cvterm_id
NOT NULL | feature_id
FOREIGN KEY | feature_id
NOT NULL | cvterm_id
FOREIGN KEY | cvterm_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
NOT NULL | is_not
NOT NULL | rank
UNIQUE | feature_id, cvterm_id, pub_id, rank

### feature_cvtermprop | Top

Comments:
================================================
TABLE: feature_cvtermprop
================================================
Extensible properties for feature to cvterm associations. Examples: GO evidence codes; qualifiers; metadata such as the date on which the entry was curated and the source of the association. See the featureprop table for meanings of type_id, value and rank.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_cvtermprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | feature_cvterm.feature_cvterm_id
type_id | integer | 10 |  | UNIQUE, NOT NULL, The name of the property/slot is a cvterm. The meaning of the property is defined in that cvterm. cvterms may come from the OBO evidence code cv. | cvterm.cvterm_id
value | text | 64000 | NULL | The value of the property, represented as text. Numeric values are converted to their text representation. This is less efficient than using native database types, but is easier to query. |
rank | integer | 10 | 0 | UNIQUE, NOT NULL, Property-Value ordering. Any feature_cvterm can have multiple values for any particular property type - these are ordered in a list using rank, counting from zero. For properties that are single-valued rather than multi-valued, the default 0 value should be used. |

### Indices

Name | Fields
--- | ---
feature_cvtermprop_idx1 | feature_cvterm_id
feature_cvtermprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_cvtermprop_id
NOT NULL | feature_cvterm_id
FOREIGN KEY | feature_cvterm_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | feature_cvterm_id, type_id, rank

### feature_cvterm_dbxref | Top

Comments:
================================================
TABLE: feature_cvterm_dbxref
================================================
Additional dbxrefs for an association. Rows in the feature_cvterm table may be backed up by dbxrefs. For example, a feature_cvterm association that was inferred via a protein-protein interaction may be backed by by refering to the dbxref for the alternate protein. Corresponds to the WITH column in a GO gene association file (but can also be used for other analagous associations). See http://www.geneontology.org/doc/GO.annotation.shtml#file for more details.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_cvterm_dbxref_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | feature_cvterm.feature_cvterm_id
dbxref_id | integer | 10 |  | UNIQUE, NOT NULL | dbxref.dbxref_id

### Indices

Name | Fields
--- | ---
feature_cvterm_dbxref_idx1 | feature_cvterm_id
feature_cvterm_dbxref_idx2 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_cvterm_dbxref_id
NOT NULL | feature_cvterm_id
FOREIGN KEY | feature_cvterm_id
NOT NULL | dbxref_id
FOREIGN KEY | dbxref_id
UNIQUE | feature_cvterm_id, dbxref_id

### feature_cvterm_pub | Top

Comments:
================================================
TABLE: feature_cvterm_pub
================================================
Secondary pubs for an association. Each feature_cvterm association is supported by a single primary publication. Additional secondary pubs can be added using this linking table (in a GO gene association file, these corresponding to any IDs after the pipe symbol in the publications column.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_cvterm_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | feature_cvterm.feature_cvterm_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
feature_cvterm_pub_idx1 | feature_cvterm_id
feature_cvterm_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_cvterm_pub_id
NOT NULL | feature_cvterm_id
FOREIGN KEY | feature_cvterm_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | feature_cvterm_id, pub_id

### synonym | Top

Comments:
================================================
TABLE: synonym
================================================
A synonym for a feature. One feature can have multiple synonyms, and the same synonym can apply to multiple features.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
synonym_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
name | varchar | 255 |  | UNIQUE, NOT NULL, The synonym itself. Should be human-readable machine-searchable ascii text. |
type_id | integer | 10 |  | UNIQUE, NOT NULL, Types would be symbol and fullname for now. | cvterm.cvterm_id
synonym_sgml | varchar | 255 |  | NOT NULL, The fully specified synonym, with any non-ascii characters encoded in SGML. |

### Indices

Name | Fields
--- | ---
synonym_idx1 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | synonym_id
NOT NULL | name
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | synonym_sgml
UNIQUE | name, type_id

### feature_synonym | Top

Comments:
================================================
TABLE: feature_synonym
================================================
Linking table between feature and synonym.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_synonym_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
synonym_id | integer | 10 |  | UNIQUE, NOT NULL | synonym.synonym_id
feature_id | integer | 10 |  | UNIQUE, NOT NULL | feature.feature_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL, The pub_id link is for relating the usage of a given synonym to the publication in which it was used. | pub.pub_id
is_current | boolean | 0 | false | NOT NULL, The is_current boolean indicates whether the linked synonym is the current -official- symbol for the linked feature. |
is_internal | boolean | 0 | false | NOT NULL, Typically a synonym exists so that somebody querying the db with an obsolete name can find the object theyre looking for (under its current name. If the synonym has been used publicly and deliberately (e.g. in a paper), it may also be listed in reports as a synonym. If the synonym was not used deliberately (e.g. there was a typo which went public), then the is_internal boolean may be set to -true- so that it is known that the synonym is -internal- and should be queryable but should not be listed in reports as a valid synonym. |

### Indices

Name | Fields
--- | ---
feature_synonym_idx1 | synonym_id
feature_synonym_idx2 | feature_id
feature_synonym_idx3 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_synonym_id
NOT NULL | synonym_id
FOREIGN KEY | synonym_id
NOT NULL | feature_id
FOREIGN KEY | feature_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
NOT NULL | is_current
NOT NULL | is_internal
UNIQUE | synonym_id, feature_id, pub_id

### analysis | Top

Comments:
$Id: companalysis.sql,v 1.37 2007-03-23 15:18:02 scottcain Exp $
==========================================
Chado companalysis module
=================================================================
Dependencies:
:import feature from sequence
:import cvterm from cv
=================================================================
================================================
TABLE: analysis
================================================
An analysis is a particular type of a computational analysis; it may be a blast of one sequence against another, or an all by all blast, or a different kind of analysis altogether. It is a single unit of computation.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
analysis_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
name | varchar | 255 |  | A way of grouping analyses. This should be a handy short identifier that can help people find an analysis they want. For instance "tRNAscan", "cDNA", "FlyPep", "SwissProt", and it should not be assumed to be unique. For instance, there may be lots of separate analyses done against a cDNA database. |
description | text | 64000 |  |  |
program | varchar | 255 |  | UNIQUE, NOT NULL, Program name, e.g. blastx, blastp, sim4, genscan. |
programversion | varchar | 255 |  | UNIQUE, NOT NULL, Version description, e.g. TBLASTX 2.0MP-WashU [09-Nov-2000]. |
algorithm | varchar | 255 |  | Algorithm name, e.g. blast. |
sourcename | varchar | 255 |  | UNIQUE, Source name, e.g. cDNA, SwissProt. |
sourceversion | varchar | 255 |  |  |
sourceuri | text | 64000 |  | This is an optional, permanent URL or URI for the source of the analysis. The idea is that someone could recreate the analysis directly by going to this URI and fetching the source data (e.g. the blast database, or the training model). |
timeexecuted | timestamp | 0 | current_timestamp | NOT NULL |

### Constraints

Type | Fields
--- | ---
NOT NULL | analysis_id
NOT NULL | program
NOT NULL | programversion
NOT NULL | timeexecuted
UNIQUE | program, programversion, sourcename

### analysisprop | Top

Comments:
================================================
TABLE: analysisprop
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
analysisprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
analysis_id | integer | 10 |  | UNIQUE, NOT NULL | analysis.analysis_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 |  |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
analysisprop_idx1 | analysis_id
analysisprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | analysisprop_id
NOT NULL | analysis_id
FOREIGN KEY | analysis_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | analysis_id, type_id, rank

### analysisfeature | Top

Comments:
================================================
TABLE: analysisfeature
================================================
Computational analyses generate features (e.g. Genscan generates transcripts and exons; sim4 alignments generate similarity/match features). analysisfeatures are stored using the feature table from the sequence module. The analysisfeature table is used to decorate these features, with analysis specific attributes. A feature is an analysisfeature if and only if there is a corresponding entry in the analysisfeature table. analysisfeatures will have two or more featureloc entries, with rank indicating query/subject

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
analysisfeature_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_id | integer | 10 |  | UNIQUE, NOT NULL | feature.feature_id
analysis_id | integer | 10 |  | UNIQUE, NOT NULL | analysis.analysis_id
rawscore | float | 20 |  | This is the native score generated by the program; for example, the bitscore generated by blast, sim4 or genscan scores. One should not assume that high is necessarily better than low. |
normscore | float | 20 |  | This is the rawscore but semi-normalized. Complete normalization to allow comparison of features generated by different programs would be nice but too difficult. Instead the normalization should strive to enforce the following semantics: * normscores are floating point numbers >= 0, * high normscores are better than low one. For most programs, it would be sufficient to make the normscore the same as this rawscore, providing these semantics are satisfied. |
significance | float | 20 |  | This is some kind of expectation or probability metric, representing the probability that the analysis would appear randomly given the model. As such, any program or person querying this table can assume the following semantics: * 0 <= significance <= n, where n is a positive number, theoretically unbounded but unlikely to be more than 10 * low numbers are better than high numbers. |
identity | float | 20 |  | Percent identity between the locations compared. Note that these 4 metrics do not cover the full range of scores possible; it would be undesirable to list every score possible, as this should be kept extensible. instead, for non-standard scores, use the analysisprop table. |

### Indices

Name | Fields
--- | ---
analysisfeature_idx1 | feature_id
analysisfeature_idx2 | analysis_id

### Constraints

Type | Fields
--- | ---
NOT NULL | analysisfeature_id
NOT NULL | feature_id
FOREIGN KEY | feature_id
NOT NULL | analysis_id
FOREIGN KEY | analysis_id
UNIQUE | feature_id, analysis_id

### analysisfeatureprop | Top

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
analysisfeatureprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
analysisfeature_id | integer | 10 |  | UNIQUE, NOT NULL | analysisfeature.analysisfeature_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 |  |  |
rank | integer | 10 |  | UNIQUE, NOT NULL |

### Constraints

Type | Fields
--- | ---
NOT NULL | analysisfeature_id
FOREIGN KEY | analysisfeature_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | analysisfeature_id, type_id, rank
FOREIGN KEY | analysisfeature_id
FOREIGN KEY | type_id

### phenotype | Top

Comments:
$Id: phenotype.sql,v 1.6 2007-04-27 16:09:46 emmert Exp $
==========================================
Chado phenotype module
05-31-2011
added 'name' column to phenotype. non-unique human readable field.
=================================================================
Dependencies:
:import cvterm from cv
:import feature from sequence
=================================================================
================================================
TABLE: phenotype
================================================
A phenotypic statement, or a single atomic phenotypic observation, is a controlled sentence describing observable effects of non-wild type function. E.g. Obs=eye, attribute=color, cvalue=red.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
phenotype_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
uniquename | text | 64000 |  | UNIQUE, NOT NULL |
name | text | 64000 | null |  |
observable_id | integer | 10 |  | The entity: e.g. anatomy_part, biological_process. | cvterm.cvterm_id
attr_id | integer | 10 |  | Phenotypic attribute (quality, property, attribute, character) - drawn from PATO. | cvterm.cvterm_id
value | text | 64000 |  | Value of attribute - unconstrained free text. Used only if cvalue_id is not appropriate. |
cvalue_id | integer | 10 |  | Phenotype attribute value (state). | cvterm.cvterm_id
assay_id | integer | 10 |  | Evidence type. | cvterm.cvterm_id

### Indices

Name | Fields
--- | ---
phenotype_idx1 | cvalue_id
phenotype_idx2 | observable_id
phenotype_idx3 | attr_id

### Constraints

Type | Fields
--- | ---
NOT NULL | phenotype_id
NOT NULL | uniquename
FOREIGN KEY | observable_id
FOREIGN KEY | attr_id
FOREIGN KEY | cvalue_id
FOREIGN KEY | assay_id
UNIQUE | uniquename

### phenotype_cvterm | Top

Comments:
================================================
TABLE: phenotype_cvterm
================================================
NULL

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
phenotype_cvterm_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
phenotype_id | integer | 10 |  | UNIQUE, NOT NULL | phenotype.phenotype_id
cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
phenotype_cvterm_idx1 | phenotype_id
phenotype_cvterm_idx2 | cvterm_id

### Constraints

Type | Fields
--- | ---
NOT NULL | phenotype_cvterm_id
NOT NULL | phenotype_id
FOREIGN KEY | phenotype_id
NOT NULL | cvterm_id
FOREIGN KEY | cvterm_id
NOT NULL | rank
UNIQUE | phenotype_id, cvterm_id, rank

### feature_phenotype | Top

Comments:
================================================
TABLE: feature_phenotype
================================================
NULL

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_phenotype_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_id | integer | 10 |  | UNIQUE, NOT NULL | feature.feature_id
phenotype_id | integer | 10 |  | UNIQUE, NOT NULL | phenotype.phenotype_id

### Indices

Name | Fields
--- | ---
feature_phenotype_idx1 | feature_id
feature_phenotype_idx2 | phenotype_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_phenotype_id
NOT NULL | feature_id
FOREIGN KEY | feature_id
NOT NULL | phenotype_id
FOREIGN KEY | phenotype_id
UNIQUE | feature_id, phenotype_id

### genotype | Top

Comments:
$Id: genetic.sql,v 1.31 2008-08-25 19:53:14 scottcain Exp $
==========================================
Chado genetics module
changes 2011-05-31
added type_id to genotype (can be null for backward compatibility)
added genotypeprop table
2006-04-11
split out phenotype tables into phenotype module
redesigned 2003-10-28
changes 2003-11-10:
incorporating suggestions to make everything a gcontext; use
gcontext_relationship to make some gcontexts derivable from others. we
would incorporate environment this way - just add the environment
descriptors as properties of the child gcontext
changes 2004-06 (Documented by DE: 10-MAR-2005):
Many, including rename of gcontext to genotype, split
phenstatement into phenstatement & phenotype, created environment
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
============
DEPENDENCIES
============
:import feature from sequence
:import phenotype from phenotype
:import cvterm from cv
:import pub from pub
:import dbxref from general
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
================================================
TABLE: genotype
================================================
Genetic context. A genotype is defined by a collection of features, mutations, balancers, deficiencies, haplotype blocks, or engineered constructs.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
genotype_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
name | text | 64000 |  | Optional alternative name for a genotype, for display purposes. |
uniquename | text | 64000 |  | UNIQUE, NOT NULL, The unique name for a genotype; typically derived from the features making up the genotype. |
description | varchar | 255 |  |  |
type_id | integer | 10 |  | NOT NULL | cvterm.cvterm_id

### Indices

Name | Fields
--- | ---
genotype_idx1 | uniquename
genotype_idx2 | name

### Constraints

Type | Fields
--- | ---
NOT NULL | genotype_id
NOT NULL | uniquename
NOT NULL | type_id
FOREIGN KEY | type_id
UNIQUE | uniquename

### feature_genotype | Top

Comments:
===============================================
TABLE: feature_genotype
================================================
NULL

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_genotype_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_id | integer | 10 |  | UNIQUE, NOT NULL | feature.feature_id
genotype_id | integer | 10 |  | UNIQUE, NOT NULL | genotype.genotype_id
chromosome_id | integer | 10 |  | UNIQUE, A feature of SO type "chromosome". | feature.feature_id
rank | integer | 10 |  | UNIQUE, NOT NULL, rank can be used for n-ploid organisms or to preserve order. |
cgroup | integer | 10 |  | UNIQUE, NOT NULL, Spatially distinguishable group. group can be used for distinguishing the chromosomal groups, for example (RNAi products and so on can be treated as different groups, as they do not fall on a particular chromosome). |
cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id

### Indices

Name | Fields
--- | ---
feature_genotype_idx1 | feature_id
feature_genotype_idx2 | genotype_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_genotype_id
NOT NULL | feature_id
FOREIGN KEY | feature_id
NOT NULL | genotype_id
FOREIGN KEY | genotype_id
FOREIGN KEY | chromosome_id
NOT NULL | rank
NOT NULL | cgroup
NOT NULL | cvterm_id
FOREIGN KEY | cvterm_id
UNIQUE | feature_id, genotype_id, cvterm_id, chromosome_id, rank, cgroup

### environment | Top

Comments:
================================================
TABLE: environment
================================================
The environmental component of a phenotype description.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
environment_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
uniquename | text | 64000 |  | UNIQUE, NOT NULL |
description | text | 64000 |  |  |

### Indices

Name | Fields
--- | ---
environment_idx1 | uniquename

### Constraints

Type | Fields
--- | ---
NOT NULL | environment_id
NOT NULL | uniquename
UNIQUE | uniquename

### environment_cvterm | Top

Comments:
================================================
TABLE: environment_cvterm
================================================
NULL

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
environment_cvterm_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
environment_id | integer | 10 |  | UNIQUE, NOT NULL | environment.environment_id
cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id

### Indices

Name | Fields
--- | ---
environment_cvterm_idx1 | environment_id
environment_cvterm_idx2 | cvterm_id

### Constraints

Type | Fields
--- | ---
NOT NULL | environment_cvterm_id
NOT NULL | environment_id
FOREIGN KEY | environment_id
NOT NULL | cvterm_id
FOREIGN KEY | cvterm_id
UNIQUE | environment_id, cvterm_id

### phenstatement | Top

Comments:
================================================
TABLE: phenstatement
================================================
Phenotypes are things like "larval lethal". Phenstatements are things like "dpp-1 is recessive larval lethal". So essentially phenstatement is a linking table expressing the relationship between genotype, environment, and phenotype.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
phenstatement_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
genotype_id | integer | 10 |  | UNIQUE, NOT NULL | genotype.genotype_id
environment_id | integer | 10 |  | UNIQUE, NOT NULL | environment.environment_id
phenotype_id | integer | 10 |  | UNIQUE, NOT NULL | phenotype.phenotype_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
phenstatement_idx1 | genotype_id
phenstatement_idx2 | phenotype_id

### Constraints

Type | Fields
--- | ---
NOT NULL | phenstatement_id
NOT NULL | genotype_id
FOREIGN KEY | genotype_id
NOT NULL | environment_id
FOREIGN KEY | environment_id
NOT NULL | phenotype_id
FOREIGN KEY | phenotype_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | genotype_id, phenotype_id, environment_id, type_id, pub_id

### phendesc | Top

Comments:
================================================
TABLE: phendesc
================================================
A summary of a _set_ of phenotypic statements for any one gcontext made in any one publication.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
phendesc_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
genotype_id | integer | 10 |  | UNIQUE, NOT NULL | genotype.genotype_id
environment_id | integer | 10 |  | UNIQUE, NOT NULL | environment.environment_id
description | text | 64000 |  | NOT NULL |
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
phendesc_idx1 | genotype_id
phendesc_idx2 | environment_id
phendesc_idx3 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | phendesc_id
NOT NULL | genotype_id
FOREIGN KEY | genotype_id
NOT NULL | environment_id
FOREIGN KEY | environment_id
NOT NULL | description
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | genotype_id, environment_id, type_id, pub_id

### phenotype_comparison | Top

Comments:
================================================
TABLE: phenotype_comparison
================================================
Comparison of phenotypes e.g., genotype1/environment1/phenotype1 "non-suppressible" with respect to genotype2/environment2/phenotype2.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
phenotype_comparison_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
genotype1_id | integer | 10 |  | UNIQUE, NOT NULL | genotype.genotype_id
environment1_id | integer | 10 |  | UNIQUE, NOT NULL | environment.environment_id
genotype2_id | integer | 10 |  | UNIQUE, NOT NULL | genotype.genotype_id
environment2_id | integer | 10 |  | UNIQUE, NOT NULL | environment.environment_id
phenotype1_id | integer | 10 |  | UNIQUE, NOT NULL | phenotype.phenotype_id
phenotype2_id | integer | 10 |  |  | phenotype.phenotype_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id
organism_id | integer | 10 |  | NOT NULL | organism.organism_id

### Indices

Name | Fields
--- | ---
phenotype_comparison_idx1 | genotype1_id
phenotype_comparison_idx2 | genotype2_id
phenotype_comparison_idx4 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | phenotype_comparison_id
NOT NULL | genotype1_id
FOREIGN KEY | genotype1_id
NOT NULL | environment1_id
FOREIGN KEY | environment1_id
NOT NULL | genotype2_id
FOREIGN KEY | genotype2_id
NOT NULL | environment2_id
FOREIGN KEY | environment2_id
NOT NULL | phenotype1_id
FOREIGN KEY | phenotype1_id
FOREIGN KEY | phenotype2_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
NOT NULL | organism_id
FOREIGN KEY | organism_id
UNIQUE | genotype1_id, environment1_id, genotype2_id, environment2_id, phenotype1_id, pub_id

### phenotype_comparison_cvterm | Top

Comments:
================================================
TABLE: phenotype_comparison_cvterm
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
phenotype_comparison_cvterm_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
phenotype_comparison_id | integer | 10 |  | UNIQUE, NOT NULL | phenotype_comparison.phenotype_comparison_id
cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
pub_id | integer | 10 |  | NOT NULL | pub.pub_id
rank | integer | 10 | 0 | NOT NULL |

### Indices

Name | Fields
--- | ---
phenotype_comparison_cvterm_idx1 | phenotype_comparison_id
phenotype_comparison_cvterm_idx2 | cvterm_id

### Constraints

Type | Fields
--- | ---
NOT NULL | phenotype_comparison_cvterm_id
NOT NULL | phenotype_comparison_id
FOREIGN KEY | phenotype_comparison_id
NOT NULL | cvterm_id
FOREIGN KEY | cvterm_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
NOT NULL | rank
UNIQUE | phenotype_comparison_id, cvterm_id

### genotypeprop | Top

Comments:
================================================
TABLE: genotypeprop
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
genotypeprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
genotype_id | integer | 10 |  | UNIQUE, NOT NULL | genotype.genotype_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
genotypeprop_idx1 | genotype_id
genotypeprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | genotypeprop_id
NOT NULL | genotype_id
FOREIGN KEY | genotype_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | genotype_id, type_id, rank

### featuremap | Top

Comments:
$Id: map.sql,v 1.14 2007-03-23 15:18:02 scottcain Exp $
==========================================
Chado map module
=================================================================
Dependencies:
:import feature from sequence
:import cvterm from cv
:import pub from pub
=================================================================
================================================
TABLE: featuremap
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
featuremap_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
name | varchar | 255 |  | UNIQUE |
description | text | 64000 |  |  |
unittype_id | integer | 10 | NULL |  | cvterm.cvterm_id

### Constraints

Type | Fields
--- | ---
NOT NULL | featuremap_id
FOREIGN KEY | unittype_id
UNIQUE | name

### featurerange | Top

Comments:
================================================
TABLE: featurerange
================================================
In cases where the start and end of a mapped feature is a range, leftendf and rightstartf are populated. leftstartf_id, leftendf_id, rightstartf_id, rightendf_id are the ids of features with respect to which the feature is being mapped. These may be cytological bands.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
featurerange_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
featuremap_id | integer | 10 |  | NOT NULL, featuremap_id is the id of the feature being mapped. | featuremap.featuremap_id
feature_id | integer | 10 |  | NOT NULL | feature.feature_id
leftstartf_id | integer | 10 |  | NOT NULL | feature.feature_id
leftendf_id | integer | 10 |  |  | feature.feature_id
rightstartf_id | integer | 10 |  |  | feature.feature_id
rightendf_id | integer | 10 |  | NOT NULL | feature.feature_id
rangestr | varchar | 255 |  |  |

### Indices

Name | Fields
--- | ---
featurerange_idx1 | featuremap_id
featurerange_idx2 | feature_id
featurerange_idx3 | leftstartf_id
featurerange_idx4 | leftendf_id
featurerange_idx5 | rightstartf_id
featurerange_idx6 | rightendf_id

### Constraints

Type | Fields
--- | ---
NOT NULL | featurerange_id
NOT NULL | featuremap_id
FOREIGN KEY | featuremap_id
NOT NULL | feature_id
FOREIGN KEY | feature_id
NOT NULL | leftstartf_id
FOREIGN KEY | leftstartf_id
FOREIGN KEY | leftendf_id
FOREIGN KEY | rightstartf_id
NOT NULL | rightendf_id
FOREIGN KEY | rightendf_id

### featurepos | Top

Comments:
================================================
TABLE: featurepos
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
featurepos_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
featuremap_id | integer | 11 |  | NOT NULL | featuremap.featuremap_id
feature_id | integer | 10 |  | NOT NULL | feature.feature_id
map_feature_id | integer | 10 |  | NOT NULL, map_feature_id links to the feature (map) upon which the feature is being localized. | feature.feature_id
mappos | float | 20 |  | NOT NULL |

### Indices

Name | Fields
--- | ---
featurepos_idx1 | featuremap_id
featurepos_idx2 | feature_id
featurepos_idx3 | map_feature_id

### Constraints

Type | Fields
--- | ---
NOT NULL | featurepos_id
NOT NULL | featuremap_id
FOREIGN KEY | featuremap_id
NOT NULL | feature_id
FOREIGN KEY | feature_id
NOT NULL | map_feature_id
FOREIGN KEY | map_feature_id
NOT NULL | mappos

### featuremap_pub | Top

Comments:
================================================
TABLE: featuremap_pub
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
featuremap_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
featuremap_id | integer | 10 |  | NOT NULL | featuremap.featuremap_id
pub_id | integer | 10 |  | NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
featuremap_pub_idx1 | featuremap_id
featuremap_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | featuremap_pub_id
NOT NULL | featuremap_id
FOREIGN KEY | featuremap_id
NOT NULL | pub_id
FOREIGN KEY | pub_id

### phylotree | Top

Comments:
$Id: phylogeny.sql,v 1.11 2007-04-12 17:00:30 briano Exp $
==========================================
Chado phylogenetics module
Richard Bruskiewich
Chris Mungall
Initial design: 2004-05-27
============
DEPENDENCIES
============
:import feature from sequence
:import cvterm from cv
:import pub from pub
:import organism from organism
:import dbxref from general
:import analysis from companalysis
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
================================================
TABLE: phylotree
================================================
Global anchor for phylogenetic tree.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
phylotree_id | integer | 11 |  | PRIMARY KEY, UNIQUE, NOT NULL |
dbxref_id | integer | 10 |  | NOT NULL | dbxref.dbxref_id
name | varchar | 255 | NULL |  |
type_id | integer | 10 |  | Type: protein, nucleotide, taxonomy, for example. The type should be any SO type, or "taxonomy". | cvterm.cvterm_id
analysis_id | integer | 10 | NULL |  | analysis.analysis_id
comment | text | 64000 | NULL |  |

### Indices

Name | Fields
--- | ---
phylotree_idx1 | phylotree_id

### Constraints

Type | Fields
--- | ---
NOT NULL | phylotree_id
NOT NULL | dbxref_id
FOREIGN KEY | dbxref_id
FOREIGN KEY | type_id
FOREIGN KEY | analysis_id
UNIQUE | phylotree_id

### phylotree_pub | Top

Comments:
================================================
TABLE: phylotree_pub
================================================
Tracks citations global to the tree e.g. multiple sequence alignment supporting tree construction.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
phylotree_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
phylotree_id | integer | 10 |  | UNIQUE, NOT NULL | phylotree.phylotree_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
phylotree_pub_idx1 | phylotree_id
phylotree_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | phylotree_pub_id
NOT NULL | phylotree_id
FOREIGN KEY | phylotree_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | phylotree_id, pub_id

### phylonode | Top

Comments:
================================================
TABLE: phylonode
================================================
Bootstrap float null.
This is the most pervasive element in the phylogeny module, cataloging the "phylonodes" of tree graphs. Edges are implied by the parent_phylonode_id reflexive closure. For all nodes in a nested set implementation the left and right index will be *between* the parents left and right indexes.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
phylonode_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
phylotree_id | integer | 10 |  | UNIQUE, NOT NULL | phylotree.phylotree_id
parent_phylonode_id | integer | 10 | NULL | Root phylonode can have null parent_phylonode_id value. | phylonode.phylonode_id
left_idx | integer | 10 |  | UNIQUE, NOT NULL |
right_idx | integer | 10 |  | UNIQUE, NOT NULL |
type_id | integer | 10 |  | Type: e.g. root, interior, leaf. | cvterm.cvterm_id
feature_id | integer | 10 |  | Phylonodes can have optional features attached to them e.g. a protein or nucleotide sequence usually attached to a leaf of the phylotree for non-leaf nodes, the feature may be a feature that is an instance of SO:match; this feature is the alignment of all leaf features beneath it. | feature.feature_id
label | varchar | 255 | NULL |  |
distance | float | 20 | NULL |  |

### Constraints

Type | Fields
--- | ---
NOT NULL | phylonode_id
NOT NULL | phylotree_id
FOREIGN KEY | phylotree_id
FOREIGN KEY | parent_phylonode_id
NOT NULL | left_idx
NOT NULL | right_idx
FOREIGN KEY | type_id
FOREIGN KEY | feature_id
UNIQUE | phylotree_id, left_idx
UNIQUE | phylotree_id, right_idx

### phylonode_dbxref | Top

Comments:
================================================
TABLE: phylonode_dbxref
================================================
For example, for orthology, paralogy group identifiers; could also be used for NCBI taxonomy; for sequences, refer to phylonode_feature, feature associated dbxrefs.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
phylonode_dbxref_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
phylonode_id | integer | 10 |  | UNIQUE, NOT NULL | phylonode.phylonode_id
dbxref_id | integer | 10 |  | UNIQUE, NOT NULL | dbxref.dbxref_id

### Indices

Name | Fields
--- | ---
phylonode_dbxref_idx1 | phylonode_id
phylonode_dbxref_idx2 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | phylonode_dbxref_id
NOT NULL | phylonode_id
FOREIGN KEY | phylonode_id
NOT NULL | dbxref_id
FOREIGN KEY | dbxref_id
UNIQUE | phylonode_id, dbxref_id

### phylonode_pub | Top

Comments:
================================================
TABLE: phylonode_pub
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
phylonode_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
phylonode_id | integer | 10 |  | UNIQUE, NOT NULL | phylonode.phylonode_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
phylonode_pub_idx1 | phylonode_id
phylonode_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | phylonode_pub_id
NOT NULL | phylonode_id
FOREIGN KEY | phylonode_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | phylonode_id, pub_id

### phylonode_organism | Top

Comments:
================================================
TABLE: phylonode_organism
================================================
This linking table should only be used for nodes in taxonomy trees; it provides a mapping between the node and an organism. One node can have zero or one organisms, one organism can have zero or more nodes (although typically it should only have one in the standard NCBI taxonomy tree).

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
phylonode_organism_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
phylonode_id | integer | 10 |  | UNIQUE, NOT NULL, One phylonode cannot refer to >1 organism. | phylonode.phylonode_id
organism_id | integer | 10 |  | NOT NULL | organism.organism_id

### Indices

Name | Fields
--- | ---
phylonode_organism_idx1 | phylonode_id
phylonode_organism_idx2 | organism_id

### Constraints

Type | Fields
--- | ---
NOT NULL | phylonode_organism_id
NOT NULL | phylonode_id
FOREIGN KEY | phylonode_id
NOT NULL | organism_id
FOREIGN KEY | organism_id
UNIQUE | phylonode_id

### phylonodeprop | Top

Comments:
================================================
TABLE: phylonodeprop
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
phylonodeprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
phylonode_id | integer | 10 |  | UNIQUE, NOT NULL | phylonode.phylonode_id
type_id | integer | 10 |  | UNIQUE, NOT NULL, type_id could designate phylonode hierarchy relationships, for example: species taxonomy (kingdom, order, family, genus, species), "ortholog/paralog", "fold/superfold", etc. | cvterm.cvterm_id
value | text | 64000 |  | UNIQUE, NOT NULL |
rank | integer | 10 | 0 | UNIQUE, NOT NULL, It is not clear how useful the rank concept is here, leave it in for now. |

### Indices

Name | Fields
--- | ---
phylonodeprop_idx1 | phylonode_id
phylonodeprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | phylonodeprop_id
NOT NULL | phylonode_id
FOREIGN KEY | phylonode_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | value
NOT NULL | rank
UNIQUE | phylonode_id, type_id, value, rank

### phylonode_relationship | Top

Comments:
================================================
TABLE: phylonode_relationship
================================================
This is for relationships that are not strictly hierarchical; for example, horizontal gene transfer. Most phylogenetic trees are strictly hierarchical, nevertheless it is here for completeness.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
phylonode_relationship_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
subject_id | integer | 10 |  | UNIQUE, NOT NULL | phylonode.phylonode_id
object_id | integer | 10 |  | UNIQUE, NOT NULL | phylonode.phylonode_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
rank | integer | 10 |  |  |
phylotree_id | integer | 10 |  | NOT NULL | phylotree.phylotree_id

### Indices

Name | Fields
--- | ---
phylonode_relationship_idx1 | subject_id
phylonode_relationship_idx2 | object_id
phylonode_relationship_idx3 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | phylonode_relationship_id
NOT NULL | subject_id
FOREIGN KEY | subject_id
NOT NULL | object_id
FOREIGN KEY | object_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | phylotree_id
FOREIGN KEY | phylotree_id
UNIQUE | subject_id, object_id, type_id

### contact | Top

Comments:
$Id: contact.sql,v 1.5 2007-02-25 17:00:17 briano Exp $
==========================================
Chado contact module
=================================================================
Dependencies:
:import cvterm from cv
=================================================================
================================================
TABLE: contact
================================================
Model persons, institutes, groups, organizations, etc.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
contact_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
type_id | integer | 10 | NULL | What type of contact is this? E.g. "person", "lab". | cvterm.cvterm_id
name | varchar | 255 |  | UNIQUE, NOT NULL |
description | varchar | 255 | NULL |  |

### Constraints

Type | Fields
--- | ---
NOT NULL | contact_id
FOREIGN KEY | type_id
NOT NULL | name
UNIQUE | name

### contact_relationship | Top

Comments:
================================================
TABLE: contact_relationship
================================================
Model relationships between contacts

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
contact_relationship_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
type_id | integer | 10 |  | UNIQUE, NOT NULL, Relationship type between subject and object. This is a cvterm, typically from the OBO relationship ontology, although other relationship types are allowed. | cvterm.cvterm_id
subject_id | integer | 10 |  | UNIQUE, NOT NULL, The subject of the subj-predicate-obj sentence. In a DAG, this corresponds to the child node. | contact.contact_id
object_id | integer | 10 |  | UNIQUE, NOT NULL, The object of the subj-predicate-obj sentence. In a DAG, this corresponds to the parent node. | contact.contact_id

### Indices

Name | Fields
--- | ---
contact_relationship_idx1 | type_id
contact_relationship_idx2 | subject_id
contact_relationship_idx3 | object_id

### Constraints

Type | Fields
--- | ---
NOT NULL | contact_relationship_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | subject_id
FOREIGN KEY | subject_id
NOT NULL | object_id
FOREIGN KEY | object_id
UNIQUE | subject_id, object_id, type_id

### expression | Top

Comments:
$Id: expression.sql,v 1.14 2007-03-23 15:18:02 scottcain Exp $
==========================================
Chado expression module
=================================================================
Dependencies:
:import feature from sequence
:import cvterm from cv
:import pub from pub
=================================================================
================================================
TABLE: expression
================================================
The expression table is essentially a bridge table.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
expression_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
uniquename | text | 64000 |  | UNIQUE, NOT NULL |
md5checksum | char | 32 |  |  |
description | text | 64000 |  |  |

### Constraints

Type | Fields
--- | ---
NOT NULL | expression_id
NOT NULL | uniquename
UNIQUE | uniquename

### expression_cvterm | Top

Comments:
================================================
TABLE: expression_cvterm
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
expression_cvterm_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
expression_id | integer | 10 |  | UNIQUE, NOT NULL | expression.expression_id
cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
rank | integer | 10 | 0 | NOT NULL |
cvterm_type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id

### Indices

Name | Fields
--- | ---
expression_cvterm_idx1 | expression_id
expression_cvterm_idx2 | cvterm_id
expression_cvterm_idx3 | cvterm_type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | expression_cvterm_id
NOT NULL | expression_id
FOREIGN KEY | expression_id
NOT NULL | cvterm_id
FOREIGN KEY | cvterm_id
NOT NULL | rank
NOT NULL | cvterm_type_id
FOREIGN KEY | cvterm_type_id
UNIQUE | expression_id, cvterm_id, cvterm_type_id

### expression_cvtermprop | Top

Comments:
================================================
TABLE: expression_cvtermprop
================================================
Extensible properties for expression to cvterm associations. Examples: qualifiers.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
expression_cvtermprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
expression_cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | expression_cvterm.expression_cvterm_id
type_id | integer | 10 |  | UNIQUE, NOT NULL, The name of the property/slot is a cvterm. The meaning of the property is defined in that cvterm. For example, cvterms may come from the FlyBase miscellaneous cv. | cvterm.cvterm_id
value | text | 64000 | NULL | The value of the property, represented as text. Numeric values are converted to their text representation. This is less efficient than using native database types, but is easier to query. |
rank | integer | 10 | 0 | UNIQUE, NOT NULL, Property-Value ordering. Any expression_cvterm can have multiple values for any particular property type - these are ordered in a list using rank, counting from zero. For properties that are single-valued rather than multi-valued, the default 0 value should be used. |

### Indices

Name | Fields
--- | ---
expression_cvtermprop_idx1 | expression_cvterm_id
expression_cvtermprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | expression_cvtermprop_id
NOT NULL | expression_cvterm_id
FOREIGN KEY | expression_cvterm_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | expression_cvterm_id, type_id, rank

### expressionprop | Top

Comments:
================================================
TABLE: expressionprop
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
expressionprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
expression_id | integer | 10 |  | UNIQUE, NOT NULL | expression.expression_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
expressionprop_idx1 | expression_id
expressionprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | expressionprop_id
NOT NULL | expression_id
FOREIGN KEY | expression_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | expression_id, type_id, rank

### expression_pub | Top

Comments:
================================================
TABLE: expression_pub
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
expression_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
expression_id | integer | 10 |  | UNIQUE, NOT NULL | expression.expression_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
expression_pub_idx1 | expression_id
expression_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | expression_pub_id
NOT NULL | expression_id
FOREIGN KEY | expression_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | expression_id, pub_id

### feature_expression | Top

Comments:
================================================
TABLE: feature_expression
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_expression_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
expression_id | integer | 10 |  | UNIQUE, NOT NULL | expression.expression_id
feature_id | integer | 10 |  | UNIQUE, NOT NULL | feature.feature_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
feature_expression_idx1 | expression_id
feature_expression_idx2 | feature_id
feature_expression_idx3 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_expression_id
NOT NULL | expression_id
FOREIGN KEY | expression_id
NOT NULL | feature_id
FOREIGN KEY | feature_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | expression_id, feature_id, pub_id

### feature_expressionprop | Top

Comments:
================================================
TABLE: feature_expressionprop
================================================
Extensible properties for feature_expression (comments, for example). Modeled on feature_cvtermprop.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
feature_expressionprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_expression_id | integer | 10 |  | UNIQUE, NOT NULL | feature_expression.feature_expression_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
feature_expressionprop_idx1 | feature_expression_id
feature_expressionprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | feature_expressionprop_id
NOT NULL | feature_expression_id
FOREIGN KEY | feature_expression_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | feature_expression_id, type_id, rank

### eimage | Top

Comments:
================================================
TABLE: eimage
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
eimage_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
eimage_data | text | 64000 |  | We expect images in eimage_data (e.g. JPEGs) to be uuencoded. |
eimage_type | varchar | 255 |  | NOT NULL, Describes the type of data in eimage_data. |
image_uri | varchar | 255 |  |  |

### Constraints

Type | Fields
--- | ---
NOT NULL | eimage_id
NOT NULL | eimage_type

### expression_image | Top

Comments:
================================================
TABLE: expression_image
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
expression_image_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
expression_id | integer | 10 |  | UNIQUE, NOT NULL | expression.expression_id
eimage_id | integer | 10 |  | UNIQUE, NOT NULL | eimage.eimage_id

### Indices

Name | Fields
--- | ---
expression_image_idx1 | expression_id
expression_image_idx2 | eimage_id

### Constraints

Type | Fields
--- | ---
NOT NULL | expression_image_id
NOT NULL | expression_id
FOREIGN KEY | expression_id
NOT NULL | eimage_id
FOREIGN KEY | eimage_id
UNIQUE | expression_id, eimage_id

### project | Top

Comments:
=================================================================
Dependencies:
:import cvterm from cv
:import pub from pub
:import contact from contact
=================================================================
================================================
TABLE: project
================================================
NULL

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
project_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
name | varchar | 255 |  | UNIQUE, NOT NULL |
description | varchar | 255 |  | NOT NULL |

### Constraints

Type | Fields
--- | ---
NOT NULL | project_id
NOT NULL | name
NOT NULL | description
UNIQUE | name

### projectprop | Top

Comments:
================================================
TABLE: projectprop
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
projectprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
project_id | integer | 10 |  | UNIQUE, NOT NULL | project.project_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 |  |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Constraints

Type | Fields
--- | ---
NOT NULL | projectprop_id
NOT NULL | project_id
FOREIGN KEY | project_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | project_id, type_id, rank

### project_relationship | Top

Comments:
================================================
TABLE: project_relationship
================================================
A project can be composed of several smaller scale projects

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
project_relationship_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
subject_project_id | integer | 10 |  | UNIQUE, NOT NULL | project.project_id
object_project_id | integer | 10 |  | UNIQUE, NOT NULL | project.project_id
type_id | integer | 10 |  | UNIQUE, NOT NULL, The type of relationship being stated, such as "is part of". | cvterm.cvterm_id

### Constraints

Type | Fields
--- | ---
NOT NULL | project_relationship_id
NOT NULL | subject_project_id
FOREIGN KEY | subject_project_id
NOT NULL | object_project_id
FOREIGN KEY | object_project_id
NOT NULL | type_id
FOREIGN KEY | type_id
UNIQUE | subject_project_id, object_project_id, type_id

### project_pub | Top

Comments:
Linking project(s) to publication(s)

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
project_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
project_id | integer | 10 |  | UNIQUE, NOT NULL | project.project_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
project_pub_idx1 | project_id
project_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | project_pub_id
NOT NULL | project_id
FOREIGN KEY | project_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | project_id, pub_id

### project_contact | Top

Comments:
Linking project(s) to contact(s)

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
project_contact_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
project_id | integer | 10 |  | UNIQUE, NOT NULL | project.project_id
contact_id | integer | 10 |  | UNIQUE, NOT NULL | contact.contact_id

### Indices

Name | Fields
--- | ---
project_contact_idx1 | project_id
project_contact_idx2 | contact_id

### Constraints

Type | Fields
--- | ---
NOT NULL | project_contact_id
NOT NULL | project_id
FOREIGN KEY | project_id
NOT NULL | contact_id
FOREIGN KEY | contact_id
UNIQUE | project_id, contact_id

### mageml | Top

Comments:
$Id: mage.sql,v 1.3 2008-03-19 18:32:51 scottcain Exp $
==========================================
Chado mage module
=================================================================
Dependencies:
:import feature from sequence
:import cvterm from cv
:import pub from pub
:import organism from organism
:import contact from contact
:import dbxref from general
:import tableinfo from general
:import project from project
:import analysis from companalysis
=================================================================
================================================
TABLE: mageml
================================================
This table is for storing extra bits of MAGEml in a denormalized form. More normalization would require many more tables.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
mageml_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
mage_package | text | 64000 |  | NOT NULL |
mage_ml | text | 64000 |  | NOT NULL |

### Constraints

Type | Fields
--- | ---
NOT NULL | mageml_id
NOT NULL | mage_package
NOT NULL | mage_ml

### magedocumentation | Top

Comments:
================================================
TABLE: magedocumentation
================================================
NULL

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
magedocumentation_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
mageml_id | integer | 10 |  | NOT NULL | mageml.mageml_id
tableinfo_id | integer | 10 |  | NOT NULL | tableinfo.tableinfo_id
row_id | integer | 10 |  | NOT NULL |
mageidentifier | text | 64000 |  | NOT NULL |

### Indices

Name | Fields
--- | ---
magedocumentation_idx1 | mageml_id
magedocumentation_idx2 | tableinfo_id
magedocumentation_idx3 | row_id

### Constraints

Type | Fields
--- | ---
NOT NULL | magedocumentation_id
NOT NULL | mageml_id
FOREIGN KEY | mageml_id
NOT NULL | tableinfo_id
FOREIGN KEY | tableinfo_id
NOT NULL | row_id
NOT NULL | mageidentifier

### protocol | Top

Comments:
================================================
TABLE: protocol
================================================
Procedural notes on how data was prepared and processed.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
protocol_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
type_id | integer | 10 |  | NOT NULL | cvterm.cvterm_id
pub_id | integer | 10 | NULL |  | pub.pub_id
dbxref_id | integer | 10 | NULL |  | dbxref.dbxref_id
name | text | 64000 |  | UNIQUE, NOT NULL |
uri | text | 64000 | NULL |  |
protocoldescription | text | 64000 | NULL |  |
hardwaredescription | text | 64000 | NULL |  |
softwaredescription | text | 64000 | NULL |  |

### Indices

Name | Fields
--- | ---
protocol_idx1 | type_id
protocol_idx2 | pub_id
protocol_idx3 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | protocol_id
NOT NULL | type_id
FOREIGN KEY | type_id
FOREIGN KEY | pub_id
FOREIGN KEY | dbxref_id
NOT NULL | name
UNIQUE | name

### protocolparam | Top

Comments:
================================================
TABLE: protocolparam
================================================
Parameters related to a protocol. For example, if the protocol is a soak, this might include attributes of bath temperature and duration.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
protocolparam_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
protocol_id | integer | 10 |  | NOT NULL | protocol.protocol_id
name | text | 64000 |  | NOT NULL |
datatype_id | integer | 10 | NULL |  | cvterm.cvterm_id
unittype_id | integer | 10 | NULL |  | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | NOT NULL |

### Indices

Name | Fields
--- | ---
protocolparam_idx1 | protocol_id
protocolparam_idx2 | datatype_id
protocolparam_idx3 | unittype_id

### Constraints

Type | Fields
--- | ---
NOT NULL | protocolparam_id
NOT NULL | protocol_id
FOREIGN KEY | protocol_id
NOT NULL | name
FOREIGN KEY | datatype_id
FOREIGN KEY | unittype_id
NOT NULL | rank

### channel | Top

Comments:
================================================
TABLE: channel
================================================
Different array platforms can record signals from one or more channels (cDNA arrays typically use two CCD, but Affymetrix uses only one).

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
channel_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
name | text | 64000 |  | UNIQUE, NOT NULL |
definition | text | 64000 |  | NOT NULL |

### Constraints

Type | Fields
--- | ---
NOT NULL | channel_id
NOT NULL | name
NOT NULL | definition
UNIQUE | name

### arraydesign | Top

Comments:
================================================
TABLE: arraydesign
================================================
General properties about an array. An array is a template used to generate physical slides, etc. It contains layout information, as well as global array properties, such as material (glass, nylon) and spot dimensions (in rows/columns).

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
arraydesign_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
manufacturer_id | integer | 10 |  | NOT NULL | contact.contact_id
platformtype_id | integer | 10 |  | NOT NULL | cvterm.cvterm_id
substratetype_id | integer | 10 | NULL |  | cvterm.cvterm_id
protocol_id | integer | 10 | NULL |  | protocol.protocol_id
dbxref_id | integer | 10 | NULL |  | dbxref.dbxref_id
name | text | 64000 |  | UNIQUE, NOT NULL |
version | text | 64000 | NULL |  |
description | text | 64000 | NULL |  |
array_dimensions | text | 64000 | NULL |  |
element_dimensions | text | 64000 | NULL |  |
num_of_elements | integer | 10 | NULL |  |
num_array_columns | integer | 10 | NULL |  |
num_array_rows | integer | 10 | NULL |  |
num_grid_columns | integer | 10 | NULL |  |
num_grid_rows | integer | 10 | NULL |  |
num_sub_columns | integer | 10 | NULL |  |
num_sub_rows | integer | 10 | NULL |  |

### Indices

Name | Fields
--- | ---
arraydesign_idx1 | manufacturer_id
arraydesign_idx2 | platformtype_id
arraydesign_idx3 | substratetype_id
arraydesign_idx4 | protocol_id
arraydesign_idx5 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | arraydesign_id
NOT NULL | manufacturer_id
FOREIGN KEY | manufacturer_id
NOT NULL | platformtype_id
FOREIGN KEY | platformtype_id
FOREIGN KEY | substratetype_id
FOREIGN KEY | protocol_id
FOREIGN KEY | dbxref_id
NOT NULL | name
UNIQUE | name

### arraydesignprop | Top

Comments:
================================================
TABLE: arraydesignprop
================================================
Extra array design properties that are not accounted for in arraydesign.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
arraydesignprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
arraydesign_id | integer | 10 |  | UNIQUE, NOT NULL | arraydesign.arraydesign_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
arraydesignprop_idx1 | arraydesign_id
arraydesignprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | arraydesignprop_id
NOT NULL | arraydesign_id
FOREIGN KEY | arraydesign_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | arraydesign_id, type_id, rank

### assay | Top

Comments:
================================================
TABLE: assay
================================================
An assay consists of a physical instance of an array, combined with the conditions used to create the array (protocols, technician information). The assay can be thought of as a hybridization.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
assay_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
arraydesign_id | integer | 10 |  | NOT NULL | arraydesign.arraydesign_id
protocol_id | integer | 10 | NULL |  | protocol.protocol_id
assaydate | timestamp | 0 | current_timestamp |  |
arrayidentifier | text | 64000 | NULL |  |
arraybatchidentifier | text | 64000 | NULL |  |
operator_id | integer | 10 |  | NOT NULL | contact.contact_id
dbxref_id | integer | 10 | NULL |  | dbxref.dbxref_id
name | text | 64000 | NULL | UNIQUE |
description | text | 64000 | NULL |  |

### Indices

Name | Fields
--- | ---
assay_idx1 | arraydesign_id
assay_idx2 | protocol_id
assay_idx3 | operator_id
assay_idx4 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | assay_id
NOT NULL | arraydesign_id
FOREIGN KEY | arraydesign_id
FOREIGN KEY | protocol_id
NOT NULL | operator_id
FOREIGN KEY | operator_id
FOREIGN KEY | dbxref_id
UNIQUE | name

### assayprop | Top

Comments:
================================================
TABLE: assayprop
================================================
Extra assay properties that are not accounted for in assay.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
assayprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
assay_id | integer | 10 |  | UNIQUE, NOT NULL | assay.assay_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
assayprop_idx1 | assay_id
assayprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | assayprop_id
NOT NULL | assay_id
FOREIGN KEY | assay_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | assay_id, type_id, rank

### assay_project | Top

Comments:
================================================
TABLE: assay_project
================================================
Link assays to projects.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
assay_project_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
assay_id | integer | 10 |  | UNIQUE, NOT NULL | assay.assay_id
project_id | integer | 10 |  | UNIQUE, NOT NULL | project.project_id

### Indices

Name | Fields
--- | ---
assay_project_idx1 | assay_id
assay_project_idx2 | project_id

### Constraints

Type | Fields
--- | ---
NOT NULL | assay_project_id
NOT NULL | assay_id
FOREIGN KEY | assay_id
NOT NULL | project_id
FOREIGN KEY | project_id
UNIQUE | assay_id, project_id

### biomaterial | Top

Comments:
================================================
TABLE: biomaterial
================================================
A biomaterial represents the MAGE concept of BioSource, BioSample, and LabeledExtract. It is essentially some biological material (tissue, cells, serum) that may have been processed. Processed biomaterials should be traceable back to raw biomaterials via the biomaterialrelationship table.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
biomaterial_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
taxon_id | integer | 10 | NULL |  | organism.organism_id
biosourceprovider_id | integer | 10 | NULL |  | contact.contact_id
dbxref_id | integer | 10 | NULL |  | dbxref.dbxref_id
name | text | 64000 | NULL | UNIQUE |
description | text | 64000 | NULL |  |

### Indices

Name | Fields
--- | ---
biomaterial_idx1 | taxon_id
biomaterial_idx2 | biosourceprovider_id
biomaterial_idx3 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | biomaterial_id
FOREIGN KEY | taxon_id
FOREIGN KEY | biosourceprovider_id
FOREIGN KEY | dbxref_id
UNIQUE | name

### biomaterial_relationship | Top

Comments:
================================================
TABLE: biomaterial_relationship
================================================
Relate biomaterials to one another. This is a way to track a series of treatments or material splits/merges, for instance.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
biomaterial_relationship_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
subject_id | integer | 10 |  | UNIQUE, NOT NULL | biomaterial.biomaterial_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
object_id | integer | 10 |  | UNIQUE, NOT NULL | biomaterial.biomaterial_id

### Indices

Name | Fields
--- | ---
biomaterial_relationship_idx1 | subject_id
biomaterial_relationship_idx2 | object_id
biomaterial_relationship_idx3 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | biomaterial_relationship_id
NOT NULL | subject_id
FOREIGN KEY | subject_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | object_id
FOREIGN KEY | object_id
UNIQUE | subject_id, object_id, type_id

### biomaterialprop | Top

Comments:
================================================
TABLE: biomaterialprop
================================================
Extra biomaterial properties that are not accounted for in biomaterial.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
biomaterialprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
biomaterial_id | integer | 10 |  | UNIQUE, NOT NULL | biomaterial.biomaterial_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
biomaterialprop_idx1 | biomaterial_id
biomaterialprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | biomaterialprop_id
NOT NULL | biomaterial_id
FOREIGN KEY | biomaterial_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | biomaterial_id, type_id, rank

### biomaterial_dbxref | Top

Comments:
================================================
TABLE: biomaterial_dbxref
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
biomaterial_dbxref_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
biomaterial_id | integer | 10 |  | UNIQUE, NOT NULL | biomaterial.biomaterial_id
dbxref_id | integer | 10 |  | UNIQUE, NOT NULL | dbxref.dbxref_id

### Indices

Name | Fields
--- | ---
biomaterial_dbxref_idx1 | biomaterial_id
biomaterial_dbxref_idx2 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | biomaterial_dbxref_id
NOT NULL | biomaterial_id
FOREIGN KEY | biomaterial_id
NOT NULL | dbxref_id
FOREIGN KEY | dbxref_id
UNIQUE | biomaterial_id, dbxref_id

### treatment | Top

Comments:
================================================
TABLE: treatment
================================================
A biomaterial may undergo multiple treatments. Examples of treatments: apoxia, fluorophore and biotin labeling.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
treatment_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
rank | integer | 10 | 0 | NOT NULL |
biomaterial_id | integer | 10 |  | NOT NULL | biomaterial.biomaterial_id
type_id | integer | 10 |  | NOT NULL | cvterm.cvterm_id
protocol_id | integer | 10 | NULL |  | protocol.protocol_id
name | text | 64000 | NULL |  |

### Indices

Name | Fields
--- | ---
treatment_idx1 | biomaterial_id
treatment_idx2 | type_id
treatment_idx3 | protocol_id

### Constraints

Type | Fields
--- | ---
NOT NULL | treatment_id
NOT NULL | rank
NOT NULL | biomaterial_id
FOREIGN KEY | biomaterial_id
NOT NULL | type_id
FOREIGN KEY | type_id
FOREIGN KEY | protocol_id

### biomaterial_treatment | Top

Comments:
================================================
TABLE: biomaterial_treatment
================================================
Link biomaterials to treatments. Treatments have an order of operations (rank), and associated measurements (unittype_id, value).

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
biomaterial_treatment_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
biomaterial_id | integer | 10 |  | UNIQUE, NOT NULL | biomaterial.biomaterial_id
treatment_id | integer | 10 |  | UNIQUE, NOT NULL | treatment.treatment_id
unittype_id | integer | 10 | NULL |  | cvterm.cvterm_id
value | float | 15 | NULL |  |
rank | integer | 10 | 0 | NOT NULL |

### Indices

Name | Fields
--- | ---
biomaterial_treatment_idx1 | biomaterial_id
biomaterial_treatment_idx2 | treatment_id
biomaterial_treatment_idx3 | unittype_id

### Constraints

Type | Fields
--- | ---
NOT NULL | biomaterial_treatment_id
NOT NULL | biomaterial_id
FOREIGN KEY | biomaterial_id
NOT NULL | treatment_id
FOREIGN KEY | treatment_id
FOREIGN KEY | unittype_id
NOT NULL | rank
UNIQUE | biomaterial_id, treatment_id

### assay_biomaterial | Top

Comments:
================================================
TABLE: assay_biomaterial
================================================
A biomaterial can be hybridized many times (technical replicates), or combined with other biomaterials in a single hybridization (for two-channel arrays).

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
assay_biomaterial_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
assay_id | integer | 10 |  | UNIQUE, NOT NULL | assay.assay_id
biomaterial_id | integer | 10 |  | UNIQUE, NOT NULL | biomaterial.biomaterial_id
channel_id | integer | 10 | NULL | UNIQUE | channel.channel_id
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
assay_biomaterial_idx1 | assay_id
assay_biomaterial_idx2 | biomaterial_id
assay_biomaterial_idx3 | channel_id

### Constraints

Type | Fields
--- | ---
NOT NULL | assay_biomaterial_id
NOT NULL | assay_id
FOREIGN KEY | assay_id
NOT NULL | biomaterial_id
FOREIGN KEY | biomaterial_id
FOREIGN KEY | channel_id
NOT NULL | rank
UNIQUE | assay_id, biomaterial_id, channel_id, rank

### acquisition | Top

Comments:
================================================
TABLE: acquisition
================================================
This represents the scanning of hybridized material. The output of this process is typically a digital image of an array.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
acquisition_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
assay_id | integer | 10 |  | NOT NULL | assay.assay_id
protocol_id | integer | 10 | NULL |  | protocol.protocol_id
channel_id | integer | 10 | NULL |  | channel.channel_id
acquisitiondate | timestamp | 0 | current_timestamp |  |
name | text | 64000 | NULL | UNIQUE |
uri | text | 64000 | NULL |  |

### Indices

Name | Fields
--- | ---
acquisition_idx1 | assay_id
acquisition_idx2 | protocol_id
acquisition_idx3 | channel_id

### Constraints

Type | Fields
--- | ---
NOT NULL | acquisition_id
NOT NULL | assay_id
FOREIGN KEY | assay_id
FOREIGN KEY | protocol_id
FOREIGN KEY | channel_id
UNIQUE | name

### acquisitionprop | Top

Comments:
================================================
TABLE: acquisitionprop
================================================
Parameters associated with image acquisition.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
acquisitionprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
acquisition_id | integer | 10 |  | UNIQUE, NOT NULL | acquisition.acquisition_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
acquisitionprop_idx1 | acquisition_id
acquisitionprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | acquisitionprop_id
NOT NULL | acquisition_id
FOREIGN KEY | acquisition_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | acquisition_id, type_id, rank

### acquisition_relationship | Top

Comments:
================================================
TABLE: acquisition_relationship
================================================
Multiple monochrome images may be merged to form a multi-color image. Red-green images of 2-channel hybridizations are an example of this.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
acquisition_relationship_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
subject_id | integer | 10 |  | UNIQUE, NOT NULL | acquisition.acquisition_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
object_id | integer | 10 |  | UNIQUE, NOT NULL | acquisition.acquisition_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
acquisition_relationship_idx1 | subject_id
acquisition_relationship_idx2 | type_id
acquisition_relationship_idx3 | object_id

### Constraints

Type | Fields
--- | ---
NOT NULL | acquisition_relationship_id
NOT NULL | subject_id
FOREIGN KEY | subject_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | object_id
FOREIGN KEY | object_id
NOT NULL | rank
UNIQUE | subject_id, object_id, type_id, rank

### quantification | Top

Comments:
================================================
TABLE: quantification
================================================
Quantification is the transformation of an image acquisition to numeric data. This typically involves statistical procedures.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
quantification_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
acquisition_id | integer | 10 |  | NOT NULL | acquisition.acquisition_id
operator_id | integer | 10 | NULL |  | contact.contact_id
protocol_id | integer | 10 | NULL |  | protocol.protocol_id
analysis_id | integer | 10 |  | UNIQUE, NOT NULL | analysis.analysis_id
quantificationdate | timestamp | 0 | current_timestamp |  |
name | text | 64000 | NULL | UNIQUE |
uri | text | 64000 | NULL |  |

### Indices

Name | Fields
--- | ---
quantification_idx1 | acquisition_id
quantification_idx2 | operator_id
quantification_idx3 | protocol_id
quantification_idx4 | analysis_id

### Constraints

Type | Fields
--- | ---
NOT NULL | quantification_id
NOT NULL | acquisition_id
FOREIGN KEY | acquisition_id
FOREIGN KEY | operator_id
FOREIGN KEY | protocol_id
NOT NULL | analysis_id
FOREIGN KEY | analysis_id
UNIQUE | name, analysis_id

### quantificationprop | Top

Comments:
================================================
TABLE: quantificationprop
================================================
Extra quantification properties that are not accounted for in quantification.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
quantificationprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
quantification_id | integer | 10 |  | UNIQUE, NOT NULL | quantification.quantification_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
quantificationprop_idx1 | quantification_id
quantificationprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | quantificationprop_id
NOT NULL | quantification_id
FOREIGN KEY | quantification_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | quantification_id, type_id, rank

### quantification_relationship | Top

Comments:
================================================
TABLE: quantification_relationship
================================================
There may be multiple rounds of quantification, this allows us to keep an audit trail of what values went where.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
quantification_relationship_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
subject_id | integer | 10 |  | UNIQUE, NOT NULL | quantification.quantification_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
object_id | integer | 10 |  | UNIQUE, NOT NULL | quantification.quantification_id

### Indices

Name | Fields
--- | ---
quantification_relationship_idx1 | subject_id
quantification_relationship_idx2 | type_id
quantification_relationship_idx3 | object_id

### Constraints

Type | Fields
--- | ---
NOT NULL | quantification_relationship_id
NOT NULL | subject_id
FOREIGN KEY | subject_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | object_id
FOREIGN KEY | object_id
UNIQUE | subject_id, object_id, type_id

### control | Top

Comments:
================================================
TABLE: control
================================================
NULL

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
control_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
type_id | integer | 10 |  | NOT NULL | cvterm.cvterm_id
assay_id | integer | 10 |  | NOT NULL | assay.assay_id
tableinfo_id | integer | 10 |  | NOT NULL | tableinfo.tableinfo_id
row_id | integer | 10 |  | NOT NULL |
name | text | 64000 | NULL |  |
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | NOT NULL |

### Indices

Name | Fields
--- | ---
control_idx1 | type_id
control_idx2 | assay_id
control_idx3 | tableinfo_id
control_idx4 | row_id

### Constraints

Type | Fields
--- | ---
NOT NULL | control_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | assay_id
FOREIGN KEY | assay_id
NOT NULL | tableinfo_id
FOREIGN KEY | tableinfo_id
NOT NULL | row_id
NOT NULL | rank

### element | Top

Comments:
================================================
TABLE: element
================================================
Represents a feature of the array. This is typically a region of the array coated or bound to DNA.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
element_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
feature_id | integer | 10 | NULL | UNIQUE | feature.feature_id
arraydesign_id | integer | 10 |  | UNIQUE, NOT NULL | arraydesign.arraydesign_id
type_id | integer | 10 | NULL |  | cvterm.cvterm_id
dbxref_id | integer | 10 | NULL |  | dbxref.dbxref_id

### Indices

Name | Fields
--- | ---
element_idx1 | feature_id
element_idx2 | arraydesign_id
element_idx3 | type_id
element_idx4 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | element_id
FOREIGN KEY | feature_id
NOT NULL | arraydesign_id
FOREIGN KEY | arraydesign_id
FOREIGN KEY | type_id
FOREIGN KEY | dbxref_id
UNIQUE | feature_id, arraydesign_id

### elementresult | Top

Comments:
================================================
TABLE: element_result
================================================
An element on an array produces a measurement when hybridized to a biomaterial (traceable through quantification_id). This is the base data from which tables that actually contain data inherit.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
elementresult_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
element_id | integer | 10 |  | UNIQUE, NOT NULL | element.element_id
quantification_id | integer | 10 |  | UNIQUE, NOT NULL | quantification.quantification_id
signal | float | 20 |  | NOT NULL |

### Indices

Name | Fields
--- | ---
elementresult_idx1 | element_id
elementresult_idx2 | quantification_id
elementresult_idx3 | signal

### Constraints

Type | Fields
--- | ---
NOT NULL | elementresult_id
NOT NULL | element_id
FOREIGN KEY | element_id
NOT NULL | quantification_id
FOREIGN KEY | quantification_id
NOT NULL | signal
UNIQUE | element_id, quantification_id

### element_relationship | Top

Comments:
================================================
TABLE: element_relationship
================================================
Sometimes we want to combine measurements from multiple elements to get a composite value. Affymetrix combines many probes to form a probeset measurement, for instance.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
element_relationship_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
subject_id | integer | 10 |  | UNIQUE, NOT NULL | element.element_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
object_id | integer | 10 |  | UNIQUE, NOT NULL | element.element_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
element_relationship_idx1 | subject_id
element_relationship_idx2 | type_id
element_relationship_idx3 | object_id
element_relationship_idx4 | value

### Constraints

Type | Fields
--- | ---
NOT NULL | element_relationship_id
NOT NULL | subject_id
FOREIGN KEY | subject_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | object_id
FOREIGN KEY | object_id
NOT NULL | rank
UNIQUE | subject_id, object_id, type_id, rank

### elementresult_relationship | Top

Comments:
================================================
TABLE: elementresult_relationship
================================================
Sometimes we want to combine measurements from multiple elements to get a composite value. Affymetrix combines many probes to form a probeset measurement, for instance.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
elementresult_relationship_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
subject_id | integer | 10 |  | UNIQUE, NOT NULL | elementresult.elementresult_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
object_id | integer | 10 |  | UNIQUE, NOT NULL | elementresult.elementresult_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
elementresult_relationship_idx1 | subject_id
elementresult_relationship_idx2 | type_id
elementresult_relationship_idx3 | object_id
elementresult_relationship_idx4 | value

### Constraints

Type | Fields
--- | ---
NOT NULL | elementresult_relationship_id
NOT NULL | subject_id
FOREIGN KEY | subject_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | object_id
FOREIGN KEY | object_id
NOT NULL | rank
UNIQUE | subject_id, object_id, type_id, rank

### study | Top

Comments:
================================================
TABLE: study
================================================
NULL

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
study_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
contact_id | integer | 10 |  | NOT NULL | contact.contact_id
pub_id | integer | 10 | NULL |  | pub.pub_id
dbxref_id | integer | 10 | NULL |  | dbxref.dbxref_id
name | text | 64000 |  | UNIQUE, NOT NULL |
description | text | 64000 | NULL |  |

### Indices

Name | Fields
--- | ---
study_idx1 | contact_id
study_idx2 | pub_id
study_idx3 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | study_id
NOT NULL | contact_id
FOREIGN KEY | contact_id
FOREIGN KEY | pub_id
FOREIGN KEY | dbxref_id
NOT NULL | name
UNIQUE | name

### study_assay | Top

Comments:
================================================
TABLE: study_assay
================================================
NULL

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
study_assay_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
study_id | integer | 10 |  | UNIQUE, NOT NULL | study.study_id
assay_id | integer | 10 |  | UNIQUE, NOT NULL | assay.assay_id

### Indices

Name | Fields
--- | ---
study_assay_idx1 | study_id
study_assay_idx2 | assay_id

### Constraints

Type | Fields
--- | ---
NOT NULL | study_assay_id
NOT NULL | study_id
FOREIGN KEY | study_id
NOT NULL | assay_id
FOREIGN KEY | assay_id
UNIQUE | study_id, assay_id

### studydesign | Top

Comments:
================================================
TABLE: studydesign
================================================
NULL

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
studydesign_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
study_id | integer | 10 |  | NOT NULL | study.study_id
description | text | 64000 | NULL |  |

### Indices

Name | Fields
--- | ---
studydesign_idx1 | study_id

### Constraints

Type | Fields
--- | ---
NOT NULL | studydesign_id
NOT NULL | study_id
FOREIGN KEY | study_id

### studydesignprop | Top

Comments:
================================================
TABLE: studydesignprop
================================================
NULL

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
studydesignprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
studydesign_id | integer | 10 |  | UNIQUE, NOT NULL | studydesign.studydesign_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
studydesignprop_idx1 | studydesign_id
studydesignprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | studydesignprop_id
NOT NULL | studydesign_id
FOREIGN KEY | studydesign_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | studydesign_id, type_id, rank

### studyfactor | Top

Comments:
================================================
TABLE: studyfactor
================================================
NULL

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
studyfactor_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
studydesign_id | integer | 10 |  | NOT NULL | studydesign.studydesign_id
type_id | integer | 10 | NULL |  | cvterm.cvterm_id
name | text | 64000 |  | NOT NULL |
description | text | 64000 | NULL |  |

### Indices

Name | Fields
--- | ---
studyfactor_idx1 | studydesign_id
studyfactor_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | studyfactor_id
NOT NULL | studydesign_id
FOREIGN KEY | studydesign_id
FOREIGN KEY | type_id
NOT NULL | name

### studyfactorvalue | Top

Comments:
================================================
TABLE: studyfactorvalue
================================================
NULL

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
studyfactorvalue_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
studyfactor_id | integer | 10 |  | NOT NULL | studyfactor.studyfactor_id
assay_id | integer | 10 |  | NOT NULL | assay.assay_id
factorvalue | text | 64000 | NULL |  |
name | text | 64000 | NULL |  |
rank | integer | 10 | 0 | NOT NULL |

### Indices

Name | Fields
--- | ---
studyfactorvalue_idx1 | studyfactor_id
studyfactorvalue_idx2 | assay_id

### Constraints

Type | Fields
--- | ---
NOT NULL | studyfactorvalue_id
NOT NULL | studyfactor_id
FOREIGN KEY | studyfactor_id
NOT NULL | assay_id
FOREIGN KEY | assay_id
NOT NULL | rank

### studyprop | Top

Comments:
studyprop and studyprop_feature added for Kara Dolinski's group
Here is her description of it:
Both of the tables are used for our YFGdb project
(http://yfgdb.princeton.edu/), which uses chado.
Here is how we use those tables, using the following example:
http://yfgdb.princeton.edu/cgi-bin/display.cgi?db=pmid&id=15575969
The above data set is represented as a row in the STUDY table. We have
lots of attributes that we want to store about each STUDY (status, etc)
and in the official schema, the only prop table we could use was the
STUDYDESIGN_PROP table. This forced us to go through the STUDYDESIGN
table when we often have no real data to store in that table (small
percent of our collection use MAGE-ML unfortunately, and even fewer
provide all the data in the MAGE model, of which STUDYDESIGN is a vestige).
So, we created a STUDYPROP table. I'd think this table would be
generally useful to people storing various types of data sets via the
STUDY table.
The other new table is STUDYPROP_FEATURE. This basically allows us to
group features together per study. For example, we can store microarray
clustering results by saying that the STUDYPROP type is 'cluster' (via
type_id -> CVTERM of course), the value is 'cluster id 123', and then
that cluster would be associated with all the features that are in that
cluster via STUDYPROP_FEATURE. Adding type_id to STUDYPROP_FEATURE is
fine by us!
studyprop

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
studyprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
study_id | integer | 10 |  | UNIQUE, NOT NULL | study.study_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
studyprop_idx1 | study_id
studyprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | studyprop_id
NOT NULL | study_id
FOREIGN KEY | study_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | study_id, type_id, rank

### studyprop_feature | Top

Comments:
studyprop_feature

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
studyprop_feature_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
studyprop_id | integer | 10 |  | UNIQUE, NOT NULL | studyprop.studyprop_id
feature_id | integer | 10 |  | UNIQUE, NOT NULL | feature.feature_id
type_id | integer | 10 |  |  | cvterm.cvterm_id

### Indices

Name | Fields
--- | ---
studyprop_feature_idx1 | studyprop_id
studyprop_feature_idx2 | feature_id

### Constraints

Type | Fields
--- | ---
NOT NULL | studyprop_feature_id
NOT NULL | studyprop_id
FOREIGN KEY | studyprop_id
NOT NULL | feature_id
FOREIGN KEY | feature_id
FOREIGN KEY | type_id
UNIQUE | studyprop_id, feature_id

### stock | Top

Comments:
$Id: stock.sql,v 1.7 2007-03-23 15:18:03 scottcain Exp $
==========================================
Chado stock module
DEPENDENCIES
============
:import cvterm from cv
:import pub from pub
:import dbxref from general
:import organism from organism
:import genotype from genetic
:import contact from contact
================================================
TABLE: stock
================================================
Any stock can be globally identified by the combination of organism, uniquename and stock type. A stock is the physical entities, either living or preserved, held by collections. Stocks belong to a collection; they have IDs, type, organism, description and may have a genotype.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
stock_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
dbxref_id | integer | 10 |  | The dbxref_id is an optional primary stable identifier for this stock. Secondary indentifiers and external dbxrefs go in table: stock_dbxref. | dbxref.dbxref_id
organism_id | integer | 10 |  | UNIQUE, The organism_id is the organism to which the stock belongs. This column should only be left blank if the organism cannot be determined. | organism.organism_id
name | varchar | 255 |  | The name is a human-readable local name for a stock. |
uniquename | text | 64000 |  | UNIQUE, NOT NULL |
description | text | 64000 |  | The description is the genetic description provided in the stock list. |
type_id | integer | 10 |  | UNIQUE, NOT NULL, The type_id foreign key links to a controlled vocabulary of stock types. The would include living stock, genomic DNA, preserved specimen. Secondary cvterms for stocks would go in stock_cvterm. | cvterm.cvterm_id
is_obsolete | boolean | 0 | false | NOT NULL |

### Indices

Name | Fields
--- | ---
stock_name_ind1 | name
stock_idx1 | dbxref_id
stock_idx2 | organism_id
stock_idx3 | type_id
stock_idx4 | uniquename

### Constraints

Type | Fields
--- | ---
NOT NULL | stock_id
FOREIGN KEY | dbxref_id
FOREIGN KEY | organism_id
NOT NULL | uniquename
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | is_obsolete
UNIQUE | organism_id, uniquename, type_id

### stock_pub | Top

Comments:
================================================
TABLE: stock_pub
================================================
Provenance. Linking table between stocks and, for example, a stocklist computer file.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
stock_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
stock_id | integer | 10 |  | UNIQUE, NOT NULL | stock.stock_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
stock_pub_idx1 | stock_id
stock_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | stock_pub_id
NOT NULL | stock_id
FOREIGN KEY | stock_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | stock_id, pub_id

### stockprop | Top

Comments:
================================================
TABLE: stockprop
================================================
A stock can have any number of slot-value property tags attached to it. This is an alternative to hardcoding a list of columns in the relational schema, and is completely extensible. There is a unique constraint, stockprop_c1, for the combination of stock_id, rank, and type_id. Multivalued property-value pairs must be differentiated by rank.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
stockprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
stock_id | integer | 10 |  | UNIQUE, NOT NULL | stock.stock_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
stockprop_idx1 | stock_id
stockprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | stockprop_id
NOT NULL | stock_id
FOREIGN KEY | stock_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | stock_id, type_id, rank

### stockprop_pub | Top

Comments:
================================================
TABLE: stockprop_pub
================================================
Provenance. Any stockprop assignment can optionally be supported by a publication.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
stockprop_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
stockprop_id | integer | 10 |  | UNIQUE, NOT NULL | stockprop.stockprop_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
stockprop_pub_idx1 | stockprop_id
stockprop_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | stockprop_pub_id
NOT NULL | stockprop_id
FOREIGN KEY | stockprop_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | stockprop_id, pub_id

### stock_relationship | Top

Comments:
================================================
TABLE: stock_relationship
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
stock_relationship_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
subject_id | integer | 10 |  | UNIQUE, NOT NULL, stock_relationship.subject_id is the subject of the subj-predicate-obj sentence. This is typically the substock. | stock.stock_id
object_id | integer | 10 |  | UNIQUE, NOT NULL, stock_relationship.object_id is the object of the subj-predicate-obj sentence. This is typically the container stock. | stock.stock_id
type_id | integer | 10 |  | UNIQUE, NOT NULL, stock_relationship.type_id is relationship type between subject and object. This is a cvterm, typically from the OBO relationship ontology, although other relationship types are allowed. | cvterm.cvterm_id
value | text | 64000 | NULL | stock_relationship.value is for additional notes or comments. |
rank | integer | 10 | 0 | UNIQUE, NOT NULL, stock_relationship.rank is the ordering of subject stocks with respect to the object stock may be important where rank is used to order these; starts from zero. |

### Indices

Name | Fields
--- | ---
stock_relationship_idx1 | subject_id
stock_relationship_idx2 | object_id
stock_relationship_idx3 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | stock_relationship_id
NOT NULL | subject_id
FOREIGN KEY | subject_id
NOT NULL | object_id
FOREIGN KEY | object_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | subject_id, object_id, type_id, rank

### stock_relationship_cvterm | Top

Comments:
================================================
TABLE: stock_relationship_cvterm
================================================
For germplasm maintenance and pedigree data, stock_relationship. type_id will record cvterms such as "is a female parent of", "a parent for mutation", "is a group_id of", "is a source_id of", etc The cvterms for higher categories such as "generative", "derivative" or "maintenance" can be stored in table stock_relationship_cvterm

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
stock_relationship_cvterm_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
stock_relationship_id | integer | 10 |  | NOT NULL | stock_relationship.stock_relationship_id
cvterm_id | integer | 10 |  | NOT NULL | cvterm.cvterm_id
pub_id | integer | 10 |  |  | pub.pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | stock_relationship_cvterm_id
NOT NULL | stock_relationship_id
FOREIGN KEY | stock_relationship_id
NOT NULL | cvterm_id
FOREIGN KEY | cvterm_id
FOREIGN KEY | pub_id

### stock_relationship_pub | Top

Comments:
================================================
TABLE: stock_relationship_pub
================================================
Provenance. Attach optional evidence to a stock_relationship in the form of a publication.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
stock_relationship_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
stock_relationship_id | integer | 10 |  | UNIQUE, NOT NULL | stock_relationship.stock_relationship_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
stock_relationship_pub_idx1 | stock_relationship_id
stock_relationship_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | stock_relationship_pub_id
NOT NULL | stock_relationship_id
FOREIGN KEY | stock_relationship_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | stock_relationship_id, pub_id

### stock_dbxref | Top

Comments:
================================================
TABLE: stock_dbxref
================================================
stock_dbxref links a stock to dbxrefs. This is for secondary identifiers; primary identifiers should use stock.dbxref_id.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
stock_dbxref_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
stock_id | integer | 10 |  | UNIQUE, NOT NULL | stock.stock_id
dbxref_id | integer | 10 |  | UNIQUE, NOT NULL | dbxref.dbxref_id
is_current | boolean | 0 | true | NOT NULL, The is_current boolean indicates whether the linked dbxref is the current -official- dbxref for the linked stock. |

### Indices

Name | Fields
--- | ---
stock_dbxref_idx1 | stock_id
stock_dbxref_idx2 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | stock_dbxref_id
NOT NULL | stock_id
FOREIGN KEY | stock_id
NOT NULL | dbxref_id
FOREIGN KEY | dbxref_id
NOT NULL | is_current
UNIQUE | stock_id, dbxref_id

### stock_cvterm | Top

Comments:
================================================
TABLE: stock_cvterm
================================================
stock_cvterm links a stock to cvterms. This is for secondary cvterms; primary cvterms should use stock.type_id.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
stock_cvterm_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
stock_id | integer | 10 |  | UNIQUE, NOT NULL | stock.stock_id
cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id
is_not | boolean | 0 | false | NOT NULL |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
stock_cvterm_idx1 | stock_id
stock_cvterm_idx2 | cvterm_id
stock_cvterm_idx3 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | stock_cvterm_id
NOT NULL | stock_id
FOREIGN KEY | stock_id
NOT NULL | cvterm_id
FOREIGN KEY | cvterm_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
NOT NULL | is_not
NOT NULL | rank
UNIQUE | stock_id, cvterm_id, pub_id, rank

### stock_cvtermprop | Top

Comments:
================================================
TABLE: stock_cvtermprop
================================================
Extensible properties for stock to cvterm associations. Examples: GO evidence codes; qualifiers; metadata such as the date on which the entry was curated and the source of the association. See the stockprop table for meanings of type_id, value and rank.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
stock_cvtermprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
stock_cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | stock_cvterm.stock_cvterm_id
type_id | integer | 10 |  | UNIQUE, NOT NULL, The name of the property/slot is a cvterm. The meaning of the property is defined in that cvterm. cvterms may come from the OBO evidence code cv. | cvterm.cvterm_id
value | text | 64000 | NULL | The value of the property, represented as text. Numeric values are converted to their text representation. This is less efficient than using native database types, but is easier to query. |
rank | integer | 10 | 0 | UNIQUE, NOT NULL, Property-Value ordering. Any stock_cvterm can have multiple values for any particular property type - these are ordered in a list using rank, counting from zero. For properties that are single-valued rather than multi-valued, the default 0 value should be used. |

### Indices

Name | Fields
--- | ---
stock_cvtermprop_idx1 | stock_cvterm_id
stock_cvtermprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | stock_cvtermprop_id
NOT NULL | stock_cvterm_id
FOREIGN KEY | stock_cvterm_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | stock_cvterm_id, type_id, rank

### stock_genotype | Top

Comments:
================================================
TABLE: stock_genotype
================================================
Simple table linking a stock to a genotype. Features with genotypes can be linked to stocks thru feature_genotype -> genotype -> stock_genotype -> stock.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
stock_genotype_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
stock_id | integer | 10 |  | UNIQUE, NOT NULL | stock.stock_id
genotype_id | integer | 10 |  | UNIQUE, NOT NULL | genotype.genotype_id

### Indices

Name | Fields
--- | ---
stock_genotype_idx1 | stock_id
stock_genotype_idx2 | genotype_id

### Constraints

Type | Fields
--- | ---
NOT NULL | stock_genotype_id
NOT NULL | stock_id
FOREIGN KEY | stock_id
NOT NULL | genotype_id
FOREIGN KEY | genotype_id
UNIQUE | stock_id, genotype_id

### stockcollection | Top

Comments:
================================================
TABLE: stockcollection
================================================
The lab or stock center distributing the stocks in their collection.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
stockcollection_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
type_id | integer | 10 |  | UNIQUE, NOT NULL, type_id is the collection type cv. | cvterm.cvterm_id
contact_id | integer | 10 | NULL | contact_id links to the contact information for the collection. | contact.contact_id
name | varchar | 255 |  | name is the collection. |
uniquename | text | 64000 |  | UNIQUE, NOT NULL, uniqename is the value of the collection cv. |

### Indices

Name | Fields
--- | ---
stockcollection_name_ind1 | name
stockcollection_idx1 | contact_id
stockcollection_idx2 | type_id
stockcollection_idx3 | uniquename

### Constraints

Type | Fields
--- | ---
NOT NULL | stockcollection_id
NOT NULL | type_id
FOREIGN KEY | type_id
FOREIGN KEY | contact_id
NOT NULL | uniquename
UNIQUE | uniquename, type_id

### stockcollectionprop | Top

Comments:
================================================
TABLE: stockcollectionprop
================================================
The table stockcollectionprop contains the value of the stock collection such as website/email URLs; the value of the stock collection order URLs.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
stockcollectionprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
stockcollection_id | integer | 10 |  | UNIQUE, NOT NULL | stockcollection.stockcollection_id
type_id | integer | 10 |  | UNIQUE, NOT NULL, The cv for the type_id is "stockcollection property type". | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
stockcollectionprop_idx1 | stockcollection_id
stockcollectionprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | stockcollectionprop_id
NOT NULL | stockcollection_id
FOREIGN KEY | stockcollection_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | stockcollection_id, type_id, rank

### stockcollection_stock | Top

Comments:
================================================
TABLE: stockcollection_stock
================================================
stockcollection_stock links a stock collection to the stocks which are contained in the collection.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
stockcollection_stock_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
stockcollection_id | integer | 10 |  | UNIQUE, NOT NULL | stockcollection.stockcollection_id
stock_id | integer | 10 |  | UNIQUE, NOT NULL | stock.stock_id

### Indices

Name | Fields
--- | ---
stockcollection_stock_idx1 | stockcollection_id
stockcollection_stock_idx2 | stock_id

### Constraints

Type | Fields
--- | ---
NOT NULL | stockcollection_stock_id
NOT NULL | stockcollection_id
FOREIGN KEY | stockcollection_id
NOT NULL | stock_id
FOREIGN KEY | stock_id
UNIQUE | stockcollection_id, stock_id

### stock_dbxrefprop | Top

Comments:
================================================
TABLE: stock_dbxrefprop
================================================
A stock_dbxref can have any number of slot-value property tags attached to it. This is useful for storing properties related to dbxref annotations of stocks, such as evidence codes, and references, and metadata, such as create/modify dates. This is an alternative to hardcoding a list of columns in the relational schema, and is completely extensible. There is a unique constraint, stock_dbxrefprop_c1, for the combination of stock_dbxref_id, rank, and type_id. Multivalued property-value pairs must be differentiated by rank.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
stock_dbxrefprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
stock_dbxref_id | integer | 10 |  | UNIQUE, NOT NULL | stock_dbxref.stock_dbxref_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
stock_dbxrefprop_idx1 | stock_dbxref_id
stock_dbxrefprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | stock_dbxrefprop_id
NOT NULL | stock_dbxref_id
FOREIGN KEY | stock_dbxref_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | stock_dbxref_id, type_id, rank

### library | Top

Comments:
$Id: library.sql,v 1.10 2008-03-25 16:00:43 emmert Exp $
=================================================================
Dependencies:
:import feature from sequence
:import synonym from sequence
:import cvterm from cv
:import pub from pub
:import organism from organism
=================================================================
================================================
TABLE: library
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
library_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
organism_id | integer | 10 |  | UNIQUE, NOT NULL | organism.organism_id
name | varchar | 255 |  |  |
uniquename | text | 64000 |  | UNIQUE, NOT NULL |
type_id | integer | 10 |  | UNIQUE, NOT NULL, The type_id foreign key links to a controlled vocabulary of library types. Examples of this would be: "cDNA_library" or "genomic_library" | cvterm.cvterm_id
is_obsolete | integer | 10 | 0 | NOT NULL |
timeaccessioned | timestamp | 0 | current_timestamp | NOT NULL |
timelastmodified | timestamp | 0 | current_timestamp | NOT NULL |

### Indices

Name | Fields
--- | ---
library_name_ind1 | name
library_idx1 | organism_id
library_idx2 | type_id
library_idx3 | uniquename

### Constraints

Type | Fields
--- | ---
NOT NULL | library_id
NOT NULL | organism_id
FOREIGN KEY | organism_id
NOT NULL | uniquename
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | is_obsolete
NOT NULL | timeaccessioned
NOT NULL | timelastmodified
UNIQUE | organism_id, uniquename, type_id

### library_synonym | Top

Comments:
================================================
TABLE: library_synonym
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
library_synonym_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
synonym_id | integer | 10 |  | UNIQUE, NOT NULL | synonym.synonym_id
library_id | integer | 10 |  | UNIQUE, NOT NULL | library.library_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL, The pub_id link is for relating the usage of a given synonym to the publication in which it was used. | pub.pub_id
is_current | boolean | 0 | true | NOT NULL, The is_current bit indicates whether the linked synonym is the current -official- symbol for the linked library. |
is_internal | boolean | 0 | false | NOT NULL, Typically a synonym exists so that somebody querying the database with an obsolete name can find the object they are looking for under its current name. If the synonym has been used publicly and deliberately (e.g. in a paper), it my also be listed in reports as a synonym. If the synonym was not used deliberately (e.g., there was a typo which went public), then the is_internal bit may be set to "true" so that it is known that the synonym is "internal" and should be queryable but should not be listed in reports as a valid synonym. |

### Indices

Name | Fields
--- | ---
library_synonym_idx1 | synonym_id
library_synonym_idx2 | library_id
library_synonym_idx3 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | library_synonym_id
NOT NULL | synonym_id
FOREIGN KEY | synonym_id
NOT NULL | library_id
FOREIGN KEY | library_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
NOT NULL | is_current
NOT NULL | is_internal
UNIQUE | synonym_id, library_id, pub_id

### library_pub | Top

Comments:
================================================
TABLE: library_pub
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
library_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
library_id | integer | 10 |  | UNIQUE, NOT NULL | library.library_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
library_pub_idx1 | library_id
library_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | library_pub_id
NOT NULL | library_id
FOREIGN KEY | library_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | library_id, pub_id

### libraryprop | Top

Comments:
================================================
TABLE: libraryprop
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
libraryprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
library_id | integer | 10 |  | UNIQUE, NOT NULL | library.library_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Indices

Name | Fields
--- | ---
libraryprop_idx1 | library_id
libraryprop_idx2 | type_id

### Constraints

Type | Fields
--- | ---
NOT NULL | libraryprop_id
NOT NULL | library_id
FOREIGN KEY | library_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | library_id, type_id, rank

### libraryprop_pub | Top

Comments:
================================================
TABLE: libraryprop_pub
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
libraryprop_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
libraryprop_id | integer | 10 |  | UNIQUE, NOT NULL | libraryprop.libraryprop_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
libraryprop_pub_idx1 | libraryprop_id
libraryprop_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | libraryprop_pub_id
NOT NULL | libraryprop_id
FOREIGN KEY | libraryprop_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | libraryprop_id, pub_id

### library_cvterm | Top

Comments:
================================================
TABLE: library_cvterm
================================================
The table library_cvterm links a library to controlled vocabularies which describe the library. For instance, there might be a link to the anatomy cv for "head" or "testes" for a head or testes library.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
library_cvterm_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
library_id | integer | 10 |  | UNIQUE, NOT NULL | library.library_id
cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
library_cvterm_idx1 | library_id
library_cvterm_idx2 | cvterm_id
library_cvterm_idx3 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | library_cvterm_id
NOT NULL | library_id
FOREIGN KEY | library_id
NOT NULL | cvterm_id
FOREIGN KEY | cvterm_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | library_id, cvterm_id, pub_id

### library_feature | Top

Comments:
================================================
TABLE: library_feature
================================================
library_feature links a library to the clones which are contained in the library. Examples of such linked features might be "cDNA_clone" or "genomic_clone".

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
library_feature_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
library_id | integer | 10 |  | UNIQUE, NOT NULL | library.library_id
feature_id | integer | 10 |  | UNIQUE, NOT NULL | feature.feature_id

### Indices

Name | Fields
--- | ---
library_feature_idx1 | library_id
library_feature_idx2 | feature_id

### Constraints

Type | Fields
--- | ---
NOT NULL | library_feature_id
NOT NULL | library_id
FOREIGN KEY | library_id
NOT NULL | feature_id
FOREIGN KEY | feature_id
UNIQUE | library_id, feature_id

### library_dbxref | Top

Comments:
================================================
TABLE: library_dbxref
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
library_dbxref_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
library_id | integer | 10 |  | UNIQUE, NOT NULL | library.library_id
dbxref_id | integer | 10 |  | UNIQUE, NOT NULL | dbxref.dbxref_id
is_current | boolean | 0 | true | NOT NULL |

### Indices

Name | Fields
--- | ---
library_dbxref_idx1 | library_id
library_dbxref_idx2 | dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | library_dbxref_id
NOT NULL | library_id
FOREIGN KEY | library_id
NOT NULL | dbxref_id
FOREIGN KEY | dbxref_id
NOT NULL | is_current
UNIQUE | library_id, dbxref_id

### cell_line | Top

Comments:
==========================================
Chado cell line module
============
DEPENDENCIES
============
:import feature from sequence
:import synonym from sequence
:import library from library
:import cvterm from cv
:import dbxref from general
:import pub from pub
:import organism from organism
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
================================================
TABLE: cell_line
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cell_line_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
name | varchar | 255 | NULL |  |
uniquename | varchar | 255 |  | UNIQUE, NOT NULL |
organism_id | integer | 10 |  | UNIQUE, NOT NULL | organism.organism_id
timeaccessioned | timestamp | 0 | current_timestamp | NOT NULL |
timelastmodified | timestamp | 0 | current_timestamp | NOT NULL |

### Constraints

Type | Fields
--- | ---
NOT NULL | cell_line_id
NOT NULL | uniquename
NOT NULL | organism_id
FOREIGN KEY | organism_id
NOT NULL | timeaccessioned
NOT NULL | timelastmodified
UNIQUE | uniquename, organism_id

### cell_line_relationship | Top

Comments:
================================================
TABLE: cell_line_relationship
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cell_line_relationship_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
subject_id | integer | 10 |  | UNIQUE, NOT NULL | cell_line.cell_line_id
object_id | integer | 10 |  | UNIQUE, NOT NULL | cell_line.cell_line_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id

### Constraints

Type | Fields
--- | ---
NOT NULL | cell_line_relationship_id
NOT NULL | subject_id
FOREIGN KEY | subject_id
NOT NULL | object_id
FOREIGN KEY | object_id
NOT NULL | type_id
FOREIGN KEY | type_id
UNIQUE | subject_id, object_id, type_id

### cell_line_synonym | Top

Comments:
================================================
TABLE: cell_line_synonym
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cell_line_synonym_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
cell_line_id | integer | 10 |  | UNIQUE, NOT NULL | cell_line.cell_line_id
synonym_id | integer | 10 |  | UNIQUE, NOT NULL | synonym.synonym_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id
is_current | boolean | 0 | false | NOT NULL |
is_internal | boolean | 0 | false | NOT NULL |

### Constraints

Type | Fields
--- | ---
NOT NULL | cell_line_synonym_id
NOT NULL | cell_line_id
FOREIGN KEY | cell_line_id
NOT NULL | synonym_id
FOREIGN KEY | synonym_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
NOT NULL | is_current
NOT NULL | is_internal
UNIQUE | synonym_id, cell_line_id, pub_id

### cell_line_cvterm | Top

Comments:
================================================
TABLE: cell_line_cvterm
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cell_line_cvterm_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
cell_line_id | integer | 10 |  | UNIQUE, NOT NULL | cell_line.cell_line_id
cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Constraints

Type | Fields
--- | ---
NOT NULL | cell_line_cvterm_id
NOT NULL | cell_line_id
FOREIGN KEY | cell_line_id
NOT NULL | cvterm_id
FOREIGN KEY | cvterm_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
NOT NULL | rank
UNIQUE | cell_line_id, cvterm_id, pub_id, rank

### cell_line_dbxref | Top

Comments:
================================================
TABLE: cell_line_dbxref
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cell_line_dbxref_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
cell_line_id | integer | 10 |  | UNIQUE, NOT NULL | cell_line.cell_line_id
dbxref_id | integer | 10 |  | UNIQUE, NOT NULL | dbxref.dbxref_id
is_current | boolean | 0 | true | NOT NULL |

### Constraints

Type | Fields
--- | ---
NOT NULL | cell_line_dbxref_id
NOT NULL | cell_line_id
FOREIGN KEY | cell_line_id
NOT NULL | dbxref_id
FOREIGN KEY | dbxref_id
NOT NULL | is_current
UNIQUE | cell_line_id, dbxref_id

### cell_lineprop | Top

Comments:
================================================
TABLE: cell_lineprop
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cell_lineprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
cell_line_id | integer | 10 |  | UNIQUE, NOT NULL | cell_line.cell_line_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Constraints

Type | Fields
--- | ---
NOT NULL | cell_lineprop_id
NOT NULL | cell_line_id
FOREIGN KEY | cell_line_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | cell_line_id, type_id, rank

### cell_lineprop_pub | Top

Comments:
================================================
TABLE: cell_lineprop_pub
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cell_lineprop_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
cell_lineprop_id | integer | 10 |  | UNIQUE, NOT NULL | cell_lineprop.cell_lineprop_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | cell_lineprop_pub_id
NOT NULL | cell_lineprop_id
FOREIGN KEY | cell_lineprop_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | cell_lineprop_id, pub_id

### cell_line_feature | Top

Comments:
================================================
TABLE: cell_line_feature
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cell_line_feature_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
cell_line_id | integer | 10 |  | UNIQUE, NOT NULL | cell_line.cell_line_id
feature_id | integer | 10 |  | UNIQUE, NOT NULL | feature.feature_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | cell_line_feature_id
NOT NULL | cell_line_id
FOREIGN KEY | cell_line_id
NOT NULL | feature_id
FOREIGN KEY | feature_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | cell_line_id, feature_id, pub_id

### cell_line_cvtermprop | Top

Comments:
================================================
TABLE: cell_line_cvtermprop
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cell_line_cvtermprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
cell_line_cvterm_id | integer | 10 |  | UNIQUE, NOT NULL | cell_line_cvterm.cell_line_cvterm_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Constraints

Type | Fields
--- | ---
NOT NULL | cell_line_cvtermprop_id
NOT NULL | cell_line_cvterm_id
FOREIGN KEY | cell_line_cvterm_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | cell_line_cvterm_id, type_id, rank

### cell_line_pub | Top

Comments:
================================================
TABLE: cell_line_pub
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cell_line_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
cell_line_id | integer | 10 |  | UNIQUE, NOT NULL | cell_line.cell_line_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | cell_line_pub_id
NOT NULL | cell_line_id
FOREIGN KEY | cell_line_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | cell_line_id, pub_id

### cell_line_library | Top

Comments:
================================================
TABLE: cell_line_library
================================================

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
cell_line_library_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
cell_line_id | integer | 10 |  | UNIQUE, NOT NULL | cell_line.cell_line_id
library_id | integer | 10 |  | UNIQUE, NOT NULL | library.library_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | cell_line_library_id
NOT NULL | cell_line_id
FOREIGN KEY | cell_line_id
NOT NULL | library_id
FOREIGN KEY | library_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | cell_line_id, library_id, pub_id

### nd_geolocation | Top

Comments:
=================================================================
Dependencies:
:import feature from sequence
:import cvterm from cv
:import pub from pub
:import phenotype from phenotype
:import organism from organism
:import genotype from genetic
:import contact from contact
:import project from project
:import stock from stock
:import synonym
=================================================================
this probably needs some work, depending on how cross-database we
want to be. In Postgres, at least, there are much better ways to
represent geo information.
The geo-referencable location of the stock. NOTE: This entity is subject to change as a more general and possibly more OpenGIS-compliant geolocation module may be introduced into Chado.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_geolocation_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
description | varchar | 255 |  | A textual representation of the location, if this is the original georeference. Optional if the original georeference is available in lat/long coordinates. |
latitude | real | 10 |  | The decimal latitude coordinate of the georeference, using positive and negative sign to indicate N and S, respectively. |
longitude | real | 10 |  | The decimal longitude coordinate of the georeference, using positive and negative sign to indicate E and W, respectively. |
geodetic_datum | varchar | 32 |  | The geodetic system on which the geo-reference coordinates are based. For geo-references measured between 1984 and 2010, this will typically be WGS84. |
altitude | real | 10 |  | The altitude (elevation) of the location in meters. If the altitude is only known as a range, this is the average, and altitude_dev will hold half of the width of the range. |

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_geolocation_id

### nd_experiment | Top

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_experiment_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
nd_geolocation_id | integer | 10 |  | NOT NULL | nd_geolocation.nd_geolocation_id
type_id | integer | 10 |  | NOT NULL | cvterm.cvterm_id

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_experiment_id
NOT NULL | nd_geolocation_id
FOREIGN KEY | nd_geolocation_id
NOT NULL | type_id
FOREIGN KEY | type_id
FOREIGN KEY | nd_geolocation_id
FOREIGN KEY | type_id

### nd_experiment_project | Top

Comments:
used to be nd_diversityexperiment_project
then was nd_assay_project

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_experiment_project_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
project_id | integer | 10 |  | NOT NULL | project.project_id
nd_experiment_id | integer | 10 |  | NOT NULL | nd_experiment.nd_experiment_id

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_experiment_project_id
NOT NULL | project_id
FOREIGN KEY | project_id
NOT NULL | nd_experiment_id
FOREIGN KEY | nd_experiment_id
FOREIGN KEY | project_id
FOREIGN KEY | nd_experiment_id

### nd_experimentprop | Top

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_experimentprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
nd_experiment_id | integer | 10 |  | UNIQUE, NOT NULL | nd_experiment.nd_experiment_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_experimentprop_id
NOT NULL | nd_experiment_id
FOREIGN KEY | nd_experiment_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | nd_experiment_id, type_id, rank
FOREIGN KEY | nd_experiment_id
FOREIGN KEY | type_id

### nd_experiment_pub | Top

Comments:
Linking nd_experiment(s) to publication(s)

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_experiment_pub_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
nd_experiment_id | integer | 10 |  | UNIQUE, NOT NULL | nd_experiment.nd_experiment_id
pub_id | integer | 10 |  | UNIQUE, NOT NULL | pub.pub_id

### Indices

Name | Fields
--- | ---
nd_experiment_pub_idx1 | nd_experiment_id
nd_experiment_pub_idx2 | pub_id

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_experiment_pub_id
NOT NULL | nd_experiment_id
FOREIGN KEY | nd_experiment_id
NOT NULL | pub_id
FOREIGN KEY | pub_id
UNIQUE | nd_experiment_id, pub_id

### nd_geolocationprop | Top

Comments:
Property/value associations for geolocations. This table can store the properties such as location and environment

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_geolocationprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
nd_geolocation_id | integer | 10 |  | UNIQUE, NOT NULL | nd_geolocation.nd_geolocation_id
type_id | integer | 10 |  | UNIQUE, NOT NULL, The name of the property as a reference to a controlled vocabulary term. | cvterm.cvterm_id
value | text | 64000 | NULL | The value of the property. |
rank | integer | 10 | 0 | UNIQUE, NOT NULL, The rank of the property value, if the property has an array of values. |

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_geolocationprop_id
NOT NULL | nd_geolocation_id
FOREIGN KEY | nd_geolocation_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | nd_geolocation_id, type_id, rank
FOREIGN KEY | nd_geolocation_id
FOREIGN KEY | type_id

### nd_protocol | Top

Comments:
A protocol can be anything that is done as part of the experiment.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_protocol_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
name | varchar | 255 |  | UNIQUE, NOT NULL, The protocol name. |
type_id | integer | 10 |  | NOT NULL | cvterm.cvterm_id

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_protocol_id
NOT NULL | name
UNIQUE | name
NOT NULL | type_id
FOREIGN KEY | type_id
FOREIGN KEY | type_id

### nd_reagent | Top

Comments:
A reagent such as a primer, an enzyme, an adapter oligo, a linker oligo. Reagents are used in genotyping experiments, or in any other kind of experiment.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_reagent_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
name | varchar | 80 |  | NOT NULL, The name of the reagent. The name should be unique for a given type. |
type_id | integer | 10 |  | NOT NULL, The type of the reagent, for example linker oligomer, or forward primer. | cvterm.cvterm_id
feature_id | integer | 10 |  | If the reagent is a primer, the feature that it corresponds to. More generally, the corresponding feature for any reagent that has a sequence that maps to another sequence. |

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_reagent_id
NOT NULL | name
NOT NULL | type_id
FOREIGN KEY | type_id
FOREIGN KEY | type_id

### nd_protocol_reagent | Top

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_protocol_reagent_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
nd_protocol_id | integer | 10 |  | NOT NULL | nd_protocol.nd_protocol_id
reagent_id | integer | 10 |  | NOT NULL | nd_reagent.nd_reagent_id
type_id | integer | 10 |  | NOT NULL | cvterm.cvterm_id

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_protocol_reagent_id
NOT NULL | nd_protocol_id
FOREIGN KEY | nd_protocol_id
NOT NULL | reagent_id
FOREIGN KEY | reagent_id
NOT NULL | type_id
FOREIGN KEY | type_id
FOREIGN KEY | nd_protocol_id
FOREIGN KEY | reagent_id
FOREIGN KEY | type_id

### nd_protocolprop | Top

Comments:
Property/value associations for protocol.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_protocolprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
nd_protocol_id | integer | 10 |  | UNIQUE, NOT NULL, The protocol to which the property applies. | nd_protocol.nd_protocol_id
type_id | integer | 10 |  | UNIQUE, NOT NULL, The name of the property as a reference to a controlled vocabulary term. | cvterm.cvterm_id
value | text | 64000 | NULL | The value of the property. |
rank | integer | 10 | 0 | UNIQUE, NOT NULL, The rank of the property value, if the property has an array of values. |

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_protocolprop_id
NOT NULL | nd_protocol_id
FOREIGN KEY | nd_protocol_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | nd_protocol_id, type_id, rank
FOREIGN KEY | nd_protocol_id
FOREIGN KEY | type_id

### nd_experiment_stock | Top

Comments:
Part of a stock or a clone of a stock that is used in an experiment

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_experiment_stock_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
nd_experiment_id | integer | 10 |  | NOT NULL | nd_experiment.nd_experiment_id
stock_id | integer | 10 |  | NOT NULL, stock used in the extraction or the corresponding stock for the clone | stock.stock_id
type_id | integer | 10 |  | NOT NULL | cvterm.cvterm_id

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_experiment_stock_id
NOT NULL | nd_experiment_id
FOREIGN KEY | nd_experiment_id
NOT NULL | stock_id
FOREIGN KEY | stock_id
NOT NULL | type_id
FOREIGN KEY | type_id
FOREIGN KEY | nd_experiment_id
FOREIGN KEY | stock_id
FOREIGN KEY | type_id

### nd_experiment_protocol | Top

Comments:
Linking table: experiments to the protocols they involve.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_experiment_protocol_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
nd_experiment_id | integer | 10 |  | NOT NULL | nd_experiment.nd_experiment_id
nd_protocol_id | integer | 10 |  | NOT NULL | nd_protocol.nd_protocol_id

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_experiment_protocol_id
NOT NULL | nd_experiment_id
FOREIGN KEY | nd_experiment_id
NOT NULL | nd_protocol_id
FOREIGN KEY | nd_protocol_id
FOREIGN KEY | nd_experiment_id
FOREIGN KEY | nd_protocol_id

### nd_experiment_phenotype | Top

Comments:
Linking table: experiments to the phenotypes they produce. There is a one-to-one relationship between an experiment and a phenotype since each phenotype record should point to one experiment. Add a new experiment_id for each phenotype record.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_experiment_phenotype_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
nd_experiment_id | integer | 10 |  | UNIQUE, NOT NULL | nd_experiment.nd_experiment_id
phenotype_id | integer | 10 |  | UNIQUE, NOT NULL | phenotype.phenotype_id

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_experiment_phenotype_id
NOT NULL | nd_experiment_id
FOREIGN KEY | nd_experiment_id
NOT NULL | phenotype_id
FOREIGN KEY | phenotype_id
UNIQUE | nd_experiment_id, phenotype_id
FOREIGN KEY | nd_experiment_id
FOREIGN KEY | phenotype_id

### nd_experiment_genotype | Top

Comments:
Linking table: experiments to the genotypes they produce. There is a one-to-one relationship between an experiment and a genotype since each genotype record should point to one experiment. Add a new experiment_id for each genotype record.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_experiment_genotype_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
nd_experiment_id | integer | 10 |  | UNIQUE, NOT NULL | nd_experiment.nd_experiment_id
genotype_id | integer | 10 |  | UNIQUE, NOT NULL | genotype.genotype_id

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_experiment_genotype_id
NOT NULL | nd_experiment_id
FOREIGN KEY | nd_experiment_id
NOT NULL | genotype_id
FOREIGN KEY | genotype_id
UNIQUE | nd_experiment_id, genotype_id
FOREIGN KEY | nd_experiment_id
FOREIGN KEY | genotype_id

### nd_reagent_relationship | Top

Comments:
Relationships between reagents. Some reagents form a group. i.e., they are used all together or not at all. Examples are adapter/linker/enzyme experiment reagents.

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_reagent_relationship_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
subject_reagent_id | integer | 10 |  | NOT NULL, The subject reagent in the relationship. In parent/child terminology, the subject is the child. For example, in "linkerA 3prime-overhang-linker enzymeA" linkerA is the subject, 3prime-overhand-linker is the type, and enzymeA is the object. | nd_reagent.nd_reagent_id
object_reagent_id | integer | 10 |  | NOT NULL, The object reagent in the relationship. In parent/child terminology, the object is the parent. For example, in "linkerA 3prime-overhang-linker enzymeA" linkerA is the subject, 3prime-overhand-linker is the type, and enzymeA is the object. | nd_reagent.nd_reagent_id
type_id | integer | 10 |  | NOT NULL, The type (or predicate) of the relationship. For example, in "linkerA 3prime-overhang-linker enzymeA" linkerA is the subject, 3prime-overhand-linker is the type, and enzymeA is the object. | cvterm.cvterm_id

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_reagent_relationship_id
NOT NULL | subject_reagent_id
FOREIGN KEY | subject_reagent_id
NOT NULL | object_reagent_id
FOREIGN KEY | object_reagent_id
NOT NULL | type_id
FOREIGN KEY | type_id
FOREIGN KEY | subject_reagent_id
FOREIGN KEY | object_reagent_id
FOREIGN KEY | type_id

### nd_reagentprop | Top

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_reagentprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
nd_reagent_id | integer | 10 |  | UNIQUE, NOT NULL | nd_reagent.nd_reagent_id
type_id | integer | 10 |  | UNIQUE, NOT NULL | cvterm.cvterm_id
value | text | 64000 | NULL |  |
rank | integer | 10 | 0 | UNIQUE, NOT NULL |

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_reagentprop_id
NOT NULL | nd_reagent_id
FOREIGN KEY | nd_reagent_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | nd_reagent_id, type_id, rank
FOREIGN KEY | nd_reagent_id
FOREIGN KEY | type_id

### nd_experiment_stockprop | Top

Comments:
Property/value associations for experiment_stocks. This table can store the properties such as treatment

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_experiment_stockprop_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
nd_experiment_stock_id | integer | 10 |  | UNIQUE, NOT NULL, The experiment_stock to which the property applies. | nd_experiment_stock.nd_experiment_stock_id
type_id | integer | 10 |  | UNIQUE, NOT NULL, The name of the property as a reference to a controlled vocabulary term. | cvterm.cvterm_id
value | text | 64000 | NULL | The value of the property. |
rank | integer | 10 | 0 | UNIQUE, NOT NULL, The rank of the property value, if the property has an array of values. |

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_experiment_stockprop_id
NOT NULL | nd_experiment_stock_id
FOREIGN KEY | nd_experiment_stock_id
NOT NULL | type_id
FOREIGN KEY | type_id
NOT NULL | rank
UNIQUE | nd_experiment_stock_id, type_id, rank
FOREIGN KEY | nd_experiment_stock_id
FOREIGN KEY | type_id

### nd_experiment_stock_dbxref | Top

Comments:
Cross-reference experiment_stock to accessions, images, etc

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_experiment_stock_dbxref_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
nd_experiment_stock_id | integer | 10 |  | NOT NULL | nd_experiment_stock.nd_experiment_stock_id
dbxref_id | integer | 10 |  | NOT NULL | dbxref.dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_experiment_stock_dbxref_id
NOT NULL | nd_experiment_stock_id
FOREIGN KEY | nd_experiment_stock_id
NOT NULL | dbxref_id
FOREIGN KEY | dbxref_id
FOREIGN KEY | nd_experiment_stock_id
FOREIGN KEY | dbxref_id

### nd_experiment_dbxref | Top

Comments:
Cross-reference experiment to accessions, images, etc

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_experiment_dbxref_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
nd_experiment_id | integer | 10 |  | NOT NULL | nd_experiment.nd_experiment_id
dbxref_id | integer | 10 |  | NOT NULL | dbxref.dbxref_id

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_experiment_dbxref_id
NOT NULL | nd_experiment_id
FOREIGN KEY | nd_experiment_id
NOT NULL | dbxref_id
FOREIGN KEY | dbxref_id
FOREIGN KEY | nd_experiment_id
FOREIGN KEY | dbxref_id

### nd_experiment_contact | Top

Field Name | Data Type | Size | Default Value | Other | Foreign Key
--- | --- | --- | --- | --- | ---
nd_experiment_contact_id | integer | 11 |  | PRIMARY KEY, NOT NULL |
nd_experiment_id | integer | 10 |  | NOT NULL | nd_experiment.nd_experiment_id
contact_id | integer | 10 |  | NOT NULL | contact.contact_id

### Constraints

Type | Fields
--- | ---
NOT NULL | nd_experiment_contact_id
NOT NULL | nd_experiment_id
FOREIGN KEY | nd_experiment_id
NOT NULL | contact_id
FOREIGN KEY | contact_id
FOREIGN KEY | nd_experiment_id
FOREIGN KEY | contact_id

Created by SQL::Translator 0.11003