2017-05-25 16 views
0

美好的一天大家,我沒有在網上找到我的問題的任何答案。我在我的數據庫中有一些表只包含幾行,並沒有更多。例如:我應該只爲少數幾行創建表格嗎?

1- status_orders (payed, declined, shipped, delivered, returned, ...) 

2- payment_means (card, cheque, bank transfer, paypal, ...) 

知道我有一個多語種網站,我要創建包含翻譯這意味着更多的結合了其他表...

你覺得我應該繼續做這樣或乾脆使用PHP數組並將其密鑰存儲在數據庫中,或者有另一種更好的方法來處理這個問題!

非常感謝

回答

1

我相信將這些值存儲在數據庫中是一件好事。

如果另一個系統想要從數據庫中查詢數據,那麼該系統可能知道這些狀態是什麼。如果這些狀態被封裝在代碼中,情況就不會如此。

但是,對於翻譯,我看到3個選項:

  • 有您存儲它們的表(會導致更多的加盟就像你剛纔提到的)
  • 有一個字段的每個值的表和翻譯存儲到JSON陣列格式

    [{語言: 「FR」,值: 「描述杜類型」},{語言: 「EN」, 值: 「描述類型」}]

  • 商店的類型在你的PHP代碼的翻譯

+0

感謝Elferone的回覆。其實我們不會與任何可能要求我們的數據庫用於這些領域的外部系統一起工作! 對於翻譯,我現在使用2個表格(status_orders&status_orders_translations),但希望優化這個。但就數據庫設計而言,使用表格僅用於增長數據並不更好? – Websphere

+0

我沒有看到使用表來存儲這些類型的數據的任何問題。至於你的翻譯表,你可以做一個通用的。在這種情況下,每次將實體添加到模型時都不需要創建表格。只是一個建議! – Elferone

+0

這是絕對沒有問題的,但我剛纔聽說如果一個表包含永遠不會增長的數據,最好以不同的方式做,因爲我們可能會有無用的JOINS,這可能會減慢查詢速度,這就是爲什麼我要發佈它:) – Websphere

1

有些時候是有意義的有一個排表一個列。所以,奇數大小的表有時是「正確的使用」。

PHP是一個誘人的選擇,但你會如何「堅持」信息?如果你可以將這個小表替換成別的東西,那可能比混合隱喻(SQL和PHP)更簡單。

將數據庫視爲所有數據的「真相源」。將您的客戶端(PHP)視爲操縱該數據的「業務邏輯引擎」「呈現」它(例如通過網頁)。

+0

感謝瑞克的回覆。「堅持信息」是什麼意思?那麼,在一個包含大約8個表的查詢中,我已經運行了一些測試,並注意到使用1或2個表進行JOIN會將查詢時間增加大約0.2秒。此外,討論中的表格還需要爲每個翻譯提供額外的表格:/ – Websphere

+0

「堅持」意味着將數據保存到某個地方,以便在下次運行該程序時記住它。如果沒有什麼需要保存的話,這一點是沒有意義的。 'JOIN'不應該增加那麼多;讓我們看看查詢和'SHOW CREATE TABLE';也許缺少一個指數 - 特別是一個「綜合」指數。 –

+0

好的,謝謝你的解釋;)沒有必要保存,因爲這些值不會改變,或者我可以添加一個新的訂單狀態,但它不會每年發生一次......: )我現在沒有完成數據庫設計,我會更新我的初始職位;) – Websphere

相關問題