Resequencing Database

Intro

This database is primarily a LIMS to keep track of user and sample imformation for the wet half of the project.

Dictionary

Schema


#SQL Scripts for creating lims schema
CREATE TABLE `person` (
`person_id` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
`last_name` VARCHAR(32),
`first_name` VARCHAR(32),
`title` VARCHAR(32),
`email` VARCHAR(40),
`phone_land` VARCHAR(20),
`phone_cell` VARCHAR(20),
`lab_id` SMALLINT(5),
PRIMARY KEY (`person_id`)
)TYPE = InnoDB COMMENT = 'contact person';

CREATE TABLE `laboratory` (
`lab_id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
`institution` VARCHAR(80),
`address1` VARCHAR(80),
`address2` VARCHAR(80),
`address3` VARCHAR(80),
`contact_id` MEDIUMINT(8),
PRIMARY KEY (`lab_id`)
) TYPE = InnoDB COMMENT = 'laboratory';

CREATE TABLE `document` (
`doc_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`title` VARCHAR(255),
`authors` VARCHAR(255),
`citation` VARCHAR(255),
`doc_description` VARCHAR(255),
`doc_file` VARCHAR(80),
PRIMARY KEY (`doc_id`)
) TYPE = InnoDB COMMENT = 'document';

CREATE TABLE `method` (
`method_id` INT(10)  UNSIGNED NOT NULL AUTO_INCREMENT,
`method_type` VARCHAR(40),
`description` VARCHAR(80),
`doc_id` INT(10),
PRIMARY KEY (`method_id`)
) TYPE = InnoDB COMMENT = 'method';

CREATE TABLE `study` (
`study_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(80),
`description` VARCHAR(255),
PRIMARY KEY (`study_id`),
UNIQUE(`name`)
) TYPE = InnoDB COMMENT = 'study';

CREATE TABLE `subject` (
`subject_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20),
`external_id` VARCHAR(80),
`description` VARCHAR(255),
`study_id` INT(10),
`doc_id` INT(10),
PRIMARY KEY(`subject_id`),
UNIQUE (`name`)
) TYPE = InnoDB COMMENT = 'study subjects';

CREATE TABLE `sample_type` (
`name` VARCHAR(32),
`description` VARCHAR(255),
PRIMARY KEY(`name`)
) TYPE = InnoDB COMMENT = 'sample type';

CREATE TABLE `sample` (
`sample_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(24),
`subject_id` INT(10),
`sample_type` VARCHAR(32),
`status` VARCHAR(16),
`container_id` INT(10),
`container_column` SMALLINT(5),
`container_row` SMALLINT(5),
`concentration` VARCHAR(10),
`amount` VARCHAR(10),
`doc_id` INT(10),
PRIMARY KEY(`sample_id`)
) TYPE = InnoDB COMMENT = 'sample';

CREATE TABLE `sample_composition` (
`sample_id` INT(10) UNSIGNED NOT NULL,
`component_id` INT(10) UNSIGNED NOT NULL,
`transfer_vol` VARCHAR(10),
`dilution_vol` VARCHAR(10)
) TYPE =InnoDB COMMENT ='link between child and parent sample';

CREATE TABLE `container_type` (
`name` VARCHAR(16),
`description` VARCHAR(255),
`number_of_columns` SMALLINT(5),
`number_of_rows` SMALLINT(5),
`sample_type` VARCHAR(32),
PRIMARY KEY (`name`)
) TYPE =InnoDB COMMENT = 'Type of container';

CREATE TABLE `container`(
`container_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(40),
`description` VARCHAR(255),
`status` VARCHAR(16),
`container_type` VARCHAR(16),
`location_id` INT(5),
PRIMARY KEY (`container_id`),
UNIQUE(`name`)
)TYPE = InnoDB COMMENT='container';

CREATE TABLE `location_hierarchy` (
`location_id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50),
`lab_id` SMALLINT(5),
`bldg_room` VARCHAR(50),
`unit_type` VARCHAR(16),
`unit_name` VARCHAR(32),
`subunit_type` VARCHAR(16),
`subunit_name` VARCHAR(32),
PRIMARY KEY (`location_id`),
UNIQUE(`name`)
) TYPE = InnoDB COMMENT ='location';

#Transactions
CREATE TABLE `container_transaction` (
`con_trans_id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`con_trans_type` CHAR( 1 ) NOT NULL ,
`con_trans_date` TIMESTAMP,
`lims_user_id` SMALLINT( 5 ) UNSIGNED ZEROFILL,
PRIMARY KEY ( `con_trans_id` )
) TYPE = InnoDB COMMENT = 'container transaction';

