我需要在Postgres 9.3中为用户存储时区。
逻辑解决方案是创建一个时区名称和偏移表,然后在我的用户表中存储FK引用。
但是,postgres已经有了一个视图pg_timezone_names,它显示了Postgres知道的时区名称。仅仅引用这些名称似乎是有意义的,而不是创建我自己的完全相同名称的表。但是,pg_timezone_names是一个视图,因此无法引用。
是否有一个系统表保存这些时区名称是可以安全引用的,或者这样做是不是一个坏主意?
答案 0 :(得分:2)
而不是FK引用,你应该只是反规范化。使用IANA time zone identifier(例如'America/Los_Angeles'
)向用户存储时区的字符串名称。这些ID为used by Postgres,也可与其他系统互换。
请记住,时区不能仅由偏移量表示。更多信息请参阅"时区!=偏移" the timezone tag wiki。
答案 1 :(得分:0)
情况比情况更糟糕 - 时区列表反复实现 - 某些时区可以删除,有些时区可能是新的。