2012-02-02 49 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

在我的书中,这实际上取决于应用程序和用户的需求。我过去都做过。

通常,如果有一小部分数据很少发生变化,那么将其编码到库或配置文件中是我将采取的方向。当数据变得太大或需要与附加信息相关时,那么我可能会将其放入数据库中。

我在确定采取哪条路线时还要做的一件事是列出将信息放入代码/数据库中的优点和缺点,然后根据出现的信息做出决定。

相关问题