Field Staff Tracking
GPS Tracking
Database Schema

Database Schema

The field staff tracking system uses three core tables with a parent-detail relationship. The main GPS record links to location waypoints and captured images.

Entity Relationship Diagram

Table: t_SiteVisit_GPS

The primary tracking table storing each field duty session.

ColumnTypeDescription
SiteVisitGPSIDbigint (PK)Auto-increment primary key
RefNovarcharReference number for the visit
UserIdbigint (FK)Staff user performing the visit
PurposevarcharVisit purpose (e.g., "Follow Up CP", "Booking CP")
RemarksvarcharStaff notes at check-in
StartingDateAndTimedatetimeCheck-in timestamp
EndingDateAndTimedatetimeCheck-out timestamp (null while active)
StartingLatitudedecimalCheck-in latitude
StartingLongitudedecimalCheck-in longitude
EndingLatitudedecimalCheck-out latitude
EndingLongitudedecimalCheck-out longitude
StartingLocationvarcharReverse-geocoded start address
EndingLocationvarcharReverse-geocoded end address
ClosingRemarksvarcharStaff notes at check-out
CallLogIdbigint (FK)Linked call log entry
IsApprovedbitApproval status
ApprovalBybigint (FK)Manager who approved/rejected
ApprovalOndatetimeApproval timestamp
ReasonvarcharApproval/rejection reason

Table: t_SiteVisit_GPS_Detail

Location waypoints captured throughout the duty period.

ColumnTypeDescription
SiteVisitGPSDetailIdbigint (PK)Auto-increment primary key
SiteVisitGPSIDbigint (FK)Parent GPS record
LatitudedecimalWaypoint latitude
LongitudedecimalWaypoint longitude
IsManuallyCapturedbitTrue if user triggered, false if automatic
DescriptionvarcharLocation description (from geocoding)

Table: t_SiteVisit_GPS_Images

Photos captured and uploaded by field staff.

ColumnTypeDescription
SiteVisitGPSImagesIDbigint (PK)Auto-increment primary key
SiteVisitGPSIDbigint (FK)Parent GPS record
SiteVisitGPSDetailIdbigint (FK)Optional linked waypoint
ImagePathvarcharServer file storage path
CreatedDateAndTimedatetimeUpload timestamp

Table: MobileAttendance

Mobile punch records linked to the daily attendance system.

ColumnTypeDescription
MobileAttendanceIdbigint (PK)Auto-increment primary key
EmployeeIdbigint (FK)Employee reference
InDateAndTimedatetimePunch-in timestamp
OutDateAndTimedatetimePunch-out timestamp (null while active)
StartingLocationvarcharCheck-in address
EndingLocationvarcharCheck-out address
StartingDistanceInMetresdecimalDistance from office at check-in
EndingDistanceInMetresdecimalDistance from office at check-out

Key SQL Queries

Get GPS record with duration:

SELECT sv.*, u.FullName AS UserName,
    LEFT(CONVERT(VARCHAR(10),
        EndingDateAndTime - StartingDateAndTime, 108), 8) AS TotalDuration
FROM t_SiteVisit_GPS sv
INNER JOIN UM_Users u ON sv.UserId = u.UserId
WHERE sv.SiteVisitGPSID = @SiteVisitGPSID

Get waypoints for a visit:

SELECT Latitude, Longitude,
    ISNULL(IsManuallyCaptured, 0) AS IsManuallyCaptured,
    ISNULL(Description, '') AS LocationDescription
FROM t_SiteVisit_GPS_Detail
WHERE SiteVisitGPSID = @SiteVisitGPSID

Get images with location data:

SELECT SVD.Latitude, SVD.Longitude,
    ISNULL(SVD.IsManuallyCaptured, 0) AS IsManuallyCaptured,
    ISNULL(SVD.Description, '') AS LocationDescription
FROM t_SiteVisit_GPS_Images SI
LEFT JOIN t_SiteVisit_GPS_Detail SVD
    ON SI.SiteVisitGPSDetailId = SVD.SiteVisitGPSDetailId
WHERE SI.SiteVisitGPSID = @SiteVisitGPSID
    AND ISNULL(SVD.Latitude, 0) <> 0
    AND ISNULL(SVD.Longitude, 0) <> 0