论坛首页 Java企业应用论坛

hibernate可以对于这样的表结构应该怎样做?

浏览 8586 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-10  

需求大概是这样的:

有N种蔬菜。每种蔬菜的价格每天是不同的。

我设计的表结构如下:

日期(DAY)

蔬菜1  

 蔬菜2   

 蔬菜3   

 蔬菜4

....

即:

日期(DAY) 蔬菜1    蔬菜2    蔬菜3    蔬菜4     。。。

07-1-1             0.40       0.50      0.60      0.70        。。。

07-1-2             0.60        0.40     0.62      0.40        。。。

07-1-3             0.86       0.35      0.24      0.56        。。。

现在的问题是过一段时间后也许会增加几种菜。用户想自己可以手动加。那么我想hibernate的模设应该是无能为力了?

我现在用传统的jsp实现了这样的功能。现在我想用hibernate做。是不是行不通呢?

是不是我的表的设计方式有问题。应该怎么设计才更高效,方便呢?

请大家指教。我是小鸟。脑子也不太灵光。请尽量详细点。多谢。

   发表时间:2007-03-10  
我的办法是
建立两个表:一个蔬菜的实体表,一个是价格表
价格表里用蔬菜的id作为外键,另外有自己的id、日期、价格几个字段
这样添加新的蔬菜只需要在实体表里添加记录即可。
(不过不知道这样是不是效率最好的)
0 请登录后投票
   发表时间:2007-03-11  
dyingcow 写道
我的办法是
建立两个表:一个蔬菜的实体表,一个是价格表
价格表里用蔬菜的id作为外键,另外有自己的id、日期、价格几个字段
这样添加新的蔬菜只需要在实体表里添加记录即可。
(不过不知道这样是不是效率最好的)


您的意思是这样?
--------------------------
tbl_sc
id   
name
--------------------------
tbl_sc_value
id
date
value
---------------------------
那么表记录可能是这样:
id   sc_id  date       value
1      1    07-02-12   0.40
2      1    07-02-13   0.42
3      1    07-02-14   0.45
4      2    07-02-12   0.23
.      .    ...        ...

现在我的价格表是这样
id   date       a1     a2      a3     a4      a5    ...
1    07-02-12   0.40   0.23    0.41   0.78    0.12
..   ....       ...    ...     ...    ...     ...
那么我如果有30种菜.一天的记录就只存一条就行了.
按照上面老兄的做法,一天的数据就得存30条了.是不是这样?
而且我想显示的格式是这样的
id            name         07-02-12         07-02-13        07-02-14       07-02-15
1             白菜           0.40             0.23            0.50           0.36
2             土豆           0.26             0.14            0.62           0.42
sql能拼成这样的么?  
0 请登录后投票
   发表时间:2007-03-11  
表结构设计不合理。
1. 如果有新增蔬菜的需求,你不得不改变表结构。
2. 如果有几种蔬菜下市了,冗余严重。
按照2楼的设计就可以了。
0 请登录后投票
   发表时间:2007-03-12  
嗯.我大概明白了.我开始也想这样设计的.不过那样设计的话不大好做出我想要的显示效果:像这样.

id name   07-02-12 07-02-13  07-02-14   07-02-15
1   白菜   0.40     0.23      0.50       0.36
2   土豆   0.26     0.14      0.62       0.42
0 请登录后投票
   发表时间:2007-03-12  
你说的这个效果也很好办啊,把菜的价格映射成蔬菜pojo下的一个List,这样你得到所有的蔬菜列表就可以了
0 请登录后投票
   发表时间:2007-03-12  
将列转成行可以解决添加蔬菜的问题
2楼的应该能解决问题
0 请登录后投票
   发表时间:2007-03-12  
按照2楼的方式,设计两个表。
一个实体表结构为
id  蔬菜名
第二个表是价格表,结构为
id  价格  日期
0 请登录后投票
   发表时间:2007-03-12  
id 菜名 日期

select 菜名 from table group by 菜名

之后生成以下sql

select * from Table where 菜名一
select * from Table where 菜名二
select * from Table where 菜名三
select * from Table where 菜名四


为什么非要用一条sql作出来呢?
原理复杂但实现很清晰的....
0 请登录后投票
   发表时间:2007-03-12  
好.谢谢大家.是我想复杂了.
另外:
JavaEye是个好地方
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics