Sei sulla pagina 1di 21

CREATE TABLE countries

(
entry
BIGINT,
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
country_ID
VARCHAR(100) NOT NULL,
country
VARCHAR(100) NOT NULL,
PRIMARY KEY
(country_ID)
);
CREATE TABLE regions
(
entry
stamp
region_ID
region
PRIMARY KEY

BIGINT,
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
VARCHAR(100) NOT NULL,
VARCHAR(100) NOT NULL,
(region_ID)

);
CREATE TABLE districts
(
entry
BIGINT,
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
district_ID
VARCHAR(100) NOT NULL,
district
VARCHAR(100) NOT NULL,
PRIMARY KEY
(district_ID)
);
CREATE TABLE counties
(
entry
stamp
county_ID
county
PRIMARY KEY

BIGINT,
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
VARCHAR(100) NOT NULL,
VARCHAR(100) NOT NULL,
(county_ID)

);
CREATE TABLE subcounties
(
entry
BIGINT,
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
subcounty_ID
VARCHAR(100) NOT NULL,
subcounty
VARCHAR(100) NOT NULL,
PRIMARY KEY
(subcounty_ID)
);
CREATE TABLE parishes
(
entry
stamp
parish_ID
parish
PRIMARY KEY

BIGINT,
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
VARCHAR(100) NOT NULL,
VARCHAR(100) NOT NULL,
(parish_ID)

);
CREATE TABLE villages
(
entry
stamp
village_ID

BIGINT,
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
VARCHAR(100) NOT NULL,

village
PRIMARY KEY

VARCHAR(100) NOT NULL,


(village_ID)

);
CREATE TABLE languages
(
entry
BIGINT,
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
language_ID
VARCHAR(100) NOT NULL,
language_name VARCHAR(100) NOT NULL,
PRIMARY KEY
(language_ID)
);
CREATE TABLE job_titles
(
entry
BIGINT,
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
title_ID
VARCHAR(100) NOT NULL,
description
VARCHAR(255),
PRIMARY KEY
(title_ID)
);
CREATE TABLE religions
(
entry
BIGINT,
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
religion_ID
VARCHAR(100) NOT NULL,
religion
VARCHAR(100) NOT NULL,
PRIMARY KEY
(religion_ID)
);
CREATE TABLE occupations
(
entry
BIGINT,
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
occupation_ID VARCHAR(100) NOT NULL,
occupation
VARCHAR(255) NOT NULL,
PRIMARY KEY
(occupation_ID)
);
CREATE TABLE titles
(
entry
stamp
title_ID
title
PRIMARY KEY

BIGINT,
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
VARCHAR(100) NOT NULL,
VARCHAR(100) NOT NULL,
(title_ID)

);
CREATE TABLE sms_school_houses
(
entry
BIGINT,
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
house_ID
VARCHAR(100) NOT NULL,
house
VARCHAR(100) NOT NULL,
PRIMARY KEY
(house_ID)
);
CREATE TABLE sms_departments
(
entry

BIGINT,

stamp
department_ID
department
username
PRIMARY KEY

TIMESTAMP DEFAULT CURRENT_TIMESTAMP,


VARCHAR(100) NOT NULL,
VARCHAR(255),
VARCHAR(100) NOT NULL,
(department_ID)

);
CREATE TABLE sms_classes
(
entry
BIGINT,
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
class_ID
VARCHAR(100) NOT NULL,
description
VARCHAR(255) NOT NULL,
username
VARCHAR(100) NOT NULL,
PRIMARY KEY
(class_ID)
);
CREATE TABLE sms_subjects
(
entry
BIGINT,
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
subject_ID
VARCHAR(100) NOT NULL,
subject
VARCHAR(255),
username
VARCHAR(100) NOT NULL,
PRIMARY KEY
(subject_ID)
);
CREATE TABLE sms_parents
(
entry
BIGINT,
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
parent_ID
VARCHAR(100) NOT NULL,
title_ID_1
VARCHAR(100) NOT NULL,
parent_name_1
VARCHAR(255) NOT NULL,
gender_male_bool_1
SMALLINT,
country_1
VARCHAR(100),
region_1
VARCHAR(100),
county_1
VARCHAR(100),
subcounty_1
VARCHAR(100),
district_1
VARCHAR(100),
parish_1
VARCHAR(100),
village_1
VARCHAR(100),
religion_1
VARCHAR(100),
language_name_1
VARCHAR(100) NOT NULL,
picture_file_link_1 VARCHAR(255),
occupation_1
VARCHAR(255),
title_ID_2
VARCHAR(100) NOT NULL,
parent_name_2
VARCHAR(255) NOT NULL,
gender_male_bool_2
SMALLINT,
country_2
VARCHAR(100),
region_2
VARCHAR(100),
county_2
VARCHAR(100),
subcounty_2
VARCHAR(100),
district_2
VARCHAR(100),
parish_2
VARCHAR(100),
village_2
VARCHAR(100),
religion_2
VARCHAR(100),
language_name_2
VARCHAR(100) NOT NULL,
picture_file_link_2 VARCHAR(255),
occupation_2
VARCHAR(255),
username
VARCHAR(100) NOT NULL,
info_1
VARCHAR(255),

info_2
info_3
info_4
info_5
info_6
FOREIGN KEY

VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
(title_ID_1) REFERENCES titles(title_ID)
ON UPDATE CASCADE ON DELETE CASC

ADE,
FOREIGN KEY

(country_1) REFERENCES countries(country_ID)


ON UPDATE CASCADE ON DELETE CASC

ADE,
FOREIGN KEY

(region_1) REFERENCES regions(region_ID)


ON UPDATE CASCADE ON DELETE CASC

FOREIGN KEY

(county_1) REFERENCES counties(county_ID

ADE,
)
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY
county_ID)

