数据库需要约束么?

数据库提供了多种约束( Constraints)来提升数据完整性( Data Integrity), 但现在很多应用系统并不是通过数据库层面的约束来确保数据完整性的,大部分的数据完整性维护放在应用层的代码里。这样做的好处:

整洁
如果数据库有完整性约束,应用层面又有业务逻辑校验,维护起来会比较繁琐;

灵活性
数据库层面完整性校验,不管是种类,还是所能达到的效果都是比较有限的,而应用层面上所能提供的校验确实非常丰富的。

跨平台
现在很多应用系统都是跨数据库平台的,而针对一个数据库设置的约束,有可能在另外一个数据库不适用,需要另起炉灶来维护,这样维护成本高,所以不如都放在应用层面来做数据完整性约束。

------------------------------------------------------------------------------------
其他资料
数据库约束:使用它们还是放弃它们?
Database Constraints: Use Them or Lose Them?
Are foreign keys really necessary in a database design?
What's wrong with foreign keys?

你可能感兴趣的:(数据库需要约束么?)