我计划用PostgreSQL构建数据库,以了解数据库和地理空间查询的使用。
我使用的数据是多个测量站,它们具有不同时间段的数据,但都基于每日值。每个站都有一个特定的站号,空间信息和它测量的不同值。
我对结构的想法是,我使用一个模式来获取包含一个包含站号和空间信息的表的站信息。
对于每个站,我将创建一个名为
的自己的模式sta_STN
其中 STN 将是电台的号码。在这里,我想将我所拥有的信息拆分到不同的表格,以便在以后每个站点测量不同的值时更舒适地评估它。
schema | table
---------|---------------------------------------------
stations | all (station number, spatial information)
sta_STN | general (date, other information)
| values of kind 1 (date, measuring information regarding kind 1)
| values of kind 2 (date, measuring information regarding kind 2)
| values of kind 3 (date, measuring information regarding kind 3)
每个sta_STN架构中的所有表都具有日期的主键,因为它保证是唯一的,尽管由于错误可能存在间隙。
最后,我想评估特定时期内每个电台的值。不同电台之间的联系很可能与我无关。
我想知道这个结构是否有意义,因为它没有通过密钥提供数据和站点之间的连接,我可能最终得到大约15k的站点,所以15k模式也是如此。
有关如何设置的任何建议或想法?
答案 0 :(得分:1)
不要那样做。你会痛苦的。
表格组相同类型的数据。站信息是相同类型的数据。这意味着stations
表,其中包含表示数字和位置的相应字段。
测量在理论上也是相同类型的数据,因此请考虑您正在捕获的确切数据。尝试为单个表开发一个模式,其中可以包含来自任何工作站的每个可能的测量。不要害怕有多列:我曾经在装配线测试台上工作,其中单个“测量”由多个扭矩和角度组合组成,表示为列torque_1
,angle_1
,{{1在给定工作站的给定时间戳下,},torque_2
等等。如果您的电台测量完全不同的东西,它会变得更加棘手。您是否最好分成不同的度量表或将angle_2
和value_n
列分类,这取决于您的具体情况,因此我无法与之对话。
您可能想要将包含单个值和单位列的表组成的“子测量”分解出来;这是一个陷阱,称为实体属性值或EAV(反)模式。查询EAV数据非常困难。每次测量需要一行,以便能够有效地进行查询。