未经询问,不可转载,转载请标明原文地址,谢谢合作。本文出自何处觅仁慈。
如上回所说,建立一个图书馆,我们将不同的书籍,以拼音首字母,作者名等等分门别类。在分类之后,我们想要查阅书籍,就会十分方便。由此,我们引入了索引这一概念。
索引
索引的概念
索引:数据库中,用于标识指定数据的清单。在建立索引之后,将会创建一个索引表,其中存储着每一条数据的特别标识。如果需要进行检索数据,那么会优先检缩索引表,再根据索引表指向的数据直接检索对应的数据。
同样的我们举个例子:大家小时候应该都或多或少的查阅过字典。对于字典,我们会根据需要翻阅拼音表和偏旁表。这两个表就起到了索引的作用。它把我们导向指定的页数,然后我们就可以直接查阅到自己想要的字了。
索引的作用
想象一下如果我们没有索引,对于一个几百页的新华字典,又或者是存储着几万本书籍的图书馆,我们应如何去查阅指定的汉字/书籍?这个时候我们只能一点点地翻看每一条数据,而绝大多数数据都不是我们想要的那个,这就会浪费我们大量的时间。有了索引,我们可以排除绝大部分不需要的数据,从而快速定位我们想要的那一个。
这就是索引的作用。
主键
在我们对书籍分门别类的时候,总会涉及到这个问题:我们应该怎么标明这个数据,又或者是怎么分辨这个数据?
在这里,我们便需要引入主键这一概念。
主键:数据库中,对于某一条数据的唯一标识。他指示了数据的唯一性,也为寻找数据提供了便利。
想象一下,对于一大堆没有封皮,没有书名,没有出版日期等信息的书籍,我们应该如何把它按照首字母排序?显然我们做不到。在这里,封皮上的书名就起到了标识书籍的作用。它让我们可以分辨其它的书籍,也让我们得以建立索引表。
联合主键
此时我们又会出现另外一些情况。世上书籍千千万,难免会出现书名重复的问题,怎么办?最简单的办法就是加入一些其它新信息。书名重复那我们可以使用书名+作者来分辨。如果依然重复,那么我们可以使用书名+作者+出版社来分辨。这种使用多种信息来标识数据的唯一性的操作就叫做联合主键。
联合主键:对于可能重复的数据,使用同一数据的多种信息建立主键,以确保数据的唯一。使用的信息可以不止两个,亦可以是三个,四个等等。
联合主键很明显,是对普通主键的加强,以更好地确保数据的唯一性。它的作用与普通主键相同。
主键(联合主键)的作用
主键(联合主键)的作用:确保数据的唯一性、排他性,加快检索速度
使用注意事项
对于主键与索引,他们不是越多越好的。
索引:如果一本300页新华字典拥有100页的索引页,那么找起来麻烦吗?绝对麻烦。所以索引的建立原则是尽可能的精简,只为常用的,数据建立主键。只寻找数据之间的最少相同点建立索引,以此减少性能的消耗,也减少额外使用的存储空间。
主键:如果我们只需要查看书籍的名字就可以100%无误地分辨并找出每本书,那么我们为什么还要查看书籍的作者名,出版社,甚至于书中的少量内容?主键的建立原则依然是尽可能的精简。寻找最少的可以标明数据的同种信息,进行主键的建立。
注:联合主键是主键的其中一种,而主键也是索引的其中一种