问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据表由哪两部分组成

发布网友 发布时间:2022-04-23 13:41

我来回答

2个回答

懂视网 时间:2022-05-02 13:05

/*用户表*/ 2 /* 3 CREATE TABLE user ( 4 id int(11) NOT NULL AUTO_INCREMENT COMMENT ‘用户表id‘, 5 username varchar(50) NOT NULL COMMENT ‘用户名‘, 6 password varchar(50) NOT NULL COMMENT ‘用户密码,MD5加密‘, 7 email varchar(50) DEFAULT NULL, 8 phone varchar(50) DEFAULT NULL, 9 question varchar(100) DEFAULT NULL COMMENT ‘找回密码问题‘, 10 answer varchar(100) DEFAULT NULL COMMENT ‘找回密码答案‘, 11 role int(4) NOT NULL COMMENT ‘角色0-管理员,1-普通用户‘, 12 create_time datetime NOT NULL COMMENT ‘创建时间‘, 13 update_time datetime NOT NULL COMMENT ‘最后一次更新时间‘, 14 PRIMARY KEY(id), 15 UNIQUE KEY user_name_unique(username) USING BTREE 16 ) ENGINE = InnoDB AUTO_INCREMENT = 21 DEFAULT CHARSET = utf8 17 */ View Code

ps:将用户名在数据库层面锁定唯一性,可以避免在业务层面再进行加锁同步处理。

2.分类表:

技术分享
 1 /*分类表*/
 2 /*
 3 CREATE TABLE category(
 4  id int(11) NOT NULL AUTO_INCREMENT COMMENT ‘类别id‘,
 5  parent_id int(11) DEFAULT NULL COMMENT ‘父类别id,当id=0时说明是根节点,一级类别‘,
 6  name varchar(50) DEFAULT NULL COMMENT ‘类别名称‘,
 7  status tinyint(1) DEFAULT ‘1‘ COMMENT ‘类别状态1-正常,2-已废弃‘,
 8  sort_order int(4) DEFAULT NULL COMMENT ‘排序编号,同类展示顺序,数值相等则自然排序‘,
 9  create_time datetime DEFAULT NULL COMMENT ‘创建时间‘,
10  update_time datetime DEFAULT NULL COMMENT ‘更新时间‘,
11  PRIMARY KEY(id)
12 ) ENGINE = InnoDB AUTO_INCREMENT = 100032 DEFAULT CHARSET = utf8
13 */
View Code

ps:parent_id作用:这个表需要考虑递归性,并且这个分类有可能是无限层级扩展,我们需要一个递归结束条件。所以这里我们添加一个parent_id属性,当parent_id=0时递归结束。

3.产品表:

技术分享
 1 /*产品表*/
 2 /*
 3 CREATE TABLE product(
 4  id int(11) NOT NULL AUTO_INCREMENT COMMENT ‘商品id‘,
 5  category_id int(11) NOT NULL COMMENT ‘分类id,对应category表的主键‘,
 6  name varchar(100) NOT NULL COMMENT ‘商品名称‘,
 7  subtitle varchar(200) DEFAULT NULL COMMENT ‘商品副标题‘,
 8  main_image varchar(500) DEFAULT NULL COMMENT ‘产品主图,url相对地址‘,
 9  sub_images text COMMENT ‘图片地址,json格式,扩展用‘,
10  detail text COMMENT ‘商品详情‘,
11  price decimal(20,2) NOT NULL COMMENT ‘价格,单位-元,保留两位小数‘,
12  stock int(11) NOT NULL COMMENT ‘库存数量‘,
13  status int(6) DEFAULT ‘1‘ COMMENT ‘商品状态,1-在售,2-下架,3-删除‘,
14  create_time datetime DEFAULT NULL COMMENT ‘创建时间‘,
15  update_time datetime DEFAULT NULL COMMENT ‘更新时间‘,
16  PRIMARY KEY(id)
17 ) ENGINE = InnoDB AUTO_INCREMENT = 26 DEFAULT CHARSET = utf8
18 */
View Code

