Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]有关在"表"中是否需要设置"关键字"的疑惑

听风  发表于:2009-03-28 12:35:38  
复制

在变速箱教程有关主子窗体这一节,教程中是这样要求的:

6.2.1 销售订单
6.2.1.1 建表:tblXsddzj (即销售订单_整机)
6.2.1.2 建查询: qryXsddzj
6.2.1.3 建子窗体:frmXsddzj_child
6.2.1.4 建表: tblXsddsblj (即销售订单_三包零件)
6.2.1.5 建表: tblXsddsblj_temp (即销售订单_三包零件的临时表,此表建在AccDev.mdb中,不是AccDev_be.mdb中,数据结构与tblXsddsblj一模一样,但不要设置主键,新增数据时要用到)
6.2.1.6 建新增数据窗体:frmXsddzj_child_Add 
6.2.1.7 建修改数据窗体:frmXsddzj_child_Edit
6.2.1.8 实现删除功能
6.2.1.9 实现查询与导出功能

请重点关注上述黑体部分的“但不要设置主键”这几个字。

问题:

1).6.2.1.5中,为何要求tblXsddsblj_temp不能设置主键?在此情况下,如何误设了主键,会有什么后果?

2).建表时,作为一般性的规范,什么样的情况需要设置主键?什么样的情况不需要设置主键?什么样的情况下不能设置主键?

 

Top
ACMAIN.CHM 发表于:2009-03-28 14:16:15

1).6.2.1.5中,为何要求tblXsddsblj_temp不能设置主键?在此情况下,如何误设了主键,会有什么后果?


因为这是个临时表,所有不需要设置主键,估计在程序中会有重复过度的记录需要临时存放在这个表中。有什么后果要看你的程序中是如何应用这个临时表了。


2).建表时,作为一般性的规范,什么样的情况需要设置主键?什么样的情况不需要设置主键?什么样的情况下不能设置主键?


一般性规范,所有的表都必须要有主键!无论什么情况下就应当设置主键。

 

 

 


**************
*   一切皆有可能   *
**************


ACMAIN - Access论坛回贴准则(个人)


QQ群 48866293 / 12035577 / 7440532 / 13666209
http://www.accessbbs.cn/bbs/index.php
http://www.accessoft.com/bbs/index.asp
http://www.office-cn.net/vvb/?fromuid=141646
http://www.access-programmers.co.uk/forums

http://www.office-cn.net/home/space.php?uid=141646


听风 发表于:2009-03-30 20:02:17

多放ACMAIN0CHM的热心解答。

确实,教程中要求不能设主键的表是用来存放过渡的临时记录的。

问题:

为何重复过渡的记录需要临时存放在这个表,这个表就不能设主键了啊?设了主键又如何啊?



花熊2000 发表于:2009-03-30 20:54:23

我来说下,不一定对,但都是自己的经验

主键,以自己的理解就是表示唯一的,即有且只有一个(好像上学的时候学过这样的解释)

正因为这样

如果设置了主键,就表示所有行中,该字段不能存在重复

而该临时表中,实际上是可能存在重复数据的,楼主自己可以想象一下

假设子数据表中有三个字段,存在如下数据

采购订单号  零件名称   数量 

CG20090101   lj001      5

CG20090101   lj001      5

以上即是重复的数据,但实际中却是可能存在的

这样无论你设置哪个字段为主键,都违反了数据存在的唯一性

如果你非要设置主键,那么系统就不会允许你输入重复的数据

 



钱玉炜 发表于:2009-04-01 12:42:39

最好是都设置主键,有些地方如果不方便设置主键,那可以加一个自动编号字段作为你的主键也可以



ACMAIN.CHM 发表于:2009-04-01 20:24:38

为何重复过渡的记录需要临时存放在这个表,这个表就不能设主键了啊?设了主键又如何啊?

 

理论上这个表也应该有主键,但很多时候 需要用临时表 来保存一些记录,而这些记录中的确会出现完全重复的现象,所以就采取不设置主键来避免出错。比如3楼给出的例子的这种情况。

 

 


**************
*   一切皆有可能   *
**************


ACMAIN - Access论坛回贴准则(个人)


QQ群 48866293 / 12035577 / 7440532 / 13666209
http://www.accessbbs.cn/bbs/index.php
http://www.accessoft.com/bbs/index.asp
http://www.office-cn.net/vvb/?fromuid=141646
http://www.access-programmers.co.uk/forums

http://www.office-cn.net/home/space.php?uid=141646


总记录:5篇  页次:1/1 9 1 :