• 零售商贩mysql表设计:banner管理表


    作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主


    banner管理表(轮播图管理表)

    CREATE TABLE `banner` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(50) DEFAULT NULL COMMENT 'Banner名称,通常作为标识',
      `description` varchar(255) DEFAULT NULL COMMENT 'Banner描述',
      `delete_time` int(11) DEFAULT NULL,
      `update_time` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='banner管理表';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    解析banner管理表(轮播图管理表)

    你看啊。为什么要用这个表呢banner,因为是不是得划分一个区域来把图片(banner_item)放进去啊。
    你看啊。为什么要使用name这个字段呢?因为一个轮播图得有名称把。得有描述把。描述是这个轮播图是什么名字.
    名称是一个标识.说明这个是一个置顶的轮播图.
    delete_time
    update_time
    这两个字段代码这个轮播图要不要删除。要不要更新一下这个轮播图.

    PRIMARY KEY (id)的意思是?

    id解析:

    为什么要设置自增主键 id ? PRIMARY KEY (id)
    可以唯一标识一行数据,在 InnoDB 构建索引树的时候会使用主键。
    自增 id 是顺序的,可以保证索引树上的数据比较紧凑,有更高的空间利用率以及减少数据页的分裂合并等操作,提高效率。(数字顺序搜索快一点)
    一般使用手机号、身份证号作为主键等并不能保证顺序性。
    流水号一般相对较长,比如 28 位,32 位等,过长的话会二级索引占用空间较多。同时为了业务需求,流水号具有一定的随机性。
    int(11)是什么意思?
    “int(11)中,11代表的并不是长度,而是字符的显示宽度
    为什么id不能为空NOT NULL?
    如果查询中包含可为 NULL 的列,对 MySQL 来说更难优化 ,因为可为 NULL 的列使 得索引、索引统计和值比较都更复杂 。可为NULL 的列会使用更多的存储空间 ,在 MySQL 里也需要特殊处理 。当可为NULL 的列被索引肘,每个索引记录需要一个额 外的字节,在 MyISAM 里甚至还可能导致固定大小 的索引 (例如只有一个整数列的 索引) 变成可变大小的索引。(为null是占用存储空间的。为空不占用存储空间哦)

    AUTO_INCREMENT的特点?
    默认情况下,AUTO_INCREMENT的起始值为1,每个新记录增加1。

    数据

    在这里插入图片描述

    (banner子项表->banner_item)

    CREATE TABLE `banner_item` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `img_id` int(11) NOT NULL COMMENT '外键,关联image表',
      `key_word` varchar(100) NOT NULL COMMENT '执行关键字,根据不同的type含义不同',
      `type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '跳转类型,可能导向商品,可能导向专题,可能导向其他。0,无导向;1:导向商品;2:导向专题',
      `delete_time` int(11) DEFAULT NULL,
      `banner_id` int(11) NOT NULL COMMENT '外键,关联banner表',
      `update_time` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COMMENT='banner子项表';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    PRIMARY KEY (id)的意思是?

    id解析:

    为什么要设置自增主键 id ? PRIMARY KEY (id)
    可以唯一标识一行数据,在 InnoDB 构建索引树的时候会使用主键。
    自增 id 是顺序的,可以保证索引树上的数据比较紧凑,有更高的空间利用率以及减少数据页的分裂合并等操作,提高效率。(数字顺序搜索快一点)
    一般使用手机号、身份证号作为主键等并不能保证顺序性。
    流水号一般相对较长,比如 28 位,32 位等,过长的话会二级索引占用空间较多。同时为了业务需求,流水号具有一定的随机性。
    int(11)是什么意思?
    “int(11)中,11代表的并不是长度,而是字符的显示宽度
    为什么id不能为空NOT NULL?
    如果查询中包含可为 NULL 的列,对 MySQL 来说更难优化 ,因为可为 NULL 的列使 得索引、索引统计和值比较都更复杂 。可为NULL 的列会使用更多的存储空间 ,在 MySQL 里也需要特殊处理 。当可为NULL 的列被索引肘,每个索引记录需要一个额 外的字节,在 MyISAM 里甚至还可能导致固定大小 的索引 (例如只有一个整数列的 索引) 变成可变大小的索引。(为null是占用存储空间的。为空不占用存储空间哦)

    AUTO_INCREMENT的特点?
    默认情况下,AUTO_INCREMENT的起始值为1,每个新记录增加1。

    img_id是关联下面的图片image表的id字段.
    key_word type 是关联起来的,代表根据type的不同,跳向商品 专题 其他.
    banner_id关联banner表的id,这篇文字第一张表啦

    使用innodb表的优点是啥?

    支持事务.
    InnoDB 被设计对于CPU效率和最大性能 当处理大量数据时
    InnoDB 表可以处理大量的数据,即使操作系统 文件限制为2GB

    CHARSET=utf8mb4 这是字符集

    数据

    在这里插入图片描述
    上图的img_id关联image表的id字段.
    image数据如下:

    图片在image表中。

    CREATE TABLE `image` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `url` varchar(255) NOT NULL COMMENT '图片路径',
      `from` tinyint(4) NOT NULL DEFAULT '1' COMMENT '1 来自本地,2 来自公网',
      `delete_time` int(11) DEFAULT NULL,
      `update_time` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=70 DEFAULT CHARSET=utf8mb4 COMMENT='图片总表';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    你看啊。图片是不是得有路径啊。是不是的显示是本地图片还是线上的啊。

    在这里插入图片描述

    解析

    banner表是banner位.

    什么是banner位?

    Banner位,通常位于界面的顶部,是广告、运营活动、专题、新产品推广等重要信息的展示区域,通过运营同学来进行内容信息的维护,运用视觉表现的手法突出重点信息,来吸引用户的关注。

    特点:

    1. Banner位主要存在于首页、发现页和资源列表页等信息集合页面中

    2. Banner位多数情况是轮播图,展示数量在28个,通常情况下35个为佳,数量太多的话不利于所有的banner的曝光,且用户错过一个就需要滑动多个才重新找见,体验感也不是很好。

    banner_item是什么?
    比如轮播图里面的图片.就是banner_item

    banner与banner_item关系是啥,靠什么联系在一起的?
    一对多的关系。一个banner对应多个banner_item。而一个banner_item不关联多个banner.

    外键联系在一起的。子表banner_item中的banner_id关联banner表的id。

  • 相关阅读:
    转转商业化OCPC产品的护航之旅
    标签类目体系(面向业务的数据资产设计方法论)-读书笔记6
    Spring 事务失效了,怎么办?
    力扣-1984. 学生分数的最小差值
    数组的去重
    设计模式-备忘录模式
    第四章. Pandas进阶—数据合并
    BLDC的列子2
    固定资产管理系统让企业动态掌握资产情况
    初识设计模式 - 解释器模式
  • 原文地址:https://blog.csdn.net/qq_37805832/article/details/127584948