Skip to content
Snippets Groups Projects
Commit ecaf695c authored by Sara Savanovic Djordjevic's avatar Sara Savanovic Djordjevic
Browse files

update: schema & db

parent 56b6a2f2
No related branches found
No related tags found
1 merge request!2App2
This commit is part of merge request !2. Comments created here will be created in the context of that merge request.
No preview for this file type
CREATE TABLE Measurement (
MeasurementID INT PRIMARY KEY,
SensorID INT,
TimeMeasured DATETIME,
WaterBodyName TEXT,
FOREIGN KEY (SensorID) REFERENCES Sensor(SensorID),
FOREIGN KEY (WaterBodyName) REFERENCES BodyOfWater(Name)
-- Body of water
CREATE TABLE BodyOfWater (
Name TEXT PRIMARY KEY
);
-- Single sensor
CREATE TABLE Sensor (
SensorID INTEGER PRIMARY KEY,
SensorID INT PRIMARY KEY,
SensorType TEXT CHECK(SensorType IN ('LiDar', 'Magnetic', 'Other')),
Active BOOLEAN
);
CREATE TABLE Data (
MeasurementID INT,
Latitude FLOAT,
Longitude FLOAT,
IceTop FLOAT,
IceBottom FLOAT,
CalculatedThickness FLOAT,
Accuracy FLOAT,
PRIMARY KEY (MeasurementID, Longitude, Latitude),
FOREIGN KEY (MeasurementID) REFERENCES Measurement(MeasurementID)
-- Measurement taken at a given time
CREATE TABLE Measurement (
MeasurementID INT PRIMARY KEY,
SensorID INT NOT NULL,
TimeMeasured DATETIME NOT NULL,
WaterBodyName TEXT NOT NULL,
WholeAverageThickness FLOAT NOT NULL,
FOREIGN KEY (SensorID) REFERENCES Sensor(SensorID),
FOREIGN KEY (WaterBodyName) REFERENCES BodyOfWater(Name)
);
CREATE TABLE Corner (
CornerID INT,
CREATE TABLE SubDivision (
MeasurementID INT,
CornerLatitude FLOAT,
CornerLongitude FLOAT,
PRIMARY KEY (CornerID, MeasurementID),
FOREIGN KEY (MeasurementID) REFERENCES Measurement(MeasurementID)
SubDivisionID INT,
GroupID INT NOT NULL,
MinimumThickness FLOAT NOT NULL,
AverageThickness FLOAT NOT NULL,
CenterLatitude FLOAT NOT NULL,
CenterLongitude FLOAT NOT NULL,
Accuracy FLOAT,
FOREIGN KEY (MeasurementID) REFERENCES Measurement(MeasurementID),
PRIMARY KEY (MeasurementID, SubDivisionID)
);
CREATE TABLE BodyOfWater (
Name TEXT PRIMARY KEY
);
-- Indexes
CREATE INDEX idx_measurement_waterbodyname ON Measurement(WaterBodyName);
CREATE INDEX idx_measurement_timemeasured ON Measurement(TimeMeasured);
-- Test data
INSERT INTO Sensor (SensorID, SensorType, Active) VALUES
(1, 'LiDar', 1),
(2, 'Magnetic', 1),
(3, 'Other', 0);
INSERT INTO Measurement (MeasurementID, SensorID, TimeMeasured, WaterBodyName) VALUES
(1, 2, '2024-01-01 10:00:00', 'Mjosa'),
(2, 2, '2024-02-04 11:00:00', 'Mjosa'),
(3, 1, '2024-02-13 12:00:00', 'Mjosa');
-- Measurement 1
INSERT INTO Data (MeasurementID, Latitude, Longitude, IceTop, IceBottom, CalculatedThickness, Accuracy) VALUES
(1, 60.7070, 10.9771, 8.0, 3.0, 5.0, 1.0),
(1, 60.7066, 10.9772, 7.5, 2.5, 5.0, 1.0),
(1, 60.7067, 10.9773, 7.5, 2.5, 5.0, 1.0),
(1, 60.7062, 10.9774, 7.5, 2.5, 5.0, 1.0),
(1, 60.7067, 10.9775, 7.0, 2.0, 5.0, 1.0);
INSERT INTO Corner (CornerID, MeasurementID, CornerLatitude, CornerLongitude) VALUES
(1, 1, 60.7060, 10.9770),
(2, 1, 60.7061, 10.9771),
(3, 1, 60.7062, 10.9772),
(4, 1, 60.7063, 10.9773);
-- Measurement 2
INSERT INTO Data (MeasurementID, Latitude, Longitude, IceTop, IceBottom, CalculatedThickness, Accuracy) VALUES
(2, 60.6366, 10.8171, 7.2, 2.2, 5.0, 1.5),
(2, 60.6367, 10.8172, 7.0, 2.0, 5.0, 1.5),
(2, 60.6368, 10.8172, 7.1, 2.1, 5.0, 1.5),
(2, 60.6369, 10.8172, 7.3, 2.3, 5.0, 1.5),
(2, 60.6367, 10.8173, 7.4, 2.4, 5.0, 1.5),
(2, 60.6367, 10.8179, 7.5, 2.5, 5.0, 1.5);
INSERT INTO BodyOfWater(Name) VALUES
('Mjosa');
INSERT INTO Corner (CornerID, MeasurementID, CornerLatitude, CornerLongitude) VALUES
(1, 2, 60.6360, 10.8170),
(2, 2, 60.6361, 10.8171),
(3, 2, 60.6362, 10.8172),
(4, 2, 60.6363, 10.8173);
INSERT INTO Measurement (MeasurementID, SensorID, TimeMeasured, WaterBodyName, WholeAverageThickness) VALUES
(1, 2, '2024-01-01 10:00:00', 'Mjosa', 5.8),
(2, 2, '2024-02-04 11:00:00', 'Mjosa', 7.6),
(3, 1, '2024-02-13 12:00:00', 'Mjosa', 4.1);
-- Measurement 3
INSERT INTO Data (MeasurementID, Latitude, Longitude, IceTop, IceBottom, CalculatedThickness, Accuracy) VALUES
(3, 60.7366, 10.8471, 7.5, 2.5, 5.0, 2.5),
(3, 60.7369, 10.8471, 7.4, 2.4, 5.0, 2.5),
(3, 60.7367, 10.8480, 7.3, 2.3, 5.0, 2.5),
(3, 60.7368, 10.8481, 7.2, 2.2, 5.0, 2.5),
(3, 60.7370, 10.8475, 7.1, 2.1, 5.0, 2.5);
INSERT INTO SubDivision (MeasurementID, SubDivisionID, GroupID, MinimumThickness, AverageThickness, CenterLatitude, CenterLongitude, Accuracy) VALUES
(1, 1, 1, 3.2, 4.5, 60.765, 10.723, 1.2),
(1, 2, 1, 2.8, 4.3, 60.780, 10.776, 1.1),
(1, 3, 2, 4.1, 5.7, 60.768, 10.845, 1.3),
(1, 4, 2, 3.5, 5.0, 60.749, 10.783, 1.4);
INSERT INTO Corner (CornerID, MeasurementID, CornerLatitude, CornerLongitude) VALUES
(1, 3, 60.7360, 10.8470),
(2, 3, 60.7361, 10.8471),
(3, 3, 60.7362, 10.8472),
(4, 3, 60.7363, 10.8473);
INSERT INTO BodyOfWater(Name) VALUES
('Mjosa');
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment