关于数据库设计的主外键问题

helloju 2008-08-04

关于数据库设库还需不需要的问题的,我问了好几个同学了。

但分歧好像不小哦。、
有些同学说要,有些说不要。
要的理由就是,保持数据的完整性,而不要的理由就是可以提高数据库的
性能,但大多数同学以为是要主外键关系的。所以,在学校 的时候,还是使用的主外键关联表的。不过,这几天上班了,发现公司的
项目,是没有主外键的,只有。表之间的关系是在代码层关联的。
哎,现在都 有点糊涂了。
Silmon 2008-08-04
如果不要主外键,这样就使数据库设计的宽松,性能当然要好了。
其实交给持久层也挺好。
fire9 2008-08-04
主键还是有必要的,外键要根据业务逻辑的设计需求来添加。能用程序处理的没有必要设置外键。外键能保证数据一致性,尽量避免进入脏数据。
grandboy 2008-08-11
我建议,在编码阶段可以先不加外键限制,在进入测试阶段可以把外键加上,这样可以更好测试,万一代码里没有处理好的地方,比较容易看出来的。

至于主键还是非常有必要的。如果你的项目极特殊的话,当然也可以说在理论什么约束都可以没有。
satellite 2008-08-13
grandboy 写道
我建议,在编码阶段可以先不加外键限制,在进入测试阶段可以把外键加上,这样可以更好测试,万一代码里没有处理好的地方,比较容易看出来的。

至于主键还是非常有必要的。如果你的项目极特殊的话,当然也可以说在理论什么约束都可以没有。


我们做项目一般都这么做得,coding的时候不设主外键,测试的时候才添加主外键
zjh666qq 2008-08-16
主键是要的,外键尽量还是不要加
eddianliu 2008-09-19
其实,对于主外键的建立也没有一个必然的规律,如果为了性能而言,不加是有一些提升,但是数据完整性则归到了程序中,写程序的时候就一定要对数据进行控制,特别是级联删除和更新,当然,orm的出现可以是我们在对象上再次构建一种这样的对象之间的关系,但是对于数据的完整性而言,见外键则是一种很好的约束,所以,还是针对应用采取不同的方式
martri 2008-11-01
eddianliu 写道
其实,对于主外键的建立也没有一个必然的规律,如果为了性能而言,不加是有一些提升,但是数据完整性则归到了程序中,写程序的时候就一定要对数据进行控制,特别是级联删除和更新,当然,orm的出现可以是我们在对象上再次构建一种这样的对象之间的关系,但是对于数据的完整性而言,见外键则是一种很好的约束,所以,还是针对应用采取不同的方式

支持,有时候保持数据的完整性,少出现“脏数据”,外键约束是非常重要!
jakey0613 2008-11-02
外键有时不建,能大大减少代码复杂程度。
就像我前几天做的学生管理系统,每个表之间都没建外键。
只在数据上有关联,这的确能加快系统性能,也便于数据添加。
但我建议还是在编码的时候不加,在测试的时候加。
毕竟要为系统的长久性打算嘛!
cragsman 2011-01-05
出现脏数据说明系统有问题,不能用建立外键这样的方法来避免脏数据的问题。
Global site tag (gtag.js) - Google Analytics