关系表是一个由行和列组成的二维表,具有以下特征:
1、表的每行存储了某个实体或者实体某个部分的数据。
2、表的每列包含了用于表示实体某个属性的数据。
3、表中的每个单元格都必须包含一个值,单元格不允许有重复的元素。
4、任意一列中所有条目的类型必须一致。
5、每列都必须有唯一的名称,但表中列的顺序任意。
6、行的顺序任意。
7、表中任意两行不能有完全相同的数据值。
键是表中用来标识行的一列或者多列。键可以是唯一的,也可以是不唯一的。
复合键,包含两个或者更多属性的键。可以是唯一或者非唯一的。
候选键,唯一标识表中每一行的键。可以是单列键也可以是复合键。主键是DBMS用于唯一标识表中每一行的候选键。
主键很重要,因为它不仅可以用来标识唯一行,而且可以表示表中的行。
代理键是具有DBMS分配的唯一标识符的列,该标识符已经作为主键添加到表中。每次创建行时由DBMS分配代理键的唯一值,该值永远不变。这个键值对于用户没有任何的意义。
外键,将一个表的值放入第二个表来表示关联,所使用的值是第一个表的主键值,此时第二个表中保存这些值的属性称为外键。主键和外键的列名不一定相同,唯一的要求就是它们的值集必须相同。
表的设计原则
1、在结构良好的表中,每个决定因子都必须是候选键。
2、非结构良好的表应分解成两个或者多个结构良好的表。
规范化表的下列规范化过程:
1、标识表的所有候选键。
2、表示表中的所有函数依赖。
3、检查函数依赖的决定因子。如果某决定因子不是候选键,则表的结构就不是良好的,此时:
a、把函数依赖的列放在它自己的新表中。
b、把函数依赖的决定因子作为新表的主键。
c、将决定因子的副本作为原表中的外键。
d、在新表和原表之间创建参照完整性约束。
4、根据需要多次重复步骤3,直至每个表的决定因子都是候选键。