[已解决问题]
解决于 2007-12-21 15:34
<P><SPAN id=span_1360>name id<BR>网络 1<BR>汽车 2<BR>动物 3<BR>摄影 4<BR>影视 5<BR>数据库中存储的是id,页面显示的时候需要显示name。大家是在程序逻辑里面处理的还是在数据库中查询处理。<BR></SPAN><SPAN>如果是多选列表的情况又怎么处理比较方便呢。是在数据库中存储为1,2,3呢还是存成外键关联的三行数据呢。这时候显示需要是 网络,汽车,动物。<BR>很久以前就在为这个问题困扰了。一直没发现比较优美的解决方案。看了些开源的。有很多都是 text 和 value一样的。</SPAN><SPAN><BR>大家平时都是怎么做的呢。<BR></P></SPAN>
问题补充:
从数据库范式的角度来考虑也应该是绑定id。建立关联表。
不过也存在问题。
一 存储id的缺点
如果你需要一次查询多处这类下拉列表的数据的时候就需要关联很多字典表。而且小表多了在存储的时候会占用很多页造成对数据库空间的浪费和频繁翻页造成性能损失。这个也有一个解决思路 把字典都存到一张表中加类别列。缺点是增加了设计的复杂度。
二 中间表的问题。
缺点查询的时候比较复杂,可能需要提供额外的函数才能够查询出 网络,汽车,动物这样的数据。性能可能并不是很高。感觉上也觉得不够优雅。存储的时候也需要把1,2,3之类的数据进行拆分,如果在存储过程中做的话很容易造成死锁。
补充中见表的有点还有一个方便查询和统计。
我目前是存储id 中间表存储多选数据来处理的。中见表这部分都是在数据库中处理的。也就是说提交到数据库的数据是1,2,3。查询出来的是网络,动物,汽车。
暗香浮动
|
菜鸟二级
|
园豆:
361
提问于:2007-12-19 14:44