# Now comment are allowed!

# global tables that are located in the main database but will be used/shared by all databases managed by WebArrayDB

[users]
	id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
	user_name VARCHAR(50) NOT NULL
	user_passwd VARCHAR(32)
	first_name VARCHAR(20)
	last_name VARCHAR(20)
	company VARCHAR(50)
	street VARCHAR(255)
	city VARCHAR(50)
	state VARCHAR(50)
	zip VARCHAR(10)
	country VARCHAR(20)
	phone VARCHAR(20)
	email VARCHAR(100)
	register_time DATETIME
	act_state TINYINT(4) DEFAULT 0
	logon_num INT(10) UNSIGNED NOT NULL DEFAULT 0
	logon_state TINYINT(3) UNSIGNED NOT NULL DEFAULT 0
	logon_time DATETIME
	logoff_time DATETIME
	INDEX user (user_name(10))
	
[requests]
	user_id INT(10) UNSIGNED NOT NULL DEFAULT 0
	req_id INT(15) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
	req_time DATETIME
	solve_time DATETIME
	req_state TINYINT(3) UNSIGNED DEFAULT 0
	req_name VARCHAR(100) NOT NULL
	req_info BLOB
	availability TINYINT(3) UNSIGNED DEFAULT 1
	category SMALLINT(6) DEFAULT 1
	error_msg TEXT
	INDEX ui (user_id)
	INDEX nm (req_name(20))

[evlog] # this table record useful operations
	ev_time DATETIME
	user_id INT(10) UNSIGNED
	ev_catcode SMALLINT
	ev_valcode INT(10)
	ev_valstr TINYTEXT
	INDEX tm (ev_time)
	INDEX ui (user_id)
	INDEX ecat (ev_catcode)

[refdbs]
	user_id INT(10)
	name CHAR(55)
	description TEXT
	update_xpf_id ENUM('yes', 'no')
	INDEX nm (name(10))

# Tables that can be found in eachdifferent database

[project]
	id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
	name TINYTEXT
	factors TINYTEXT
	tissue TINYTEXT
	design TEXT
	QC TINYTEXT
	description TEXT
	authors TEXT
	journal TINYTEXT
	publish_year YEAR
	pubmed_id TINYTEXT
	data_link TEXT
	user_id SMALLINT UNSIGNED
	submit_date DATE
	release_date DATE
	INDEX nm (name(20))
	INDEX au (authors(20))
	INDEX tis (tissue(20))
	INDEX user (user_id)


[fileinfo]
	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
	project_id SMALLINT UNSIGNED
	name VARCHAR(50)
	raw_name TINYTEXT
	location TINYTEXT
	category ENUM('image', 'intensity', 'platform', 'protocol', 'project', 'map')
	format TINYTEXT
	INDEX nm (name(10))
	INDEX rnm (raw_name(20))


[filexref]
	file_id MEDIUMINT UNSIGNED
	tb_id MEDIUMINT UNSIGNED
	tbname char(24)
	info_code INT UNSIGNED
	INDEX nm (tbname(10))
	INDEX fl (file_id)
	INDEX tb (tb_id)


[platform]
	id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
	project_id SMALLINT UNSIGNED
	name TINYTEXT
	category ENUM('antibody', 'in situ oligonucleotide', 'MPSS', 'MS', 'oligonucleotide beads', 'other', 'RT-PCR', 'SAGE NlaIII', 'SAGE Sau3A', 'spotted DNA/cDNA', 'spotted oligonucleotide', 'spotted protein')
	probe_num MEDIUMINT
	replicate TINYINT DEFAULT 1
	space MEDIUMINT DEFAULT 1
	manufacturer TINYTEXT
	organism TINYTEXT
	description TEXT
	availability ENUM('public', 'private') DEFAULT 'public'
	INDEX nm (name(10))
	INDEX prj (project_id)


[array]
	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
	project_id SMALLINT UNSIGNED
	platform_id SMALLINT UNSIGNED
	channel_num TINYINT
	hyb_date DATE
	prot_hyb_id SMALLINT UNSIGNED
	prot_img_id SMALLINT UNSIGNED
	prot_data_id SMALLINT UNSIGNED
	identifier TINYTEXT
	data_type ENUM('intensity', 'ratio', 'log-ratio') DEFAULT 'intensity'
	description TEXT
	INDEX platform (platform_id)
	INDEX prj (project_id)
	INDEX nm (identifier(20))


