2012-02-02 46 views
0

所以我想顯示一個用戶的國家或國家下拉菜單。在數據庫中存儲與數值相關的標籤或文本:一個好的設計?

比方說,我有一個用戶表:

CREATE TABLE users 
(
    "id" serial, --PK 
    "name" character varying, 
    ... 
    "country" integer --FK 
); 

國家是rerefences「items_country」表

CREATE TABLE items_countries 
(
    "id" integer, --PK 
    "text_en" character varying, 
    "continent" integer --FK to table "items_continent" 
); 

我總是設計我的數據庫的PK「ID」列的外鍵這樣:我的一些應用程序需要接近100種「物品」。
對於具有非常大的一組值的項目,我會創建自己的數據庫表(「items_countries」)並將其他項分組在一個巨大的「項目」表中。

這種方法讓我的客戶感到滿意,他們需要通過數據庫基於Web的管理來更改標籤或在其工作特定項目中添加值。但考慮到大多數這些項目永遠不會改變(國家,性別......),是否值得將它們存儲在數據庫中?

靜態數組方法呢?優點:減少數據庫表的數量,缺點:沒有外鍵,沒有刪除級聯/驗證。

這不是性能問題,因爲這兩種方法都可能導致緩存,而是數據庫/應用程序設計問題。

這是什麼方法?

回答

3

在我的書中,這實際上取決於應用程序和用戶的需求。我過去都做過。

通常,如果有一小部分數據很少發生變化,那麼將其編碼到庫或配置文件中是我將採取的方向。當數據變得太大或需要與附加信息相關時,那麼我可能會將其放入數據庫中。

我在確定採取哪條路線時還要做的一件事是列出將信息放入代碼/數據庫中的優點和缺點,然後根據出現的信息做出決定。

相關問題