mysql - 如何为重新测试记录创建模式?
问题描述
这是我当前的架构:
http://sqlfiddle.com/#!9/5d0290
CREATE TABLE `Rooms` (
Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
RoomDescription VARCHAR(30) NOT NULL,
MinTemperature DECIMAL(4,2) NOT NULL,
MaxTemperature DECIMAL(4,2) NOT NULL
);
INSERT INTO `Rooms` (RoomDescription, MinTemperature, MaxTemperature) VALUES
('Room 1', 10, 20),
('Room 2', 15, 20);
CREATE TABLE `Records` (
Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
DateRecorded TIMESTAMP,
RoomId INT NOT NULL,
ActualTemperature DECIMAL(4,2) NOT NULL,
IsValid INT NOT NULL,
FOREIGN KEY (RoomId) REFERENCES `Rooms`(Id)
);
INSERT INTO `Records` (DateRecorded, RoomId, ActualTemperature, IsValid) VALUES
('2021-09-28 08:00:00', 1, 8, 0),
('2021-09-28 08:01:00', 2, 15, 1),
('2021-09-29 08:00:00', 1, 17, 1),
('2021-09-29 08:01:00', 2, 19, 1);
SELECT * FROM `Rooms`;
SELECT * FROM `Records`;
-- Rooms
Id RoomDescription MinTemperature MaxTemperature
1 Room 1 10 20
2 Room 2 15 20
-- Records
Id DateRecorded RoomId ActualTemperature IsValid
1 2021-09-28 08:00:00 1 8 0
2 2021-09-28 08:01:00 2 15 1
3 2021-09-29 08:00:00 1 17 1
4 2021-09-29 08:01:00 2 19 1
概括
房间表:显示特定房间允许的温度和RoomDescription
温度值。Minimum
Maximum
记录表:显示所有记录的记录。它引用RoomId
了与它一起记录的ActualTemperature
。然后对于IsValid
列,如果值介于之间Min
,Max
那么它就是一条Valid
记录。如果它不符合规范,这意味着它是一个InValid
记录。
目标
我需要找到一种方法来重新测试InValid
记录并保留以前结果的历史记录。
我认为是一个好方法
我相信实现我的目标的方法之一是创建一个新表:ReTest-Records
.
CREATE TABLE `ReTest-Records` (
Id INT NOT NULL PRIMARY KEY auto_increment,
DateRecorded TIMESTAMP,
RecordId INT NOT NULL,
ActualTemperature DECIMAL(4,2) NOT NULL,
IsValid INT NOT NULL,
FOREIGN KEY (RecordId) REFERENCES `Records`(Id)
);
INSERT INTO `ReTest-Records` (DateRecorded, RecordId, ActualTemperature, IsValid) VALUES
('2021-09-28 12:30:00', 1, 4, 0), -- ReTest 1
('2021-09-28 16:30:00', 1, 10, 1); -- ReTest 2
在这里,我可以匹配表:ReTest-Records
到Records
表。这使我可以使用以下查询查看重新测试是有效还是无效:
SELECT
*
FROM `Records` r
JOIN `ReTest-Records` rt ON r.Id = rt.RecordId
WHERE r.IsValid = 0 AND rt.IsValid = 1;
上述查询的输出将意味着以下两件事:
记录未重新测试。
记录仍然无效。
然后在我的 C# 应用程序中,我可以为ReTest
.
在查看记录 + 重新测试的历史记录方面,我可以运行以下查询:
SELECT
*
FROM `Records` r
LEFT JOIN `ReTest-Records` rt ON r.Id = rt.RecordId;
问题
我想知道这种方法是否适合记录重新测试的记录?在这种情况下,我不需要构建额外的表并且可以简单地修改我现有的表。
解决方案
推荐阅读
- reporting-services - SSRS - 我应该在什么基础上决定选择数据集过滤器或数据集参数?
- sql - 如果它们具有相同的表名和不同的 table_PK,如何获取最后更改的表
- wordpress - 如何将 webb 图片上传到 wordpress?
- digital-signature - Web Socket 数字签名
- python-3.x - 在 MultiLabelBinarizer 中获取计数
- python - 从服务器执行 python 脚本
- javascript - 如何使用动态时间重新加载 Div
- javascript - 与 IntersectionObserver API 的行为不一致
- python - stanfordNLP 管道 - Python
- jsf - Ajax 事件“选择”不适用于 JSF 2.3 中的 h:selectOneMenu 而它在 2.2 中工作