Oracle Database Design
Comprehensive Oracle database schema design with 16 tables, indexes, sequences, and triggers optimized for the logistics equipment management module.
Schema Overview
Oracle Optimized
Native Oracle data types, sequences, and PL/SQL triggers for optimal performance.
Referential Integrity
Comprehensive foreign key relationships ensuring data consistency across all entities.
Data Validation
CHECK constraints and data validation rules enforcing business logic at the database level.
ERP Integration
Seamless integration with existing ERP tables through foreign key relationships.
Database Tables
Authentication & User Management
1. User Profiles
Stores user profile information with role-based access control integration.
CREATE TABLE USER_PROFILES (
ID VARCHAR2(36) PRIMARY KEY,
FULL_NAME VARCHAR2(255) NOT NULL,
ROLE VARCHAR2(50) NOT NULL CHECK (ROLE IN ('PL', 'PMO', 'Operations Manager', 'BOD', 'Construction Manager', 'Coordinator')),
COUNTRY VARCHAR2(50),
PHONE VARCHAR2(50),
DEPARTMENT VARCHAR2(100),
CREATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UPDATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. Spring Security Users
Spring Security compatible user authentication table with account status flags.
CREATE TABLE USERS (
ID VARCHAR2(36) PRIMARY KEY,
USERNAME VARCHAR2(100) UNIQUE NOT NULL,
PASSWORD VARCHAR2(255) NOT NULL,
EMAIL VARCHAR2(255) UNIQUE NOT NULL,
ENABLED NUMBER(1) DEFAULT 1,
ACCOUNT_NON_EXPIRED NUMBER(1) DEFAULT 1,
ACCOUNT_NON_LOCKED NUMBER(1) DEFAULT 1,
CREDENTIALS_NON_EXPIRED NUMBER(1) DEFAULT 1,
CREATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UPDATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
3. User Roles
Many-to-many relationship table for user role assignments.
CREATE TABLE USER_ROLES (
USER_ID VARCHAR2(36) NOT NULL,
ROLE VARCHAR2(50) NOT NULL,
CONSTRAINT FK_USER_ROLES_USER FOREIGN KEY (USER_ID) REFERENCES USERS(ID)
);
Performance Optimization
Oracle Indexes
-- Performance indexes for query optimization
CREATE INDEX IDX_EQUIPMENT_PROJECT_ID ON EQUIPMENT(PROJECT_ID);
CREATE INDEX IDX_EQUIPMENT_SUBCONTRACTOR_ID ON EQUIPMENT(SUBCONTRACTOR_ID);
CREATE INDEX IDX_EQUIPMENT_STATUS ON EQUIPMENT(STATUS);
CREATE INDEX IDX_TIMESHEETS_DATE ON TIMESHEETS(SHEET_DATE);
CREATE INDEX IDX_TIMESHEETS_EQUIPMENT_ID ON TIMESHEETS(EQUIPMENT_ID);
CREATE INDEX IDX_TIMESHEETS_PROJECT_ID ON TIMESHEETS(PROJECT_ID);
CREATE INDEX IDX_EQUIPMENT_REQUESTS_STATUS ON EQUIPMENT_REQUESTS(STATUS);
CREATE INDEX IDX_EQUIPMENT_SERIAL_NUMBER ON EQUIPMENT(SERIAL_NUMBER);
CREATE INDEX IDX_SUBCONTRACTORS_REGISTRATION ON SUBCONTRACTORS(REGISTRATION_NUMBER);
CREATE INDEX IDX_USERS_USERNAME ON USERS(USERNAME);
CREATE INDEX IDX_USERS_EMAIL ON USERS(EMAIL);
-- Composite indexes for complex queries
CREATE INDEX IDX_EQUIPMENT_STATUS_PROJECT ON EQUIPMENT(STATUS, PROJECT_ID);
CREATE INDEX IDX_TIMESHEETS_DATE_PROJECT ON TIMESHEETS(SHEET_DATE, PROJECT_ID);
CREATE INDEX IDX_EQUIPMENT_TYPE_STATUS ON EQUIPMENT(TYPE, STATUS);
Oracle Sequences
-- Sequences for auto-generating IDs
CREATE SEQUENCE SEQ_USER_PROFILES START WITH 1 INCREMENT BY 1;
CREATE SEQUENCE SEQ_USERS START WITH 1 INCREMENT BY 1;
CREATE SEQUENCE SEQ_WORK_STATUS_RATES START WITH 1 INCREMENT BY 1;
CREATE SEQUENCE SEQ_REQUEST_APPROVALS START WITH 1 INCREMENT BY 1;
CREATE SEQUENCE SEQ_EXTENSION_REQUEST_APPROVALS START WITH 1 INCREMENT BY 1;
CREATE SEQUENCE SEQ_EVALUATION_SCORES START WITH 1 INCREMENT BY 1;
Automatic Timestamp Triggers
-- Trigger for PROJECTS table
CREATE OR REPLACE TRIGGER TRG_PROJECTS_UPDATED_AT
BEFORE UPDATE ON PROJECTS
FOR EACH ROW
BEGIN
:NEW.UPDATED_AT := CURRENT_TIMESTAMP;
END;
-- Trigger for EQUIPMENT table
CREATE OR REPLACE TRIGGER TRG_EQUIPMENT_UPDATED_AT
BEFORE UPDATE ON EQUIPMENT
FOR EACH ROW
BEGIN
:NEW.UPDATED_AT := CURRENT_TIMESTAMP;
END;
-- Trigger for SUBCONTRACTORS table
CREATE OR REPLACE TRIGGER TRG_SUBCONTRACTORS_UPDATED_AT
BEFORE UPDATE ON SUBCONTRACTORS
FOR EACH ROW
BEGIN
:NEW.UPDATED_AT := CURRENT_TIMESTAMP;
END;
Database Features
Data Integrity
Comprehensive CHECK constraints and foreign key relationships ensure data consistency and business rule enforcement.
Automatic Timestamps
Oracle triggers automatically maintain created_at and updated_at timestamps for audit trail and change tracking.
Multi-Country Support
Built-in support for Libya, Tunisia, and Iraq with country-specific validation and data segregation.
Performance Optimized
Strategic indexing and composite indexes for optimal query performance on large datasets.
Security
Role-based access control integration with Spring Security and comprehensive audit trails.
Scalable Design
Designed to handle enterprise-scale data volumes with efficient storage and query patterns.