适用于引用表的双向关系



我正在存储测试数据,其中可能包含各种略有不同的格式(TAI,UTC,GPS等)的时间。 我不确定我是否要在输入之前强制将时间转换为任意一致的格式(或者也许这是最好的方法?),但假设我可以保持灵活性,我计划使用时间类型的参考表(查找表),如下所示:

ref_time_types
--------------
id (PK)
desc (UTC, GPS, TAI, etc)

我还会有一个表来存储实际时间:

tbl_time
-------------
id (PK)
ref_time_types.id (FK)
seconds
year
.
.
.

我应该在它们之间建立双向关系,还是从tbl_time到ref_time_types的单向多对一关系? 例如,我想不出任何想要找到所有UTC时间的原因。 这是是否建立双向关系的指导原则吗? 在引用表的关系方面是否有任何最佳实践?

你真的需要保留格式吗?

  1. 如果不是,则不要将其存储在数据库中。数据库用于存储数据,它不应该关心数据在 UI 中的表示方式。因此,我建议您在UI中根据需要处理输入(如果这意味着多种格式,那就这样吧),但在将其存储到数据库之前将其转换为一致的格式并完全摆脱ref_time_types
  2. 如果是,那么也继续存储格式,但我仍然使用日期/时间本身的一致表示形式,因为它在查询时需要较少的转换(您只需要转换查询的输入条件,而不是所有与所需格式不匹配的行)。

另外,请使用DBMS支持的日期/时间类型 - 我看不出将各种日期/时间组件拆分为单独的字段的特殊原因,除非您实际上想查询这些单独的组件(并希望为它们编制索引)。

我应该在这些之间建立双向关系,还是从tbl_time到ref_time_types的单向多对一关系?

如上所述,在第一种情况下,您不需要任何关系(因为只有一个表)。第二种情况的关系将是多比一。

最新更新