分享

我与阿里云的一千零一夜-013-建立后端生产线(其二)

 偏扁豆 2021-12-01

0x0 前言

现代的程序员也会戏谑自己是搬砖工,这也倒是没错。古代文人用文字做武器,现代自然可以用代码垒巢房。


0x1 关于CRUD

增删改查=CRUD。

  • c create 增

  • r read 查

  • u update 改

  • d delete 删


增删改查也许是程序员的常态,但绝不是一潭死水。引用一下知乎的一个非常好的回答。

做个最土的个人笔记系统,增加一个笔记就是一个『增』,删除一个笔记就是一个『删』,修改一个笔记就是『改』,用户看自己的笔记就是『读』——超级简单的,入门级水平。

作者:程墨Morgan 链接:https://www.zhihu.com/question/487208427/answer/2141403283

做一个完整的博客系统,发表一个博客文章是『增』,针对一篇博客发表评论是『增』,删除一个博客文章是『删』,修改一个文章内容是『改』,让一个博客能被用户订阅,这也是『增』,让热门博客能同时被100000个用户读到,这是『读』,让用户能够看到自己订阅的所有博客的文章时间线,这也是『读』,但是这些『读』就不那么容易——这算是进阶水平的增删改查。

作者:程墨Morgan 链接:https://www.zhihu.com/question/487208427/answer/2141403283

接受用户上传的视频,这是『增』,上传的视频要编码成不同的大小,保证质量的前提下,还要让『增』的内容分不到世界不同地区,让不同地区的几千万用户通过播放器来『读』的时候,都感觉丝般顺滑——这种增删改查很不容易了。

作者:程墨Morgan 链接:https://www.zhihu.com/question/487208427/answer/2141403283

其实在信息时代,代码是切实减轻了我们创造的成本,比起建造一个真正的建筑而言,尝试成本太低了,如果再没有重复劳动,那可能就是在搞计算机理论研究而不是计算机领域的应用。


0x2 关于数据库设计

回忆下数据库设计。

  1. 根据需求画E-R图,也就是实体关系图,实体将会变为我们的数据库表,关系将决定表的构成关系以及我们查询的方式;

  2. 根据范式模型优化概念设计,开展模式分解,消除不一致的因素;(第一范式1NF:指数据库的每一列都是不可分割的基本数据项,强调列的原子性;2NF:数据表每一个实例或者行必须被唯一标识,主键特性;3NF,每一个非主属性都不传递依赖于候选键,比如员工id、部门id在同一表中,那么部门名称就不应在表中;BCNF:不存在任何字段对任一候选关键字段的传递函数依赖;4NF:消除多对多关系)

  3. 建立物理结构,存储结构设计、确定存放位置、设计存取方法、考量数据完整性和安全性;

  4. 使用程序语言实现数据库。

0x3 小结

很多时候我们并不一定遵循很多规则设计数据库,很多产品起步阶段并没有完善地考虑性能和需求的对应关系。

关系数据库很好地解决了数据储存的空间和数据更新的效率,但逻辑上增加了系统的业务逻辑复杂度。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多