当设计关系型数据库时,需要遵从不同的规范要求,设计出合理的关系型数据库。这些不同的规范要求被称为不同的范式(Normal Form 简称NF)。越高的范式数据库的冗余越小。应用数据库范式可以带来很多好处。但是最主要的目的是为了消除重复的数据,减少数据的冗余,让数据库内的数据更好的组织,让磁盘空间得到更有效的利用。范式的缺点:范式是的查询变得更为复杂,在查询时需要更多的连接,一些复合索引的列由于范式化的需要被分割到不同的表,导致索引策略不佳。现在数据库设计最多满足3NF,普遍认为范式过高,虽然具有对数据关系更好的约束性,但也导致数据关系表增加而令数据库IO更易繁忙,原来交由数据库处理的关系约束现更多在数据库使用程序中完成。
以下先介绍关系型数据库中的几个关系键:
主键(PRIMARY KEY / UNIQUE KEY):数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据表只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。
超键(SUPERKEY 超码):是在数据库关系模式设计中能够唯一标示多元组(即“行”)的属性集。包含所有属性的集叫做明显(平凡)超键。
候选键(CANDIDATE KEY 候选码):
是某个关系变量的一组属性所组成的集合,它需要同时满足下列两个条件:
满足第一个条件的属性集合称为超键,因此我们也可以把候选键定义为“最小超键”,也就是不含有多余属性的超键。
候选键的重要性是它们能够在关系中唯一标识出不同的元组,因此超键也是在设计数据库模式时需要指定的最重要的约束之一。由于在关系模型中,每个关系都是一个集合(没有重复的元素),所以每个关系都至少有一个候选键(因为所有属性组合必然是个超键)。但是在某些