Presentation is loading. Please wait.

Presentation is loading. Please wait.

Dorm Name PK Occupancy Dorm Name PK Occupancy HighResDorm StartDate HighResDorm StartDate LowResDorm StartDate WaterSensorID WaterOnLineDate ElecSensorID.

Similar presentations


Presentation on theme: "Dorm Name PK Occupancy Dorm Name PK Occupancy HighResDorm StartDate HighResDorm StartDate LowResDorm StartDate WaterSensorID WaterOnLineDate ElecSensorID."— Presentation transcript:

1 Dorm Name PK Occupancy Dorm Name PK Occupancy HighResDorm StartDate HighResDorm StartDate LowResDorm StartDate WaterSensorID WaterOnLineDate ElecSensorID ElecOnLineDate LowResDorm StartDate WaterSensorID WaterOnLineDate ElecSensorID ElecOnLineDate Floor FloorNum PK Occupancy Floor FloorNum PK Occupancy HRWaterSensor SensorID PK OnLineDate Units HRWaterSensor SensorID PK OnLineDate Units HRElecSensor SensorID PK OnLineDate Units HRElecSensor SensorID PK OnLineDate Units HREReading Date PK Time PK Value HREReading Date PK Time PK Value LRWReading Date PK Time PK Value LRWReading Date PK Time PK Value LREReading Date PK Time PK Value LREReading Date PK Time PK Value AmbientValue Date PK Time PK Temp Light AmbientValue Date PK Time PK Temp Light Observer NetworkID PK Observer NetworkID PK FloorWebPage FWPageID PK Date Time FloorWebPage FWPageID PK Date Time DormWebPage DWPageID PK Date Time DormWebPage DWPageID PK Date Time LocatedAt PK Would accept 1..1 instead of or in addition to Would accept 0..1 instead of or in addition to 0..* Complete coverage No overlap Consistent with table definitions, but think it should be with change to tables too Consistent with table definitions, but think it should be with change to tables too PK 0..* PK 0..* PK 0..* 1..* PK HRWReading Date PK Time PK Value HRWReading Date PK Time PK Value 0..* Undoubtedly, there are other UML diagrams consistent with the table and assertion definitions that were distributed as the “gold standard”, but they are not likely to deviate much from this and still be consistent

2 Dorm Name PK Occupancy Dorm Name PK Occupancy HighResDorm StartDate HighResDorm StartDate Floor FloorNum PK Occupancy Floor FloorNum PK Occupancy AmbientValue Date PK Time PK Temp Light AmbientValue Date PK Time PK Temp Light Observer NetworkID PK Observer NetworkID PK FloorWebPage FWPageID PK Date Time FloorWebPage FWPageID PK Date Time DormWebPage DWPageID PK Date Time DormWebPage DWPageID PK Date Time LocatedAt 0..* PK 0..* CREATE TABLE Observer ( NetworkID CHAR(20), DormName VARCHAR(35), PRIMARY KEY (NetworkID), FOREIGN KEY (DormName) REFERENCES Dorm ON DELETE CASCADE ON UPDATE CASCADE); CREATE TABLE Dorm ( DormName VARCHAR(35), MaxOccupancy SMALLINT, PRIMARY KEY (DormName)); CREATE TABLE AmbientValues ( AmbientReadingsDate DATE, AmbientReadingsTime TIME, AmbientTemp TINYINT NOT NULL, AmbientLight CHAR(2), PRIMARY KEY (AmbientReadingsDate, AmbientReadingsTime)); CREATE TABLE HighResDorm ( DormName VARCHAR(35), StartDate DATE, PRIMARY KEY (DormName), FOREIGN KEY (DormName) REFERENCES Dorm ON DELETE CASCADE ON UPDATE CASCADE); CREATE TABLE Floor ( DormName VARCHAR(35), FloorNum TINYINT, MaxOccupancy SMALLINT, PRIMARY KEY (DormName, FloorNum), FOREIGN KEY (DormName) REFERENCES HighResDorm ON DELETE CASCADE ON UPDATE CASCADE); CREATE TABLE FloorWebPage ( DormName VARCHAR(35), FloorNum TINYINT, FWPageID INTEGER, CreateDate DATE NOT NULL, CreateTime TIME NOT NULL, ObserverNetworkID CHAR(20) NOT NULL, PRIMARY KEY (FWPageID), FOREIGN KEY (ObserverNetworkID) REFERENCES Observer (NetworkID), ON DELETE NO ATION ON UPDATE CASCADE, FOREIGN KEY (DormName, FloorNum) REFERENCES Floor ON DELETE NO ACTION ON UPDATE CASCADE ); DormName VARCHAR(35), FloorNum TINYINT, DormName VARCHAR(35) NOT NULL, FloorNum TINYINT NOT NULL, OR CREATE TABLE DormWebPage ( DWPageID INTEGER, CreateDate DATE NOT NULL, CreateTime TIME NOT NULL, ObserverNetworkID CHAR(20) NOT NULL, DormName VARCHAR(35) NOT NULL, PRIMARY KEY (DWPageID), FOREIGN KEY (ObserverNetworkID) REFERENCES Observer (NetworkID) ON DELETE NO ACTION ON UPDATE CASCADE, FOREIGN KEY (DormName) REFERENCES Dorm ON DELETE NO ACTION ON UPDATE CASCADE );