CREATE TABLE `container_transaction_type` (
`con_trans_type` CHAR(1),
`description` VARCHAR(80),
PRIMARY KEY (`con_trans_type`)
) TYPE = InnoDB COMMENT = 'container transaction type';

CREATE TABLE `sample_transaction`(
`sample_trans_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`sample_trans_type` CHAR(1),
`sample_trans_date` TIMESTAMP,
`lims_user_id` SMALLINT(5),
PRIMARY KEY(`sample_trans_id`)
)TYPE = InnoDB COMMENT='sample transaction';

CREATE TABLE `sample_transaction_type` (
`sample_trans_type` CHAR(1),
`description` VARCHAR(80),
PRIMARY KEY (`sample_trans_type`)
) TYPE = InnoDB COMMENT = 'sample transaction type';

#Data Repository
CREATE TABLE `collection`(
`collection_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`collection_date` DATE,
`collected_by` INT(10),
PRIMARY KEY (`collection_id`)
) TYPE = InnoDB COMMENT = 'phenotype data collection';

# more fields can be added here
CREATE TABLE `phenotype` (
`subject_id` INT(10) UNSIGNED NOT NULL,
`collection_id` INT(10) UNSIGNED NOT NULL
) TYPE = InnoDB COMMENT='phenotype';

CREATE TABLE `pedigree` (
subject_id INT(10) UNSIGNED NOT NULL,
m_parent_id INT(10) UNSIGNED NOT NULL,
f_parent_id INT(10) UNSIGNED NOT NULL,
gender char(1),
family_name VARCHAR(20),
PRIMARY KEY (`subject_id`)
) TYPE = InnoDB COMMENT = 'pedigree information for subjects';

CREATE TABLE `genotype` (
subject_id INT(10) UNSIGNED NOT NULL,
marker_name VARCHAR(80),
allele1 VARCHAR(16),
allele2 VARCHAR(16),
allele3 VARCHAR(16),
PRIMARY KEY (`subject_id`)
) TYPE = InnoDB COMMENT = 'genotype';

#System Control
CREATE TABLE `lims_user` (
`user_id` SMALLINT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`user_name` VARCHAR( 16 ) NOT NULL ,
`password` VARCHAR( 16 ) NOT NULL ,
`role_id` SMALLINT( 5 ) UNSIGNED,
`person_id` SMALLINT( 5 ) UNSIGNED,
`active` CHAR(1) DEFAULT 'T' NOT NULL,
`start_up` VARCHAR(80),
PRIMARY KEY ( `user_id` ),
UNIQUE (`user_name`)
) TYPE = InnoDB COMMENT = 'lims user';

CREATE TABLE `privilege` (
`privilege_id` SMALLINT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 16 ) NOT NULL ,
`description` VARCHAR( 80 ) NOT NULL ,
PRIMARY KEY ( `privilege_id` ) ,
UNIQUE ( `name` )
) TYPE = InnoDB COMMENT = 'lims user privilege';

CREATE TABLE `lims_role` (
`role_id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(32) NOT NULL,
`description` VARCHAR(80),
PRIMARY KEY (`role_id`),
UNIQUE (`name`)
)TYPE = InnoDB COMMENT = 'lims role';

CREATE TABLE `role_privilege` (
`role_id` SMALLINT(5) UNSIGNED NOT NULL,
`privilege_id` SMALLINT(5) UNSIGNED NOT NULL
)TYPE = InnoDB COMMENT = 'lims role privilege';

CREATE TABLE `sys_config` (
`config_id` SMALLINT(5) UNSIGNED NOT NULL,
`name` VARCHAR(16),
`description` VARCHAR(80),
`value` VARCHAR(80)
) TYPE = InnoDB COMMENT = 'system configuration';

last edited 2006-04-18 19:42:37 by KristianStevens