数据库 数据模型分析思路

1.分析每张表记录的数据内容

      对于数据表较多的系统,可以采用分模块的方式进行分析。

2.分析每张表重要字段设置

      非空字段,外键字段

3.数据库级别 表与表之间的关系

      外键关系

4.表与表之间的业务关系

      在分析表与表之间的业务关系时,一定要建立在某种业务意义基础上分析

假设存在这样的用户购买商品的需求,要求设计如下数据表。

用户表(user),订单表(orderForm),订单明细表(orderDetails),商品表(commodity)

           

需求分析后,存在如下关系

1.user--->orderForm:

           一个用户可以创建多个订单:一对多

           一份订单只能被一个用户创建: 一对一

2.orderForm--->orderDetails:

           一份订单可以包含多条订单明细:一对多

           一条订单明细只能包含在一份订单内:一对一

3.orderDtails--->commodity:

           一条订单明细内只能包含一种商品:一对一

           一种商品可以包含在多条订单明细中:一对多

4.orderForm--->commodity:

           一份订单内可以存在多种商品:一对多

           一种商品内可以包含在多份订单内:一对多

5.user--->commodity:

           一个用户可以购买多种商品:一对多

           一种商品可以被多个用户购买:一对多

所以数据库实体关系模型大致可以画为:

根据关系设计数据库

用户表:

订单表:

           订单明细表:

商品表:

附带建表语句:


drop table if exists user;
create table user (
id int not null auto_increment,
u_name varchar(32) not null,
u_sex char(1),
u_age int,
birthday datetime,
address varchar(255), 
remark varchar(100),
primary key(id) 
)ENGINE=innodb character set utf8 collate utf8_general_ci;

drop table if exists orderForm;
create table orderForm(
id int not null auto_increment,
u_id int not null,
number varchar(32) not null,
createDate datetime not null,
remark varchar(100),
primary key(id),
foreign key(u_id) references user(id)
)ENGINE=innodb character set utf8 collate utf8_general_ci;


drop table if exists orderDetails;
create table orderDetails(
id int not null auto_increment,
order_id int not null,
c_id int not null,
c_amount int not null,
primary key(id),
foreign key(order_id) references orderForm(id),
foreign key(c_id) references commodity(id)
)ENGINE=innodb character set utf8 collate utf8_general_ci;

drop table if exists commodity;
create table commodity(
id int not null auto_increment,
c_name char(255) not null,
price double(9,2) not null,
description varchar(255),
c_picture varchar(512),
c_createDate datetime,
primary key(id)
)ENGINE=innodb character set utf8 collate utf8_general_ci;

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值