ps:为什么存url相对地址?业务层在获取主图的时候,我们把图片服务器的前缀拿到之后和main_image进行拼接,这样即使图片服务器迁移,或者域名修改,我们也只需要改代码里的配置文件。

4.购物车表:

技术分享
 1 /*购物车表*/
 2 /*
 3 CREATE TABLE cart(
 4  id int(11) NOT NULL AUTO_INCREMENT,
 5  user_id int(11) NOT NULL,
 6  product_id int(11) DEFAULT NULL COMMENT ‘商品id‘,
 7  quantity int(11) DEFAULT NULL COMMENT ‘商品数量‘,
 8  checked int(11) DEFAULT NULL COMMENT ‘是否选择,1-已勾选,0-未勾选‘,
 9  create_time datetime DEFAULT NULL COMMENT ‘创建时间‘,
10  update_time datetime DEFAULT NULL COMMENT ‘更新时间‘,
11  PRIMARY KEY(id),
12  KEY user_id_index(user_id) USING BTREE
13 ) ENGINE = InnoDB AUTO_INCREMENT = 121 DEFAULT CHARSET = utf8
14 */
View Code

ps:添加了user_id的索引,因为经常利用user_id来查询此表。

5.支付信息表:

技术分享
 1 /*支付信息表*/
 2 /*
 3 CREATE TABLE pay_info(
 4  id int(11) NOT NULL AUTO_INCREMENT,
 5  user_id int(11) DEFAULT NULL COMMENT ‘用户id‘,
 6  order_no bigint(20) DEFAULT NULL COMMENT ‘订单号‘,
 7  pay_platform int(10) DEFAULT NULL COMMENT ‘支付平台:1-支付宝,2-微信‘,
 8  platform_number varchar(200) DEFAULT NULL COMMENT ‘支付宝支付流水号‘,
 9  platform_status varchar(20) DEFAULT NULL COMMENT ‘支付宝支付状态‘,
10  create_time datetime DEFAULT NULL COMMENT ‘创建时间‘,
11  update_time datetime DEFAULT NULL COMMENT ‘更新时间‘,
12  PRIMARY KEY(id)
13 ) ENGINE = InnoDB AUTO_INCREMENT = 53 DEFAULT CHARSET = utf8
14 */
View Code

ps:platform_number解释:生成订单发起支付请求后,会生成远程的支付宝流水号。

6.订单表:

技术分享
 1 /*订单表*/
 2 /*
 3 CREATE TABLE mall_order(
 4  id int(11) NOT NULL AUTO_INCREMENT COMMENT ‘订单id‘,
 5  order_no bigint(20) DEFAULT NULL COMMENT ‘订单号‘,
 6  user_id int(11) DEFAULT NULL COMMENT ‘用户id‘,
 7  shipping_id int(11) DEFAULT NULL,
 8  payment decimal(20,2) DEFAULT NULL COMMENT ‘实际付款金额,单位是元,保留两位小数,整数部分为18位‘,
 9  payment_type int(4) DEFAULT NULL COMMENT ‘支付类型,1-在线支付‘,
10  postage int(10) DEFAULT NULL COMMENT ‘运费,但会是元‘,
11  status int(10) DEFAULT NULL COMMENT ‘订单状态:0-已取消,10-未付款,20-已付款,40-已发货,50-交易成功,60-交易关闭‘,
12  payment_time datetime DEFAULT NULL COMMENT ‘支付时间‘,
13  send_time datetime DEFAULT NULL COMMENT ‘发货时间‘,
14  end_time datetime DEFAULT NULL COMMENT ‘交易完成时间‘,
15  close_time datetime DEFAULT NULL COMMENT ‘交易关闭时间‘,
16  create_time datetime DEFAULT NULL COMMENT ‘创建时间‘,
17  update_time datetime DEFAULT NULL COMMENT ‘更新时间‘,
18  PRIMARY KEY(id),
19  UNIQUE KEY order_no_index(order_no) USING BTREE
20 ) ENGINE = InnoDB AUTO_INCREMENT = 103 DEFAULT CHARSET = utf8
21 */
View Code

