为什么需要关系数据库?

Bre*_*den 0 rdbms foreign-keys relational-database

专门考虑网络应用,

(1)为什么RDBMS中的关系(即:外键)甚至有用?

我编写的Web应用程序具有内置逻辑,可根据必填字段验证用户输入.我认为没有真正使用外键,因此没有真正用于关系数据库.

此外,如果我将所有必需的字段验证逻辑放在RDBMS中(即:MySQL),它只会返回一个模糊的错误.至少使用基于PHP的验证我知道哪个字段丢失了,我可以通知用户(尽管使用基于Javascript的验证,这几乎不会发生).

(2)过去有没有一点RDBMS由于某种原因是有用的,或者是否因为我不知道它们是有用的?

我真的需要对这个话题有所了解.我简直无法想出一个好的答案.

fea*_*thj 7

我将从另一个角度来看待这个问题.

我在一个我们有一个数据库的地方工作,该数据库在其初始记录数据库中没有任何外键约束,默认值或其他数据检查.首席工程师的借口与上述内容类似."该应用程序将确保参照完整性".

问题是,我们没有在数据库顶部的标准数据层(如对象关系映射).我们有多个程序源可以输入相同的表.这很有趣,因为过了一段时间,你可以知道代码的哪些部分创建了表中的哪些行.有时链接排成一列,有时他们没有.有时链接是NULL(当它们不应该是),有时它们是0.我们甚至有一些很有趣的循环记录.

我的观点是,您永远不知道何时需要编写快速脚本来批量导入记录,或编写引用相同表的新子系统. 作为程序员,我们应该尽可能地进行防御性编程.我们不能假设那些跟在我们后面的人会知道我们的架构应该如何使用(如果有的话).


sle*_*ica 5

我不是一个SQL爱好者,但即使我必须说关系结构有其优点.

它不仅允许验证.通过向数据库提供描述存储的实际件信息之间的关系的元数据,可以进行大量的优化.

这使得快速检索大型复杂数据集成为可能.它还减少了进行修改所需的查询次数并保持数据的一致性,因为大多数"簿记"都是在连接的DB端自动执行的.