(subcounty_1) REFERENCES subcounties(sub


ON UPDATE CASCADE ON DELETE CASC

ADE,
FOREIGN KEY

(district_1) REFERENCES districts(distri

ct_ID)
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY

(parish_1) REFERENCES parishes(parish_ID

)
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY

(village_1) REFERENCES villages(village_

ID)
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY
anguage_ID)

(language_name_1) REFERENCES languages(l


ON UPDATE CASCADE ON DELETE CASC

ADE,
FOREIGN KEY

(religion_1) REFERENCES religions(religi

on_ID)
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY
cupation_ID)

(occupation_1) REFERENCES occupations(oc


ON UPDATE CASCADE ON DELETE CASC

ADE,
FOREIGN KEY

(title_ID_2) REFERENCES titles(title_ID)


ON UPDATE CASCADE ON DELETE CASC

ADE,
FOREIGN KEY

(country_2) REFERENCES countries(country_ID)


ON UPDATE CASCADE ON DELETE CASC

ADE,
FOREIGN KEY

(region_2) REFERENCES regions(region_ID)


ON UPDATE CASCADE ON DELETE CASC

FOREIGN KEY

(county_2) REFERENCES counties(county_ID

ADE,
)
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY

(subcounty_2) REFERENCES subcounties(sub

county_ID)
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY

(district_2) REFERENCES districts(distri

ct_ID)
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY

(parish_2) REFERENCES parishes(parish_ID

)
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY

(village_2) REFERENCES villages(village_

ID)
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY
anguage_ID)

(language_name_2) REFERENCES languages(l


ON UPDATE CASCADE ON DELETE CASC

ADE,
FOREIGN KEY

(religion_2) REFERENCES religions(religi

on_ID)
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY
cupation_ID)

(occupation_2) REFERENCES occupations(oc


ON UPDATE CASCADE ON DELETE CASC

ADE,
PRIMARY KEY
(parent_ID)
);
CREATE TABLE sms_students
(
entry
BIGINT,
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
student_name
VARCHAR(100) NOT NULL,
student_ID
VARCHAR(100) NOT NULL,
school_house
VARCHAR(100),
parent_name
VARCHAR(100),
admission_date
VARCHAR(50),
country
VARCHAR(100) NOT NULL,
county
VARCHAR(100),
region
VARCHAR(100),
subcounty
VARCHAR(100),
district
VARCHAR(100),
parish
VARCHAR(100),
village
VARCHAR(100),
gender_male_bool
SMALLINT,
birth_date
VARCHAR(100),
birth_place
VARCHAR(255),
age_value
SMALLINT,
religion
VARCHAR(100),
picture_file_link VARCHAR(255),
language_name
VARCHAR(100),
isresIDent_bool
SMALLINT DEFAULT 1,
isnational_bool
SMALLINT DEFAULT 1,
info_1
VARCHAR(255),
info_2
VARCHAR(255),
info_3
VARCHAR(255),
info_4
VARCHAR(255),
info_5
VARCHAR(255),
info_6
VARCHAR(255),

info_7
info_8
info_9
info_10
info_11
info_12
info_13
info_14
info_15
username
FOREIGN KEY

VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(100) NOT NULL,
(country) REFERENCES countries(country_I

D)
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY

(region) REFERENCES regions(region_ID)


ON UPDATE CASCADE ON DELETE CASC

FOREIGN KEY

(county) REFERENCES counties(county_ID)


ON UPDATE CASCADE ON DELETE CASC

FOREIGN KEY
unty_ID)

(subcounty) REFERENCES subcounties(subco

ADE,
ADE,
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY

(district) REFERENCES districts(district

_ID)
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY

(parish) REFERENCES parishes(parish_ID)


ON UPDATE CASCADE ON DELETE CASC

FOREIGN KEY

(village) REFERENCES villages(village_ID

ADE,
)
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY
guage_ID)

(language_name) REFERENCES languages(lan


ON UPDATE CASCADE ON DELETE CASC

ADE,
FOREIGN KEY

(religion) REFERENCES religions(religion

_ID)
ON UPDATE CASCADE ON DELETE CASC
ADE,
FOREIGN KEY
FOREIGN KEY

(parent_name) REFERENCES sms_parents(parent_ID)


ON UPDATE CASCADE ON DELETE SET NULL,
(school_house) REFERENCES sms_school_houses(house

PRIMARY KEY

ON UPDATE CASCADE ON DELETE SET NULL,


(student_ID)

_ID)
);
CREATE TABLE sms_staff
(
entry
stamp
AMP,
title_ID
teaching_bool
staff_ID
staff_name
enroll_date

BIGINT,
TIMESTAMP DEFAULT CURRENT_TIMEST
VARCHAR(100),
SMALLINT DEFAULT 1,
VARCHAR(100) NOT NULL,
VARCHAR(255) NOT NULL,
VARCHAR(255),

school_house
VARCHAR(100),
country
VARCHAR(100) NOT NULL,
county
VARCHAR(100),
region
VARCHAR(100),
subcounty
VARCHAR(100),
district
VARCHAR(100),
parish
VARCHAR(100),
village
VARCHAR(100),
gender_male_bool
SMALLINT,
birth_date
VARCHAR(255),
birth_place
VARCHAR(255),
age_value
SMALLINT,
religion
VARCHAR(100),
married_bool
SMALLINT,
picture_file_link
VARCHAR(255),
language_name
VARCHAR(100),
profession
VARCHAR(255),
next_of_kin_name
VARCHAR(255),
next_of_kin_contact
VARCHAR(255),
tax_IDentification_no VARCHAR(50),
social_security_no
VARCHAR(50),
medical_insurance_no
VARCHAR(50),
isresIDent_bool
SMALLINT DEFAULT 1,
active_bool
SMALLINT DEFAULT 1,
ispermanent_bool
SMALLINT DEFAULT 1,
username
VARCHAR(100) NOT NULL,
info_1
VARCHAR(255),
info_2
VARCHAR(255),
info_3
VARCHAR(255),
info_4
VARCHAR(255),
info_5
VARCHAR(255),
info_6
VARCHAR(255),
info_7
VARCHAR(255),
info_8
VARCHAR(255),
info_9
VARCHAR(255),
info_10
VARCHAR(255),
info_11
VARCHAR(255),
info_12
VARCHAR(255),
info_13
VARCHAR(255),
info_14
VARCHAR(255),
info_15
VARCHAR(255),
FOREIGN KEY
(country) REFERENCES countries(c
ountry_ID)
ON UPDATE CASCADE ON DEL
ETE CASCADE,
FOREIGN KEY
(region) REFERENCES regions(regi
on_ID)
ON UPDATE CASCADE ON DEL
ETE CASCADE,
FOREIGN KEY
(county) REFERENCES counties(cou
nty_ID)
ON UPDATE CASCADE ON DEL
ETE CASCADE,
FOREIGN KEY
(subcounty) REFERENCES subcounti
es(subcounty_ID)
ON UPDATE CASCADE ON DEL
ETE CASCADE,
FOREIGN KEY
(district) REFERENCES districts(
district_ID)
ON UPDATE CASCADE ON DEL

ETE CASCADE,
FOREIGN KEY
ish_ID)

(parish) REFERENCES parishes(par


ON UPDATE CASCADE ON DEL

ETE CASCADE,
FOREIGN KEY
llage_ID)

(village) REFERENCES villages(vi


ON UPDATE CASCADE ON DEL

ETE CASCADE,
FOREIGN KEY
ages(language_ID)

(language_name) REFERENCES langu


ON UPDATE CASCADE ON DEL

ETE CASCADE,
FOREIGN KEY
religion_ID)

(religion) REFERENCES religions(


ON UPDATE CASCADE ON DEL

ETE CASCADE,
FOREIGN KEY
hool_houses(house_ID)

(school_house) REFERENCES sms_sc


ON UPDATE CASCADE ON DEL

ETE CASCADE,
PRIMARY KEY
);

(staff_ID)

----------------------------------------------------------------------------------------------------------------------------------

CREATE TABLE sms_student_attendances


