CST 363

INTRO TO DATABASE SYSTEMS

Courses:

CST 363 Course Discription

Database systems are a well-developed and widely-used software technology, found in everything from smartphones to web servers. The course provides balanced coverage of database use and database design, with a focus on relational databases. Students will learn to design relational schemas, write SQL queries, access a DB programmatically, and perform database administration. Students will gain a working knowledge of the algorithms and data structures used in query evaluation and transaction processing. Students will also study principles of distributed databases and their application in NoSQL databases.

Final Project Code


create table doctor
                            (
                                ssn varchar not null,
                                name varchar not null,
                                specialty varchar,
                            
                                primary key(ssn)
                            );
                            
                            create table patient
                            (
                                ssn varchar not null,
                                primary_physician_ssn varchar,
                                name varchar not null,
                                dob varchar not null,
                                address varchar,
                            
                                foreign key(primary_physician_ssn) references doctor(ssn),
                            
                                primary key(ssn)
                            );
                            
                            create table pharmacy
                            (
                                name varchar not null,
                                address varchar not null,
                                phone_number varchar not null,
                            
                                primary key(name)
                            );
                            
                            create table drug_company
                            (
                                name varchar not null,
                            
                                primary key(name)
                            );
                            
                            create table supervisor
                            (
                                email varchar not null,
                                phone_number varchar not null unique,
                            
                                primary key(email)
                            );
                            
                            create table drug
                            (
                                trade_name varchar not null,
                                drug_company_name varchar not null,
                                formula varchar not null,
                            
                                foreign key(drug_company_name) references drug_company(name),
                            
                                primary key(trade_name)
                            );
                            
                            create table prescription
                            (
                                id int not null,
                                doctor_ssn varchar not null,
                                patient_ssn varchar not null,
                                drug_trade_name varchar not null,
                                date varchar not null,
                                quantity int not null,
                            
                                foreign key(doctor_ssn) references doctor(ssn),
                                foreign key(patient_ssn) references patient(ssn),
                                foreign key(drug_trade_name) references drug(trade_name),
                            
                                primary key(id)
                            );
                            
                            create table prescription_fill
                            (
                                prescription_id int not null,
                                pharmacy_name varchar not null,
                                date varchar not null,
                            
                                foreign key(prescription_id) references prescription(id),
                                foreign key(pharmacy_name) references pharmacy(name),
                            
                                primary key(prescription_id)
                            );
                            
                            create table drug_sale
                            (
                                drug_trade_name varchar not null,
                                pharmacy_name varchar not null,
                                price real not null,
                            
                                foreign key(drug_trade_name) references drug(trade_name),
                                foreign key(pharmacy_name) references pharmacy(name),
                            
                                primary key(drug_trade_name, pharmacy_name)
                            );
                            
                            create table contract
                            (
                                drug_company_name varchar not null,
                                pharmacy_name varchar not null,
                                supervisor_email varchar not null,
                                text varchar not null,
                                start_date varchar not null,
                                end_date varchar not null,
                            
                                foreign key(drug_company_name) references drug_company(name),
                                foreign key(pharmacy_name) references pharmacy(name),
                                foreign key(supervisor_email) references supervisor(email),
                            
                                primary key(drug_company_name, pharmacy_name)
                            );
                            
                            -- patient prescription count
                            select name, count(*)
                            from patient
                            left join prescription on prescription.patient_ssn = patient.ssn
                            group by patient.name
                            order by name;
                            
                            -- top 10 doctors with most patients
                            select doctor.name, count(*)
                            from doctor
                            left join patient on patient.primary_physician_ssn = doctor.ssn
                            group by doctor.name
                            order by count(*) desc
                            limit 10;
                            
                            -- unfilled prescriptions
                            select * from prescription
                            where not exists(select * from prescription_fill where prescription_fill.prescription_id = id);
                            
                            -- pharmacies with least contracts
                            select name, count(*)
                            from pharmacy
                            left join contract on contract.pharmacy_name = pharmacy.name
                            group by pharmacy.name
                            order by count(*) asc;
                            
                            -- 5 most prescribed drug
                            select trade_name, count(*)
                            from drug
                            left join prescription on prescription.drug_trade_name = drug.trade_name
                            group by trade_name
                            order by count(*) desc
                            limit 5;