多个 table 具有相同的列或一个 table 具有额外的 FK 列
Multiple tables with same columns or one table with an additional FK column
我正在做一个项目,我的传感器会将一些数据(比如说健康监测)存储到数据库中,以便稍后通过 API 检索。我将在多个位置使用同一组传感器(大约 10 个不同的传感器)。该数据将每五分钟存储在数据库中。因此,每 5 分钟我将为每组传感器创建一个新行。
因为我会有多个位置,而且这需要可扩展,所以我不知道我是否应该为每个位置设置一个 table,或者我是否应该有一个巨大的 table一个额外的列,用于标识该行属于哪个位置。
例如:
如果我有10个监控站,我是否应该有10个table同列不同名称
(station1, station2, station3, station4...),
每 5 分钟接收 1 行 ?
或者我应该有一个 table 和一个额外的列来指定监控站的位置
(行:timeStamp、bloodSugar、heartBeat、...、stationName),
每 5 分钟接收 10 行 ?
So every 5 minutes I will have a new row for each set of sensors in my DB.
好吧,仅仅因为它来自传感器控制器就插入一个新行是非常愚蠢的。那将是 un 可扩展的,您将用不会更改的数据填充数据库:重复。
- 仅当该行中的 一个 数据值自 (Station, TimeStamp) 的前一行发生更改时才需要插入新行。
Since I will have multiple locations, and this needs to be scalable, I don't know if I should have one table for each location .
这与可伸缩性无关。
这只是一个严重的归一化错误。
or if I should have one huge table with an extra column to identify which location that row belongs to
这是规范化的。
它不是一个“额外”列,它是一个普通的标识列。
table 不是“巨大”或“庞大”的。对于任一选项,数据库中的总行数是相同的。索引将很好地处理查询。
- 商业 RDBMS 每秒处理数百万行。 MySQL 不是商业的,甚至不符合 SQL 的要求(术语 SQL 的使用具有误导性),并且它没有服务器架构。因此不要指望它的商业表现。但是,它应该能够轻松地管理每 5 分钟插入 0 到 10 行。
For example: If I have 10 monitoring stations, should I have 10 tables with same columns and different names (station1, station2, station3, station4...)?
如上所述,绝对不是。
Or should I have a massive table that will get [zero to] 10 new rows every 5 minutes with an extra column specifying the location of the monitoring station? (row: timeStamp, bloodSugar, heartBeat, ..., stationName)
如上所述,是的。
关系数据模型
站点事实(具有某些属性)和阅读事实(具有某些属性)是两个独立的事物。
注意 • 表示法
我所有的数据模型都在 IDEF1X 中呈现,这是自 1993 年以来的关系数据库建模标准
我的IDEF1X Introduction是初学者必读的
我正在做一个项目,我的传感器会将一些数据(比如说健康监测)存储到数据库中,以便稍后通过 API 检索。我将在多个位置使用同一组传感器(大约 10 个不同的传感器)。该数据将每五分钟存储在数据库中。因此,每 5 分钟我将为每组传感器创建一个新行。
因为我会有多个位置,而且这需要可扩展,所以我不知道我是否应该为每个位置设置一个 table,或者我是否应该有一个巨大的 table一个额外的列,用于标识该行属于哪个位置。
例如:
如果我有10个监控站,我是否应该有10个table同列不同名称
(station1, station2, station3, station4...),
每 5 分钟接收 1 行 ?或者我应该有一个 table 和一个额外的列来指定监控站的位置
(行:timeStamp、bloodSugar、heartBeat、...、stationName),
每 5 分钟接收 10 行 ?
So every 5 minutes I will have a new row for each set of sensors in my DB.
好吧,仅仅因为它来自传感器控制器就插入一个新行是非常愚蠢的。那将是 un 可扩展的,您将用不会更改的数据填充数据库:重复。
- 仅当该行中的 一个 数据值自 (Station, TimeStamp) 的前一行发生更改时才需要插入新行。
Since I will have multiple locations, and this needs to be scalable, I don't know if I should have one table for each location .
这与可伸缩性无关。
这只是一个严重的归一化错误。
or if I should have one huge table with an extra column to identify which location that row belongs to
这是规范化的。
它不是一个“额外”列,它是一个普通的标识列。
table 不是“巨大”或“庞大”的。对于任一选项,数据库中的总行数是相同的。索引将很好地处理查询。
- 商业 RDBMS 每秒处理数百万行。 MySQL 不是商业的,甚至不符合 SQL 的要求(术语 SQL 的使用具有误导性),并且它没有服务器架构。因此不要指望它的商业表现。但是,它应该能够轻松地管理每 5 分钟插入 0 到 10 行。
For example: If I have 10 monitoring stations, should I have 10 tables with same columns and different names (station1, station2, station3, station4...)?
如上所述,绝对不是。
Or should I have a
massivetable that will get [zero to] 10 new rows every 5 minutes with anextracolumn specifying thelocation of themonitoring station? (row: timeStamp, bloodSugar, heartBeat, ..., stationName)
如上所述,是的。
关系数据模型
站点事实(具有某些属性)和阅读事实(具有某些属性)是两个独立的事物。
注意 • 表示法
我所有的数据模型都在 IDEF1X 中呈现,这是自 1993 年以来的关系数据库建模标准
我的IDEF1X Introduction是初学者必读的