(
entry
BIGINT,
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
student_ID
VARCHAR(100) NOT NULL,
class_ID
VARCHAR(100) NOT NULL,
attendance_date
VARCHAR(50),
attendance_day
VARCHAR(50),
is_present_bool
SMALLINT DEFAULT 1,
username
VARCHAR(100) NOT NULL,
info_1
VARCHAR(255),
info_2
VARCHAR(255),
info_3
VARCHAR(255),
info_4
VARCHAR(255),
info_5
VARCHAR(255),
FOREIGN KEY
(student_ID) REFERENCES sms_students(student_ID)
ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY
(class_ID) REFERENCES sms_classes(class_ID)
ON UPDATE CASCADE ON DELETE CASCADE,
PRIMARY KEY
(student_ID)
);
CREATE TABLE sms_staff_timesheet
(
entry
BIGINT,
staff_ID
VARCHAR(100) NOT NULL,
timesheet_date
VARCHAR(50) NOT NULL,
timesheet_time_in
TIME NOT NULL,
timesheet_time_out
TIME,
timesheet_hours_time
TIME,
timesheet_units_value FLOAT CHECK(timesheet_units_value > 0.0),

enable_bool
stamp

SMALLINT default 1,
TIMESTAMP DEFAULT CURRENT_TIMEST

AMP,
username
info_1
info_2
info_3
info_4
info_5
FOREIGN KEY

VARCHAR(100) NOT NULL,


VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
(staff_ID) REFERENCES sms_staff(staff_ID

)
ON UPDATE CASCADE ON DELETE CASC
ADE,
PRIMARY KEY

(staff_ID)

);
CREATE TABLE sms_staff_salary_scale
(
entry
BIGINT,
salary_scale
VARCHAR(50) NOT NULL,
amount_value
FLOAT NOT NULL CHECK(amount_value > 0.0),
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
username
VARCHAR(100) NOT NULL,
PRIMARY KEY
(salary_scale)
);
CREATE TABLE sms_staff_payroll_items
(
entry
BIGINT,
item_ID
VARCHAR(100) NOT NULL,
item
VARCHAR(255),
is_salary_bool
SMALLINT DEFAULT 0,
enable_bool
SMALLINT DEFAULT 1,
stamp
TIMESTAMP DEFAULT CURRENT_TIMEST
AMP,
username
VARCHAR(100) NOT NULL,
PRIMARY KEY
(item_ID)
);
CREATE TABLE sms_staff_payroll_templates
(
entry
BIGINT,
template_ID
VARCHAR(100) NOT NULL,
template
VARCHAR(255),
enable_bool
SMALLINT DEFAULT 1,
stamp
TIMESTAMP DEFAULT CURRENT_TIMEST
AMP,
username
VARCHAR(100) NOT NULL,
PRIMARY KEY
(template_ID)
);
CREATE TABLE sms_staff_payroll_periods
(
entry
BIGINT,
period_ID
VARCHAR(100) NOT NULL,
payroll_year_value
SMALLINT NOT NULL CHECK (payroll_year_value >= 2001)
,
payroll_month_value
SMALLINT NOT NULL CHECK (payroll_month_value >= 1 an
d payroll_month_value <= 12),
enable_bool
SMALLINT DEFAULT 1,
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
username
VARCHAR(100) NOT NULL,

UNIQUE
PRIMARY KEY

(payroll_year_value, payroll_month_value),
(period_ID)

);
CREATE TABLE sms_staff_payroll
(
entry
BIGINT,
period_ID
VARCHAR(100) NOT NULL,
staff_ID
VARCHAR(100) NOT NULL,
template_ID
VARCHAR(100) NOT NULL,
item_ID
VARCHAR(100) NOT NULL,
salary_scale
VARCHAR(50) NOT NULL,
amount_value
FLOAT NOT NULL CHECK(amount_value >= 0.0),
inadvance_bool
SMALLINT NOT NULL,
paidout_date
VARCHAR(50),
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
username
VARCHAR(100) NOT NULL,
info_1
VARCHAR(255),
info_2
VARCHAR(255),
info_3
VARCHAR(255),
info_4
VARCHAR(255),
info_5
VARCHAR(255),
FOREIGN KEY
(period_ID) REFERENCES sms_staff_payroll_periods(per
iod_ID)
ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY
(staff_ID) REFERENCES sms_staff(staff_ID)
ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY
(template_ID) REFERENCES sms_staff_payroll_templates
(template_ID)
ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY
(item_ID) REFERENCES sms_staff_payroll_items(item_ID
)
ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY
(salary_scale) REFERENCES sms_staff_salary_scale(sal
ary_scale)
ON UPDATE CASCADE ON DELETE CASCADE,
UNIQUE
(period_ID, template_ID, item_ID, inadvance_bool),
PRIMARY KEY
(staff_ID)
);
CREATE TABLE sms_hr_termination_categories
(
entry
BIGINT,
category_ID
VARCHAR(100) NOT NULL,
caption
VARCHAR(255),
stamp
TIMESTAMP DEFAULT CURRENT_TIMEST
AMP,
username
VARCHAR(100) NOT NULL,
info_1
VARCHAR(255),
info_2
VARCHAR(255),
info_3
VARCHAR(255),
info_4
VARCHAR(255),
info_5
VARCHAR(255),
PRIMARY KEY
(category_ID)
);
CREATE TABLE sms_hr_terminated_staff
(
entry
BIGINT,
category_ID
VARCHAR(100) NOT NULL,

staff_ID
termination_date
caption
stamp
username
info_1
info_2
info_3
info_4
info_5
FOREIGN KEY
FOREIGN KEY
es(category_ID)
UNIQUE
PRIMARY KEY

VARCHAR(100) NOT NULL,


VARCHAR(255) NOT NULL,
VARCHAR(255),
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
VARCHAR(100) NOT NULL,
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
(staff_ID) REFERENCES sms_staff(staff_ID)
ON UPDATE CASCADE ON DELETE CASCADE,
(category_ID) references sms_hr_termination_categori
ON UPDATE CASCADE ON DELETE CASCADE,
(category_ID, termination_date),
(staff_ID)

);
CREATE TABLE sms_hr_terminated_students
(
entry
BIGINT,
category_ID
VARCHAR(100) NOT NULL,
student_ID
VARCHAR(100) NOT NULL,
termination_date
VARCHAR(255) NOT NULL,
caption
VARCHAR(255),
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
username
VARCHAR(100) NOT NULL,
info_1
VARCHAR(255),
info_2
VARCHAR(255),
info_3
VARCHAR(255),
info_4
VARCHAR(255),
info_5
VARCHAR(255),
FOREIGN KEY
(student_ID) REFERENCES sms_students(student_ID)
ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY
(category_ID) references sms_hr_termination_categori
es(category_ID)
ON UPDATE CASCADE ON DELETE CASCADE,
UNIQUE
(category_ID, termination_date),
PRIMARY KEY
(student_ID)
);
/* changes in employment eq demotions, promotions, re-deployments, etc categorie
s */
CREATE TABLE sms_hr_staff_status
(
entry
BIGINT,
status_ID
VARCHAR(50) NOT NULL,
rating_value
FLOAT,
description
VARCHAR(255),
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
username
VARCHAR(50) NOT NULL,
info_1
VARCHAR(255),
info_2
VARCHAR(255),
info_3
VARCHAR(255),
info_4
VARCHAR(255),
info_5
VARCHAR(255),
PRIMARY KEY
(status_ID)
);

