存储与数据库中的数值相关联的标签或文本:一个好的设计?

时间:2012-02-02 18:05:00

标签: database database-design

所以我想显示用户的国家/地区或国家/地区下拉菜单。

假设我有一个用户表:

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

国家/地区是重新反映“items_country”表格的PK“id”列的外键

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

我总是以这种方式设计我的数据库:我的一些应用程序需要接近100种“项目” 对于具有非常大的值集的项目,我将创建自己的数据库表(“items_countries”)并将其他表分组到一个巨大的“项目”表中。

这种方法让我的客户满意,他们需要通过基于Web的数据库管理来更改标签或在特定于其工作的项目中添加值。但是考虑到大多数这些项目从未改变(国家,性别......),是否值得将它们存储在数据库中?

静态数组方法怎么样?优点:减少数据库表的数量?,缺点:没有外键,没有删除级联/验证。

这不是性能问题,因为这两种方法都可能导致缓存,而是数据库/应用程序设计问题。

你的方法是什么?

1 个答案:

答案 0 :(得分:3)

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

通常,如果有一小部分数据很少变化,那么在库或配置文件中对其进行编码就是我要采取的方向。当数据太大或需要与其他信息相关时,我可能会把它放在数据库中。

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