Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 1812|回复: 3

小议外键约束

[复制链接]

该用户从未签到

发表于 2013-5-22 11:14:57 | 显示全部楼层 |阅读模式
今天阅读《SQL反模式》,受到不少启发。
不过其中的外键约束的说法,有几句
发表一下自己的看法。

外键约束,主要用在
1.确保插入一致性,当插入有外键为本表的其他表的时候,会检查本表相关主键的值是否存在。
2.确保更新一致性,当主键被修改,凡是外键指定为本主键的表会被更新。

我在许多系统设计的是避免删除,避免更新主键,从而避免以上两个问题的发生。

现实中,某个记录要删除,必然会导致业务明细数据的删除,即使使用外键约束也不能避免,

比如商品信息删除一条,那么相应的单据数据里面也会被级联删除(使用了外键关联)

将造成数据的丢失。我们先看看用户为什么要删除一条商品信息,

1.用户输入了错误的信息。
2.这个商品已经不好销售,将退市。

那么我们程序上如何处理这两个类型的删除?
1.如果这个商品信息是错误的,要求用户不使用,并在需要的时候修改为正常的记录。
2.停止使用这个记录,打上停用标志,从而确保在单据界面无法显示出来就可以了。

这样就确保了数据的完整性,不是非要使用外键关联。



回复

使用道具 举报

该用户从未签到

发表于 2013-5-24 13:54:45 | 显示全部楼层
儿科
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-2-7 21:42:05 | 显示全部楼层
最好不要删除,可是又有很多垃圾信息,
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2014-2-8 10:27:55 | 显示全部楼层
严重同意     
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-2 20:11 , Processed in 0.028664 second(s), 10 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表