我想阅读不同的生物传感器以及平板电脑传感器数据,并将它们存储在SQL数据库中。生物传感器数据例如是皮肤电导,心率,心率变异性等。这些只是数字(带单位)。关于平板电脑传感器数据,我有触摸输入,加速度,前凸轮,手写笔输入等。基本上这些也只是数字,除了手写笔和前凸轮。
关于SQL数据库方案,我想创建一个包含列 timestamp ,用户ID ,平板电脑ID ,传感器的表ID ,单位和值。密钥是(时间戳,用户ID ,平板电脑ID ,传感器ID )因为可以测量不同的传感器同时。我正在使用平板电脑记录所有传感器值(也包括生物传感器数据),因此总是有平板电脑ID。这也意味着数据库保留在平板电脑上。我正在使用Android。
我不知道这些是否合理。也许每个传感器都有一个单独的表是好的。你会如何制定这样一个计划,还是有另一个好的计划提案呢?
其次,我应该如何存储手写笔输入和前凸轮(视频)录像?我想过将视频录制存储在数据库中而不是外部,然后以某种方式从数据库链接到这个外部文件(例如通过文件名)。
将存储大量数据。我将在60分钟内收集传感器数据并且每秒写入几个值(例如,对于生物传感器数据,每1/10秒有一个新值)。因此,数据库变得太大或太慢可能是一个问题。顺便说一下,我只想写入数据库。读取数据库我将在第二步(离线)中完成。
答案 0 :(得分:1)
我会倾向于每个传感器的单独表格。原因:
我还会创建一个表来捕获与设备交互的一段时间。我们称之为“会话”。
这将为其他表提供密钥,还允许您定义视频和手写笔数据文件与该会话相关联的内容。
所以你会有这样的事情:
session (
session_id,
user_id,
tablet_id,
video_file,
stylus_data_file,
session_start_time,
session_end_time,
... any other session-level data ...
)
然后为每个传感器都有一个表格如下:
heart_rate_readings (
session_id,
timestamp,
value
)
注意:我对手写笔数据知之甚少,无法提供明智的意见。以上假设它将存储在单独的文件中。但如果它只是您正在接收的坐标流,您可以考虑将其存储在数据库中的单独表中。
答案 1 :(得分:1)
一些想法:
我假设每个传感器的数据总是使用相同的单位。也就是说,如果传感器#7今天给出的是欧姆值,那么它明天就不会给出以毫米为单位的值。更合理的是,我想可能会有一些设置让你在英寸和厘米之间切换等。但是如果单位总是相同的,那么不要将单位与值一起存储在同一个表中。有一个单独的"传感器"为该传感器提供单位的表,可能是关于传感器的其他信息,如名称。
每个传感器是否有一个表或每个传感器都有一个单独的表:一个表的最大优点是,如果添加新传感器,则不必更改架构,它只是数据:将记录添加到传感器表中,您就完成了。如果有大量数据,这张表可能会变大。但每个记录都很小:我认为传感器ID和平板电脑ID可以是int。用户ID可能是int或guid。
我从未尝试将视频存储在数据库中。我存储了图像,与其他数据相比,这些图像非常庞大。视频通常至少为兆字节。我的直觉是将它们存储为单个文件并只存储文件名。我很乐意屈服于那些真正尝试将视频放入数据库的人,并且可以说出结果如何。