个字节一条记录流式文件记录文件
一个字节 一条记录 流式文件 记录文件
6.2.2顺序文件1.文件的逻辑排序串结构:各记录的逻辑顺序按存入的时间排序。有序结构:各记录的逻辑顺序按关键字排序。2.对顺序文件的读/写操作顺序文件只能顺序读或顺序写,可设置读/写指针Rptr和Wptr,指向下一记录的逻辑地址。对定长记录:每当读完一条记录时执行:Rptr=Rptr+L每当写完一条记录时执行:Wptr=Wptr+L对变长记录:每当读完一条条记录时执行:Rptr=Rptr+Li每当写完一条记录时执行:Wptr=Wptr+Li3.优点:批量存取效率高,缺点:查找增删低效不方便
6.2.2 顺序文件 1. 文件的逻辑排序 串结构:各记录的逻辑顺序按存入的时间排序。 有序结构:各记录的逻辑顺序按关键字排序。 2. 对顺序文件的读/写操作 顺序文件只能顺序读或顺序写, 可设置读/写指针 Rptr和Wptr, 指向下一记录的逻辑地址。 对定长记录: 每当读完一条记录时执行: Rptr=Rptr+L 每当写完一条记录时执行: Wptr=Wptr+L 对变长记录: 每当读完一条记录时执行: Rptr=Rptr+Li 每当写完一条记录时执行: Wptr=Wptr+Li 3. 优点: 批量存取效率高, 缺点: 查找增删低效不方便
6.2.3索引文件对定长记录文件,要查找第i个纪录,可直接计算:Ai=Ao+i*L(Ao和A是第0和第i个纪录的逻辑地址)对变长记录文件,要查找第i个纪录,可直接计算Ai=Ao+i+>Li(假定每个纪录前用1字节存储长度)要实现直接存取文件,对定长记录用公式计算很方便,但对变长记录却很困难;为此可建立一张索引表。检索时,用折半查找索引表按Ro其指针值指向Ri逻辑文件索引表的记录与给定的关键字比较Ri查到为止。存储费用大
6.2.3 索引文件 对定长记录文件, 要查找第 i 个纪录,可直接计算: Ai =A0 +i*L (A0和Ai是第0和第i个纪录的逻辑地址) 对变长记录文件, 要查找第 i 个纪录,可直接计算: Ai =A0 + i +ΣLi (假定每个纪录前用1字节存储长度) 要实现直接存取文件, 对定长记录用公式计算很方 便, 但对变长记录却很困难; 为此可建立一张索引表。 检索时,用折半 查找索引表按 其指针值指向 的记录与给定 的关键字比较 查到为止。存 储费用大。 i-1 i=0 R0 R1 . Ri . 0 L0 1 L1 . i Li . 索 引 表 逻 辑 文 件
6.2.3索引顺序文件对变长记录文件,用索引表存储费用大.结合索引文件和顺序文件的优点,构成索引顺序文件。所有记录逻辑上按关键字有序排列,并将记录分为若干组,索引表为每组的第一个记录建立一个索引表项,检索时先根据索引表键值确定该记录在哪一组,再按该表项指针指向的主文件中的位置顺序查找到所要的记录。如姓名 其它属性键逻辑地址AnFenAnFenBao HeAnKan逻辑文件索引表.Lan LinBao He
6.2.3 索引顺序文件 对变长记录文件, 用索引表存储费用大,结合索引文 件和顺序文件的优点, 构成索引顺序文件。所有记录逻 辑上按关键字有序排列,并将记录分为若干组,索引表为 每组的第一个记录建立一个索引表项, 检索时先根据索 引表键值确定该记录在哪一组, 再按该表项指针指向的 主文件中的位置顺序查找到所要的记录。如 An Fen An Kan . Bao He . An Fen Bao He . Lan Lin . 索 引 表 逻 辑 文 件 键 逻辑地址 姓名 其它属性
6.2.4直接文件和哈希文件1.直接文件:根据给定的记录键值,直接获得指定记录的物理地址,这种由给定的记录键值到记录的物理地址的转换称为键值转换,关键是用什么函数进行转换2.哈希文件:用哈希函数(或称散列函数)进行键值转换为了能实现文件存储空间的动态分配,通常由哈希函数求得的不是记录的地址,而是指向自录表相应表项的指针,表项的内容指向相应记录所在的物理块。如目录表r哈希函数物理块?键值Hash(k)
6.2.4 直接文件和哈希文件 1.直接文件:根据给定的记录键值, 直接获得指定记录的 物理地址, 这种由给定的记录键值到记录的物理地址的 转换称为键值转换, 关键是用什么函数进行转换。 2. 哈希文件:用哈希函数(或称散列函数)进行键值转换, 为了能实现文件存储空间的动态分配, 通常由哈希函数 求得的不是记录的地址, 而是指向目录表相应表项的指 针, 表项的内容指向相应记录所在的物理块。如 目录表 键值 Hash(k) 哈希函数 物 理 块