本帖最后由 roych 于 2015-7-18 12:38 编辑
最后再讲讲主键的考虑前提:
1、 它在整个数据库中是否唯一的?
2、 它是否适用于所有记录? 3、 它是否使用最少的字段? 4、 随着时间的推移,它是否稳定? 只要任意一个答案是否定的,都不应该设置为主键。 第一条跟第二条是主键的基本要求,保证了记录的唯一性和非空记录。尽管按书面理解,是允许有一条主键为NULL的记录的,但实际上Access中,主键是禁止为空的。 第三条表示,主键应该是表中的单一字段。从多个字段创建复合主键将导致把表连接到其它表时出现难题,可以通过创建包含多个字段的索引来解决复合唯一性的需求,索引不一定是主键索引。 稳定性是需要考虑的第四个条件。也就是说,必须要考虑到,如果需要二次开发的话,它是否不需要变更。 例如,一家店可能卖几类产品,销量也是看每一类的销售总额。于是,就有同事以产品ID设置为成本表的主键。当然,一般情况下,同一类产品的成本都是一样的。就好比某个皮套棕色跟黑色可能都是58。但是也存在这种情况,金色耳机可能是24,其它颜色耳机可能 19。为此,他不得不把后面这类产品单独放置,统计前者再手动计算后者。 这就是一个稳定性不好的例子。
事实上,如果把成本细化到每个产品的每个颜色,以此作为主键,那么就可以省去了这个麻烦。因为每个产品的每个颜色是唯一的。
|