簡體   English   中英

雙向關系是否適合參考表?

[英]Is a bidirectional relationship appropriate for reference tables?

如果這是一個愚蠢的問題,請原諒我,但我是關系數據庫的新手,似乎無法找到答案(可能是因為其他人都知道答案)。

我正在存儲測試數據,這些測試數據可能包含各種格式稍有不同的時間(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,如果這有任何區別的話。

你真的需要保留格式嗎?

  1. 如果不是,則不要將其存儲在數據庫中。 數據庫用於存儲數據,它不應該關心如何在UI中表示數據。 所以,我建議你在UI中處理你想要的輸入(如果這意味着多種格式,就這樣吧),但是在將它存儲到數據庫之前將其轉換為一致的格式並完全擺脫ref_time_types
  2. 如果是,那么繼續存儲格式,但我仍然使用日期/時間本身的一致表示,因為它在查詢時需要較少的轉換(您只需要轉換查詢的輸入條件,而不是所有與所需格式不匹配的行)

另外,請使用DBMS支持的日期/時間類型 - 我沒有看到將各種日期/時間組件拆分為單獨字段的特定原因, 除非您確實要查詢這些單獨的組件(並希望對它們編制索引)。

我應該在這些之間建立雙向關系,還是從tbl_time到ref_time_types的單向多對一關系?

如上所述,在第一種情況下您不需要任何關系(因為只有一個表)。 在第二種情況下,關系將是多對一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM