Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-表

【access小品】问答主键

时 间:2010-08-01 16:54:16
作 者:todaynew   ID:10802  城市:武汉
摘 要:问答主键
正 文:

  大头同志的问题:我最近买了本access的书自学,看到主键这里有些疑惑,特请教大家,谢谢。
  书上有这么几句话:1、一个主键可以包含多个字段。2、 一个表只能 有一个主键。3、 表的主键可以自动建立索引,而且该索引被称为无重复索引。
  疑惑1、这几句话正确吗?若是正确那么怎么理解好几个字段为同一个主键呢?

  疑惑2、主键必需为不重复的数值吗?

  疑惑3、一个表必需为其设置主键吗?我为什么看到有的表没有主键呢?

  武凡同志补充问题:假如一个表中没有不重复的数值字段如何定主键呢?

------------------------------------------

  红尘如烟同志的解答:


  主键的作用主要是对一个表中的记录进行唯一标识,既然是唯一标识,自然就不能允许有重复了,这样根据主键可以识别任何一条记录,大部分情况下,主键一个字段就可以了,但在某些情况下,一个字段并不能对记录进行唯一标识,所以就需要通过多个字段的组合来进行唯一标识,比如订单明细表中,主键一般是【订单号】和【产品编号】这两个字段的组合。

  一个表只能有一个主键的,是因为主键也叫做主索引,一个表中可以有多个索引,但用作主索引的只能有一个,有多个就不应该叫“主索引”了。

  按照关系数据库理论来说,每个表都必须要有主键的,另外在ACCESS中以链接表的方式访问SQL SERVER数据库,如果表中没有主键,则数据会是只读的,不能编辑。

  一个表中没有主键多半是下面的几种情况:

  1、不是一个数据库系统,或者说不完全是一个数据库系统,这时表只用来存放数据,数据的有效性不是通过数据库引擎来检验的,而是通过程序代码来检验的

  2、这是一个临时表,在临时表中为了使用方便,经常会不设临时表

  3、这是一个特殊用途的表,比如保存某些设置,它其实都不能算是严格意义上的表了,而是相当于配置文件

  ……

  如果表中没有适合设为主键的字段,这时一般建议创建一个自动编号字段来做为主键

-----------------------------------------

  煮江品茶同志解答:

  先从第三个问题说起。主键对于数据表不是必须的,也就说数据表不设主键完全可以。撇开主键的问题,我们说部电影吧。看过成龙演的《我是谁》这部电影吧,还记得哪个忘记自己名字和身份的警察吧。我们假设一下,如果成龙扮演的这个警察身上还有一个证件的话,即使他不记得自己是谁,他身边出现的美女应该是可以知道他是谁的。也就是说警察证或者身份证或者护照或者什么本本上,总是会有一个编号,这个编号可以通过查询得到这个人的信息,并唯一的定义这个人是谁。

  你会想这个电影和主键有什么关系呢?其实我们讨论这个电影的时候已经在讨论主键问题了。什么是主键呢?通俗的讲,主键就是用来唯一定义一条记录的那个东西。这就说明,主键的作用是用来唯一定义一条记录的,当然你不唯一定义这个记录,他依然存在。就像电影中的成龙同志,在失去身份的很长一段时间中依然存在一样。只是这种存在有了很多麻烦,带来很多冲突,也就构成了电影的崎岖的情节。

  现在讨论第二个问题。主键用来唯一定义记录,因此必然数据不能重复。可是为什么要这样呢?这就要讲讲《西游记》了,还记得那个假悟空六耳猕猴吗?这斯能将大圣扮得维妙维肖,最后还是被如来说破。这就看出来,如果描述悟空不是唯一的,真假就说不清楚了。也许你想着让他(真悟空)保护唐僧取经,却可能让他(假悟空)吃了唐僧肉了。

  在后两个问题讲解完了,第一个问题也就不成其为一个问题了。比如说用成龙这个名字是否能准确的定义一个人呢?答案是不能,因为重名的可能有很多,所以人名不具有唯一性。用人名加出生日期是否可以定义一个人呢?这个也可能不安全,因为还可能有姓名相同生日相同的人存在,只是这个概率很小了而已。那么我们多加几个字段,在你的数据库范围内能保证数据唯一,这时候就可以以这几个字段一起来作为主键唯一的定义这条记录了。不过通常这样干很累,于是人们多数情况下是单独设立一个字段作为主键。

  关于武凡同志的问题已经不存在了。因为我们可以不管表中是否存在一组数据能成为主键,都可以另外加一个做为主键的字段。而且大部分情况下,人们都是这样干的。



Access软件网官方交流QQ群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助