日期:2014-05-16  浏览次数:20721 次

大家来评论一下这个数据库设计的是否合理
下面的一个截图,是一个同事设计的某产品的数据库结构图。
我在邮件给其提出了如下修改建议:
1. 所有字段都为text类型,无法建立索引
2. 有些表没有主键,具有主键的表也为text类型,这样效率会十分低下

对方给我的回答是:
目前需要设置主键的表都已经设置主键了,但是有一些是否合理可以进一步确认,希望你根据数据库能给出更合理的主键建议。
有一些表没有主键,是因为这些表从设计的之处就将考虑可以重复,不需要设计主键,而且这些表一般都是后台数据表,不是核心表。
目前包括唯一性索引等,应经针对TEXT类型建了一些,可以说针对关键业务表的索引在设计之初就已经考虑了,不知道TEXT类型无法建立索引是否有什么依据?
确如你所说,字段类型均为TEXT类型,使用TEXT类型的原因主要也是和应用程序挂钩,这块从应用程序层面考虑不需要进行类型转化了,当然针对使用TEXT有什么不妥,如有相关文档,希望能提供,也多多学习学习。
主键使用TEXT类型,这块不妥,如有什么相关文档,也希望能提供。因为咱们的业务数据决定,主键必须是TEXT类型。






这样的邮件大家看看,我如何回答好?
数据库是 : Postgresql

------解决方案--------------------
设计这库的人是个外行,但是喜欢装逼,这种傻逼只能用事实回击
------解决方案--------------------
建议你这样回复
0 你一点常识没有,哪来的勇气设计表结构
1 你知道主键的作用吗,和核心不核心表有什么关系?
2 你知道text的弊端吗
3 你知道text和varchar的区别吗,有什么业务必须用text的
4 主键用text不解释,用的人上辈子估计也是2b
------解决方案--------------------
探讨

主要还是原开发人员不想改动自己程序。。。