所以我想显示用户的国家/地区或国家/地区下拉菜单。
假设我有一个用户表:
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的数据库管理来更改标签或在特定于其工作的项目中添加值。但是考虑到大多数这些项目从未改变(国家,性别......),是否值得将它们存储在数据库中?
静态数组方法怎么样?优点:减少数据库表的数量?,缺点:没有外键,没有删除级联/验证。
这不是性能问题,因为这两种方法都可能导致缓存,而是数据库/应用程序设计问题。
你的方法是什么?
答案 0 :(得分:3)
在我的书中,这实际上取决于应用程序和用户需求。我过去都做过这两件事。
通常,如果有一小部分数据很少变化,那么在库或配置文件中对其进行编码就是我要采取的方向。当数据太大或需要与其他信息相关时,我可能会把它放在数据库中。
在确定要采取的路线时,我还要做的一件事是列出将信息放入代码/数据库中的优点和缺点,然后根据出现的信息做出决定。