例如图书信息表
图书信息表: {书号, 书名, 出版社ID, 出版社名称, 出版社地址, 作者姓名, 作者年龄, 作者地址}
可以发现表有如下特点:
(1) 表中所有字段都是单一属性;
(2) 每一列都是基本数据类型...图书信息表
图书信息表: {书号, 书名, 出版社ID, 出版社名称, 出版社地址, 作者名称}
主键: {书号, 出版社ID}
那作者信息是只和图书有关系, 和出版社信息是没有关系的....但是, 通常我们展示图书信息时, 是会将作者姓名和出版社名称也一起展示的, 这时查询时就需要使用多表的联合查询.
select b.书号, b.书名, c.出版社名称, z.作者姓名
from 图书信息...所以上述图书信息表中将出版社名称和作者姓名冗余进来,
冗余后的图书信息表
图书信息表: {书号, 书名, 出版社ID, 出版社名称, 作者ID , 作者姓名}
这时再进行查询时, 是单表查询, 顺序IO...这里可以去掉出版社名称列,
图书信息表
图书信息表: {书号, 书名, 出版社ID, 作者ID , 作者姓名}
可以将出版社信息缓存到内存中, 在读取图书信息后, 在程序内存中拼接出版社名称信息.