- 25048 NTWARI Deus
- 25918 INGABIRE NZARAMBA Ritha
- 26155 Ishimwe Mahoro Christianne
- 26046 MABHYALA Wulsy
- 25514 HURUMA Innocent
- 24849 NAHAYO Arnaud
- 25964 Mugisha Godefroid
- 26073 UMUGWANEZA Aimée
- 26975 NIYOYAVUZE AMIELLE PONTIENNE
- 25899 Arnaud NSHUTI
- 25444 Uwizeye Ngoga Sandra
The Police Examination Process project aims to develop a streamlined, digitalized system to support applicants in obtaining driving licenses, covering everything from registration to examination and result notification. Key processes are automated to minimize manual data handling and ensure data accuracy and enhance protection.
-
Scope: Design a digitalized driving license application process, from registration to final issuance.
-
Objectives:
- Reduce manual errors and enhance processing efficiency.
- Automate notifications for exam scheduling and results.
-
Expected Outcomes:
- Improved data accuracy and faster processing.
- Centralized database accessible by authorized departments.
-
Key Entities:
- Applicant: Applies for a license.
- Police Officer: Verifies documents and approves applications.
- Examination Center: Conducts exams and records results.
- License: Issued upon successful completion.
-
Process Flow: Application Submission → Document Verification → Exam Scheduling → Result Recording → License Issuance or Retest Notification.
-
Decision Points: Includes checks like "Document Approved?" and "Exam Passed?"
-
Summary: The process is centralized within a Management Information System (MIS), improving decision-making, efficiency, and reducing errors.
-
Data Model Design:
- Entities & Attributes:
- Applicant:
applicant_id (PK)
,fname
,lname
,Date_birth
,gender
,address
. - Application:
application_id (PK)
,applicant_id (FK)
,application_date
,status
,remarks
. - Examination Schedule:
schedule_id (PK)
,application_id (FK)
,exam_date
,exam_center_id (FK)
,notification_status
. - Examination Center:
center_id (PK)
,center_name
,location
,capacity
. - Test:
test_id (PK)
,schedule_id (FK)
,examiner_id (FK)
,test_type
,result
,comments
. - Examiner:
examiner_id (PK)
,fname
,lname
,qualification
,assigned_center
. - License:
license_id (PK)
,applicant_id (FK)
,issue_date
,expiration_date
,license_type
. - Notifications:
notification_id (PK)
,schedule_id (FK)
,sent_date
,status
,message_type
.
- Applicant:
- Entities & Attributes:
-
Relationships:
- One-to-Many: An applicant can have multiple exam attempts.
- One-to-One: One result per exam.
-
Data Scenarios:
-
Failed Exam: Track failed attempts and flag retest eligibility.
-
License Issuance: Issue a license upon passing and archive records.
-
Notifications: Automate exam schedule and result notifications. (Trigger notifications for exam dates and results)
-
This project is part of a comprehensive database system designed to streamline the Police Examination Process. The system tracks applicants, applications, examination schedules, test results, licenses, and notifications. This README outlines the purpose, design, and operations performed in Phases 4, 5, and 6, focusing on enhancing the system's functionality and ensuring data integrity.
-
Applicant Management:
- Records applicant details such as name, date of birth, address, and gender.
- Links applicants to their applications, test schedules, and licenses.
-
Application Processing:
- Tracks application statuses (e.g., pending, complete) with remarks.
-
Examination Scheduling and Notifications:
- Assigns applicants to specific examination centers.
- Sends notifications to applicants about scheduled exams and results.
-
Test Management:
- Records test types, results, and examiner comments.
-
License Issuance:
- Issues licenses to successful applicants, tracking issue and expiration dates.
-
Data Relationships:
- Enforces relational constraints to maintain data consistency across the database.
- Applicant Table: Stores applicant details.
- Application Table: Links applicants to their application statuses.
- Examination Scheduling Table: Associates applications with exam centers and notifications.
- Examination Center Table: Contains details of examination centers.
- Examiner Table: Tracks examiners and their qualifications.
- Test Table: Records test details, results, and comments.
- License Table: Manages license issuance details.
- Notifications Table: Tracks notifications sent to applicants.
Each table is interconnected using primary keys and foreign key constraints to ensure relational integrity.
- Inserted data into all core tables, including
Applicant
,Application
,Examination_Scheduling
,Test
,License
, andNotifications
. - Example: Adding a new applicant, their application, and scheduling their exam.
- Queried data to retrieve detailed reports such as:
- Applicant details along with application status and exam schedule.
- Examination results for an applicant.
- Overall pass/fail rates for different test types.
- Used various joins to link tables for reports and insights:
- INNER JOIN: Fetch applicant details with application and exam statuses.
- LEFT OUTER JOIN: Retrieve all applicants, whether scheduled for exams or not.
- RIGHT OUTER JOIN: List all schedules, even if no applicant is assigned.
- FULL OUTER JOIN: Combine all applicants and schedules, regardless of matching records.
- Example: Updating the status of a notification.
- Example: Deleting test records for failed results.
-
Retrieve Applicant Details
SELECT a.FirstName, a.LastName, ap.Status AS ApplicationStatus, es.NotificationStatus AS ExamStatus FROM Applicant a JOIN Application ap ON a.ApplicantID = ap.ApplicantID JOIN Examination_Scheduling es ON ap.ApplicationID = es.ApplicationID WHERE a.ApplicantID = 1;
-
Generate Pass/Fail Rates
SELECT t.TestType, t.Result, COUNT(*) AS ResultCount FROM Test t GROUP BY t.TestType, t.Result;
-
Retrieve All Licenses Issued
SELECT a.FirstName, a.LastName, l.LicenseType, l.IssueDate, l.ExpirationDate FROM License l JOIN Applicant a ON l.ApplicantID = a.ApplicantID;
- Oracle Database or a compatible RDBMS.
- A database tool (e.g., SQL Developer) for running SQL scripts.
- Execute the table creation scripts.
- Apply the foreign key constraints.
- Insert sample data into each table.
- Run the provided queries to verify relationships and retrieve data.
- Add more detailed notifications (e.g., SMS or email integration).
- Implement stored procedures for common tasks such as scheduling exams or issuing licenses.
- Introduce role-based access control for examiners and administrators.
The Police Examination Process project establishes an efficient, digitalized workflow for driving license applications, with enhanced speed, accuracy, and centralized data management through BPMN modeling and structured data relationships.
The Driving License Management System is a database-driven solution designed to streamline and enhance the process of managing police examinations for driving license issuance. This system ensures accuracy, data integrity, automation, and efficient workflow management for applicants, examiners, and the police department.
The current paper-based system for managing driving license examinations is inefficient, error-prone, and lacks transparency. Advanced database programming techniques such as triggers, cursors, functions, packages, and auditing were implemented to address these challenges and optimize the system's performance.
- Triggers automate workflows and enforce business rules.
- Cursors process row-by-row operations effectively.
- Functions ensure reusable and modular programming.
- Packages organize related database objects for better maintenance.
- Auditing techniques ensure accountability and track unauthorized access or changes.
- Applicant Management: Stores personal details and tracks application progress.
- Examination Scheduling: Automates the scheduling of examinations.
- Test Results Storage: Manages test results and pass/fail status.
- License Issuance: Issues licenses for successful candidates.
- Notifications: Tracks and automates notifications for applicants.
ID | Name | Role |
---|---|---|
25964 | Mugisha Godefroid | Database Architect & Developer – Designed the database schema and implemented advanced techniques. |
25048 | NTWARI Deus | Lead System Designer & Project Coordinator – Led the project design and team coordination efforts. |
25918 | INGABIRE NZARAMBA Ritha | Application Tester – Ensured the database and system functionality met requirements. |
26155 | Ishimwe Mahoro Christianne | UI/UX Designer – Designed the front-end interfaces for the management system. |
26046 | MABHYALA Wulsy | System Administrator – Managed database deployment and configurations. |
25514 | HURUMA Innocent | Security Specialist – Implemented data encryption and auditing mechanisms. |
24849 | NAHAYO Arnaud | Backend Developer – Worked on integrating database operations with application logic. |
26073 | UMUGWANEZA Aimée | Quality Assurance Analyst – Verified workflow processes and handled error management. |
26975 | NIYOYAVUZE AMIELLE PONTIENNE | Data Analyst – Generated statistical reports on examination results. |
25899 | Arnaud NSHUTI | Scheduler & Tester – Optimized examination schedules and tested their functionality. |
25444 | Uwizeye Ngoga Sandra | Documentation Specialist – Created system documentation and user manuals. |
- Import the provided database schema into your Oracle SQL environment.
- Run the scripts for triggers, functions, and packages provided in the
DatabaseScripts
folder. - Ensure the database user has appropriate privileges to execute advanced programming constructs.
- Clone the repository to your local machine.
- Set up the front-end interface for connecting to the database.
- Configure the database connection in the configuration file (
db_config.xml
).
- Launch the application interface.
- Use administrator credentials to log in and access management features.
- Schedule examinations, track applicant progress, and manage test results through the interface.
- Example: BEFORE INSERT trigger to validate test scores.
- Automates processes such as sending notifications or updating application status.
- Used for processing multiple test results row-by-row during report generation.
- Modularized complex operations such as calculating pass percentages or determining eligibility.
- Encapsulated related procedures and functions, such as applicant management and result processing, into reusable packages.
- Logs unauthorized access attempts and tracks all modifications to sensitive data.
- Generate Pass/Fail Statistics:
SELECT test_type, COUNT(*) AS total,
SUM(CASE WHEN result = 'Pass' THEN 1 ELSE 0 END) AS passed,
SUM(CASE WHEN result = 'Fail' THEN 1 ELSE 0 END) AS failed
FROM test_results
GROUP BY test_type;
- Schedule Examination:
INSERT INTO examination_schedule (applicant_id, test_date, center_id)
VALUES (101, TO_DATE('2024-12-15', 'YYYY-MM-DD'), 5);
- Audit Query:
SELECT * FROM audit_log WHERE user_id = 'admin' AND action = 'UPDATE';
Special thanks to the contributors for their dedicated efforts to ensure the success of this project.