MySQL 必知必会
朱晓峰
前摩根大通银行技术部副总裁、系统架构师
17746 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 36 讲
MySQL 必知必会
15
15
1.0x
00:00/00:00
登录|注册

28 | 手把手带你设计一个完整的连锁超市信息系统数据库(下)

你好,我是朱晓峰。
上节课,我们完成了项目的需求分析和业务流程的梳理,为设计数据库做好了准备工作,接下来我们就可以开始具体的设计了。所以,今天,我就带你来建库建表、创建外键约束、视图、存储过程和触发器,最后制定容灾和备份的策略,从而完成一个完整的连锁超市项目数据库的设计,帮助你提高设计高效可靠的数据库的能力。
首先,我们一起来创建数据库和数据表。

如何创建数据库和数据表?

经过上节课的分库分表操作,我们把数据库按照业务模块,拆分成了多个数据库。其中,盘点模块中的数据表分别被拆分到了营运数据库(operation)和库存数据库(inventory)中。
下面我们就按照上节课的分库策略,分别创建营运数据库和库存数据库:
mysql> CREATE DATABASE operation;
Query OK, 1 row affected (0.03 sec)
mysql> CREATE DATABASE inventory;
Query OK, 1 row affected (0.02 sec)
接下来,我们来分别创建下这两个数据库中的表。
商户表、门店表、员工表、商品常用信息表和商品不常用信息表从属于营运数据库,我们先把这 5 个表创建出来。
商户表(operation.enterprice):
mysql> CREATE TABLE operation.enterprice
-> (
-> groupnumber SMALLINT PRIMARY KEY, -- 组号
-> groupname VARCHAR(100) NOT NULL, -- 名称
-> address TEXT NOT NULL, -- 地址
-> phone VARCHAR(20) NOT NULL, -- 电话
-> contactor VARCHAR(50) NOT NULL -- 联系人
-> );
Query OK, 0 rows affected (0.05 sec)
门店表(operation.branch):
mysql> CREATE TABLE operation.branch
-> (
-> branchid SMALLINT PRIMARY KEY, -- 门店编号
-> groupnumber SMALLINT NOT NULL, -- 组号
-> branchname VARCHAR(100) NOT NULL, -- 门店名称
-> address TEXT NOT NULL, -- 地址
-> phone VARCHAR(20) NOT NULL, -- 电话
-> branchtype VARCHAR(20) NOT NULL, -- 门店类别
-> CONSTRAINT fk_branch_enterprice FOREIGN KEY (groupnumber) REFERENCES operation.enterprice(groupnumber) -- 外键约束,组号是外键
-> );
Query OK, 0 rows affected (0.07 sec)
员工表(operation.employee):
mysql> CREATE TABLE operation.employee
-> (
-> employeeid SMALLINT PRIMARY KEY, -- 员工编号
-> groupnumber SMALLINT NOT NULL, -- 组号
-> branchid SMALLINT NOT NULL, -- 门店编号
-> workno VARCHAR(20) NOT NULL, -- 工号
-> employeename VARCHAR(100) NOT NULL, -- 员工名称
-> pid VARCHAR(20) NOT NULL, -- 身份证
-> address VARCHAR(100) NOT NULL, -- 地址
-> phone VARCHAR(20) NOT NULL, -- 电话
-> employeeduty VARCHAR(20) NOT NULL, -- 职责
-> CONSTRAINT fk_employee_branch FOREIGN KEY (branchid) REFERENCES operation.branch(branchid)
-> );
Query OK, 0 rows affected (0.07 sec)
商品常用信息表(operation.goods_o):
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了设计连锁超市信息系统数据库的关键步骤和技术要点。作者首先介绍了创建数据库和数据表、设置外键约束、创建索引以提高查询速度的方法。接着,详细讲解了为盘点单验收模块创建存储过程的步骤,以及为商品常用信息表和商品不常用信息表创建触发器的方法。此外,文章还介绍了如何制定容灾和备份策略,包括搭建主从服务器和制定数据备份策略。整篇文章以实际操作为主线,通过具体的代码示例和操作步骤,帮助读者深入理解数据库设计的关键步骤和技术要点。索引的重要性、容灾和备份策略的必要性都得到了强调。读者可以从中快速了解如何设计一个高效可靠的数据库,并提高设计数据库的能力。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《MySQL 必知必会》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(8)

  • 最新
  • 精选
  • 朱晓峰
    置顶
    你好,我是朱晓峰,下面我就来公布一下这节课思考题的答案: 这节课,我们学习了设计信息系统数据库(下)。下面是思考题的答案: 尽量不要在设置主从服务器时使用root 账号,原因主要是出于安全考虑,设置主服务器的时候,用明码方式指定root的密码,显然不够安全,而且,从服务器的同步账号也不需要修改主服务器上的数据
    2021-05-20
    1
    5
  • 朱晓峰
    置顶
    你好,我是朱晓峰,下面我就来公布一下上节课思考题的答案: 上节课,我们学习了设计信息系统数据库(上)。下面是思考题的答案: 可以考虑垂直分表: 表1:包含编号(id)、流水单号(transno)、商品编号(itemnumber)、商品名称(goodsname)、数量(quantity)、金额(actualvalue)、组号(groupnumber)、门店编号(branchnumber) 表2:包含流水单号(transno)、微信支付(wechatvalue)、现金支付(cashvalue)、组号(groupnumber)、门店编号(branchnumber)
    2021-05-20
    3
    1
  • SharpBB
    这节感觉内容有些少 不够干货 因为 触发器 外键约束 视图 存储过程 之类的都不怎么用了 主要是没合我的胃口吧。。

    作者回复: 在实际工作中,用的还是比较多的

    2022-02-21
    2
  • 车鸿韡
    商品常用信息表(operation.goods_o):这个表,主键定义了两次。

    作者回复: 十分感谢您的仔细阅读,是我疏忽了,已经通知后台修正

    2021-12-20
  • 云浮青山散作烟
    mysql> CREATE TABLE operation.goods_o -> ( -> itemnumber MEDIUMINT PRIMARY KEY, -- 商品编号 -> groupnumber SMALLINT NOT NULL, -- 组号 -> barcode VARCHAR(50) NOT NULL, -- 条码 -> goodsname TEXT NOT NULL, -- 名称 -> salesprice DECIMAL(10,2) NOT NULL, -- 售价 -> PRIMARY KEY (groupnumber,itemnumber)-- 主键 -> ); 老师,我按照您课程中这样写,收到错误提示Multiple primary key defined. itemnumber那一行的语句改成下边这样就可以,是哪里出问题了呢? -> itemnumber MIDDLEINT NOT NULL,

    作者回复: 请参考思考题答案

    2021-10-22
  • 暮暮。
    现在大多数公司很少使用存储过程

    作者回复: 存储过程有优点也有不足,企业一般都会按照自己的业务需求决定是否使用存储过程

    2021-05-31
  • Geek_88adc9
    商品常用信息表(operation.goods_o) 资料上这个表使用的是联合主键。 能不能替换成自增i’d主健 配合 唯一索引呢
    2023-11-23归属地:四川
  • kevinsu
    牛逼,学到很多东西,还的是实战
    2023-07-04归属地:北京
收起评论
显示
设置
留言
8
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部