ps:对订单号添加了唯一索引。

7.订单明细表:

技术分享
 1 /*订单明细表*/
 2 /*
 3 CREATE TABLE order_item(
 4  id int(11) NOT NULL AUTO_INCREMENT COMMENT ‘订单子表id‘,
 5  user_id int(11) DEFAULT NULL,
 6  order_no bigint(20) DEFAULT NULL,
 7  product_id int(11) DEFAULT NULL COMMENT ‘商品id‘,
 8  product_name varchar(100) DEFAULT NULL COMMENT ‘商品名称‘,
 9  product_image varchar(500) DEFAULT NULL COMMENT ‘商品图片地址‘,
10  current_unit_price decimal(20,2) DEFAULT NULL COMMENT ‘生成订单时的商品单价,单位是元,保留两位小数‘,
11  quantity int(10) DEFAULT NULL COMMENT ‘商品数量‘,
12  total_price decimal(20,2) DEFAULT NULL COMMENT ‘商品总价,单位是元,保留两位小数‘,
13  create_time datetime DEFAULT NULL,
14  update_time datetime DEFAULT NULL,
15  PRIMARY KEY(id),
16  KEY order_no_index(order_no) USING BTREE,
17  KEY order_no_user_id_index(user_id, order_no) USING BTREE
18 ) ENGINE = InnoDB AUTO_INCREMENT = 113 DEFAULT CHARSET = utf8
19 */
View Code

ps:

1)这里的user_id其实是一个冗余属性,这里本可以通过order_no连表mall_order,然后查询到user_id,但是这里直接建立user_id属性,可以在查询的时候不用进行关联查询,直接单表查询可以节省查询时间。

2)这里product_name和product_image可以理解为商品详情的快照,本来可以通过商品id关联product表来查询商品名称和图片,但是这里直接将其存下来,是防止在用户下单后,店家更改该商品的属性,导致用户再次来查看已购订单时商品不一致问题。比如我买的时候是一双手套,过了几天店家将其改成了袜子等。

3)total_price属性解释:本来可以在查表之后利用业务逻辑来计算其订单总价,这里在其生成订单的时候直接计算将其持久化,方便存取。(为啥我觉得在业务层处理也是可以的。。。)

4)这里对user_id和order_no添加了组合索引

8.收货地址表:

技术分享
 1 /*收货地址*/
 2 /*
 3 CREATE TABLE shipping(
 4  id int(11) NOT NULL AUTO_INCREMENT,
 5  user_id int(11) DEFAULT NULL COMMENT ‘用户id‘,
 6  receiver_name varchar(20) DEFAULT NULL COMMENT ‘收货姓名‘,
 7  receiver_phone varchar(20) DEFAULT NULL COMMENT ‘收货固定电话‘,
 8  receiver_mobile varchar(20) DEFAULT NULL COMMENT ‘收获移动电话‘,
 9  receiver_province varchar(20) DEFAULT NULL COMMENT ‘省份‘,
10  receiver_city varchar(20) DEFAULT NULL COMMENT ‘城市‘,
11  receiver_district varchar(20) DEFAULT NULL COMMENT ‘区/县‘,
12  receiver_address varchar(200) DEFAULT NULL COMMENT ‘详细地址‘,
13  receiver_zip varchar(6) DEFAULT NULL COMMENT ‘邮编‘,
14  create_time datetime DEFAULT NULL,
15  create_tiem datetime DEFAULT NULL,
16  PRIMARY KEY(id)
17 ) ENGINE = InnoDB AUTO_INCREMENT = 32 DEFAULT CHARSET = utf8
18 */
View Code

 

数据流向:

1.注册(存入user表)->登录(根据user表进行验证)。

2.搜索产品(根据关键字或category_id),如果category_id级别较高,会对category分类表进行递归查询,然后将符合该分类的和关键字的product商品集合返回。

