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

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

你好,我是朱晓峰。
从创建第一个 MySQL 数据库开始到现在,我们已经学完了 MySQL 的核心操作。最后这两节课,我想带你实际设计一个超市信息系统的数据库。毕竟,设计数据库很考验我们综合运用单个技术点的能力。所以,通过这个项目,我不仅会带你把前面的内容串联起来,而且还会教你设计数据库的通用思路。
为什么选择超市项目呢?一方面呢,超市的场景与我们的日常生活密切相关,你比较容易理解其中的业务逻辑,另一方面,超市的业务又相当复杂,几乎能用到我们学到的所有知识点,利于我们对前面学过的内容进行整合。
今天,我就带你一起,从需求分析开始入手,一直到容灾和备份,完成一个全流程的连锁超市数据库设计。这节课,我会主要给你讲解需求分析、ER 模型、分库分表和数据库设计方案。我们做项目,首先要从大处着眼,把握方向,这样才不容易出现大的偏差。下节课,我们再设计具体的细节,比如创建数据表、外键约束,设计灾备方案和备份数据等。
在开始设计之前,咱们得先了解一下项目背景。
随着互联网使用的日益广泛,传统的桌面管理系统的数据不能互通、资源利用率低等弊端越来越明显,显然不能满足用户的需求了。因此,我们需要开发一款基于云服务的连锁超市管理信息系统。具体的要求是:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

这篇文章详细介绍了基于云服务的连锁超市信息系统数据库设计的全流程,包括需求分析、ER模型设计、分库分表策略以及数据库设计方案。作者首先介绍了2层数据结构设计,包括商户和分支机构两层,并详细讨论了盘点模块的业务逻辑和ER模型设计。此外,文章还介绍了垂直分表、垂直分库、水平分库和水平分表等分库分表策略,以及其优势和实施方法。总的来说,本文通过实际案例,展现了数据库设计的通用思路和具体实现方法。读者在实际项目中需要重点关注项目需求的理解、ER模型工具的使用以及系统投入运行后的承载能力。此外,在设计阶段需要充分考虑分库分表策略,避免在系统开发完成后再进行修改,以降低成本。文章还提出了分库分表策略的注意事项和思考题,引发读者对数据库设计的深入思考和讨论。

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

全部留言(6)

  • 最新
  • 精选
  • 朱晓峰
    置顶
    你好,我是朱晓峰,下面我就来公布一下上节课思考题的答案: 上节课,我们学习了如何充分利用系统资源。下面是思考题的答案: 0表示每隔1秒写日志并且落盘,这样进程提交事务之后可以马上执行下一个任务,效率最高,但是如果出问题,会损失1秒钟的数据。2表示提交事务后需要写入日志,不能马上执行下一个任务,效率不如0,但是数据被写入了日志,所以安全性好于0
    2021-05-20
    1
    2
  • giteebravo
    本节以连锁超市信息系统的数据库建设为例,分析了系统整体的设计思路、数据结构的设计,以及 ER 模型的创建,还介绍了分库分表的内容。 如果对数据库或表进行了水平拆分,在应用层面要如何访问呢? 文中有这样一段: "在类的设计里面,用正则表达式计算访问的服务器、数据库和数据表的名称"。 但没有 get 到老师的点。

    作者回复: 其实就是根据拆分的策略,对查询语句中涉及到的数据库和数据表进行计算。 文稿中提到的正则表达式,是我们在实际项目中,为了代码可读,用一个统一的格式书写查询语句,然后通过对查询语句进行处理,用正则表达式截取出查询语句中特定部分的字符串,替换成计算出来的服务器、数据库,得到最终可以执行的查询语句。 计算方式有多种,文稿中提到的方式只是为了开阔思路。 希望上面的解释对你有所帮助。

    2021-05-31
    2
    2
  • bearlu
    数据库表的时间必须设置时间还是使用时间戳?

    作者回复: 这个要根据实际情况,timestamp比datetime节省空间,但是取值范围小。为了方便客户长久使用,在我门的项目中选择的是DATETIME类型

    2021-05-15
    4
    2
  • 静✨
    分库分表的思路讲得太清晰了。点赞!

    作者回复: 谢谢鼓励

    2022-06-25归属地:北京
  • zhongsun
    已解决

    作者回复: 好的

    2021-05-19
  • Geek_536557
    老师,请问 库存表(demo.inventory)里的 组号、门店编号都可以由仓库编号获得,是否是冗余数据,是出于性能考虑的嘛
    2022-07-21
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部