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>