精华帖 (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做。是不是行不通呢? 是不是我的表的设计方式有问题。应该怎么设计才更高效,方便呢? 请大家指教。我是小鸟。脑子也不太灵光。请尽量详细点。多谢。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-03-10
我的办法是
建立两个表:一个蔬菜的实体表,一个是价格表 价格表里用蔬菜的id作为外键,另外有自己的id、日期、价格几个字段 这样添加新的蔬菜只需要在实体表里添加记录即可。 (不过不知道这样是不是效率最好的) |
|
返回顶楼 | |
发表时间: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能拼成这样的么? |
|
返回顶楼 | |
发表时间:2007-03-11
表结构设计不合理。
1. 如果有新增蔬菜的需求,你不得不改变表结构。 2. 如果有几种蔬菜下市了,冗余严重。 按照2楼的设计就可以了。 |
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |
发表时间:2007-03-12
你说的这个效果也很好办啊,把菜的价格映射成蔬菜pojo下的一个List,这样你得到所有的蔬菜列表就可以了
|
|
返回顶楼 | |
发表时间:2007-03-12
将列转成行可以解决添加蔬菜的问题
2楼的应该能解决问题 |
|
返回顶楼 | |
发表时间:2007-03-12
按照2楼的方式,设计两个表。
一个实体表结构为 id 蔬菜名 第二个表是价格表,结构为 id 价格 日期 |
|
返回顶楼 | |
发表时间: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作出来呢? 原理复杂但实现很清晰的.... |
|
返回顶楼 | |
发表时间:2007-03-12
好.谢谢大家.是我想复杂了.
另外: JavaEye是个好地方 |
|
返回顶楼 | |