数据结构是计算机程序设计的基础,也是最难学的。学程序设计数据结构不过关,后面很多程序设计的概念就很理解,数据库设计也更让人迷糊难懂。但是数据结构却是学计算机程序和数据库设计的最重要最基础的一门学科。
这是个人学数据结构的一点理解,权当抛砖引玉吧。
实际数据结构可以这样理解:
比如我们知道生物种群有很多很多,有植物,有动物,有微生物,有真菌。植物还分好多大类。
数据结构要处理的原始数据是离散分散,这时就要跟生物分类一样,把一种或者多种特定关系的数据给分类,然后便于存储。
比如植物是生物界的一个大类,然后植物下面按照不同特点又分成分类为种子植物、苔藓植物、蕨类植物和藻类植物。
这四大类下面还分成小类。实际数据的相互关系也是如此,数据会根据不同的情况进行归类,比如原始数据全是植物(这个也可以当成数据的),
那我们可以按种子植物、苔藓植物、蕨类植物和藻类植物的特点把数据归入这四大类中,如果需要再把数据细化,那就是把种子植物再按苏铁门、银杏门、松柏门、买麻藤门、被子植物门。当然也可以把一堆原始数据为树的按落叶乔木和常绿乔木分类,也可以按照植物的科来分类。
比如槐树,它细化为这样的:植物门-种子植物门-被子植物亚门-双子叶植物纲-蔷薇亚纲-豆目-蝶形花科(豆科)-槐属-槐种。
当它同苔藓植物放到一起,那它们之间就要分开没有关系了,但原始数据就相当于包括了所有动植物,它跟苔藓植物放入植物门中了。
这就是建立数据模型操作。数据模型就是找数据共同点,把共同点的放到一起,根据情况对于共同点再细化更多相同点的。
比如植物中的乔木,有落叶和常绿。常绿有针形和卵形叶的,等等这些都可以再细化,但是到了一定程度就无法细分,最终就是最的小的单位了。最小的单位就是不能再细分了。
还是挺难懂的对吧?
简单点说:原始数据就如同一堆生物。
我们要根据不同特点把有相同特点的数据归到一类,分门别类进行存储。
归为一类的称为数据项,因为它们的特点比较相似,当然这个描述并不严谨,会有很多漏洞,但是看完我们起码能增强对这个原始数据怎么变成数据逻辑结构的理解。
比如我们公民信息存入数据库电子档案中,是一个姓名为数据记录至少包括如下类目的:年龄、性别、党派、婚姻,居住地,工作单位等,这些就是数据项,是没办法再拆分了再拆分就多此一举了,所以数据项是数据的最小标,识单位,又叫字段和域。
而姓名实际就是数据记录,同它有关的就是性别、年龄、党派、婚姻、居住地、工作单位等。数据这些有些是唯一性的,只有这个数据记录独有,但是大部分都非唯一的。
比如一个工作单位可能有很多人在里面工作,所以数据库中有个关键码就是尽量找唯一性的的关键码,一个单位只有工号是唯一的,(出于隐私考虑,员工身份证号不可能让人随意查看,只能档案可查,所以身份证不会出现员工数据库中,即使有也会有权限限制)
而数据库不可能所有人开放同样的权限,这也是数据库设计时必须要考虑的。
而公民身份信息的数据记录,身份证号是唯一性的(至于有些身份证号有重复,那是手工录入出错导致,现在也逐步在纠正中),姓名因为重名太多,有时不一定会作为关键码,但这个也不是绝对的,要看情况的。
所以数据结构联系现实生活来学习会更容易理解,更容易学透吃透。