CREATE TABLE sms_hr_staff_status_entries


(
entry
BIGINT,
status_ID
VARCHAR(50) NOT NOT,
staff_ID
VARCHAR(50) NOT NULL,
status_date
VARCHAR NOT NULL,
caption
VARCHAR(255),
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
username
VARCHAR(50) NOT NULL,
info_1
VARCHAR(255),
info_2
VARCHAR(255),
info_3
VARCHAR(255),
info_4
VARCHAR(255),
info_5
VARCHAR(255),
FOREIGN KEY
(staff_ID) REFERENCES sms_staff(staff_ID)
ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY
(status_ID) references hr_staff_status(status_ID)
on UPDATE CASCADE ON DELETE CASCADE,
UNIQUE
(status_ID, status_date),
PRIMARY KEY
(staff_ID)
);
CREATE TABLE sms_hr_staff_leave_categories
(
entry
BIGINT,
category_ID
VARCHAR(50) NOT NULL,
caption
VARCHAR(255),
stamp
TIMESTAMP DEFAULT CURRENT_TIMEST
AMP,
username
VARCHAR(50) NOT NULL,
info_1
VARCHAR(255),
info_2
VARCHAR(255),
info_3
VARCHAR(255),
info_4
VARCHAR(255),
info_5
VARCHAR(255),
PRIMARY KEY

(category_ID)

);
CREATE TABLE sms_hr_staff_leave
(
entry
BIGINT,
category_ID
VARCHAR(50) NOT NULL,
staff_ID
VARCHAR(50) not null,
leave_date
VARCHAR(50) NOT NULL,
return_date
VARCHAR(50) NOT NULL,
leave_days_value
SMALLINT,
pass_no
VARCHAR(50),
destination
VARCHAR(255),
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
username
VARCHAR(50) NOT NULL,
info_1
VARCHAR(255),
info_2
VARCHAR(255),
info_3
VARCHAR(255),
info_4
VARCHAR(255),
info_5
VARCHAR(255),
FOREIGN KEY

(staff_ID) REFERENCES sms_staff(staff_ID)


ON UPDATE CASCADE ON DELETE CASCADE,

FOREIGN KEY
es(category_ID)
UNIQUE
PRIMARY KEY

(category_ID) REFERENCES sms_hr_staff_leave_categori


ON UPDATE CASCADE ON DELETE CASCADE,
(category_ID,leave_date),
(staff_ID)

);
/* courses and training */
CREATE TABLE sms_hr_staff_courses
(
entry
BIGINT,
department_ID
VARCHAR(50) NOT NULL,
course_ID
VARCHAR(50) NOT NULL,
course_name
VARCHAR(255),
credits_value
SMALLINT,
/* weighting, etc */
stamp
username

TIMESTAMP DEFAULT CURRENT_TIMESTAMP,


VARCHAR(50) NOT NULL,

info_1
info_2
info_3
info_4
info_5
FOREIGN KEY
t_ID)

VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
(department_ID) REFERENCES sms_departments(departmen
ON UPDATE CASCADE ON DELETE CASCADE,

PRIMARY KEY

(course_ID)

);
/* library manager */
CREATE TABLE sms_lib_books
(
entry
book_ID
book_name
publication
anthor_ID
price_value
quatity
location
stamp
username

BIGINT,
VARCHAR(50) NOT NULL,
VARCHAR(50),
VARCHAR(255),
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
VARCHAR(50) NOT NULL,

info_1
info_2
info_3
info_4
info_5
UNIQUE
PRIMARY KEY
);
CREATE TABLE sms_lib_unreturned_books
(
entry

VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
(book_name,anthor_ID)
(book_ID)

BIGINT,

student_ID
book_ID
issue_date
return_date

VARCHAR(50) NOT NULL,


VARCHAR(50) NOT NULL,
VARCHAR(50) NOT NULL,
VARCHAR(50) NOT NULL,

info_1
info_2
info_3
info_4
info_5

VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),

stamp
username
FOREIGN KEY
ks(book_ID)

TIMESTAMP DEFAULT CURRENT_TIMESTAMP,


VARCHAR(50) NOT NULL,
(book_ID) REFERENCES sms_lib_boo
ON UPDATE CASCADE ON DEL

ETE CASCADE,
UNIQUE

(book_ID,issue_date,return_date)

,
PRIMARY KEY

(student_ID)

);
CREATE TABLE sms_lib_issue_books_students
(
entry
BIGINT,
student_ID
VARCHAR(50) NOT NULL,
book_ID
VARCHAR(50) NOT NULL,
issue_date
VARCHAR(50) NOT NULL,
return_date
VARCHAR(50) NOT NULL,
return_status_bool
SMALLINT DEFAULT 0,
/* a yes or no for either the books are returned or not*/
info_1
info_2
info_3
info_4
info_5
stamp
username
FOREIGN KEY
FOREIGN KEY
ent(student_ID)

VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
VARCHAR(50) NOT NULL,
(book_ID) REFERENCES sms_lib_books(book_ID)
ON UPDATE CASCADE ON DELETE CASCADE,
(student_ID) REFERENCES sms_stud
ON UPDATE CASCADE ON DE

LETE CASCADE,
PRIMARY KEY

(student_ID)

);
CREATE TABLE sms_lib_issue_books_staff
(
entry
BIGINT,
staff_ID
VARCHAR(50) NOT NULL,
book_ID
VARCHAR(50) NOT NULL,
issue_date
VARCHAR(50) NOT NULL,

return_date

VARCHAR(50) NOT NULL,

info_1
VARCHAR(255),
info_2
VARCHAR(255),
info_3
VARCHAR(255),
info_4
VARCHAR(255),
info_5
VARCHAR(255),
return_status_bool
SMALLINT DEFAULT 0,
/* a yes or no for either the books are returned or not*/
stamp
username
FOREIGN KEY
staff_ID)

TIMESTAMP DEFAULT CURRENT_TIMESTAMP,


VARCHAR(50) NOT NULL,
(staff_ID) REFERENCES sms_staff(
ON UPDATE CASCADE ON DEL

ETE CASCADE,
FOREIGN KEY

(book_ID) REFERENCES sms_lib_books(book_ID)


ON UPDATE CASCADE ON DELETE CASCADE,

UNIQUE

(book_ID,issue_date,return_date)

PRIMARY KEY

(staff_ID)

,
);
CREATE TABLE sms_lib_unreturned_book_reminder_staff
(
entry
BIGINT,
staff_ID
VARCHAR(50) NOT NULL,
book_ID
VARCHAR(50) NOT NULL,
issue_date
VARCHAR(50) NOT NULL,
return_date
VARCHAR(50) NOT NULL,
info_1
info_2
info_3
info_4
info_5
stamp
username
FOREIGN KEY
staff_ID)

VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
VARCHAR(50) NOT NULL,
(staff_ID) REFERENCES sms_staff(
ON UPDATE CASCADE ON DEL

ETE CASCADE,
FOREIGN KEY
UNIQUE

(book_ID) REFERENCES sms_lib_books(book_ID)


ON UPDATE CASCADE ON DELETE CASCADE,
(book_ID,issue_date,return_date)

,
PRIMARY KEY

(staff_ID)

);
CREATE TABLE sms_lib_unreturned_book_reminder_student
(
entry
BIGINT,
student_ID
VARCHAR(50) NOT NULL,
book_ID
VARCHAR(50) NOT NULL,

issue_date
return_date
info_1
info_2
info_3
info_4
info_5
stamp
username
FOREIGN KEY
FOREIGN KEY
ent(student_ID)

VARCHAR(50) NOT NULL,


VARCHAR(50) NOT NULL,
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
VARCHAR(50) NOT NULL,
(book_ID) REFERENCES sms_lib_books(book_ID)
ON UPDATE CASCADE ON DELETE CASCADE,
(student_ID) REFERENCES sms_stud

ON UPDATE CASCADE ON DEL


ETE CASCADE,
UNIQUE
(book_ID,issue_date,return_date)
,
PRIMARY KEY
(student_ID)
);
CREATE TABLE sms_class_rooms
(
entry
BIGINT,
room_ID
VARCHAR(100) NOT NULL,
description
VARCHAR(255),
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
username
VARCHAR(100) NOT NULL,
PRIMARY KEY
(room_ID)
);
CREATE TABLE sms_exams_timetable
(
entry
BIGINT,
supervisor
VARCHAR(50) NOT NULL,
exam_ID
VARCHAR(255) NOT NULL,
/* exam name*/
class_ID
VARCHAR(50) NOT NULL,
room_ID
VARCHAR(50),
start_date
VARCHAR(50) NOT NULL,
end_date
VARCHAR(50),
info_1
VARCHAR(255),
info_2
VARCHAR(255),
info_3
VARCHAR(255),
info_4
VARCHAR(255),
info_5
VARCHAR(255),
stamp
username
FOREIGN KEY
f(staff_ID)

TIMESTAMP DEFAULT CURRENT_TIMESTAMP,


VARCHAR(50) NOT NULL,
(supervisor) REFERENCES sms_staf
ON UPDATE CASCADE ON DEL

ETE CASCADE,
FOREIGN KEY
s(class_ID)

(class_ID) REFERENCES sms_classe


ON UPDATE CASCADE ON DELETE CASC

ADE,

FOREIGN KEY
m_ID)

(room_ID) REFERENCES sms_class_rooms(roo


ON UPDATE CASCADE ON DELETE CASC

ADE,
UNIQUE
PRIMARY KEY

(class_ID,room_ID,start_date)
(exam_ID)

);
CREATE TABLE sms_exam_categories
(
exam_category_ID
VARCHAR(50) NOT NULL,
stamp
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
username
VARCHAR(50) NOT NULL,
PRIMARY KEY

(exam_category_ID)

);
CREATE TABLE sms_exam_marks
(
entry
BIGINT,
exam_category_ID
VARCHAR(50) NOT NULL,
/* EITHER TESTS OR END OF TERM EXAMS*/
class_ID
VARCHAR(50) NOT NULL,
/*CLASS FOR THAT SPECIFIC STUDENT*/
student_ID
VARCHAR(50) NOT NULL,
staff_ID
VARCHAR(50) NOT NULL,
subject_1_mak_value
subject_2_mak_value
subject_3_mak_value
subject_4_mak_value
subject_5_mak_value

VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),

subject_6_mak_value
subject_7_mak_value
subject_8_mak_value
subject_9_mak_value
subject_10_mak_value

VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),

subject_11_mak_value
subject_12_mak_value
subject_13_mak_value
subject_14_mak_value
subject_15_mak_value

VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),

subject_16_mak_value
subject_17_mak_value
subject_18_mak_value
subject_18_mak_value
subject_19_mak_value
subject_20_mak_value
total_mak_value
average_mak_value

VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),

info_1
info_2
info_3
info_4
info_5

VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),

stamp
username

TIMESTAMP DEFAULT CURRENT_TIMESTAMP,


VARCHAR(50) NOT NULL,

FOREIGN KEY
staff_ID)

