Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Connaître les relations entre toutes les tables de la base de données dans SQL Server

Parfois, une représentation textuelle peut également aider; avec cette requête sur les vues du catalogue système, vous pouvez obtenir une liste de toutes les relations FK et comment le lien deux tables (et sur quelles colonnes elles fonctionnent).

SELECT
    fk.name 'FK Name',
    tp.name 'Parent table',
    cp.name, cp.column_id,
    tr.name 'Refrenced table',
    cr.name, cr.column_id
FROM 
    sys.foreign_keys fk
INNER JOIN 
    sys.tables tp ON fk.parent_object_id = tp.object_id
INNER JOIN 
    sys.tables tr ON fk.referenced_object_id = tr.object_id
INNER JOIN 
    sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id
INNER JOIN 
    sys.columns cp ON fkc.parent_column_id = cp.column_id AND fkc.parent_object_id = cp.object_id
INNER JOIN 
    sys.columns cr ON fkc.referenced_column_id = cr.column_id AND fkc.referenced_object_id = cr.object_id
ORDER BY
    tp.name, cp.column_id

Transférez ceci dans Excel, et vous pouvez trancher et découper - en fonction de la table parente, de la table référencée ou de toute autre chose.

Je trouve les guides visuels utiles - mais parfois, la documentation textuelle est tout aussi bonne (voire meilleure) - juste mes 2 cents .....