关于数据库设计的主外键问题
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
出现脏数据说明系统有问题,不能用建立外键这样的方法来避免脏数据的问题。
|