目前在学习SSM框架,学到Mybaits的时候,对于数据库进行建模是必要的,虽然不是用的强大的PowerDesign工具,面向mysql的时候,觉得workbench页面太low,虽然是官方推荐的工具,但是Navicat就可以帮我解决啦!Mybaits对象模型一对一、一对多以及多对多,暂且就用
商品交易
这个简单案例作为example吧。
商品交易模型
为了不太复杂,暂且建四张表:
- user : 用户表
- items:商品表
createtime—生产日期 - orders:订单表
num—订单编号 - orderdetail:订单明细表
item-num—-商品数量
这些表的属性就顾名思义吧,此处就不作更多解释了
分析:
为什么需要建一个orderdetial
表呢?试想,如果没有此表,那么orders
表中还需要添加属性item_id
和item_num
,于是会想,一个订单只能买一种类型的商品吗,平时我们上淘宝、京东恐怕买多种商品的的时候也不在少数吧,那再在orders
表里面添加一个栏位item_id_1
和item_num_1
? 这种做法肯定是不可取的,这样会产生两个问题:
- 一次可购买商品种类受限
- 数据表冗余大
因此,我们需要额外添加一个订单详情表orderdetial
,这样,orders—->orderdetial形成一对多的关系,orderdetial
表中把order_id作为外键,便解决了这个问题。
还有很多例子也是一样的原理,例如学生选课:
- Student表: 学生信息,id主键
- Course表:课程信息,id主键
- SelectCourse表:选课信息,id主键,stu_id外键,cour_id外键
假如小明id
为1,这样的话在SelectCourse
表中可以有多条stu_id=1
但是cour_id
不同的记录,从而实现一人可以选多门课程。