信息化基础建设 数据库文档
数据库文档
Benefit
数据库文档不仅仅可以用来读,还可以拿来用。
在《信息化基础建设 开发框架》一文中,提到过改进的智能提示支持。
在SQL查询管理器中,当鼠标悬停在表名上时,可以显示表的注释
创建表的描述
创建字段的描述
也就是如果我们在为数据库设计了文档,在写SQL语句时,这些附带的文档会智能的带出来,以供参考提示。
而且,这些注释是可以带到C#代码中去的,在进行代码生成时,同时把这个值也给C#代码的属性提示,非常棒的特性。
如下图所示,点击列名后的Edit,带出窗口,编辑提示内容,最后结果如下
再将这个注释文件,一键生成为数据库文档,写数据库文档的工作并不大。
由于一套数据库可能由多个客户在使用,再配合工具,将已经注释过的数据库的文档,导出为SQL语句,在其它的数据库中执行一下,这样,所有数据库就都有了数据库文档。
合理设计数据库
数据库的设计方式,会影响它的可读性。
LLBL Gen推荐的表设计最佳实践
1. 给表设计主键
2. 使用单数命名表,而不是复数。比如,客户Customers,这样做的好处是,当使用表关联时,命名不容易发生混淆冲突。比如,有一张订单Order, 它从多个客户那里购买原材料,这样,它便有一个Customers的属性。
3. 不要在表/视图前加前缀。举例,表名tblCustomer,tblSalesOrder, tbl是多余的。我们使用数据库的频率远远大于视图和存储过程,如果在表名前加tbl是为了区别表和视图,存储过程,可以考虑在视图前加vw,在存储过程前加sp, 占使用频率最多的表,可以减少前缀字母。
4. 定义外键引用关联。
5. 在一个单一的非主键字段上,不要定义多个外键
6. 使用唯一值unique values来约束列
7. 不要给字段加前缀,有种命名方式是在字段前加类型别名,比如iAge,表示Age是int.
8. 给字段取合适的名字
9. 在开始项目之前,定义好并发机制
10. 不要混淆unique index和unique constraint
11. 在继承层次链中,定义1对1的关系
12. 考虑用视图来代替大量的关系.
Name construction specific settings ORM设计器命名设定
- EnforcePascalCasingAlways (true)强制使用Pascal规则
- EntityFieldNameStripPattern ({}{}) 实体字段名剔除模式
字段的命名规则
- EntityNameStripPattern实体剔除模式{tbl_}{_dev}. Default is {tbl_}{}
对于以tbl_Employee的表名,实体名会自动去除tbl_前缀
对于以_dev结束的表名,实体名会自动去除_dev后缀
- FieldMappedOnManyToManyPattern多对多字段构造模式 {$StartEntityName}{$IntermediateEntityName}{$EndEntityName$P}
$P or $S suffix 单数和复数 pluralize singularize - FieldMappedOnOneManyToOnePattern {$StartEntityName}{$EndEntityName}
- FieldMappedOnOneToManyPattern
- FieldMappedOnRelatedFieldPattern
- MakeElementNamePascalCasing (true).
所有字母小写,除了第一个字母,单词边界后的('_' or ' ')的第一个字母,去除空白
- StoredProcNameStripPattern 存储过程命名去除模式 {pr_, sp_}{}
- TypedViewFieldNameStripPattern
- TypedViewNameStripPattern {vw_}{_dev}. Default is {vw_}{}
- RemoveUnderscoresFromElementName(true) 去除下划线