关于主键和外键的问题!!!!!!!!!!!!
我有三个表:学生表(学号,姓名)课程表(课程名,课程号)成绩表(学号,课程号,成绩)
你能帮我找出成绩表的主键和外键吗?
有人告诉我成绩表的外键是“学号”,“课程号”,不用设主键了,大家说对吗?
对他又说了,在pb中如果表没有主键的话,在运行程序时的“保存”,就不能把数据写进数据库了?这不是矛盾吗??我真搞糊涂了!!!
问题点数:20、回复次数:16Top
1 楼george77(F22)回复于 2002-12-04 09:00:16 得分 0
成绩表的主键:(学号,课程号)
外键:学号 , 课程号Top
2 楼taoguang2(没名小卒)回复于 2002-12-04 09:01:32 得分 0
其实我也觉得“学号”和“课程号”应该既是主键又是外键!!大家说呢???Top
3 楼taoguang2(没名小卒)回复于 2002-12-04 09:07:56 得分 0
但我又发现了一个问题:在我的成绩表中,如果把“学号”设为主键,因为同一个学生要有好几门课程,所以在成绩表中,学号又有重复了,到底主键应不应设“?Top
4 楼119119(^_^,转向DELPHI,我是痛病快乐)回复于 2002-12-04 09:18:00 得分 0
我也同意,成绩表的主键是(学号,课程号)
外键:(学号,课程号)
没有问题。你一定要设主键。没有不设的我。你只把学号设为主键,肯定会遇到你这样的问题了!Top
5 楼jackxrh()回复于 2002-12-04 09:43:50 得分 0
primary key , foreign key 只是一种 logic 关系的定义而已 ....
说明你当前的取值满足了一定的逻辑关系 ..... 至于你想
在哪些 field 上定义 primary key 或者 foreign key , 那就看
你存在 table 中的 field 要满足什么样的逻辑要求了 ...
你可以把 primary key , foreign key 定义在任何 fileds 上 ..Top
6 楼taoguang2(没名小卒)回复于 2002-12-04 09:54:33 得分 0
楼上的大哥,能不能结合点实际,你的话太难懂了!
“但我又发现了一个问题:在我的成绩表中,如果把“学号”设为主键,因为同一个学生要有好几门课程,所以在成绩表中,学号又有重复了,到底主键应不应设“?
Top
7 楼jackxrh()回复于 2002-12-04 09:59:44 得分 0
可以设 , pirmary key : 学号 + 课号 foreign key 就不要了 ,
省得麻烦 ...
Top
8 楼jackxrh()回复于 2002-12-04 10:00:44 得分 0
没有 primary key , 在 pb 中一样的可以保存啊 , 是谁说的不能保存 ??Top
9 楼taoguang2(没名小卒)回复于 2002-12-04 10:05:34 得分 0
是一位前辈说的,不设置主键不可以保存的。事实也是的,我试过了,你不设主键,不让保存的Top
10 楼jackxrh()回复于 2002-12-04 10:09:32 得分 0
你设置一下 datawindow 的 update property 就 okayTop
11 楼taoguang2(没名小卒)回复于 2002-12-04 10:15:16 得分 0
你能不能告诉我怎么设置呀,都是英文的,我看不懂!!Top
12 楼jackxrh()回复于 2002-12-04 10:21:11 得分 0
打开 dw , rows->update property
选中 allow update -> 选择 要更新的 table -> 要更新column ->
更新条件
Top
13 楼taoguang2(没名小卒)回复于 2002-12-04 10:28:27 得分 0
use delete then insert 和 use update是什么意思?
在update property里如果我不选择unigue key columns,就点不了”ok“!!
是不是必须要选主键呀Top
14 楼jackxrh()回复于 2002-12-04 10:32:09 得分 8
那是更新条件 , 你可以选择 学号 ,课程号Top
15 楼cdqy(触电)回复于 2002-12-04 10:36:45 得分 2
你选择一些列就行,不过你得保证这些列在这张表中能确定唯一的行。跟主键是一样的意思,但不一定要选主键!原则上每张表都应设主键!Top
16 楼louisa5155(蓝色城堡)回复于 2002-12-04 10:43:47 得分 10
主键是必须的,外键个人认为可有可无,因为程序设定很方便Top




