一个表中是否一定要有主键?(50分)

  • 主题发起人 主题发起人 Unicorn
  • 开始时间 开始时间
U

Unicorn

Unregistered / Unconfirmed
GUEST, unregistred user!
我在用Delphi和mssql7编程时,往表中post时时常遇到说
"Record/Index Deleted"的异常,然后我把表中的主键
删掉,另外自己建了个索引就一切正常了。
我不知道一个表中是否一定要有个主键,没有有什么坏处?
 
主键用来维护纪录的唯一性
比如说学号,学生库中不可能有两条学号一样的纪录
所以这时候你必须把学号作为primary key
 
当然可以没有主键,此时你的数据表中可以插入多条完全相同的记录。
在保证记录唯一性的前提下,一般加上Primary Key。
 
当然还需根据数据库确定,有些数据库必须要PRIMARY KEY,如INTERBASE,有些就
可以不是必须的,还有一些不存在PRIMARY KEY如DBASE等
 
尤其在C/S型数据库应用中, 如果在一个Table 中存在
两个或两个以上的相同纪录, 会导致在数据编辑中无法
更新, 因为Server 无法确定你具体更新哪条纪录.
 
如果你用 MS SQL SERVER65 或SQL SERVER7 建议你给所有的经常发生
INSERT 插入动作的表加上 主键
原因是对于 SQL65, 网络多人 INSERT 时, 如果没有主键, INSERT动作
会自动发生于表的尾端,容易造成锁定
对于SQL 70, 尽管其可为行锁,但还是建议你使用主KEY, 因为使用行锁
后会引起 SERVER 的查询性能的下降, 使用主KEY后可以提高查询速度
另外对于 关联操作的主从表 更应有主键----不会引起多对多的错误连接
 
理论上可以没有主键。
强烈推荐用主键,实在想不出,用个IDENTIFY也可以。
坏人在此题中的回答最好
 
CJ过奖了
 
多人接受答案了。
 
后退
顶部