我正在审查这个数据库并创建外键,相信我它们不存在。我正在使用SSMS直观地告诉我缺少哪些外键并创建它们。是否有任何配置让图表设计者显示特定列是否已经是外键的一部分?这将有助于我更快地识别丢失的FK。
目前的情况如下:
这就是我正在寻找的东西(或类似的东西):
我只需要一些视觉指示器(就像我在其他工具中看到的那样),它会告诉我列是否是FK的一部分。
答案 0 :(得分:9)
我知道这是一个老帖子,但这可能有助于其他人。
右键单击表格>在SSMS数据库图表中然后选择“表格视图”>然后选择“键”,这只会显示PK和FK以及该表中的所有其他键。 好的,你说你需要在SSMS数据库图表中的所有表格中单击背景(没有选择任何项目),然后按“Ctrl + A”选择所有,然后用鼠标选择表格右键单击>然后选择“表格视图”>然后选择“键”,这将显示PK和FK以及每个选定表中的所有其他键。然后,如果您需要查看给定表的完整列名称,您可以更改该表的“表视图”并将其更改回来。
通过这种方式,你可以看到FK的内容和内容......
希望这有助于其他人喜欢我。
答案 1 :(得分:4)
在SSMS中,如果展开数据库的表树,然后展开Columns文件夹,如果它是外键关系的一部分,则列旁边的图标将是银色/灰色键,但不幸的是它赢了“ t显示它映射到哪一列的列。
您还可以在SSMS中创建一个新图表,方法是右键单击树中数据库下的“Database Diagrams”文件夹,然后选择“New Database Diagram”。您将获得存在外键的表之间的行。
您还可以使用第三方工具对数据库架构中的图表进行反向工程,例如Microsoft Visio或Sparx Enterprise Architect。
我不确定SSMS Express是否支持这些内容,因此您可能对任何花哨/视觉效果都不满意。
答案 2 :(得分:4)
我还没有找到在Management Studio中以可视方式执行此操作的方法,但您可以尝试以下操作:
select f.name as ForeignKey, OBJECT_NAME(f.parent_object_id) as TableName,
COL_NAME(fc.parent_object_id, fc.parent_column_id) AS ColumnName,
OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName,
COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS ReferenceColumnName
from sys.foreign_keys f
inner join sys.foreign_key_columns fc ON f.OBJECT_ID = fc.constraint_object_id
这不是直观的,但你会更快检查