【发布时间】:2011-03-09 22:13:55
【问题描述】:
我正在使用 SQL Server 2008 数据库处理 C# 项目。数据库中有 50 多个表,仅从名称来看,这些表的用途和其中的列并不是很明显。我想创建某种形式的文档,以便未来的团队成员知道这些列和表的作用。
我正在寻找相当于 C#“代码 cmets”或“方法上的 XML 文档”的 SQL Server - 新手可以通过浏览这些内容来了解数据库表或列。
有哪些选择?
【问题讨论】:
标签: sql-server
我正在使用 SQL Server 2008 数据库处理 C# 项目。数据库中有 50 多个表,仅从名称来看,这些表的用途和其中的列并不是很明显。我想创建某种形式的文档,以便未来的团队成员知道这些列和表的作用。
我正在寻找相当于 C#“代码 cmets”或“方法上的 XML 文档”的 SQL Server - 新手可以通过浏览这些内容来了解数据库表或列。
有哪些选择?
【问题讨论】:
标签: sql-server
例如显示 AdventureWorks2008R2 示例数据库中的所有扩展属性
USE AdventureWorks2008R2;
GO
SELECT class, class_desc, major_id, minor_id, name, value
FROM sys.extended_properties;
GO
【讨论】:
记录表列的简单方法是使用 SQL Server Management Studio 表设计器。填写每一列的描述字段。
然后您可以通过加入 sys.extended_properties 表的查询来查看表信息:
-- list table columns
SELECT OBJECT_NAME(c.OBJECT_ID) [TableName], c.name [ColumnName], t.name [DataType], x.Value [Description], c.max_length [Length], c.Precision ,c.Scale
FROM sys.columns AS c
JOIN sys.types AS t ON c.user_type_id=t.user_type_id
LEFT JOIN sys.extended_properties x on x.major_id = c.object_id and x.minor_id = c.column_id
WHERE OBJECT_NAME(c.OBJECT_ID) = 'Employees'
ORDER BY c.OBJECT_ID, c.column_id;
【讨论】:
Extended properties?可以在代码中或在 GUI 中设置
我们也使用 Red Gate SQL Doc 来发布我们的架构,扩展属性出现在此处的描述中。很有用。
【讨论】:
文档本身就是一整套技能。好的命名方法是好的,一致性也是好的,因此数据库中没有任何关于你的风格的变化。
除了使用 SQL 图表之类的东西,最好的东西是解释表格和列的好文档。定义对象/表/列之间的整体结构和关系。如果概念更复杂,请给出解释,但要让别人更容易说“这个专栏是做什么的?”无需通读一两段即可快速找到答案。
【讨论】:
您是否愿意为这项工作研究(并可能在以后投资)一个单独的工具?
如果是这样 - 看看这两个:
两者都不是免费的 - 它们确实需要一些前期费用 - 但两者都可以创建 HTML、PDF、CHM 格式的优质文档 - 您可以选择。他们还从数据库中获取每一条信息——对象、约束和列上的默认值之间的所有关系,以及很多更多信息。
在我看来,绝对值得最初的投资,如果你正在做任何严肃的工作。
【讨论】: