这个问题的答案肯定因人而异了。
我感觉应该有这么几个原则:
1.不一定非要遵从数据库设计范式,但是在设计表时要考虑一下
2.根据实际业务需要设计表,必要时允许存在字段冗余,所以一定要理解透业务跟需求
3.关系型数据库,最好建立单独的关系表.
关于主外键
1.并不是所有的主外键关系都需要建立起来, 逻辑上存在,实际上不建立外键,通过业务来保证主外键关系,这样主表就少了一个外键,从表可以建立主键提升性能
2.一个表里,聚集索引只能一个,非聚集可以多个,最好不要超过8个,如果数据量很少,那无所谓了.
如果用视图和触发器来操作,会不会简单一点。
@whatever199006:
视图可以使用,但也要注意性能,毕竟视图说白了就是几个表联合查询,性能其实开始要看具体表的索引的。
触发器这个东西,听说的但我从来没有在实际项目中用过,数据量大了性能表现不太好啊
这个标准我不好说,因为我就做个几个项目,所以只能相互交流一下
1.数据库设计肯定是用需求来驱动,就是说一切都是为了实现功能,并且最优化操作,得有个这个意识。
2.大型项目的话,肯定是团队设计,因为至少一个人不可能把所有的表都操作吧,必须是分工的嘛,小型项目的话,其实就几个人搞,这样的话,数据库相对灵活一点,但是最好少改动,至于主外键,其实合理即可,不过推荐想级联操作,约束,索引,在某些需求下还是要有的,不仅可以减少数据库语句操作量,还可以提高性能,这样的话,主外键就比较好,比如A.a-->B.b的话,如果b改动,A中的a也会自动响应改变,这不就省事嘛,不过mysql的MYISAM不支持这个,至于个数,2-5个算是可以的,太多的话复杂,烦。
3.数据库设计有许多规则,比如ACID,对于表的分离合并,就有第几范式之类的,建议楼主可以去看下《数据库系统概念、设计及应用》这本算是入门的书,以前我们就是用这个当教材的
根据需求来判断啊,这个没有统一标准的
但是外键多的话,级联操作就太多了