1
9
“下面是一个关于这个主题的asktom讨论。在这个问题上没有硬性规定(否则就没有辩论!)……” 是的,有。声明性总是比程序实现的好。声明性不太容易出错。声明性更容易维护。声明性比程序性实现更能自我记录。声明性为DBMS提供了优化的最佳时机,而且DBMS在大多数情况下比程序员更好地优化。 程序实现的唯一优势是,它意味着如果有真正的声明性约束可用,那些没有声明性约束的人将得到工作,而不仅仅是我们从SQL得到的糟糕的pk+fk。 |
2
6
实际上,您并没有说为什么您的朋友会认为他所想的,但无论如何,约束/键是确保数据完整性的标准、定义和正确的方法,原因有两个:
滚动您自己的数据完整性代码并没有实际的好处。触发器用于其他用例,例如(例如)保存所有插入的日志。 |
3
2
您没有指定什么数据库,但我假定使用一个ANSI标准的关系DBMS,如Oracle或SQL Server。 我想这取决于你所说的正直。如果您只想将子记录和父记录放在一起并防止孤立记录,那么使用主键和外键约束的内置RI是可行的。 如果您的RI更复杂,例如,如果父记录中的字段1为>100,则子记录中的字段2必须为<200。必须使用触发器。 我不会用触发器来执行简单的ri,因为这个轮子已经被发明出来了。 |
4
0
我不认为这是明确的削减一种或另一种方式,但fwiw,我倾向于使用DRI约束对任何可以在DRI约束中完成的事情,并保存触发器对那些不能在DRI约束中完成的事情(如防止重叠的日期范围) |
Hayreddin Tüzel · 预约系统数据库建模[关闭] 6 年前 |
alabaster · 逻辑数据模型-如何表示可选FK? 7 年前 |
Laurent · 具有领域的Nosql数据库结构 7 年前 |
romss182 · ActiveRecord:地点和路线有哪些关联? 7 年前 |
Niklas B · 云数据存储避免在非常简单的表上爆炸索引 8 年前 |
sçuçu · SQL JOIN查询中的重复条目 8 年前 |