浏览 779 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-02-27 关键字: 数据库 规则
这么多年的开发,始终未离开过数据库应用.从MSSQL到Oracle,现在又要mysql,真是要命.为了不让数据库的设计工作全压在一个人身上,所有队员都可能会做一部分工作,为自己负责的需求建立表结构.于是统一数据库的表名和字段名规则就不可避免.不过在做数据库设计时常常遇到同事对表名,字段名设计规则的质疑.因为到现在为止,我确实没有发现很通用的设计规则,在不同的项目环境下可能会启用不同的规则.
我最常用的规则: 1.表名分两部分组成--前缀_主题.如库存表whs_inventory,whs是前缀,表明这是用于仓库模块的,inventory是主题,表示这个表的业务概念. 2.字段名也分成两部分--前缀_主题.如库存数量inv_amount.inv是库存表的缩写,amount是主题,表示这列用来存储库存的数量. 3.外键的引用.如果库存表中引用了货品的ID,那么那一列就用Crg_id,而不是inv_crgid或inv_cargo_id. 现在问题就出来了,以前是手工建立相关的POJO,所以不是什么大问题.现在要通过Appgen或是Middlegen,生成的类名,字段名和Mapping文件名都不符合要求.如果用Maven生成代码的话,要改动的地方更多,想起来就恐怖!能想到的方法就是先生成Mapping文件,把不符合要求的类名和字段名全部改过来,然后再根据Mapping文件生成POJO.但是效率就低很多了. 候先的规则: 1.表名没有前缀,直接用主题命名.库存就是inventory,不做模块的划分. 2.字段名也甩掉前缀,该是什么就用什么. 3.外键字段用表名和字段名.如cargoId.这一点有个小问题,如果货品ID在多个表中被引用,可能会出现不同的形式,cgrId, cargo_id.这一点常常令人头痛. 当然了,数据库设计规则函盖的内容很多,这里我只谈到表名和字段的命名规则.希望大家能够他享更多更有效的最佳实践. 补充: 现在使用appfuse2.x,通过mvn appfuse:gen-model先生成POJO,修改后再用mvn appfuse:gen生成相应的其它代码。爽! 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2008-02-27
数据库是为应用而存在的,而不是为Mapping存在的。
Mapping可以不用,数据库不能没有。 所以我认为命名规则就不该和Mapping搭上关系 |
|
| 返回顶楼 | |
|
时间:2008-02-27
同意楼上的说法!我所推崇的命名规则跟楼主的差不多,就是使用前缀或后缀,然后各个单词之间用_来分开。并且表名统一都用大写。
好像在数据库和操作系统之间移植的时候会碰到大小写的问题,不知道大家有没有碰到过。我碰到过一次。 |
|
| 返回顶楼 | |
|
时间:2008-02-28
引用 数据库是为应用而存在的,而不是为Mapping存在的。
Mapping可以不用,数据库不能没有。 所以我认为命名规则就不该和Mapping搭上关系 我的目的就是想让数据库的命名规则可以更好地被Java程序利用,更容易被工具生成易于理解的类名,字段名. |
|
| 返回顶楼 | |
|
时间:2008-03-10
跟一楼的意思差不多,但我认为,数据库是为保存数据而存在
数据库不应该跟应用程序直接mapping LZ想方便程序利用的话,应该在view上做动作 至于命名,就看你们怎么协定了,但不应该用程序的思维去局限数据库 |
|
| 返回顶楼 | |