[project_array]
	project_id SMALLINT UNSIGNED
	array_id MEDIUMINT UNSIGNED
	INDEX project (project_id)
	INDEX array (array_id)


[sample]
	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
	project_id SMALLINT UNSIGNED
	name TINYTEXT
	organism TINYTEXT
	tissue TINYTEXT
	individual_id TINYTEXT
	gender ENUM('female', 'male', 'NA')
	age float
	description TEXT
	INDEX prj (project_id)
	INDEX nm (name(20))
	INDEX org (organism(20))
	INDEX tis (tissue(20))
	INDEX ind (individual_id(20))
	INDEX ag (age)


[sampxref]
	sample_id MEDIUMINT UNSIGNED
	array_id MEDIUMINT UNSIGNED
	channel_No TINYINT
	dye TINYTEXT
	prot_proc_id SMALLINT UNSIGNED
	prot_tech_id SMALLINT UNSIGNED
	prot_label_id SMALLINT UNSIGNED
	exp_factor TINYTEXT
	INDEX sample (sample_id)
	INDEX array (array_id)


[protocol]
	id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
	project_id SMALLINT UNSIGNED
	name TINYTEXT
	category ENUM('hybridization', 'image', 'data', 'process', 'technique', 'label')
	description TEXT
	INDEX nm (name(20))
	INDEX prj (project_id)


[intensity]
	id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
	array_id MEDIUMINT UNSIGNED
	probe_id INT UNSIGNED
	channel_No TINYINT
	fg FLOAT
	bg FLOAT
	flag FLOAT
	INDEX array (array_id)
	INDEX probe (probe_id)


[probe]
	id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
	xpf_id INT UNSIGNED
	mapf_id INT UNSIGNED
	platform_id SMALLINT UNSIGNED
	idx MEDIUMINT UNSIGNED
	block_row SMALLINT UNSIGNED
	block_col SMALLINT UNSIGNED
	row SMALLINT UNSIGNED
	col SMALLINT UNSIGNED
	chromosome TINYTEXT
	probe_start INT
	probe_end INT
	probe_strand ENUM('', '+', '-', '+-')
	gene_start INT
	gene_end INT
	gene_strand ENUM('', '+', '-', '+-')
	cpg_dist INT
	unique_id TINYTEXT
	gene_symbol TINYTEXT
	gene_title TINYTEXT
	user_attr1 TINYTEXT
	user_attr2 TINYTEXT
	bioseq_type TINYTEXT
	probe_purpose TINYTEXT
	designation TINYTEXT
	probe_sequence TEXT
	INDEX platform (platform_id)
	INDEX unid (unique_id(20))
	INDEX gsym (gene_symbol(20))
	INDEX gtitle (gene_title(20))
	INDEX xid (xpf_id)
	INDEX mid (mapf_id)

[xpf]
	id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY

[mapf]
	id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY

[db]
	id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
	name CHAR(55)
	INDEX nm (name(10))

[dbkw]
	id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
	kw VARCHAR(255)
	dbname VARCHAR(55)
	INDEX dbkw (dbname(5), kw(15))
	INDEX ikw (kw(50))

[dbxref]
	probe_id INT UNSIGNED
	dbkw_id BIGINT UNSIGNED
	INDEX probe (probe_id)
	INDEX dbkw (dbkw_id)

[keyword]
	kw CHAR(254)
	tb_name CHAR(20)
	rec_id MEDIUMINT UNSIGNED
	INDEX k (kw(20))
	INDEX nm (tb_name(10))
	INDEX rec (rec_id)

[dyncoldef]
	id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
	tb_name CHAR(20)
	col_name CHAR(40)
	col_type ENUM('string', 'float', 'int') DEFAULT 'string'
	INDEX nm (tb_name(10), col_name(10))

[dyncol]
	col_id SMALLINT
	rec_id MEDIUMINT UNSIGNED
	value_int BIGINT
	value_float DOUBLE
	value_str CHAR(254)
	INDEX col (col_id)
	INDEX rec (rec_id)
	INDEX v_int (value_int)
	INDEX v_float (value_float)
	INDEX v_str (value_str(20))
