概述:
数据库物理设计其目的是为了将数据的逻辑描述转换为现实的技术规范,其目标是设计数据的存储方案。
在提供好的性能的同时,确保数据库数据的完整性,完全性,可恢复性。
根据数据量,用户需求,使用方法选择数据的存储方案,加快数据检索的速度。
在物理设计时,需要了解不同文件的组织方式,索引技术以及其使用方法。
数据库设计的物理结构:
数据库中的应用数据是以文件的形式存储在外设存储介质[比如磁盘]上的,文件在逻辑上被组成记录的序列,每个DB文件都可以看做是逻辑记录的集合。
其中,物理文件可以看做是由存放文件记录的一系列磁盘块组成,文件的逻辑记录与磁盘块间的映射关系是由操作系统或者DBMS管理的。
索引:
索引是一种快速的数据访问技术。
其关键是要建立记录域取值到记录域物理地址间的映射关系。
基于索引文件的索引技术,有序索引技术中包含两个主体:
数据文件[主文件 ,可以有多个查找码和索引文件] and 索引文件。
说到这里,顺带一提的是数据文件中存储的关系表通常是元组数据。
下面我们来区分有序索引中的这些索引的分类:
聚焦索引和非聚焦索引:
看索引文件中的索引项的排列顺序是否与数据文件中的数据记录相一致。如果一致,则是聚焦索引,不一致则是非聚焦索引。
稠密索引和稀疏索引:
数据文件中的每个查找码在索引文件中都有一个记录就叫做稠密索引,如果数据文件中的查找码只有部分在索引文件中存在,那就叫稀疏索引。
主索引和辅索引:
主索引:数据文件的主码属性集上建立的索引;
辅索引:数据文件上的非主属性上建立的所以。
唯一索引:
确保索引列不包含重复的值就是唯一索引。
[就比如说学号就是唯一的,每个人只有一个,不会有重复的情况]
多列唯一索引的情况下可以确保索引列中的每个值的组合都是唯一的。
[例如表格包含订单号(order_id)和客户号(customer_id),你希望每个订单号和客户号的组合都是唯一的,这样可以避免同一个客户重复创建相同的订单。]
单层索引和多层索引:
单层索引:索引项直接指向数据文件中的数据记录。
比如,我们按照学生姓氏进行查询学生,就可以给学生姓氏创建了一个单层索引。
CREATE INDEX idx_xingshi ON students (xingshi);
这样我们查找的时候就如下:
SELECT * FROM students WHERE xingshi = '李';
通过单层索引,数据库引擎可以快速定位到姓氏为 '李' 的所有学生记录,而不需要扫描整个表格。
多层索引[复合索引]:树型结构快速定位大数据量文件中的数据记录,涉及多个字段的范围查询或者组合条件查询。
散列索引 [哈希索引]:
利用一个散列函数(HashFunction)实现记录域取值到记录物理地址间的直接映射关系。
其中,记录域[查找码]又叫散列函数的散列域或排序域。
到这里我们的索引分类就算结束了。
此外,我们需要考虑两个方面的问题:
1.如何组织索引文件中的索引记录;
2.如何从索引文件出发,访问数据文件中的数据记录。
物理设计的主体:
物理环节:
数据库逻辑模式描述:
数据分布设计:
其他物理设计环节:
确定系统配置和物理模式结构。