3.将产品添加购物车(将product_id以及user_id同时存入cart表,并将产品数量和是否勾选持久化)。

4.勾选购物车中商品生成订单(对shipping收货地址表进行管理->mall_order生成order_no存入,shipping_id从shipping表获取,payment会对product表进行计算然后存入)。

5.支付(接到支付宝的回调,将信息存入pay_info表中,对回调状态进行判断,如果支付成功,对mall_order表的payment_type进行写入)

注意:没有用外键和触发器,数据库扩展时很麻烦。

 

数据库表结构

标签:cart   url   说明   级别   关键字   问题   关联   nbsp   arch   

热心网友 时间:2022-05-02 10:13

1.在VFP中,数据表是由结构和 ___[1]____两部分组成.
填写: 数据(或记录)
2.数组SZ(3,4)中所包含的下标变量的个数为___[2]____个.
填写: 12
3.执行命令 A=2005/4/2 之后,内存变量A的数据类型是___[3]___.
填写:N(或数值型)
4.在VFP中,通过“数据库设计器”定义的两数据表之间的关系称为___[4]___.
*填写:关联
5.SQL SELECT语句的功能是___[5]____型.
填写:数据查询与检索
6.数据管理技术发展过程经过了人工管理、文件系统和数据库系统三个阶段,其中数据共享性最高的阶段是___[6]___.
填写:数据库系统阶段
7.按照所使用的___[7]____的不同,数据库系统分为层次型、网状型和关系型.
填写:数据联系方式
8.在VFP中,菜单设计完成后,必须经过___[8]___,才可运行.
填写:生成
9.在关系数据库中,把数据表示成二维表,每一个二维表称为___[9]___.
填写:关系(或一个关系)
10.在奥运会游泳比赛中,一个游泳运动员可以参加多项比赛,一个游泳比赛项目可以有多个运动员参加.那么,“游泳运动员”与“游泳比赛项目”两个实体之间的联系是____[10]___.
填写:多对多(或m:n)
你有的题目写的不是很清白.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 养宠物的人遵守规则,是不是就能和别人平安相处呢? 哪种软件能识别英文歌曲字幕? shazam领不了会员 有没有听歌就能搜到歌名的软件啊?要可以识别泰文歌曲的 有没有跟shazam类似的音乐识别软件? 想要个对日韩音乐识别率搞点儿的软件哈。 有没有比shazam更好的音乐识别软件? 为什么把软件从应用隐藏大师里移出来后桌面找不到了呢? 安卓授权管理中应用隐藏怎么弄 手机桌面上隐藏的应用,怎样做到在设置——应用程序管理里也同样被隐藏,不被看到。 荣耀9x怎么在应用管理中隐藏应用图标? 有什么办法可以把应用隐藏? 如何在应用管理隐藏应用? 我高二了,还能长高吗?? 在度过了生长期之后(目前高二)怎样才能再长高 三八妇女节快到了,介绍几个比较实用的活动方案? 过几天就是三八妇女节... 高二能否长高, 高二男生还能长高吗 17岁了 高二学生还能长高吗? 高二学生怎样才能长高 高二怎么才能长高 高二女孩还能长高吗?我还想高啊! 有没有什么软件可以快速识歌曲最好还可以识别中东国家歌曲 数据库表的物理结构是什么? 数据表结构怎样建立? 数据结构表结构是什么 线框模型的数据表结构 求歌名求歌名,各大国内外听歌识曲软件都识别不出来啊啊啊啊 什么叫数据库结构 数据库中表的结构 数据库中的表结构设计方法 在关系型数据库中,数据表的结构包含什么? 1,数据库表结构如何设计,有哪些表,分别有什么作用 如何查看数据表及数据表结构 数据库表结构设计 如何分析oracle数据库中的表结构? 附录中的数据表结构是物理结构还是逻辑结构? 数据库表如何设计结构?如下图: 西联汇款客服电话 西联汇款客服没人工吗 西联汇款客服电话是什么? 西联汇款的客服电话是多少?