精华内容
下载资源
问答
  • 常见电商数据库表结构

    千次阅读 2019-04-07 12:26:20
    订单(order_info) 标签 含义 id 订单编号 total_amount 订单金额 order_status 订单状态 user_id 用户...

    订单表(order_info)

    标签

    含义

    id

    订单编号

    total_amount

    订单金额

    order_status

    订单状态

    user_id

    用户id

    payment_way

    支付方式

    out_trade_no

    支付流水号

    create_time

    创建时间

    operate_time

    操作时间

    订单详情表(order_detail)

    标签

    含义

    id

    订单编号

    order_id

    订单号

    user_id

    用户id

    sku_id

    商品id

    sku_name

    商品名称

    order_price

    商品价格

    sku_num

    商品数量

    create_time

    创建时间

     

    商品表Item

    标签

    含义

    id

    skuId

    spu_id

    spuid

    price

    价格

    sku_name

    商品名称

    sku_desc

    商品描述

    weight

    重量

    tm_id

    品牌id

    category3_id

    品类id

    create_time

    创建时间

    用户表 user

    标签

    含义

    id

    用户id

    name

    姓名

    birthday

    生日

    gender

    性别

    email

    邮箱

    user_level

    用户等级

    create_time

    创建时间

    商品一级分类表category1

    标签

    含义

    id

    id

    name

    名称

    商品二级分类表category2

    标签

    含义

    id

    id

    name

    名称

    category1_id

    一级品类id

     

    商品三级分类表category3

    标签

    含义

    id

    id

    name

    名称

    Category2_id

    二级品类id

    支付流水表paylog

    标签

    含义

    id

    编号

    out_trade_no

    对外业务编号

    order_id

    订单编号

    user_id

    用户编号

    alipay_trade_no

    支付宝交易流水编号

    total_amount

    支付金额

    subject

    交易内容

    payment_type

    支付类型

    payment_time

    支付时间

    展开全文
  • 电商数据库设计 mysql 数据库设计规范

    生产环境如下

    MySql 版本 MySql 5.7
    图形管理工具Navicat
    Linux 系统

    项目说明

    电商的基本模块有如下几个, 按照用户使用的流程

    Created with Raphaël 2.1.0用户登录选购商品加入购物车检查库存提交订单货到付款?发货订单付款yesno

    通过流程图 , 我们需要设计以下几个模块

    模块 模块说明
    用户模块 完成用户注册和登录验证
    商品模块 前后台商品管理和浏览
    订单模块 订单及购物车的生成和管理
    仓配模块 仓库库存和物流管理

    接下来就是数据库设计, 先说一说数据库的设计规范

    在实际工作中,一般情况下,各个公司都有自己的数据库设计规范,在遵循公司内部规范的同时,我们还有业内共识通用的设计规范,在此,就本次的电商数据库设计,说明以下部分规范.这个规范也同样适用与大部分业务的数据库设计.

    数据库命名规范

    • 所有的数据库对象名称必须使用小写字母并使用下划线分割(mysql 数据库对大小写敏感)
    • 所有数据库对象名称禁止使用MySqL保留关键字 eg. from关键字
    • MySQL关键字查询
    • 数据库对象的命名要见名之意 , 最好不要超过32个字符.
    • 数据库操作的时候 ,总会导入导出表 , 有一些临时表 , 临时表的最好以tmp为前缀并且以日期为后缀
    • 备份表的命名, 最好以bak为前缀并且以日期为后缀
    • 所有存储相同数据的列名和列类型必须一致

    数据结构基本设计规范

    • 所有的表必须使用Innodb存储引擎
      MySQL5.6 以后 Innodb 引擎成了默认的存储引擎 . 支持事务,行及锁,有更好的恢复性,高并发下性能好

    • 数据库和标的字符集统一使用UTF-8
      MySQL UTF-8字符集汉子占3个字节 , ASSIC占1个字节

    • 所有的表和字段都要添加注释

    • 尽量控制单表数据量的大小 , 尽量在500万行以内
      如果必须超过这个量 , 一般采用历史数据归档(eg. 日志类表) , 分库分表(主要是业务数据)等方式.

    • 尽量做到冷热数据分离,减小表的宽度
      这样做的目的是较少磁盘的IO , 保证热数据的内存缓存命中率
      利用更有效的利用缓存,避免读入更无用的冷数据(少使用 select *)
      经常使用的列放到一个表中

    • 禁止在表中建立预留字段
      很难做到见名之意
      无法确认存储的数据类型.
      对预留字段进行修改时,会对表造成锁定

    • 禁止在数据库中存储图片, 文件等二进制数据 .

    • 禁止在线上数据库做数据库压力测试

    • 禁止从开发环境,测试环境直连生产环境数据库
      否则很容易造成数据库污染

    数据库索引设计规范

    • 限制每张表的上的索引数量 , 建议单张表索引不超过 5 个

      • Innodb是按照主键的顺序来组织表的
      • 不使用更新频繁的列作为主键 , 不使用多列主键
      • 不使用UUID , MD5 , HASH , 字符串列作为主键
      • 主键建议使用自增ID使用主键
    • 常见索引列建议

      • select ,update , delete 语句中的where 从句中的列
      • 包含在order by ,group by ,distinct 中的字段
      • 多表JOIN的关联列
    • 如何选择索引列的顺序
      • 区分度最高的列放在联合索引的最左侧(主键, 唯一索引列)
      • 尽量把字段长度最小的列放在联合索引的最左侧
      • 使用频繁的列放到最左侧

    数据字段设计规范

    • 优先选择符合存储需要的最小的数据类型

      • 将字符串转化为数字类型存储 INET_ATON('255.255.255.255') = 429467295 IETN_NTOA(429467295) = '255.255.255.255'
      • 对于非负整数来说, 优先使用无符号整型
      • MySQL 中 varchar(n) 这里的n 代表的是字符数 , 不是字节数 ,varchar(255) 可以存 255 个汉字 , 需要占用 765 个字节
      • 过大的长度会消耗更多的内存
    • 避免使用 TEXT , BLOB数据类型

      • 如果必须使用 , 将BLOB或者是TEXT列分离到单独的扩展表
    • 避免使用 ENUM数据类型

    • 尽可能把列定义为 NOT NULL

    • 使用 timestamp 或者datetime 类型存储时间

      • timestamp 存储时间 范围 为 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07

      • timestamp 区间不够, 使用datetime 存储

    • 同财务相关的金额类数据 , 必须使用 decimal 类型

      • decimal 类型为精准浮点数 , 在计算时不会丢失精度

    数据库SQL开发规范

    • 充分使用表已经存在的索引查询

      • 使用left join 或者 not exists 优化 not in 操作
    • 禁止使用 select * 查询

      • 会消耗更多的cpu 和io 以及网络带宽资源
      • 无法使用覆盖索引
      • 可较少表结构变更带来的影响
    • 禁止使用不含字段列表的 insert 语句

    • 避免使用子查询 , 可以把子查询优化 join 操作

      • 子查询结果集无法使用索引
      • 子查询会产生临时表操作 , 如果子查询数据量大则严重影响效率
    • 避免使用 join 关联太多的表

      • 建议不超过 5 个
    • 减少同数据库的交互次数

      • 数据库更适合处理批量操作
    • 使用 in 代替 or

    • 禁止使用 order by rand () 进行随机排序

    • where 从句中禁止对列进行函数转换和计算

      • where date(createtime) = ‘20170101’ (禁止这样)
      • 上面的可以这样改 where createtime >='20170101' and createtime <'20170102'
    • 再明显不会有重复值时 使用 union all 而不是 union

    • 拆分复杂的大 sql 为多个 小 sql

    数据库操作行为规范

    • 超过 100 万行的批量写操作 ,要 分批分次进行操作

    • 禁止为程序使用的账号赋予super 权限

    • 对于程序连接数据库账号 , 遵循权限最小原则

      • 程序使用数据库账号只能在一个DB下使用 , 不准跨库
      • 程序使用的账号原则上不准有 drop 权限
    展开全文
  • 电商数据库设计

    2019-10-07 17:59:48
    电商数据库设计 围绕购物流程 mysql5.7 mysql SQLyog Linux Shell脚本 用户登录-选购商品-加购物车-检查库存-提交订单-货到付款-订单付款-发货 模块设计 用户模块 用户注册登录验证 商品模块 前后台商品管理 订单...

    电商数据库设计

    围绕购物流程

    mysql5.7
    mysql SQLyog
    Linux Shell脚本

    用户登录-选购商品-加购物车-检查库存-提交订单-货到付款-订单付款-发货

    模块设计

    用户模块 用户注册登录验证
    商品模块 前后台商品管理
    订单模块 订单购物车生成和管理
    仓配模块 仓库库存和物流的管理

    数据库设计规范

    逻辑设计-物理设计
    实际工作中 逻辑设计+物理设计
    表名 字段名 字段类型

    数据库字段设计规范
    -数据库对象名称必须使用小写字段 下划线分隔 DbName not Equal dbname

    -数据库对象禁止使用mysql保留关键字
    select id,username,from,age from tb_user 报错
    select id,username,from,age from tb_user 不报错

    -数据库对象命名见名识意 不超过32字符 用户数据库mc_userdb 用户数据表user_account

    -所有临时表以tmp为前缀并且以日期为后缀

    -备份库 备份表必须以bak为前缀并以日期为后缀

    -所有储存相同数据的列名和列类型必须一致

    -所有表是使用Innodb存储引擎 支持事务 行级锁 更好的恢复性 高并发下性能好

    -数据库和表的字符集统一使用UTF8

    统一字符集可以避免由于字符集转换成的乱码
    -使用comment从句添加表和列的注释 数据字典的维护

    -控制单表数据量的大小 控制在500w行内

    -限制取决于存储设置和文件系统

    -分区表在物理上表现为多个文件 逻辑上为一个表

    -谨慎选择分区键 跨分区效率更低 物理分表方式管理大数据

    -禁止表中使用预留字段

    -禁止在数据库中存储图片 文件等二进制数据

    -禁止线上做数据库压力测试

    -禁止开发测试环境连接生成环境数据库

    索引设计规范
    -限制表索引数量 建议单张表索引不超过5个

    -每个Innodb表必须有一个主键 不能使用频繁更新的列作为主键

    -不使用UUID MD5 HASH 字符串作为主键

    -SELECT UPDATE DELETE语句的WHERE从句中的列包含在ORDER BY,GROUP BY,DISTINCT中的字段多表的关联列

    -避免建立冗余索引和重复

    -对于频繁查询优先考虑覆盖索引

    -尽力避免使用外键

    -外键用于保障数据参照完整性 建议在业务端实现

    数据库字段设计规范
    -优先选择符合存储需要的最小的数据类型

    -将字符串转换为数字类型存储
    INET_ATON('255.255.255.255') = 4294967295
    INET_NTOA(4294967295) = '255.255.255.255'
    (字符串需要15个字节 int只需要4个字节)

    -对于非负数数据采用无符号整型进行存储
    SIGNED INT -2147483648~2147483648
    UNSIGNED INT 0~4213213123

    -VARCHAR(N) 中的N代表的是字符数 不是字节数
    使用UTF-8存储汉字 Varchar(255) = 765个字节

    -避免TEXT BLOG类型数据

    -避免使用ENUM数据类型 (修改用ALTER )

    -尽可能把所有列定义为NOT NULL (索引NULL需要增加额外空间)

    -使用TIMESTAMP或者DATETIME存储时间
    TIMESTAMP 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07
    超出时间用DATETIME

    -数据类型
    财务相关 decimal类型 计算时不会丢失精度

    数据库SQL开发规范
    -充分利用表上已有的索引 避免使用双%号的查询条件 如:a like '%123%'

    -一个sql只能利用到复合索引中的一列进行范围查询

    -使用left join或者not exist优化not in操作

    -设计时 对以后的数据库扩展考虑

    -程序连接不同的数据库

    -为数据库迁移和分库分表留余地

    -禁止使用SELECT * 必须使用 SELCT (会消耗更多的CPU和IO以及网络带宽资源) 可以减少表结构表化的影响

    -禁止使用不含字段列表的INSERT语句
    INSERT into t values('a','b','c');
    INSERT into t(c1,c2,c3) values('a','b','c');
    可以减少表结构表化的影响

    -避免使用子查询 可以把子查询优化为join查询(子查询结果集无法使用索引)
    子查询会产生临时表操作 子查询数据量大会严重影响效率

    -避免使用join关联太多表 不要超过5个

    -减少同数据的交互次数
    数据库更适合批量操作
    合并多个相同的操作到一起 可以提高处理效率
    alter table t1 add column c1 int,change column c2 c2 int

    -使用in代替or

    -禁止使用order by rand()随机排序
    会把表中符合条件的数据装载到内存中排序 消耗大量CPU
    推荐程序中获取随机值 然后从数据中获取

    -where从句中禁止对列进行函数转换和计算
    where date(createtime)= '20160901' 会无法使用索引
    改为where createtime >= 20160901 and createtime < '20160902'

    -明显不会有重复值时使用UNION ALL而不是UNION
    union会把所有数据放到临时表中再操作 会去重操作
    union all不会再对结果集重新操作

    -拆分复杂的大sql为小sql

    数据库操作行为规范
    -超过100w行的批量写操作 要分批多次操作
    大批量操作可能会造成严重主从延迟
    避免产生大量日志

    -对于大表使用pt-online-schema-change修改表结构

    -禁止为程序使用的账号使用super

    -程序使用账号只能在一个DB上使用 原则上不能有drop权限

    转载于:https://www.cnblogs.com/weizaiyes/p/7844683.html

    展开全文
  • 优点:易于数据读取 数据插入异常: 执行以下操作时,由于没有...有多种设计范式,如数据库设计第一范式,第3 =范式和第三范式等 数据库设计最低要满足第三范式(3NF)的要求 3NF定义: -个中的列和其它列之间...

     优点:易于数据读取

    数据插入异常:

    执行以下操作时,由于没有主键信息,那么就不会插入数据成功

     

    数据更新异常:

    把所有的字段都放在一个表中,那么就需要对该表的所有行数据进行锁定,更新时间过长

    数据删除异常:

    如果执行以下操作,那么就会把用户等级=‘青铜’的所有用户删除

     

     

    数据库的设计范式
    设计范式是数据库设计的规范
    有多种设计范式,如数据库设计第一范式,第3 =范式和第三范式等
    数据库设计最低要满足第三范式(3NF)的要求
    3NF定义:
    -个表中的列和其它列之间既不包含部分函数依赖关系,
    也不包含传递函数依赖关系,那么这个表的设计就符合第
    三范式。
     

    {登录名}《依赖---{用户级别}《依赖-----{级别积分上限,级别积分下限}
    所以不符合第三范式的要求

    所以讲用户表拆分为两个表从而符合第三范式:

     

     

     

     

     

    确认MySQL服务器是否支持分区表
    mysq| > SHOW PLUGINS;

     

    HASH分区的特点:
    跟据MOD(分区键,分区数)的值把数据行存储到表的不同分区中
    数据可以平均的分布在各个分区中
    HASH分区的键值必须是一个INT类型的值 ,或是通过函数可以转为INT类型
     

     

     

     

    RANGE分区特点
    ●跟据分区键值的范围把数据行存储到表的不同分区中
    ●多个分区的范围要连续,但是不能重叠
    ●默认情况下使用VALUES LESS THAN属性,即每个分区不包括指定的那个值:比如按照id=1-100进行分区,那么就不会包含100这个数值

     

    RANGE分区的适用场景
    1.分区键为日期或是时间类型:比如按照id进行分区,那么假如在某一个分区的用户比较活跃,这个分区就会变得特别大,从而失去了分区的意义

    2.所有查询中都包括分区键
    3.定期按范围清理数据的情况

     

     

    LIST分区的特点
    按分区键取值的列表进行分区
    同范围分区-样,各分区的列表值不能重复
    每一行数据必须能找到对应的分区列表,否则数据插入失败

     

     

    展开全文
  • ecshop 电商系统数据库结构设计

    千次阅读 2016-03-09 09:12:17
    Ecshop 电商系统架构数据库设计及字段说明; http://book.ecmoban.com/images/db.htm
  • 中小型电商数据库较完整的结构表

    万次阅读 2017-11-26 21:05:43
    电商表数量之多让人比较难以整理思路,以下为本人总结的中小型电商表结构,也许对您有些许帮助,请留下您的宝贵意见。 广告 xx_ad 广告位 xx_ad_position 管理员 xx_admin 管理员角色(码表)xx_admin_role ...
  • 电商网站数据库常见表结构设计

    千次阅读 2019-04-03 20:11:02
    描述:评论 序号 字段名称 字段描述 字段类型 长度 允许空 缺省值 1 comment...
  • MySQL分区-电商数据库设计及优化学习笔记 一、背景 这里是我的电商数据库设计及优化学习笔记中关于MySQL分区部分的内容。 二、MySQL分区 1、使用分区需要注意的: *确认MySQL服务器是否支持分区 使用...
  • SQL在数据分析中的应用案例:电商数据库表结构以及字段定义,还有部分相关数据,都是参考的; 可以进行操作:数据查询与过滤,数据聚合,数据表间的连接,数据的增、改、删,SQL进阶用法
  • 大型电商项目数据库表设计

    千次阅读 2019-11-24 16:26:45
    总之:电商数据库表设计有很多种 记住Spu是一种抽象的概念,是一组有共同属性的商品集合(无实体),Sku是Spu中真正的商品实现! 问题一:为什么要用JSON数据来保存对应关系呢? 1.如果不用json数据格式,...
  • 大型电商数据库设计与分析-仿京东 京东官网首页地址 oms–订单管理 pms–商品管理 wms–库存管理 ums–用户管理 电商的商品管理数据结构:采取的都是sku+spu的数据结构 sku----stock keeping unit 最小存货单位【6核...
  • 创建一个电商数据库 一、创建一个电商数据 1)创建数据库数据 create database shop charset=utf8; use shop; --we need id,商品name,分类cate,品牌brand,价格price,是否显示,是否卖光 create tab...
  • 常见电商项目的数据库表设计(MySQL版)

    万次阅读 多人点赞 2019-03-14 11:17:06
    常见电商项目的数据库表设计(MySQL版) 简介: 目的: 电商常用功能模块的数据库设计 常见问题的数据库解决方案 环境: MySQL5.7 图形客户端,SQLyog Linux 模块: 用户:注册、登陆 商品:浏览、管理 订单:...
  • 电商数据库设计文档,包含有表结构以及相关的表字段。
  • 电商-数据库详细设计说明书V0.4.doc
  • 数据库设计规范(统一) 数据库命名规范 数据库基本设计规范(存储引擎的选择,字符类型的选择) 数据库索引设计规范(索引列的选择,索引的优化技巧) 数据库字段设计规范(列的字段类型) SQL开发规范(开发人员...
  • 电商-数据库详细设计说明书
  • 首先,我们看看之前设计的商品,他是与SPU进行多对多的关联,并建立了中间,我们在设计这个数据库之前,是参照了京东、苏宁易购的,因为像这种大型的电商项目,他们都是有自己的仓库,还有自己的门店,特别是...
  • 转载自:常见电商项目的数据库表设计(MySQL版) 目的: 电商常用功能模块的数据库设计 常见问题的数据库解决方案 环境: MySQL5.7 图形客户端,SQLyog Linux 模块: 用户:注册、登陆 商品:浏览、管理 ...
  • 电商项目数据库设计-客户 会员等级 现在很多电商平台都有自己的会员制度,甚至现在线下的商场都是会员制的,而且不同的会员够买商品的价格也不一样,所以我们在设计客户之前先设计一个客户等级 先看看字段: ...
  • 电商表结构设计

    2021-01-05 13:48:35
    订单 (order) |-- 自动编号(order_id, 自增长主键) |-- 订单单号(order_no, 唯一值,供客户查询) |-- 商店编号(shop_id, 商店自动编号) |-- 订单状态 (order_status,未付款,已付款,已发货,已签收,退货申请...
  • 商品相关表结构设计   近年来,中国的电子商务快速发展,交易额连创新高,电子商务在各领域的应用不断拓展和深化、相关服务业蓬勃发展、支撑体系不断健全完善、创新的动力和能力不断增强。电子商务正在与实体经济...
  • 电商项目的数据库表设计(MySQL版)

    千次阅读 2019-09-06 12:54:15
    简介: 目的: ...电商实例数据库结构设计 用户模块: 用户涉及的实体: 改进1: 第三范式:将依赖传递的列分离出来。比如:登录名<-用户级别<-级别积分上限,级别积分下限 改进2:...
  • 商城项目介绍 商城项目 一 前端展示 1.1注册 1.2登录 1.3注销 1.4商品类别展示 1.5单个商品的展示 1.6 立刻购买(buynow) 1.7购物车(gotoShopcar) ...3.2 表结构设计 1.用户表(t...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,386
精华内容 8,954
关键字:

电商数据库表结构设计