2012-07-06 76 views
0

我已經做了一些初步的閱讀。數據庫表vs vs/yml屬性值很少變化

Config files vs database tables
Type to use for "Status" columns in a sql table

表:

[video] 
    id 
    title 
    format_id (foreign key) 
    language_id (foreign key) 
    aspect_ratio_id (foreign key) 

[formats] 
    id 
    name 

[languages] 
    id 
    name 

[aspect_ratios] 
    id 
    name 

最後3個表(格式,語言,aspect_ratios)都不會發生太大的變化(如果有的話)。即當我們支持它時,我可能會添加一種新語言。

因此,它是一個很好的做法,以提取這些類型的表(參考而已,幾乎沒有任何更新/插入)到一個獨立的YAML文件中,並讓應用程序邏輯來處理的意見?或者我應該保留數據庫中的所有內容,以保持關係完整性(以數據表成本低)爲代價?

回答

1

您是否需要在這些表上強制執行參照完整性(即外鍵)?如果是,那麼將它們保存在數據庫中,讓DBMS爲您執行。其他種類的完整也一樣。

你打算加入這些表與他人嗎?如果是,請將它們保存在數據庫中,讓數據庫管理系統完成繁重的工作。

你需要在一個事務性的方式來更新他們(雖然很少)?如果是,則讓DBMS爲您提供ACID

你需要備份這些數據嗎?如果是的話,讓它與常規數據庫備份一起發生。

您是否需要確保所有客戶端的數據都相同?如果是的話,像數據庫這樣的中心位置是一個明顯的候選人。

等等,等等...

1

如果它們很少發生變化,可以之前或在部署時,我更喜歡的文件來定義,無論是YAML或JSON。