/notes/code/sql/HW_Vaccine.sql (569df72d63a89b7720dcf09accdae590c9dc4c60) (4041 bytes) (mode 100644) (type blob)
/*
CSCI 3410 -- Project #1
Name: -- Fill here
Date: -- Fill here
*/
/*
DO NOT EDIT BELOW
*/
DROP SCHEMA IF EXISTS HW_Vaccine;
CREATE SCHEMA HW_Vaccine;
USE HW_Vaccine;
-- start snippet setup
/* code/sql/HW_Vaccine.sql */
CREATE TABLE COMPANY (
Name VARCHAR(50) PRIMARY KEY,
Website VARCHAR(255) CHECK (Website LIKE "https://%")
);
CREATE TABLE DISEASE (
Name VARCHAR(50) PRIMARY KEY,
Communicable BOOL,
-- Whether the disease can be transmitted from a human to
-- another.
TYPE ENUM ("infectious", "deficiency", "hereditary")
);
CREATE TABLE VACCINE (
Name VARCHAR(50) PRIMARY KEY,
Manufacturer VARCHAR(50) NOT NULL,
FOREIGN KEY (Manufacturer) REFERENCES COMPANY (NAME) ON
UPDATE CASCADE
);
CREATE TABLE EFFICACY (
DiseaseName VARCHAR(50),
VaccineName VARCHAR(50),
Efficacy DECIMAl(5, 2),
PRIMARY KEY (DiseaseName, VaccineName),
FOREIGN KEY (DiseaseName) REFERENCES DISEASE (NAME),
FOREIGN KEY (VaccineName) REFERENCES VACCINE (NAME)
);
INSERT INTO COMPANY
VALUES (
"Moderna",
"https://www.modernatx.com/");
INSERT INTO DISEASE
VALUES (
"Coronavirus disease 2019",
TRUE,
"infectious");
INSERT INTO VACCINE
VALUES (
"mRNA-1273",
"Moderna");
INSERT INTO EFFICACY
VALUES (
"Coronavirus disease 2019",
"mRNA-1273",
94.1);
-- end snippet setup
/*
START EDITING
*/
/*
I. Short Questions (3 pts.)
Answer the following short questions. In our implementation…
1. … can two companies have exactly the same name?
2. … can two companies have the same website?
3. … can a company not have a website?
4. … can the same vaccine be manufactured by multiple companies?
5. … can a vaccine not have a manufacturer?
6. … can a disease being neither communicable nor not communicable?
7. … can the same vaccine have different efficacies for different diseases?
*/
/*
II. Longer Questions (6 pts.)
Answer the following questions:
1. What does `CHECK (Website LIKE "https://*")` do?
2. Why did we picked the `DECIMAl(5,2)` datatype?
3. What is the benefit / are the benefits of having a separate EFFICACY table over having something like
CREATE TABLE VACCINE(
Name VARCHAR(50) PRIMARY KEY,
Manufacturer VARCHAR(50),
Disease VARCHAR(50),
Efficacy DECIMAl(5,2),
FOREIGN KEY (Manufacturer) REFERENCES COMPANY (Name)
);
?
*/
/*
III. Relational Model (6 pts.)
Draw the relational model corresponding to this code.
You can hand-draw it and join a scan or a picture, or simply hand me back a sheet.
*/
/*
IV. Simple Commands (5 pts.)
Below, you are asked to write commands that perform various actions.
Please, leave them uncommented, unless
- you can not write them correctly, but want to share your attempt,
- it is specified that it should return an error.
The first question is answered as an example.
*/
-- 0. Write a command that list the names of
-- all the diseases.
SELECT Name
FROM DISEASE;
-- 1. Write a command that insert "Pfizer" in the
-- COMPANY table (you can make up the website or look
-- it)
-- 2. Write a command that insert the "Pfizer-BioNTech
-- COVID-19 Vaccine" in the VACCINE table, and a
-- command
-- that store the efficacy of that vaccine against
-- the "Coronavirus disease 2019" disease
-- (you can make up the values or look them up).
-- 3. Write a command that updates the name of the
-- company "Moderna" to "Moderna, Inc." everywhere.
-- 4. Write a command that lists the name of all the
-- companies.
-- 5. Write a command that deletes the "Coronavirus
-- disease
-- 2019" entry from the DISEASE table (if only!).
-- This command should return an error. Explain it and
-- leave
-- the command commented.
-- 6. Write two commands: one that adds "physiological"
-- to
-- the possible types of diseases, and one that
-- inserts
-- a physiological disease in the DISEASE table.
-- 7 (difficult). Write a command that return the list
-- of
-- all the companies that manufacture a
-- vaccine against "Coronavirus disease
-- 2019".
Mode |
Type |
Size |
Ref |
File |
100644 |
blob |
15398 |
ee75155d2d99639acd17d31b2cc23cd752078e7e |
CONTRIB.md |
100644 |
blob |
20625 |
25b8e45e7f103089fb70fae5a219f09a29ef5312 |
KNOWN_BUGS.md |
100644 |
blob |
17217 |
e5c1f9f898cca948da42333b100e331d62b61d3c |
LICENSE.md |
100644 |
blob |
1997 |
f8801648fd4ba5843a2cbca8b10e4f69ba5d9b25 |
Makefile |
100644 |
blob |
6695 |
0b91924ffc7b73e2d36150369d4fd41a44b099c5 |
README.md |
040000 |
tree |
- |
eb7afc38251ada69e1967e1ce3e49967eca2267c |
install |
040000 |
tree |
- |
f16b283429b64b620b3bd7681a446ff54d504f84 |
notes |
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"
Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/caubert/CSCI_3410
Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/caubert/CSCI_3410
Clone this repository using git:
git clone git://git.rocketgit.com/user/caubert/CSCI_3410
You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a
merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main