CREATE TABLE product (
product_name varChar(50) PRIMARY KEY,
company_name varChar(50) NOT NULL
);
CREATE TABLE drug (
drug_name varchar(50) PRIMARY KEY
);
CREATE TABLE product_drug_relation (
product_name varChar(50),
drug_name varChar(50),
FOREIGN KEY (product_name) REFERENCES product(product_name),
FOREIGN KEY (drug_name) REFERENCES drug(drug_name),
PRIMARY KEY (product_name, drug_name)
);
CREATE SEQUENCE drug_category_serial START 1;
CREATE TABLE drug_category (
drug_category_ID integer PRIMARY KEY DEFAULT nextval('drug_category_serial'),
drug_category_name varChar(30) UNIQUE NOT NULL
);
CREATE TABLE drug_in_category (
drug_name varChar(50),
drug_category_ID integer,
FOREIGN KEY (drug_name) REFERENCES drug(drug_name),
FOREIGN KEY (drug_category_ID) REFERENCES drug_category(drug_category_ID),
PRIMARY KEY(drug_name, drug_category_ID)
);
CREATE TABLE disease_category (
disease_category_ID integer PRIMARY KEY,
disease_category_name varChar(50) UNIQUE NOT NULL
);
CREATE TABLE disease (
disease_name varChar(50) PRIMARY KEY,
disease_category_ID integer,
FOREIGN KEY (disease_category_ID) REFERENCES disease_category(disease_category_ID)
);
CREATE TABLE treats (
drug_name varChar(50),
disease_name varChar(50),
FOREIGN KEY (drug_name) REFERENCES drug(drug_name),
FOREIGN KEY (disease_name) REFERENCES disease(disease_name),
PRIMARY KEY(drug_name, disease_name)
);
CREATE SEQUENCE side_effect_serial START 1;
CREATE TABLE side_effect (
side_effect_ID integer PRIMARY KEY DEFAULT nextval('side_effect_serial'),
side_effect_name varChar(30) UNIQUE NOT NULL
);
CREATE TABLE drug_side_effects (
drug_name varChar(50),
side_effect_ID integer,
FOREIGN KEY (drug_name) REFERENCES drug(drug_name),
FOREIGN KEY (side_effect_ID) REFERENCES side_effect(side_effect_ID),
PRIMARY KEY(drug_name, side_effect_ID)
);
CREATE TABLE drug_interaction (
drug_name_A varChar(50),
drug_name_B varChar(50),
FOREIGN KEY (drug_name_A) REFERENCES drug(drug_name),
FOREIGN KEY (drug_name_B) REFERENCES drug(drug_name),
PRIMARY KEY(drug_name_A,drug_name_B)
);
CREATE TABLE institution (
institution_name varChar(50) PRIMARY KEY,
address varChar(50) NOT NULL,
country varChar(50) NOT NULL,
UNIQUE (address, country)
);
CREATE SEQUENCE researcher_serial START 1;
CREATE TABLE researcher (
researcher_ID integer PRIMARY KEY DEFAULT nextval('researcher_serial'),
researcher_name varChar(50) NOT NULL,
institution_name varChar(50),
FOREIGN KEY (institution_name) REFERENCES institution(institution_name)
);
CREATE SEQUENCE condition_serial START 1;
CREATE TABLE condition (
condition_ID integer PRIMARY KEY DEFAULT nextval('condition_serial'),
condition_name varChar(30) UNIQUE NOT NULL
);
CREATE TABLE trial (
trial_ID integer PRIMARY KEY,
title varChar(100) UNIQUE NOT NULL,
start_date time NOT NULL,
completion_date time NOT NULL,
participants integer NOT NULL,
status varChar(20) NOT NULL,
institution_name varChar(50),
main_researcher_ID integer,
condition_ID integer,
FOREIGN KEY (institution_name) REFERENCES institution(institution_name),
FOREIGN KEY (main_researcher_ID) REFERENCES researcher(researcher_ID),
FOREIGN KEY (condition_ID) REFERENCES condition(condition_ID)
);
CREATE TABLE trial_researchers (
trial_ID integer,
researcher_ID integer,
FOREIGN KEY (trial_ID) REFERENCES trial(trial_ID),
FOREIGN KEY (researcher_ID) REFERENCES researcher(researcher_ID),
PRIMARY KEY(trial_ID, researcher_ID)
);
CREATE TABLE trial_drug_disease (
trial_ID integer,
drug_name varChar(50),
disease_name varChar(50),
FOREIGN KEY (trial_ID) REFERENCES trial(trial_ID),
FOREIGN KEY (drug_name) REFERENCES drug(drug_name),
FOREIGN KEY (disease_name) REFERENCES disease(disease_name),
PRIMARY KEY(trial_ID, drug_name, disease_name)
);
Comments
0 B
|👍
/👎
0 B
|👍
/👎