数据库建表
E-R图
(一)根据E-R图(实体关系图),分析当前系统具有以下几个模块:
用户,订单,商品,购物车
(二)几个模块间具有如下的关系:
①一个用户有多个订单(用户与订单之间是 一对一关系)
②一个订单可包含多个商品,一个商品可以被多个订单下单
(商品与订单之间是 多对多关系)
(三)建库、建表
create databases shopingmall;
use shopingmall;
记一下遇到的bug
“cannot add foreign key constraint”
翻译一下这句话的意思就是无法建立外键。
一般遇到这个问题,进行如下的检查即可解决:
a、两张表里要设主键和外键的字段的数据类型或者数据长度应保持一致 (注意varchar的长度,还有 int和tinyint)
b、建立关联的两张表均不可以有记录存在
c、两个表的引擎应保持一致
(可以用如下查看表引擎的语句:show table status from <数据库名> where name=‘表名’;)
show table status from 数据库名 where name=‘表名’;
d、要设置外键的字段不能为主键
e、所参考的字段必须为主键
最后一条便是我这次遇到的,想在order表中添加字段bName,并且设置bName为外键(参考buyer表),但是在buyer表中,bName并不是主键,于是便出现如上的错误。
资源
这次可用到的软件是 Navicat,可用来建E-R图,和一切数据库操作。