01 存储:一个完整的数据存储过程是怎样的?

【其中S表示原文,A表示我的个人解释】

【请注意,这里面充满大量不成熟的、主观推测的看法】

【大家可以去极客时间支持各位老师的专栏,都是很不错的内容】

S1:为啥我们要先创建一个数据库,而不是直接创建数据表呢?……从系统架构的层次上看,MySQL 数据库系统从大到小依次是数据库服务器、数据库、数据表、数据表的行与列。

A1:

之所以在数据库服务器和数据表之间添加数据库这个层次,我个人是认为是为了便于管理不同项目的数据表。假如没有数据库这一组织层次,那么所有项目的所有表都放在同一个目录下,就会引发混乱和出错,而引入了数据库这一层次,就可以依照一个项目一个数据库的方式,组织和管理各自项目的数据表,方便管理;

同时也有效隔离了不同项目人员对其他项目的数据表的操作,A项目的人员只能操作他数据库下的数据表,而不能操作B项目下的数据表,增强安全;

同时数据库作为整个项目下所有数据库的集合,在对整个项目的数据表做处理时,就可以直接对数据库这一个单位进行处理,而不必对多张数据表进行处理,提升效率;

同时数据库与数据库之间的隔离,让它们下一级的数据表的表名可以重名,不引发冲突,且可以让它们分属不同的服务器,更加独立。

S2:MySQL 数据表由行与列组成,一行就是一条数据记录,每一条数据记录都被分成许多列,一列就叫一个字段。每个字段都需要定义数据类型,这个数据类型叫做字段类型。

A2:

为什么选择表来作为存储的数据格式?关系数据库的核心在于“关系”,表的结构设计能够清晰地表达实体(如人、商品、订单)及其属性(字段),以及实体间的关联(通过外键)。这种结构化方式非常适合处理大量有固定模式的数据,支持复杂查询和数据分析。我个人认为是因为这很符合“面向对象”的气质,而“面向对象”这样一种思想又可以很好的实现“在编程世界中映射现实世界”的目标,一张表的每列字段都可以看做是一个类的属性,而一行都可以看作该类的一个属性,这样我们就能就能用表来表示现实世界。

但这种数据格式似乎也有某种缺陷,这种缺陷应该说来源于它足够“清晰”和“标准”,结构在定义时就已经固化了,随着业务数据的增加,应对需求变化的难度就会越大,因为要涉及修改的地方太多,只能通过新增表来管理这些需求,但由于关联表的操作又进一步增加了复杂性和降低了性能。

S3:这里你一定要注意,在 MySQL 里面,空值不等于空字符串。一个空字符串的长度是 0,而一个空值的长度是空。而且,在 MySQL 里面,空值是占用空间的。

A3:我个人认为,空值不等于空字符串是因为数据表的字段类型不只是字符串这一样,而且空字符串也不是空值,它是一个确定的字符串,只不过这个字符串里没有字符,但它依旧是一个字符串,它依旧是一个数据库操作者已经给出了的值。而空值是所有数据类型的空,它并不是任何值,或者说没有值或者是没有给出值,虽然空值的长度是空,但这应该是指逻辑上看上去是无,但在存储空间上来说,由于表的结构在一开始就定义了,那么在插入一个记录时,即便是设定是一个空值,也会有该字段的字段类型对应的存储空间长度,以便以后非空值的写入。

S4:因为主键可以确保数据的唯一性,而且能够减少数据错误……一定要给表定义主键,并且养成习惯。因为主键可以帮助你减少错误数据,并且提高查询的速度。

A4:主键都作为主键了,那自然是可以保证数据的唯一性,至于能够减少数据错误这一点,个人认为是因为非唯一造成的,当两条数据部分重复时,我们并不能对其进行有效区分,就算可以进行有效区分,那性能也一定也有所下降,因为这时候我们就会面临选择,究竟是选择这一条数据,还是另一条数据,由于我们拿到的字段上二者是相同,我们是无法评判的(譬如两个同名同日生的人,我们就无法对其区分),既然无法知道如何进行区分,那么自然而然查询的速度也就被拖累,因为我们有可能需要加上一些辅助字段来辅助判断(如家庭地址),这既会造成空间的浪费,也会由于要进行多余字段的比较而导致速度被拖累。使用主键保证唯一性,就可以在知道其编号的情况下准确识别到该对象,而不用管是否有其他重复的存在,自然就减少了数据错误和提高了查询速度。

S5:在 MySQL 中,一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据表、插入数据。

A5:假如简化来说,其实确认字段可以并在创建数据表这一步走,不过作者将它单拎出来,应该是有意强调字段设计的重要性,将设计与创建分开。可以来考察,一个数据存储过程应该是怎么样的,再来看作者说的这四步是否成立,首先要存储数据,一定要有一个存储地,那么创建数据库和创建表就已经在一大一小两个层次上创建了管理和存储数据的两级结构,其次要存入数据,插入数据就是存入数据的手段,但为了确保数据可以成功和正确的插入,我们需要设计与待存储数据格式相同的表结构,这就涉及到了确认字段,而这一步是需要在创建数据表之前就完成了。因此,从存储空间的开辟和成功插入数据两个基本面来说,这四步足够完善。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值