数据库设计与数据分类全解析
数据库索引与完整性规则
在数据库设计过程中,索引的构建是提升查询效率的关键环节。我们为fine表创建了索引,如CREATE INDEX index15 ON fine (card_id_number);以及CREATE INDEX index16 ON fine (card_id_number, paid_date);。其中,index16索引用于快速查找用户的未支付罚款,因为当fine.paid_date列为NULL时,表示用户存在未支付罚款。在用户尝试借书时,系统会频繁查找此类信息,因此为该列创建索引能显著提高查询速度。
不过,我们并未对某些键构建索引,例如branch.branch_name、transfer.branch_code等,因为在我们看来,这些键在多数事务中不会被频繁涉及。需要注意的是,MySQL 不允许在可包含NULL值的列上创建索引,但大多数关系型数据库包支持这一操作,这在实际应用中非常有用。
完成索引构建后,接下来要编写域完整性规则。这些规则是在软件中实现的,用于防止无意义的数据写入数据库,是对默认数据库完整性规则的补充。以下是一些针对图书馆系统的域完整性规则:
1. 规则不应直接涉及title、copy、branch