题图:Cheva用AI创作
已经开始在复习和软考信息系统架构师有关的知识。这科考试的内容覆盖面还是很广的。首先在网上购买的复习资料看了下,从计算机硬件到操作系统到数据库再到计算机网络,还有软件设计、工程项目管理等等,内容非常广泛,好在现在才只是七月份,正式考试的时间是11月4日,三个多月,差不多四个月的时间还是足够的。
不过我的复习没有按照顺序进行,而是先从我比较感兴趣的地方入手。先看的是关于数据库的知识点和考点。因为之前自己在工作和生活中编的一些小程序,使用过sqlite、 mysql等数据库,心想这方面还是懂一点的。也许从这里开始学习,可能困难会小一点。我在网上买的复习资料,是文老师软考教育出的,知识点讲解的得还是简单扼要的,而且清晰易懂,还是很推荐的。学习之后发现,虽然使用过数据库,但是对数据库的一些基础理论并不像我自以为的那么了解,架构师这种考试,因为它考的范围广,所以考察内容还不算深入。不过那些考题如果没学习过的话,还真不好下手。但是学习过之后呢,就不是那么难了,主要还是这个文老师讲的还是挺清晰的。
这里先总结一下数据库这一章节所学到的东西吧。至于一些废话就不说了,什么是数据库之类的。主要讲一些考点。第一个就是数据库的模式,数据库的模式分为内模式、模式和外模式。内模式就是数据的物理存储模式。模式就是我们在使用数据库软件的时候查询的那张表。外模式就是把这个表的查询内容返回成一个新的表提供给用户使用。然后是涉及到数据库的设计,数据库的设计一般经过三个阶段,第一个阶段是需求分析,这阶段要形成需求说明书、数据流图等。第二阶段叫概念设计,这个阶段要形成ER图。ER图又叫实体关系图。比如说一个学校的学生管理系统——大家都喜欢拿这个来作为例子,它的实体关系图就应该包括学生、学号、姓名、院系、系主任等等,实体和他们之间的关系就是学号决定学生,学生和课程可以决定考试成绩这种关系。然后第三阶段就叫逻辑设计阶段,就是将ER图转化成数据库内的表的形式。这其实和那个内模式、外模式、模式是对应起来的。
然后就比较深入了。非常理论化的东西。都是我有所耳闻,但是之前没有钻研过的。比如数据库设计中的关系代数。数据库就是一张张的表而表的第一行,我们把它叫做属性。比如第一行一般都叫属性名或者简称属性,还是刚才的例子。学号,学生性别,出生年月。课程、院系、成绩等等都是属性。而关系代数呢就是在不同的表之间进行的运算,这个和集合是非常相似的,有求并集、求交集、求差集等等。计算也都比较好理解。一个比较难的难点也是考试的考点,就是笛卡尔积都和自然连接,以及它们的相互转换。我我已经来了,其实考试的大部分相关内容都是要死记硬背的。唯一需要点动脑筋的地方就是这里了。
对了,看到笛卡尔这个名字好亲切啊,就是那位说出“我思故我在。”的哲学家兼数学家,他提出了关于意识的二元论,认为意识和肉体是单独存在的两个个体。还有笛卡尔坐标系,就是我们现在经常使用的直角坐标系。没想到在计算机课程里面也可以看到他的名字——笛卡尔积。其实很简单,就是把两张表合为一张表。但是合的过程中会有一个问题。如果两个表中相同的属性对应,而且对应了不同的附属性值,那么就得把这条记录重复记录好几遍。而自然连接则简单的多,也是把两张表合并,但是相同的属性列只保留一个,那怎么保留呢?那我们就只能把那些两张表中数据不一致的行,全都去除掉。笛卡尔及和自然连接也是可以相互转换的,转换过程和他们定义差不多。笛卡尔积是全部保留,所以把它转换成自然连接的话,就要把冗余的列去掉,只留下不重复的列,这个就是要做投影运算,然后选出两张表中都相等的行,如果有多个重复的列,就要用“和”而不是“或”来合并。好吧,我现在口说大家肯定是理解不了的,我也主要是自己检验一下,看自己是否记住了。
然后就是数据库的范式化、范式化的是为了解决数据库在进行操作时容易出错的问题,就是把表拆分成多张表,拆分要按照一定的要求。所以拆分的越细出错的可能性越小。然后对应的范式级别也就也就越高。一般会考察到第三范式。第一范式很简单,只要是表内没有子表就行了。所谓子表,最典型的例子,就是家庭住址,家庭住址这一个栏下面还会再分成省、市、街道等多个子项。如果有这样的表的话,那就不属于第一范式了。第二范式是要求非主属性对主属性不存在部分依赖。哇,这些听上去都很专业的,但是听过老师讲的课之后,再加上老师介绍了一些非常实用的解题方法就显得非常简单了。其中包括如何判断主键的方式,只要看关系集合里面在右边没有出现过的,就可以认为它是主键。这些解题方法非常简单好用。
好了,这些纯理论知讲了之后,就是比较时髦的大数据有关的内容。主要是数据仓库,数据仓库完就是专门用于大数据分析的,它和数据库不同,就是它的数据来源很丰富多样,本质上是异构的。老师打个比方,就是如果我要分析某一段时间的全社会的商品消费情况。那么我们就要从淘宝、天猫、京东、拼多多等多个电商平台抽取数据。而这些平台的数据库结构可能都是不一样的。数据抽取来之后,就要放在数据仓库里边。下一步就是大数据的分析了和展示,反正都是一些很肤浅的考点,多记一记背一背就好了。最后讲的就是SQL语言。这个在编程的时候用的还是比较多的,感觉应该问题不大,数据库的复习大致就是这么些考点吧,再把历年考的真题拿出来刷一刷,巩固一下,应该就会掌握的差不多了吧?