许多数据库系统不允许对表和字段进行注释或描述,那么除了明显具有良好命名约定外,如何记录表/字段的用途?
(我们现在假设"优秀"表和字段名称不足以记录数据库中每个表,字段和关系的完整含义.)
我知道很多人使用UML图来可视化数据库,但我很少 - 如果有的话,看到包含字段注释的UML图.但是,我在使用.sql
文件内的注释方面有很好的经验.这种方法的缺点是,.sql
随着数据库结构随时间的变化,它需要手动保持文件的最新状态 - 但如果这样做,您也可以将其置于版本控制之下.
我见过的其他一些技术是描述数据库结构和关系的单独文档,以及在ORM代码或其他数据库映射代码中手动维护的注释.
你过去怎么解决这个问题?存在哪些方法以及与它们相关的各种利弊?您如何在"完美世界"中解决这个问题?
更新
正如其他人所指出的那样,大多数流行的SQL引擎实际上都允许注释,这很好.奇怪的是,人们似乎并没有太多使用这些功能.至少不是我过去参与过的项目.
MySQL 允许对表和行进行注释.PostgreSQL 也是如此.从其他答案来看,Oracle和MSSQL也有评论.
对我来说,UML图的组合,用于快速刷新字段名称,类型和约束,以及外部文档(TeX,但可以是任何格式),包含与数据库相关的所有内容的扩展描述 - 特殊值,字段注释,访问权限注意,无论如何 - 效果最好.
迟到但希望有用...这是我们在开发相对较大的数据库时使用的过程(大约100个表和大约350个对象)
开发人员需要使用扩展属性向所有对象添加详细信息.
管理员拒绝任何没有扩展属性的DDL
第三方工具用于每天通过命令行界面自动生成可视化文档.我们使用了ApexSQL Doc,它运行得很好,但我也成功地使用了其他公司的Red Gate的SQL Doc.
此过程确保我们记录所有对象并记录最新文档.
但困难的是让开发人员始终如一地写好评论;)
SQL Server具有可以处理此问题的扩展属性.
本文介绍如何在SQL Sever中设置它们 http://www.developer.com/db/article.php/3677766
MSDN参考
它可以与RedGate SQL Doc结合使用来创建一个很好的数据字典.
我使用附加到表和列的注释.SchemaSpy是一个很好的工具,用于从您的模式生成html文档文件,包括注释.