一.数据库设计基本理论知识
1、数据库三范式
◆保证数据库字段原子不可分割。
一个字段,只能表示一个含义。
◆每行数据有唯一的依赖。(有主键)
唯一、不能为空,用于区分两条不同的数据。
◆不传递依赖。(有外键)
在数据关联时,使用主键进行关联。不传递给其他字段。
第一范式:数据库表中的所有字段值都是不可分解的原子值
第二范式:需要确保数据库表中的每一列都和主键相关 而不能只与主键的某一部分相关(主要针对联合主键而言)
第三范式:需要确保数据表中的每一列数据都和主键直接相关 而不能间接相关
2、数据完整性:
外键关联和外键约束
外键关联:第三范式~
外键约束:为了保证数据的完整性,数据库本身会对有外键关联的数据进行完整性校验。这样 的校验本身性能不高。
3、冗余字段:
在数据库表中,多余没有实际意义的字段。
4、索引:
索引是提高数据库检索效率的一种方法。
索引会针对表中的某一个或几个字段,做一个位置的记录,当查询的时候,先在索引记录的位置中找到相关数据在表中的位置。
如何创建索引:index on
对哪些字段进行索引: 对经常被查询的字段做索引,比如:主键id。
经常被修改的字段,最好不要创建索引。
二、数据库设计技巧
在设计数据库时,我们尽可能按照数据库的三范式进行设计,但是根据项目业务的特性,我们也不一定要严格遵守三范式。比如:三 范式中的第三范式,在设计表时,我们会创建外键关联,但是一旦创建外键后,数据库为了保证数据的完整性,每一次操作表和关联表 时,都需要关联查询响应的表中的数据是否存在,性能会受到很大的影响。但是在项目中,我们可以通过业务操作手段,来验证数据的完 整性,此时不需要数据库在浪费时间和资源去验证一次,所以我们通常在设计表时,把外键的字段当成一个普通字段使用,不创建外键约 束。关于冗余字段,有时候为了去提高查询效率,我们也会使用冗余字段,避免过多的表联查。1
三、设计流程:
首先根据需求确定业务数据表,然后根据业务处理情况设计业务逻辑表。确定有什么表和表中有什么字段以后,使用PD绘制E-R图。 将数据库物理模型生成sql脚本,在DB中执行,创建表。