3 Dorm Name PK Occupancy Dorm Name PK Occupancy HighResDorm StartDate HighResDorm StartDate LowResDorm StartDate WaterSensorID WaterOnLineDate ElecSensorID ElecOnLineDate LowResDorm StartDate WaterSensorID WaterOnLineDate ElecSensorID ElecOnLineDate Floor FloorNum PK Occupancy Floor FloorNum PK Occupancy HRWaterSensor SensorID PK OnLineDate Units HRWaterSensor SensorID PK OnLineDate Units LRWReading Date PK Time PK Value LRWReading Date PK Time PK Value LREReading Date PK Time PK Value LREReading Date PK Time PK Value PK 0..* PK 0..* PK 0..* PK HRWReading Date PK Time PK Value HRWReading Date PK Time PK Value 0..* CREATE TABLE LowResDorm ( DormName VARCHAR(35), StartDate DATE, LRElecSensorID INTEGER NOT NULL, UNIQUE(LRElecSensorID), /*UNIQUE not inferable from UML */ LRElecSensorOnLineDate DATE, LRWaterSensorOnLineDate DATE, LRWaterSensorID INTEGER, PRIMARY KEY (DormName), FOREIGN KEY (DormName) REFERENCES Dorm ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE HRWSensor ( DormName VARCHAR(35) NOT NULL, FloorNum TINYINT NOT NULL, HRWaterSensorID INTEGER, HRWaterSensorOnLineDate DATE, PRIMARY KEY (HRWaterSensorID), FOREIGN KEY (DormName, FloorNum) REFERENCES Floor ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE HRWReading ( HRWaterSensorID INTEGER, HRWReadingDate DATE, HRWReadingTime TIME, HRWValue INTEGER NOT NULL, PRIMARY KEY (HRWaterSensorID, HRWReadingDate, HRWReadingTime), FOREIGN KEY (HRWaterSensorID) REFERENCES HRWaterSensor ON DELETE NO ACTION ON UPDATE CASCADE); CREATE TABLE LREReading ( DormName VARCHAR(35), LREReadingDate DATE, LREReadingTime TIME, LREValue INTEGER NOT NULL, PRIMARY KEY (DormName, LREReadingDate, LREReadingTime), FOREIGN KEY (DormName) REFERENCES LowResDorm ON DELETE NO ACTION ON UPDATE CASCADE); CREATE TABLE LRWReading ( DormName VARCHAR(35), LRWReadingDate DATE, LRWReadingTime TIME, LRWValue INTEGER NOT NULL, PRIMARY KEY (DormName, LRWReadingDate, LRWReadingTime) FOREIGN KEY (DormName) REFERENCES LowResDorm ON DELETE NO ACTION ON UPDATE CASCADE

4 Dorm Name PK Occupancy Dorm Name PK Occupancy HighResDorm StartDate HighResDorm StartDate LowResDorm StartDate WaterSensorID WaterOnLineDate ElecSensorID ElecOnLineDate LowResDorm StartDate WaterSensorID WaterOnLineDate ElecSensorID ElecOnLineDate Floor FloorNum PK Occupancy Floor FloorNum PK Occupancy HRElecSensor SensorID PK OnLineDate Units HRElecSensor SensorID PK OnLineDate Units HREReading Date PK Time PK Value HREReading Date PK Time PK Value PK 0..* 1..* 0..* No overlap CREATE ASSERTION CompleteCoverOverLowAndHighRes ( CHECK (NOT EXISTS (SELECT D.DormName FROM Dorm D EXCEPT SELECT LRD.DormName FROM LowResDorm LRD) EXCEPT SELECT HRD.DormName FROM HighResDorm HRD ) ); Complete coverage CREATE ASSERTION FloorParticipatesHRElecSensor ( CHECK (NOT EXISTS (SELECT * FROM Floor F WHERE (F.DormName, F.FloorNum) NOT IN (SELECT HRES.DormName, HRES.FloorNum FROM HRElecSensor HRES))); CREATE TABLE HRElecSensor ( DormName VARCHAR(35) NOT NULL, FloorNum TINYINT NOT NULL, HRElecSensorID INTEGER, HRElecSensorOnLineDate DATE, PRIMARY KEY (HRElecSensorID), FOREIGN KEY (DormName, FloorNum) REFERENCES Floor ON DELETE CASCADE ON UPDATE CASCADE ); CREATE ASSERTION NoOverlapBetweenHighAndLowRes ( CHECK (NOT EXISTS (SELECT * FROM LowResDorm L, HighResDorm H WHERE L.DormName=H.DormName)); CREATE TABLE HREReading ( HRElecSensorID INTEGER, HREReadingDate DATE, HREReadingTime TIME, HREValue INTEGER NOT NULL, PRIMARY KEY (HRElecSensorID, HREReadingDate, HREReadingTime), FOREIGN KEY (HRElecSensorID) REFERENCES HRElecSensor ON DELETE NO ACTION ON UPDATE CASCADE);


Download ppt "Dorm Name PK Occupancy Dorm Name PK Occupancy HighResDorm StartDate HighResDorm StartDate LowResDorm StartDate WaterSensorID WaterOnLineDate ElecSensorID."

Similar presentations


Ads by Google