首页 新闻 会员 周边

数据库的主外键

0
[已解决问题] 解决于 2014-10-09 09:26

怎么设计数据库才是合理的,主外键的个数怎么限制,怎么来设计表才是合理的?

whatever_pds的主页 whatever_pds | 菜鸟二级 | 园豆:214
提问于:2013-11-11 21:58
< >
分享
最佳答案
0

这个问题的答案肯定因人而异了。

我感觉应该有这么几个原则:

1.不一定非要遵从数据库设计范式,但是在设计表时要考虑一下

2.根据实际业务需要设计表,必要时允许存在字段冗余,所以一定要理解透业务跟需求

3.关系型数据库,最好建立单独的关系表.

 

关于主外键

1.并不是所有的主外键关系都需要建立起来, 逻辑上存在,实际上不建立外键,通过业务来保证主外键关系,这样主表就少了一个外键,从表可以建立主键提升性能

2.一个表里,聚集索引只能一个,非聚集可以多个,最好不要超过8个,如果数据量很少,那无所谓了.

奖励园豆:5
袁家小黑球 | 小虾三级 |园豆:1045 | 2013-11-12 13:46

如果用视图和触发器来操作,会不会简单一点。

whatever_pds | 园豆:214 (菜鸟二级) | 2013-11-16 08:48

@whatever199006: 

视图可以使用,但也要注意性能,毕竟视图说白了就是几个表联合查询,性能其实开始要看具体表的索引的。

触发器这个东西,听说的但我从来没有在实际项目中用过,数据量大了性能表现不太好啊

袁家小黑球 | 园豆:1045 (小虾三级) | 2013-11-16 09:28
其他回答(2)
0

这个标准我不好说,因为我就做个几个项目,所以只能相互交流一下

1.数据库设计肯定是用需求来驱动,就是说一切都是为了实现功能,并且最优化操作,得有个这个意识。

2.大型项目的话,肯定是团队设计,因为至少一个人不可能把所有的表都操作吧,必须是分工的嘛,小型项目的话,其实就几个人搞,这样的话,数据库相对灵活一点,但是最好少改动,至于主外键,其实合理即可,不过推荐想级联操作,约束,索引,在某些需求下还是要有的,不仅可以减少数据库语句操作量,还可以提高性能,这样的话,主外键就比较好,比如A.a-->B.b的话,如果b改动,A中的a也会自动响应改变,这不就省事嘛,不过mysql的MYISAM不支持这个,至于个数,2-5个算是可以的,太多的话复杂,烦。

3.数据库设计有许多规则,比如ACID,对于表的分离合并,就有第几范式之类的,建议楼主可以去看下《数据库系统概念、设计及应用》这本算是入门的书,以前我们就是用这个当教材的

江边流客 | 园豆:5 (初学一级) | 2013-11-11 22:32
0

根据需求来判断啊,这个没有统一标准的

飞鸟_Asuka | 园豆:209 (菜鸟二级) | 2013-11-14 10:34

但是外键多的话,级联操作就太多了

支持(0) 反对(0) whatever_pds | 园豆:214 (菜鸟二级) | 2013-11-16 08:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册