【发布时间】:2013-05-03 12:50:21
【问题描述】:
我是数据库设计的新手,我正在尝试修复现有的混乱。
我有一个事件列表(包含事件的参数列),每个事件都有另一个事件详细信息表。
例如,这可能是一堆科学仪器的使用,然后每个运行事件在运行时都会收集一堆数据。
你会推荐什么结构?
我的第一个想法是为使用历史创建一个表,然后每一行都链接到自己的表,该表存储其收集的数据。但是如何将行链接到它的表?整个表是否有类似外键的东西?
我的第二个想法是拥有一个单一的收集数据表,并使用 P-key、F-key 将使用历史链接到收集的数据。但是如果我有数百台仪器,每台仪器每天收集数千个数据点,那么这张表会变得非常大(可能是 GB/年)。这样可以吗? (我是一名微控制器/嵌入式工程师,所以任何超过 MB 的东西对我来说都是巨大的。)
任何建议将不胜感激。谢谢!
【问题讨论】:
-
这真的取决于特定的实现。您能向我们展示一些示例数据吗?我认为您的任何一个想法都可能奏效,但哪个最好——或者是否有第三种更好的方法——实际上取决于您的数据是什么样的。
-
顺便说一句,每年增加 1GB 的数据应该不是问题。我想很多人会认为数 GB 的数据库非常小。
-
@JeffRosenberg 不幸的是,我不能发布任何真实的例子,所以我必须使用假设。您能否就哪些因素使一种方法优于另一种方法提出建议?
-
在我假设的情况下,“使用历史”表有一堆小的 nvarchar()、Int、Float 和 Datetime,还有一个大的 nvarchar。 “事件详情”是一堆整数和浮点数。
-
对我来说,这只是一个问题,即哪个空间浪费最少。如果使用您的第一种方法,您需要多少个子表?如果使用您的第二个,使用表中有多少列是可重复使用的,有多少列仅用于某些工具?
标签: sql foreign-keys primary-key database-schema