(staff_ID) REFERENCES sms_staff(


ON UPDATE CASCADE ON DEL

ETE CASCADE,
FOREIGN KEY
s(class_ID)

(class_ID) REFERENCES sms_classe


ON UPDATE CASCADE ON DELETE CASC

ADE,
FOREIGN KEY
ent(student_ID)

(student_ID) REFERENCES sms_stud


ON UPDATE CASCADE ON DEL

ETE CASCADE,
FOREIGN KEY
s_exam_categories(exam_category_ID)

(exam_category_ID) REFERENCES sm
ON UPDATE CASCADE ON DEL

ETE CASCADE,
PRIMARY KEY

(student_ID)

);
/* EVENT management MODULES*/
CREATE TABLE sms_events
(
entry
event_ID
event_name
/*SPORT WEEK*/
description
start_date
end_date
info_1
info_2
info_3
info_4
info_5
stamp
username

BIGINT,
VARCHAR(50) NOT NULL,
VARCHAR(255) NOT NULL,
VARCHAR(255),
VARCHAR(50) NOT NULL,
VARCHAR(50),

VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
VARCHAR(50) NOT NULL,

UNIQUE
PRIMARY KEY

(event_name,start_date),
(event_ID)

);
CREATE TABLE sms_school_fees_categories
(
entry
category_ID
stamp
username

BIGINT,
VARCHAR(50) NOT NULL,

TIMESTAMP DEFAULT CURRENT_TIMESTAMP,


VARCHAR(50) NOT NULL,

PRIMARY KEY
);
CREATE TABLE sms_school_fees_entries
(

(category_ID)

entry
fee_category_ID
student_ID
class_ID
fees_year_value
/* USING A DATE PICKER FORMART*/
term_ID
/* e.g term 11 */
fees_entry_1_value
fees_entry_2_value
fees_entry_3_value
fees_entry_4_value
fees_entry_5_value
total_fees_PaID_value
balance_value

BIGINT,
VARCHAR(50) NOT NULL,
VARCHAR(50) NOT NULL,
VARCHAR(50) NOT NULL,
VARCHAR(50) NOT NULL
VARCHAR(50) NOT NULL,
VARCHAR(50) DEFAULT 0.0,
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
VARCHAR(50) NOT NULL DEFAULT 0.0,
VARCHAR(50) NOT NULL DEFAULT 0.0,

info_1
info_2
info_3
info_4
info_5
stamp
username

VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
VARCHAR(50) NOT NULL,

FOREIGN KEY
s(class_ID)

(class_ID) REFERENCES sms_classe


ON UPDATE CASCADE ON DELETE CASC

ADE,
FOREIGN KEY
ent(student_ID)

(student_ID) REFERENCES sms_stud


ON UPDATE CASCADE ON DEL

ETE CASCADE,
FOREIGN KEY
s_school_fees_categories(category_ID)

(fees_category_ID) REFERENCES sm
ON UPDATE CASCADE ON DEL

ETE CASCADE,
UNIQUE
D)
PRIMARY KEY
);
/*ASSET/STORE Management*/
CREATE TABLE sms_asset_categories
(
entry
category_ID
description
stamp
username
PRIMARY KEY
);
CREATE TABLE sms_stores
(
entry
store_name
stamp

(fee_category_ID,class_ID,term_I
(student_ID)

BIGINT,
VARCHAR(50) NOT NULL,
VARCHAR(255),

TIMESTAMP DEFAULT CURRENT_TIMESTAMP,


VARCHAR(50) NOT NULL,
(category_ID,)

BIGINT,
VARCHAR(50) NOT NULL,
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

username
PRIMARY KEY

VARCHAR(50) NOT NULL,


(store_name)

);
CREATE TABLE sms_asset_entries
(
entry
BIGINT,
asset_category_ID
VARCHAR(50) NOT NULL,
store_name
VARCHAR(50) NOT NULL,
asset_name
VARCHAR(50) NOT NULL,
asset_ID
VARCHAR(50) NOT NULL,
quantity_value
BIGINT NOT NULL,
deprication_rate_value VARCHAR(50),
info_1
info_2
info_3
info_4
info_5
info_6
info_7
info_8
info_9
info_10
stamp
username
FOREIGN KEY
es(store_name)

VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
VARCHAR(50) NOT NULL,
(store_name) REFERENCES sms_stor
ON UPDATE CASCADE ON DEL

ETE CASCADE,
PRIMARY KEY

(asset_ID)

);
CREATE TABLE sms_physical_store_tracking_staff
(
entry
BIGINT,
store_ID
VARCHAR(50) NOT NULL,
staff_ID
VARCHAR(50) NOT NULL,
-- who has taken the file?
taken_date
VARCHAR(50) not null,
return_date
VARCHAR(50),
reason
VARCHAR(255),
-- why take out the file?
info_1
info_2
info_3
info_4
info_5
stamp
username
FOREIGN KEY
es(store_name)

VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
VARCHAR(50) NOT NULL,
(store_name) REFERENCES sms_stor
ON UPDATE CASCADE ON DEL

ETE CASCADE,
FOREIGN KEY
staff_ID)

(staff_ID) REFERENCES sms_staff(


ON UPDATE CASCADE ON DEL

ETE CASCADE,
PRIMARY KEY

(store_ID)

);
CREATE TABLE sms_physical_store_tracking_staff
(
entry
BIGINT,
store_ID
VARCHAR(50) NOT NULL,
staff_ID
VARCHAR(50) NOT NULL,
-- who has taken the file?
taken_date
VARCHAR(50) not null,
return_date
VARCHAR(50),
reason
VARCHAR(255),
-- why take out the file?
info_1
info_2
info_3
info_4
info_5
stamp
username
FOREIGN KEY
es(store_name)

VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
VARCHAR(255),
TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
VARCHAR(50) NOT NULL,
(store_name) REFERENCES sms_stor
ON UPDATE CASCADE ON DEL

ETE CASCADE,
FOREIGN KEY
staff_ID)

(staff_ID) REFERENCES sms_staff(


ON UPDATE CASCADE ON DEL

ETE CASCADE,
PRIMARY KEY
);

(store_ID)

Potrebbero piacerti anche