2017-06-09 42 views
-1

我想將常量列表保存在數據庫列中。 可用的選項是字母表的部分:上,下,數字,符號。 用戶已經可以選擇其中的多個,但我怎樣才能將它們保存到數據庫。我認爲數據庫關係不適合4個常量?在數據庫中存儲常量的列表

+0

爲什麼你認爲一張桌子不合適? –

+0

只有4個常量。 – R3turnz

+0

是的,你說過。但是,你爲什麼認爲這不合適呢? –

回答

0

實際上,擁有一張桌子是很好的選擇 - 它很簡單,而且使用此解決方案添加更多選項或修改現有選項非常簡單。

雖然,我可以理解這個問題的原因,但它可能讓整個表只存儲4個值的「開銷」。

其他選項是:

  • 使用Enum類型的字段,既PostgreSQLSQLAlchemy有這方面的支持。但是,如果要添加更多值或編輯現有值(對於該表,您只需要使用更復雜的SQL),那麼修改Enum字段會更加複雜。在DB

  • 使用integer(或smallint)領域,並有適當的常數在你的代碼(CODE_UPPER = 1CODE_LOWER=2等)。在數據庫級別,還可以有一個限制條件來限制字段值只有可能值的集合。我不太喜歡這個解決方案,因爲它可能不太可靠(如果你沒有這個約束,你可能會意外地保存錯誤的值),當你查看數據庫的時候不太明顯。

P.S.不知道爲什麼你被低估了,也許人們被「數據庫關係不適合4個常量」冒犯了,可能是「除了有4個值的表以外,還有其他選擇嗎?」。 另外我猜測PostgreSQLSQLAlchemy從標籤,這將是很好在你的問題中提到這一點。

P.P.S.有了上面的書面,在重新閱讀你的回答後,我認爲你也可能有興趣保存多項選擇的價值(例如upper + lower在同一時間)。在這種情況下,您仍然可以使用上面所有的選項和一些特定的添加項(例如具有帶單獨表格的多對多表格;使用ARRAY字段來保存多個值;或者在Python中使用常量並將它們保存爲數據庫中的單個整數,您可以將值編碼爲位 - 第0位表示上位,第0位和第1位 - 表示上下等等)。