0

如果这是一个愚蠢的问题,请原谅,但我是关系数据库的新手,似乎找不到答案(可能是因为其他人都已经知道答案)。

我存储的测试数据可能包括各种格式的时间,这些格式略有不同(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 时间。这是是否建立双向关系的指导原则吗?在引用表的关系方面是否有任何最佳实践?

如果这有什么不同,我正在使用 python、sqlalchemy 和 sqlite。

4

1 回答 1

2

你真的需要保留格式吗?

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

此外,请使用 DBMS 支持的日期/时间类型 - 我没有看到将各种日期/时间组件拆分为单独字段的特殊原因,除非您真的想查询这些单独的组件(并希望对它们进行索引)。

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

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

于 2012-06-05T21:30:49.023 回答