0% found this document useful (0 votes)
2 views

Queries

The document outlines the SQL schema for a hospital management system, including the creation of tables for patients, doctors, nurses, receptionists, appointments, and schedules. It includes sequences for auto-incrementing IDs, constraints for data integrity, and indexes for optimized queries. Additionally, comments are provided for documentation purposes on the tables and their columns.
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Queries

The document outlines the SQL schema for a hospital management system, including the creation of tables for patients, doctors, nurses, receptionists, appointments, and schedules. It includes sequences for auto-incrementing IDs, constraints for data integrity, and indexes for optimized queries. Additionally, comments are provided for documentation purposes on the tables and their columns.
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

// Patient Queries

- First Creating table of Patient


-- Create sequence for auto-incrementing ID
CREATE SEQUENCE ID
START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;

-- Create PATIENT table


CREATE TABLE PATIENT (
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(100) NOT NULL,
PASSWORD VARCHAR2(100) NOT NULL,
EMAIL VARCHAR2(100) NOT NULL,
BLOODGROUP VARCHAR2(10) NOT NULL,
GENDER VARCHAR2(10) NOT NULL,
ADDRESS VARCHAR2(200) NOT NULL,
CNIC VARCHAR2(16) NOT NULL
);

-- Create index on NAME for faster lookups


CREATE INDEX IDX_PATIENT_NAME ON PATIENT(NAME);

-- Create index on EMAIL for faster lookups


CREATE INDEX IDX_PATIENT_EMAIL ON PATIENT(EMAIL);

-- Create unique constraint on CNIC to prevent duplicates


ALTER TABLE PATIENT ADD CONSTRAINT UQ_PATIENT_CNIC UNIQUE (CNIC);

-- Optional: Add comments to document the table and columns


COMMENT ON TABLE PATIENT IS 'Stores patient information for hospital management
system';
COMMENT ON COLUMN PATIENT.ID IS 'Unique identifier for patients';
COMMENT ON COLUMN PATIENT.NAME IS 'Full name of the patient';
COMMENT ON COLUMN PATIENT.PASSWORD IS 'Password for patient login';
COMMENT ON COLUMN PATIENT.EMAIL IS 'Email address for communication and
verification';
COMMENT ON COLUMN PATIENT.BLOODGROUP IS 'Blood group of the patient';
COMMENT ON COLUMN PATIENT.GENDER IS 'Gender of the patient (Male/Female)';
COMMENT ON COLUMN PATIENT.ADDRESS IS 'Residential address of the patient';
COMMENT ON COLUMN PATIENT.CNIC IS 'National ID card number in format XXXXX-
XXXXXXXX-X';

// DOCTOR
-- Create DOCTORS table
CREATE TABLE DOCTORS (
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(100) NOT NULL,
PASSWORD VARCHAR2(100) NOT NULL,
EMAIL VARCHAR2(100) NOT NULL,
QUALIFICATION VARCHAR2(100) NOT NULL,
GENDER VARCHAR2(10) NOT NULL,
SALARY VARCHAR2(20) NOT NULL
);

CREATE SEQUENCE DOC_ID


START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;

-- APPOINTMENT table
CREATE TABLE APPOINTMENT (
A_ID NUMBER PRIMARY KEY,
PATIENT_ID NUMBER NOT NULL,
S_TIME VARCHAR2(20) NOT NULL,
E_TIME VARCHAR2(20) NOT NULL,
STATUS VARCHAR2(20) NOT NULL,
A_DATE DATE NOT NULL,
FEE NUMBER NOT NULL,
DISEASE VARCHAR2(200) NOT NULL,
DOCTOR_NAME VARCHAR2(100) NOT NULL,

CONSTRAINT FK_APPOINTMENT_PATIENT FOREIGN KEY (PATIENT_ID)


REFERENCES PATIENT(ID),

CONSTRAINT CHK_APPOINTMENT_STATUS CHECK


(STATUS IN ('PENDING', 'APPROVED', 'CANCELLED', 'COMPLETED'))
);

--NURSE table

-- Create sequence for auto-incrementing nurse IDs


CREATE SEQUENCE NURSE_ID
START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;

-- Create NURSE table with all constraints


CREATE TABLE NURSE (
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(100) NOT NULL,
PASSWORD VARCHAR2(100) NOT NULL,
EMAIL VARCHAR2(100) NOT NULL,
QUALIFICATION VARCHAR2(100) NOT NULL,
GENDER VARCHAR2(10) NOT NULL,
SALARY VARCHAR2(20) NOT NULL,

-- Check constraints
CONSTRAINT CHK_NURSE_GENDER CHECK (GENDER IN ('Male', 'Female'))
);

-- Create unique constraint on NAME (as per your duplicate check logic)
ALTER TABLE NURSE ADD CONSTRAINT UQ_NURSE_NAME UNIQUE (NAME);
-- Create index on EMAIL for faster lookups
CREATE INDEX IDX_NURSE_EMAIL ON NURSE(EMAIL);

//RECEPTIONIST TABLE

-- Create sequence for auto-incrementing receptionist IDs


CREATE SEQUENCE RECEPTIONIST_ID
START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;

-- Create RECEPTIONIST table with all constraints


CREATE TABLE RECEPTIONIST (
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(100) NOT NULL,
PASSWORD VARCHAR2(100) NOT NULL,
EMAIL VARCHAR2(100) NOT NULL,
QUALIFICATION VARCHAR2(100) NOT NULL,
GENDER VARCHAR2(10) NOT NULL,
SALARY VARCHAR2(20) NOT NULL,

-- Check constraints
CONSTRAINT CHK_RECEPTIONIST_GENDER CHECK (GENDER IN ('Male', 'Female'))
);

-- Create index on EMAIL for faster lookups


CREATE INDEX IDX_RECEPTIONIST_EMAIL ON RECEPTIONIST(EMAIL);

// SCHEDULE

-- Create sequence for auto-incrementing schedule IDs


CREATE SEQUENCE S_ID
START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;

-- Create SCHEDULE table with all constraints


CREATE TABLE SCHEDULE (
S_ID NUMBER PRIMARY KEY,
S_TIME VARCHAR2(20) NOT NULL,
E_TIME VARCHAR2(20) NOT NULL,
DAY VARCHAR2(10) NOT NULL,
DOCTOR_ID NUMBER NOT NULL,

-- Foreign key to DOCTORS table


CONSTRAINT FK_SCHEDULE_DOCTOR FOREIGN KEY (DOCTOR_ID)
REFERENCES DOCTORS(ID),

-- Check constraints
CONSTRAINT CHK_SCHEDULE_DAY CHECK (DAY IN (
'Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday', 'Saturday', 'Sunday'
))
);

-- Create index on DOCTOR_ID for faster lookups


CREATE INDEX IDX_SCHEDULE_DOCTOR ON SCHEDULE(DOCTOR_ID);

-- Create index on DAY for day-based queries


CREATE INDEX IDX_SCHEDULE_DAY ON SCHEDULE(DAY);

-- Note => first run all the queries after that run the project. (Mandatory)

You might also like