SqlServer数据库外键的困惑

在设计数据库和备份数据的时候是否使用外键一直很纠结。先说一下外键的优缺点吧

优点:保证数据的完整性和一致性和可靠性,能做到一次修改所有使用外键的数据对应的信息都改变的作用

缺点:数据表增多,增加开发难度。降低(Insert、Update、Delete)速度

取代外键的方法:触发器、程序

订单一般是我们设计最多的数据了。下面以订单举个类子

订单一般会有客户、订单状态、产品、供应商等信息。

这些属性都有外键以及各自的描述信息,如果订单上只存在有这些信息的外键。会有以下几个问题。

1. 查询/新增/修改/删除信息的时候需要涉及这些属性对应的表

2. 做记录备份的时候需要将对应的描述信息也进行备份。

这样在做订单的操作的时候性能就会相对比较慢。

在做订单备份的时候是否有必要备份这些外键属性。因为备份了意义不是很大,因为属性信息修改了,记录的描述信息是不能修改的。这样查询出来的描述应该怎么处理,都是需要考虑的问题。但作为检索条件,我们只能取用最新的属性记录,根据Key去检索。或者作为历史记录我们是否应该用key值去检索。感觉客户的需求才是决定设计的关键。

猜你喜欢

转载自www.cnblogs.com/feng-ye1192/p/SQL_FOREIGN_KEY.html
今日推荐