dkalaxdk icon

Miniproject SQL

dkalaxdk | PRO | 10/30/20 10:35:04 AM UTC (Edited) | 0 ⭐ | 9443 👁️ | Never ⏰ | []
PostgreSQL |

3.89 KB

|

None

|

0 👍

/

0 👎

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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