小弟新到一小公司,居然当起了主力开发人员,从需求到总体设计文档 都是头儿指导下
我来编写,然后他给意见 . 最近设计数据库表
有这样一需求
有A,B,C三款类型的产品
有一笔订单里有 A类型产品3个, B类型产品2个, C类型产品2个
受hibernate的影响比较大
(在mysql下)我是这样考虑的 设计成 两个表(订单表, 类型表) 多对多 当然这样hibernate生成的时候会 多出一个订单和产品类型的关联表
订单表如下
id 订单号 收货人 收货地址
1 201035 张三 北京
2 201052 李四 南京
3 201018 王五 天津产品类型表如下
id 产品类型代号 产品类型名
1 A 一天精通java
2 B 两天精通java
3 C 三天精通java关联表 (这两个字段 联合为 复合主键)
订单id 产品类型id
1 1 --- 对应A类型
1 2 --- 对应B类型
1 3 --- 对应C类型
2 1
2 2
2 3 这看起来没什么不对劲的,直接在hibernate里面多对多就好了, 但是 当要实现 一笔订单里有 A类型产品3个, B类型产品2个, C类型产品2个 这个需求的时候
关联表中的数据如下: 订单表的数据如下:订单id 产品类型id 产品类型id 类型代号
1 1 --- 对应A类型 1 A
1 2 --- 对应B类型 2 B
1 3 --- 对应C类型 3 C
1 4 ----对应A类型 4 A
1 5 ----对应A类型 5 A
1 6 ----对应B类型 6 B
1 7 ---对应C类型 7 C
现在还只是一条订单(交易)记录, 就让这上面两个表数据在膨胀, 当有多条订单, 这些表的数据会越来越多的,
头儿坚决不赞成我这样的搞法
他的设计是(他不懂hibernate,所以就没考虑表对应的实体类之间的关系)
订单表如下
id 订单号 收货人 收货地址
1 201035 张三 北京
2 201052 李四 南京
3 201018 王五 天津产品类型表如下
id 产品类型代号 产品类型名
1 A 一天精通java
2 B 两天精通java
3 C 三天精通java还一个 订单包含产品表 ( A类型产品3个, B类型产品2个, C类型产品2个 )
id 订单id 产品类型id 该类型产品的个数
1 1 1 (对应A类型) 3
2 1 2 (对应B类型) 2
3 1 3 (对应C类型) 2
4 新订单id 产品类型id N
===============================================
在他的努力说服下(我们为此讨论了三次,我为这个搞了一天时间) ,我认为他设计的的确比较合理
现在的问题来了, 这样的设计用hibernate我无法映射(无法确定实体类及关系),有哪位知道的哥们麻烦点解下或者你有更好的建议,也请不吝赐教,最好能映射成实体类,让hibernate能自动生成出你设计的表结构谢谢大家了
我来编写,然后他给意见 . 最近设计数据库表
有这样一需求
有A,B,C三款类型的产品
有一笔订单里有 A类型产品3个, B类型产品2个, C类型产品2个
受hibernate的影响比较大
(在mysql下)我是这样考虑的 设计成 两个表(订单表, 类型表) 多对多 当然这样hibernate生成的时候会 多出一个订单和产品类型的关联表
订单表如下
id 订单号 收货人 收货地址
1 201035 张三 北京
2 201052 李四 南京
3 201018 王五 天津产品类型表如下
id 产品类型代号 产品类型名
1 A 一天精通java
2 B 两天精通java
3 C 三天精通java关联表 (这两个字段 联合为 复合主键)
订单id 产品类型id
1 1 --- 对应A类型
1 2 --- 对应B类型
1 3 --- 对应C类型
2 1
2 2
2 3 这看起来没什么不对劲的,直接在hibernate里面多对多就好了, 但是 当要实现 一笔订单里有 A类型产品3个, B类型产品2个, C类型产品2个 这个需求的时候
关联表中的数据如下: 订单表的数据如下:订单id 产品类型id 产品类型id 类型代号
1 1 --- 对应A类型 1 A
1 2 --- 对应B类型 2 B
1 3 --- 对应C类型 3 C
1 4 ----对应A类型 4 A
1 5 ----对应A类型 5 A
1 6 ----对应B类型 6 B
1 7 ---对应C类型 7 C
现在还只是一条订单(交易)记录, 就让这上面两个表数据在膨胀, 当有多条订单, 这些表的数据会越来越多的,
头儿坚决不赞成我这样的搞法
他的设计是(他不懂hibernate,所以就没考虑表对应的实体类之间的关系)
订单表如下
id 订单号 收货人 收货地址
1 201035 张三 北京
2 201052 李四 南京
3 201018 王五 天津产品类型表如下
id 产品类型代号 产品类型名
1 A 一天精通java
2 B 两天精通java
3 C 三天精通java还一个 订单包含产品表 ( A类型产品3个, B类型产品2个, C类型产品2个 )
id 订单id 产品类型id 该类型产品的个数
1 1 1 (对应A类型) 3
2 1 2 (对应B类型) 2
3 1 3 (对应C类型) 2
4 新订单id 产品类型id N
===============================================
在他的努力说服下(我们为此讨论了三次,我为这个搞了一天时间) ,我认为他设计的的确比较合理
现在的问题来了, 这样的设计用hibernate我无法映射(无法确定实体类及关系),有哪位知道的哥们麻烦点解下或者你有更好的建议,也请不吝赐教,最好能映射成实体类,让hibernate能自动生成出你设计的表结构谢谢大家了
解决方案 »
- 求助:s:hidden隐藏变量中的数组传递到Action是null?
- ajax dwr如何存储request对象
- 如何导出oracle数据库表中的insert语句 (在线等)
- 做过ArcGIS的Java程序员们请进来签到咯!
- 在TOMCAT5.0.28中如何配置ORACLE9.0.0.1的数据库连接池(在线急等!!!)
- 菜鸟的问题!!
- 各位大侠,请教一下,在jsp中怎样使用RMI,在线等
- 关于struts实现翻页功能我这里有参考的元代吗,但是不能实现
- 打开IE自动打开网页,注册表了也不行,重启后就又回来了,急急急,在线等,谢谢了
- java中的中文字符问题,高分相送
- [急]求救ORACLE数据导出为XML格式(高手请进)
- c/s压力测试一般用什么工具
我来编写,然后他给意见 . 最近设计数据库表
有这样一需求
有A,B,C三款类型的产品
有一笔订单里有 A类型产品3个, B类型产品2个, C类型产品2个
受hibernate的影响比较大
(在mysql下)我是这样考虑的 设计成 两个表(订单表, 类型表) 多对多 当然这样hibernate生成的时候会 多出一个订单和产品类型的关联表
订单表如下
id 订单号 收货人 收货地址
1 201035 张三 北京
2 201052 李四 南京
3 201018 王五 天津产品类型表如下
id 产品类型代号 产品类型名
1 A 一天精通java
2 B 两天精通java
3 C 三天精通java关联表 (这两个字段 联合为 复合主键)
订单id 产品类型id
1 1 --- 对应A类型
1 2 --- 对应B类型
1 3 --- 对应C类型
2 1
2 2
2 3 这看起来没什么不对劲的,直接在hibernate里面多对多就好了, 但是 当要实现 一笔订单里有 A类型产品3个, B类型产品2个, C类型产品2个 这个需求的时候
关联表中的数据如下: 订单表的数据如下:订单id 产品类型id 产品类型id 类型代号
1 1 --- 对应A类型 1 A
1 2 --- 对应B类型 2 B
1 3 --- 对应C类型 3 C
1 4 ----对应A类型 4 A
1 5 ----对应A类型 5 A
1 6 ----对应B类型 6 B
1 7 ---对应C类型 7 C
现在还只是一条订单(交易)记录, 就让这上面两个表数据在膨胀, 当有多条订单, 这些表的数据会越来越多的,
头儿坚决不赞成我这样的搞法
他的设计是(他不懂hibernate,所以就没考虑表对应的实体类之间的关系)
订单表如下
id 订单号 收货人 收货地址
1 201035 张三 北京
2 201052 李四 南京
3 201018 王五 天津产品类型表如下
id 产品类型代号 产品类型名
1 A 一天精通java
2 B 两天精通java
3 C 三天精通java还一个 订单包含产品表 ( A类型产品3个, B类型产品2个, C类型产品2个 )
id 订单id 产品类型id 该类型产品的个数
1 1 1 (对应A类型) 3
2 1 2 (对应B类型) 2
3 1 3 (对应C类型) 2
4 新订单id 产品类型id N
===============================================
在他的努力说服下(我们为此讨论了三次,我为这个搞了一天时间) ,我认为他设计的的确比较合理
现在的问题来了, 这样的设计用hibernate我无法映射(无法确定实体类及关系),有哪位知道的哥们麻烦点解下或者你有更好的建议,也请不吝赐教,最好能映射成实体类,让hibernate能自动生成出你设计的表结构谢谢大家了
订单表如下
id 订单号 收货人 收货地址 该类型产品的个数
1 201035 张三 北京 3
2 201052 李四 南京 2
3 201018 王五 天津 1产品类型表如下
id 产品类型代号 产品类型名
1 A 一天精通java
2 B 两天精通java
3 C 三天精通java还一个 订单包含产品表 ( A类型产品3个, B类型产品2个, C类型产品2个 )
id 订单id 产品类型id
1 1 1 (对应A类型)
2 1 2 (对应B类型)
3 1 3 (对应C类型)
4 新订单id 产品类型id N
把第三张表作为关系表 这样应该可以
你设计不出实体类,是你理解的问题,你不妨这样理解
(1)订单实体
订单表如
id 订单号 收货人 收货地址
1 201035 张三 北京
2 201052 李四 南京
3 201018 王五 天津
(2)产品类型实体
产品类型表如下
id 产品类型代号 产品类型名
1 A 一天精通java
2 B 两天精通java
3 C 三天精通java
(3)订单明细实体,就是说一个订单其实是包含多个订单明细的,(就是你们说的订单包含产品)
表结构如下
id 订单id 产品类型id 该类型产品的个数
1 1 1 (对应A类型) 3
2 1 2 (对应B类型) 2
3 1 3 (对应C类型) 2
4 新订单id 产品类型id N这样 订单 1----N 订单明细
订单明细 N----1 产品类型
这样难道还不理解吗,你订单和产品之间直接建关系是不合理的,因为没有考虑到数量的问题