Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
CREATE TABLE Person (     idperson INTEGER PRIMARY KEY AUTOINCREMENT,     firstname TEXT NOT NULL,     familyname TEXT NOT NULL,     dateofbirth TEXT NOT NULL -- Storing as TEXT, consider-MM-DD format ); CREATE TABLE Credentials (     email TEXT PRIMARY KEY,     password TEXT NOT NULL,     user_type TEXT NOT NULL CHECK(user_type IN ('doctor', 'patient', 'nurse', 'center_admin')),     person_id INTEGER UNIQUE, -- Ensure one credential per person     FOREIGN KEY (person_id) REFERENCES Person(idperson) ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE Doctor (     iddoctor INTEGER PRIMARY KEY AUTOINCREMENT,     idperson INTEGER NOT NULL UNIQUE, -- Ensure one doctor profile per person     FOREIGN KEY (idperson) REFERENCES Person(idperson) ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE Nurse (     idnurse INTEGER PRIMARY KEY AUTOINCREMENT,     idperson INTEGER NOT NULL UNIQUE, -- Ensure one nurse profile per person     FOREIGN KEY (idperson) REFERENCES Person(idperson) ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE CenterAdmin (     idadmin INTEGER PRIMARY KEY AUTOINCREMENT,     idperson INTEGER NOT NULL UNIQUE, -- Ensure one admin profile per person     FOREIGN KEY (idperson) REFERENCES Person(idperson) ON DELETE SET NULL ON UPDATE CASCADE ); CREATE TABLE Patient (     idpatient INTEGER PRIMARY KEY AUTOINCREMENT,     idperson INTEGER NOT NULL UNIQUE, -- Ensure one patient profile per person     FOREIGN KEY (idperson) REFERENCES Person(idperson) ON DELETE CASCADE ON UPDATE CASCADE ); -- Junction table to link doctors and their patients CREATE TABLE DoctorPatient (     iddoctor INTEGER,     idpatient INTEGER,     PRIMARY KEY (iddoctor, idpatient), -- Ensures a doctor can only be linked to a patient once     FOREIGN KEY (iddoctor) REFERENCES Doctor(iddoctor) ON DELETE CASCADE ON UPDATE CASCADE,     FOREIGN KEY (idpatient) REFERENCES Patient(idpatient) ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE Medicine (     id INTEGER PRIMARY KEY AUTOINCREMENT,     Med_name TEXT NOT NULL UNIQUE -- Vaccine names should be unique ); CREATE TABLE Prescription (     id_prescription INTEGER PRIMARY KEY AUTOINCREMENT,     idpatient INTEGER,     id_medicine INTEGER,     iddoctor INTEGER,     quantity INTEGER DEFAULT 1,     status TEXT DEFAULT 'pending' CHECK(status IN ('pending', 'administered', 'cancelled')),     prescription_date TEXT, -- Date of prescription (e.g.,-MM-DD)     FOREIGN KEY (idpatient) REFERENCES Patient(idpatient) ON DELETE SET NULL ON UPDATE CASCADE,     FOREIGN KEY (id_medicine) REFERENCES Medicine(id) ON DELETE RESTRICT ON UPDATE CASCADE,     FOREIGN KEY (iddoctor) REFERENCES Doctor(iddoctor) ON DELETE SET NULL ON UPDATE CASCADE ); CREATE TABLE VaccinationCenter (     idcenter INTEGER PRIMARY KEY AUTOINCREMENT,     name TEXT NOT NULL UNIQUE,     address TEXT,     admin_id INTEGER UNIQUE, -- Assuming one admin per center     FOREIGN KEY (admin_id) REFERENCES CenterAdmin(idadmin) ON DELETE SET NULL ON UPDATE CASCADE ); CREATE TABLE CenterStock (     id INTEGER PRIMARY KEY AUTOINCREMENT,     center_id INTEGER,     vaccine_id INTEGER, -- This refers to Medicine.id     quantity INTEGER DEFAULT 0 CHECK(quantity >= 0), -- Quantity cannot be negative     last_updated TEXT, -- Timestamp for when the stock was last updated     UNIQUE (center_id, vaccine_id), -- Ensures one stock entry per vaccine per center     FOREIGN KEY (center_id) REFERENCES VaccinationCenter(idcenter) ON DELETE CASCADE ON UPDATE CASCADE,     FOREIGN KEY (vaccine_id) REFERENCES Medicine(id) ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE AdministrationLog (     id INTEGER PRIMARY KEY AUTOINCREMENT,     prescription_id INTEGER UNIQUE, -- A prescription should only be administered once     nurse_id INTEGER,     center_id INTEGER, -- Center where the vaccine was administered     administered_at TEXT, -- Timestamp of administration (e.g., ISO8601 format)     FOREIGN KEY (prescription_id) REFERENCES Prescription(id_prescription) ON DELETE SET NULL ON UPDATE CASCADE,     FOREIGN KEY (nurse_id) REFERENCES Nurse(idnurse) ON DELETE SET NULL ON UPDATE CASCADE,     FOREIGN KEY (center_id) REFERENCES VaccinationCenter(idcenter) ON DELETE SET NULL ON UPDATE CASCADE );

Stuck with a problem? Got Error? Ask AI support!

Copy Clear