`
cui09
  • 浏览: 115405 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

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

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

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

相关推荐

    hibernate动态生成表结构

    本文将深入探讨如何利用Hibernate的特性来实现动态生成表结构,以及如何处理表与表之间的关系。 一、Hibernate概述 Hibernate是一个开源的Java库,它的主要功能是将Java类与数据库表进行映射,使得程序员可以使用...

    springmvc整合Hibernate的登录实例带表结构

    - 创建实体类:根据数据库表结构,创建对应的 Java 实体类,使用注解(@Entity、@Table、@Column 等)进行映射。 - 定义 DAO:创建 Hibernate 的数据访问对象(DAO),使用 Session 和 Transaction 进行数据库操作...

    Hibernate自动创建表结构示例--Oracle

    通过研究这些文件,我们可以深入理解如何在实际项目中应用Hibernate自动创建Oracle数据库的表结构。 总之,本示例展示了如何利用Hibernate ORM框架与Oracle数据库协同工作,自动化处理数据库表的创建,这对于简化...

    Hibernate 单表实现树结构

    标题中的“Hibernate 单表实现树结构”是指在Java开发中,使用Hibernate框架来处理具有层级关系的数据,例如组织架构、目录树等。在数据库中,这种数据通常使用单表自连接的方式存储,即一张表中某个字段指向自身,...

    hibernate多表联合查询

    **表结构:** - `customer`表: - `IdCustomer`:顾客ID - `Name`:顾客姓名 - `charge`表: - `IdCharge`:收费ID - `Fee`:费用 - `ChargeTimeBegin`:收费开始时间 - `ChargeTimeEnd`:收费结束时间 ###...

    hibernate中创建表

    5. **自动建表策略**:Hibernate提供了自动创建、更新、验证表结构的策略。在配置文件中添加以下行,可以指定Hibernate在启动时自动创建数据库表: ```xml &lt;property name="hbm2ddl.auto"&gt;create ``` 注意,`create`...

    Hibernate自动生成表demo

    其中,`hibernate.hbm2ddl.auto`属性是关键,它可以设置为`create`、`update`或`validate`,分别表示在启动时创建新表、更新现有表或验证表结构是否匹配。在本例中,我们使用`create-drop`,意味着每次应用启动时会...

    Hibernate连接MySql数据库生成表结构

    总结,通过以上步骤,我们可以利用Hibernate连接到MySQL数据库并根据定义的Java实体类自动生成表结构。这种方式方便了数据库设计和开发流程,尤其是在快速迭代的项目中。在实际开发中,还可以结合其他工具,如IDEA的...

    利用hibernate中的SchemaExport生成数据表

    相反,我们可以直接从对象模型出发,让Hibernate根据这些对象自动生成对应的数据库表,这更符合人类思考问题的方式。 在Hibernate 3中,提供了`hbm2ddl`功能,它可以根据配置文件和实体类自动创建或更新数据库模式...

    hibernate的映射表生成器

    6. **数据库表的生成**: 一旦映射文件准备好,开发者可以使用Hibernate的`SchemaExport`工具,依据映射文件生成或更新数据库表结构。这个GUI工具可能会包含一键生成表的功能,使整个过程更加便捷。 7. **逆向工程**...

    Hibernate 多表连接分页查询示范项目

    总结,"Hibernate 多表连接分页查询示范项目"是一个实用的示例,它展示了如何在实际应用中利用 Hibernate Criteria API 实现复杂查询和分页,对于学习和掌握 Hibernate 的高级特性和数据库操作技巧非常有帮助。...

    hibernate立体结构文档

    《Hibernate立体结构文档详解》 Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是底层的数据访问。本篇文章将基于“hibernate3.0...

    Hibernate初之单表映射学习例子

    【标题解析】 "Hibernate初之单表映射学习例子" 这个标题表明我们将探讨的是...通过这个“Hibernate初之单表映射学习例子”,初学者可以掌握Hibernate的基本操作,为进一步深入学习和使用Hibernate打下坚实的基础。

    hibernate 资料hibernate 资料hibernate 资料

    - 自动化程度高:可以根据XML配置文件自动生成相应的数据库表结构及对象到关系的映射。 - 对象持久化:将Java对象的状态持久化存储到数据库中。 - 支持多种数据库:通过不同的数据库方言配置,Hibernate可以很好...

    Hibernate通过配置文件自动生成表

    在Java世界中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本篇将详细讲解如何通过Hibernate配置文件自动生成数据库表,以及相关的知识...

    hibernate根据字段生成数据库表

    这种情况下,手动为每个数据库创建相同的表结构既耗时又容易出错。Hibernate 提供了一个非常实用的功能——基于实体类自动生成数据库表,这不仅能够显著提高开发效率,还能减少人为错误。本文将详细介绍如何利用 ...

    Hibernate映射树形结构

    Hibernate可以使用单个表来存储树形结构,通过一个自增的`id`字段以及一个表示父节点的`parent_id`字段来建立层级关系。这种方式简单,但查询效率较低,因为需要递归查询来构建整个树。 2. **adjacency list模型**...

    Hibernate体系结构的概要图

    [Hibernate体系结构的概要图] Hibernate体系结构的概要图 Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心接口在任何开发中都会用到。...

    Hibernate参数设置一览表

    可选值包括`create`(每次启动时创建新表)、`update`(根据实体类更新表结构)、`validate`(验证表结构是否匹配实体类)、`none`(不进行任何操作)。在生产环境中,通常设置为`validate`。 7. **hibernate....

    struts2与hibernate整合单表增删改查(超完整)

    同时,还需要为每个实体类创建对应的映射文件(*.hbm.xml),声明表结构和字段与Java类的映射关系。 **7. 操作截图** 教程中可能包含了操作过程的截图,可以帮助初学者更好地理解每个步骤,如数据库设计、配置文件...

Global site tag (gtag.js) - Google Analytics