首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

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

2012-11-17 
hibernate可以对于这样的表结构应该怎样做?需求大概是这样的:有N种蔬菜。每种蔬菜的价格每天是不同的。我设

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

需求大概是这样的:

有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做。是不是行不通呢?

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

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

1 楼 dyingcow 2007-03-10   我的办法是
建立两个表:一个蔬菜的实体表,一个是价格表
价格表里用蔬菜的id作为外键,另外有自己的id、日期、价格几个字段
这样添加新的蔬菜只需要在实体表里添加记录即可。
(不过不知道这样是不是效率最好的) 2 楼 cui09 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能拼成这样的么?   3 楼 dada 2007-03-11   表结构设计不合理。
1. 如果有新增蔬菜的需求,你不得不改变表结构。
2. 如果有几种蔬菜下市了,冗余严重。
按照2楼的设计就可以了。 4 楼 cui09 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 5 楼 lszone 2007-03-12   你说的这个效果也很好办啊,把菜的价格映射成蔬菜pojo下的一个List,这样你得到所有的蔬菜列表就可以了 6 楼 xly_971223 2007-03-12   将列转成行可以解决添加蔬菜的问题
2楼的应该能解决问题 7 楼 njwander 2007-03-12   按照2楼的方式,设计两个表。
一个实体表结构为
id  蔬菜名
第二个表是价格表,结构为
id  价格  日期 8 楼 抛出异常的爱 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作出来呢?
原理复杂但实现很清晰的.... 9 楼 cui09 2007-03-12   好.谢谢大家.是我想复杂了.
另外:
JavaEye是个好地方 10 楼 cui09 2007-03-12   谢谢大家.是我想复杂了.
另外:
JavaEye是个好地方 11 楼 newman 2007-03-13   cui09: 不要被数据的显示所迷惑,数据的关系存储是有一定的模型和规则的,看看关系数据库设计相关的书,学一学什么是三个范式。newm 12 楼 cui09 2007-03-14   <p>嗯.知道了.我会好好研究的.上学的时候学过.不过只是考试用的上.怎么结合到实际应用中就有点儿难了.</p>
<p>另外是不是我理解的有点儿极端了.数据库的设计是不是完全可以不考虑展示,只要高效,符合设计规则即可?</p>
<p>展示的时候,如果不方便的话,建立那种专门用于展示的台帐表也行吧?</p>

热点排行