Witam serdecznie wszystkich forumowiczów.
Ostatnio zaprojektowałem bazę danych do swojej aplikacji mobilnej która ma umożliwić prowadzenie histroii pojazdów , statystyki itd. Baza danych będzie w sqlite i nie wiem jak rozwiązać problem z przebiegiem samochodu. Logika według mnie powinna oddawać jak najbardziej realia czyli bez żadnego cofania licznika ale umożliwić użytkownikom edytowanie i kasowanie tankowań i usług gdzie użytkownik mógł przez przypadek podać błędny przebieg np większy niż obecnie ma i chce go poprawić do poprawnego. Jeśli chodzi o Vehicle to wymyśliłem że będzie automatycznie wybierany największy przebieg z tabel Service i Refueling i aktualizowane za pomocą triggerów. Jeśli coś będzie potrzebne to proszę pisać to będę starał się udzelić informacji jak najszybciej.
Może ktoś z was ma jakiś kierunek lub pomysł na rozwiązanie takiego problem.
Oto kod Sql do tworzenia tabel:
PRAGMA foreign_keys = on;
CREATE TABLE FuelType (
FuelTypeId INTEGER PRIMARY KEY AUTOINCREMENT,
FuelTypeName TEXT NOT NULL
);
CREATE TABLE TransmissionType (
TransmissionTypeId INTEGER PRIMARY KEY AUTOINCREMENT,
TransmissionTypeName TEXT NOT NULL
);
CREATE TABLE Vehicle (
VehicleId INTEGER PRIMARY KEY AUTOINCREMENT,
TransmissionTypeId INTEGER REFERENCES TransmissionType (TransmissionTypeId) ON DELETE NO ACTION
ON UPDATE NO ACTION,
FuelTypeId INTEGER REFERENCES FuelType (FuelTypeId) ON DELETE NO ACTION
ON UPDATE NO ACTION,
Make TEXT NOT NULL,
Model TEXT NOT NULL,
Odometer INTEGER NOT NULL,
EnginePower INTEGER,
EngineDisplacement INTEGER,
Year TEXT,
PlateNumber TEXT,
VIN TEXT
);
CREATE TABLE Refueling (
RefuelingId INTEGER PRIMARY KEY AUTOINCREMENT,
VehicleId INTEGER REFERENCES Vehicle (VehicleId) ON DELETE CASCADE
ON UPDATE NO ACTION,
StationName TEXT NOT NULL,
UnitPrice TEXT NOT NULL,
Volume TEXT NOT NULL,
TotalCost TEXT NOT NULL,
Odometer INTEGER NOT NULL,
RefuelingDate TEXT NOT NULL
);
CREATE TABLE Service (
ServiceId INTEGER PRIMARY KEY AUTOINCREMENT,
VehicleId INTEGER REFERENCES Vehicle (VehicleId) ON DELETE CASCADE
ON UPDATE NO ACTION,
ServiceName TEXT NOT NULL,
ServiceCost TEXT NOT NULL,
Odometer INTEGER NOT NULL,
ServiceDate TEXT
);
CREATE TABLE ServiceItem (
ServiceItemId INTEGER PRIMARY KEY AUTOINCREMENT,
ServiceId INTEGER REFERENCES Service (ServiceId) ON DELETE CASCADE
ON UPDATE NO ACTION,
ItemName TEXT NOT NULL,
ItemCost TEXT NOT NULL
);
Dziękuję bardzo za każdą pomocą i życzę miłego dnia.