当前位置:首页 > 问答 > 正文

怎么动手弄个真合适自己的数据库,别光看教程,得自己琢磨着做才行

怎么动手弄个真合适自己的数据库,别光看教程,得自己琢磨着做才行

(引用来源:知乎用户“苏莉安”在“如何系统地自学编程?”下的回答精神,强调“做中学”和“从需求出发”)

别想得太复杂了,一提到“数据库”,很多人脑子里立马蹦出那些吓人的专业名词,什么关系型非关系型、SQL、NoSQL、索引、事务……然后就被吓住了,觉得这是个大工程,非得把厚厚的教程全看完才敢动手,结果呢?教程看了半天,一回头,发现自己连个最简单的东西都没做出来,这就是最大的误区,咱们今天要说的,就是绕开这个误区,直接从“用”开始,在动手的过程里,一步步把它打磨成最适合你自己的样子。

第一步:先别管数据库,从你最烦的手工活开始。

你想弄个数据库,肯定是因为你遇到了某个具体的问题,这个问题就是你最好的老师,别一上来就想着“我要设计一个完美的数据库结构”,那玩意儿不存在,你先想想,你现在是用什么土办法在对付?

  • 比如,你是个电影爱好者,电脑里存了几百部电影,信息都记在一个乱七八糟的TXT文件或者一堆Excel表格里,想找某年某个演员的电影,你得Ctrl+F半天,还经常漏掉。
  • 再比如,你是个小卖家,用个本子记每天的进货和销售,月底对账对得头昏眼花。
  • 或者,你就是想记录一下自己每天的运动数据,比如跑步公里数、心率,但现在只是有一搭没一搭地在手机备忘录里写两句。

你看,这些就是你最真实的需求,你的数据库,就是为了解决这些“烦心事”而生的,请你把这个最原始的“土办法”工具(那个TXT、那个Excel、那个小本子)拿出来,把它里面的一条条信息,看成未来数据库里的一条条“记录”,这一步,你不需要任何技术,只需要你对自己需求的洞察。

第二步:用最简单的工具,先跑起来。

怎么动手弄个真合适自己的数据库,别光看教程,得自己琢磨着做才行

现在你知道了你想记什么,下一步就是找个最简单的“容器”把它们装起来,这里我强烈推荐从电子表格开始,比如Excel或者Google Sheets。

为什么是电子表格?因为它长得就像一个最简单的数据库表,每一行是一条记录(一部电影、一笔交易、一次运动),每一列是一个属性(电影名、导演、交易日期、跑步距离),你用电子表格,可以非常直观地往里填数据,也能用筛选、排序做些简单的查询,找出所有斯皮尔伯格导演的电影”。

(引用来源:许多资深开发者的建议,对于小型个人项目,Excel往往是最高效的“原型”数据库)

这一步的关键是:动手往里填真实的数据,不要只设计个空表放着,只有当你开始输入真实数据时,你才会发现之前没想到的问题:哎呀,“导演”这一列,有时候是两个人合作导演,怎么写才规范?“电影类型”这一列,一部电影可能有“科幻、动作”多个类型,挤在一个格子里以后怎么搜?这些都是在实际使用中才会暴露出来的“设计缺陷”,琢磨怎么解决这些问题,比如把“合作导演”拆成“导演1”、“导演2”两列,或者单独做一个“类型”表——这个过程,就是最核心的“数据库设计”的雏形,你是在为解决自己的实际问题而思考,比看教程里干巴巴的“第一范式、第二范式”要深刻得多。

第三步:当电子表格不够用了,再考虑“真正的”数据库。

怎么动手弄个真合适自己的数据库,别光看教程,得自己琢磨着做才行

你用电子表格管理你的电影库,可能一直用下去都没问题,但某天,你的需求变复杂了,你不仅想记电影,还想记录你对每部电影的评分、评论,甚至想为每个演员建个档案,看看他们都演过哪些电影,这时候你会发现,在电子表格里,电影信息和演员信息混在一起,非常混乱,同一個演员的名字可能在不同电影那里写法还不一样(汤姆·汉克斯”和“Tom Hanks”)。

“不够用了”这个感觉,是你升级工具的最佳时机。 这时候,你可以开始接触一些轻量级的数据库了,比如SQLite,SQLite的好处是它不需要你安装一个复杂的数据库服务器,它就是一个文件,就像你的Excel文件一样,但功能要强大得多。

(引用来源:SQLite官网自称是“世界上最广泛部署的数据库引擎”,因其轻量级和嵌入式特性)

你可以带着“怎么解决电子表格里的混乱”这个具体问题,去稍微看一点SQL的入门知识了,你不需要看完一本SQL大全,你只需要学会三四个最关键的命令:CREATE TABLE(创建表)、INSERT(插入数据)、SELECT(查询数据)、JOIN(连接表),你之前琢磨的“把演员信息单独放”的想法,在数据库里就叫“规范化”,而JOIN这个操作就是用来把分开的电影表和演员表再智能地拼凑起来查询。

第四步:边做边改,你的数据库是“长”出来的,不是“设计”出来的。

怎么动手弄个真合适自己的数据库,别光看教程,得自己琢磨着做才行

千万别指望你第一次用SQLite创建的表结构就是完美的,这不可能,你肯定会发现新的需求,然后需要去修改表,比如增加一列“观看平台”,或者把“评分”从整数改成小数以便打8.5分。

没关系,这就是常态,数据库不是一次性雕琢好的石像,而是像你养的一盆植物,它需要随着你的需求成长、修剪、换盆,当你需要增加新功能时,再去查资料学习怎么ALTER TABLE(修改表结构),这种带着问题去学习的方式,效率极高,学完立马就能用上,知识也记得牢。

第五步:拥抱不完美,专注于解决实际问题。

也是最重要的一点:放弃“完美主义”,你的个人数据库,首要目标是让你自己用着爽,解决你的具体问题,它不需要处理每秒百万次的访问,也不需要满足严苛的安全审计,有些在教科书里被强调的东西,在你这里可能根本不重要。

你的表结构可能不那么“规范”,那又怎样?只要查询起来又快又方便,就行,你写的SQL语句可能效率不是最高的,那又怎样?对你那几千条数据来说,快0.1秒根本感觉不到,别让这些技术上的“政治正确”束缚了你的手脚,你的核心任务是持续地使用它,并在使用中不断琢磨和改进

动手弄个合适自己的数据库,路径是这样的:从你手边的麻烦事出发 -> 用电子表格当原型,暴露真实问题 -> 问题驱动下,选用SQLite等简单工具上手 -> 带着具体需求去学几个关键命令 -> 在反复修改和使用的过程中,让数据库自然演化。

教程是地图,但走路的是你自己,只有你才知道哪条路风景更好,哪条路能更快到达你的目的地,别看了,去找找你那个记电影的小本子,或者那个乱糟糟的Excel文件,开始动手吧,第一个动作,就是把第一条信息,录入到你新建的那个电子表格里。