Как определить непоследовательные заголовки столбцов, содержащие одинаковые данные в SSMS? - PullRequest
0 голосов
/ 18 июня 2019

У меня есть БД, и есть несколько таблиц, которые содержат PK и FK, но они имеют непоследовательные имена. Например, содержащие те же данные, у меня есть такие поля, как: EmpID, Employee_ID, Eid, ect ..

Я вижу, что в SQL Redgate есть инструмент для создания словаря данных, но я не вижу в его функциональности способа агрегирования всех идентичных данных столбцов.

1 Ответ

1 голос
/ 19 июня 2019

Вы говорите, что у вас есть ФК, поэтому вы можете составить список из этого. Вы должны знать, что это не обязательно будет полный список - это будет только список столбцов, которые были определены во внешних ключах. Помимо этого, вы можете выбрать, как Шон упомянул «ужасающий удар», и также не гарантируется проведение всех матчей. Логические совпадения столбцов не обязательно должны называться как-либо удаленно схожими, и вы вполне можете иметь столбец Employee_ID в одной таблице, который соответствует чему-то расплывчатому ... как UrineSupplier (например ...)

Но строго для отношений ФК ...

SELECT  obj.name AS FK_NAME,
    sch.name AS [schema_name],
    tab1.name AS [table],
    col1.name AS [column],
    tab2.name AS [referenced_table],
    col2.name AS [referenced_column]
FROM sys.foreign_key_columns fkc
INNER JOIN sys.objects obj
    ON obj.object_id = fkc.constraint_object_id
INNER JOIN sys.tables tab1
    ON tab1.object_id = fkc.parent_object_id
INNER JOIN sys.schemas sch
    ON tab1.schema_id = sch.schema_id
INNER JOIN sys.columns col1
    ON col1.column_id = parent_column_id AND col1.object_id = tab1.object_id
INNER JOIN sys.tables tab2
    ON tab2.object_id = fkc.referenced_object_id
INNER JOIN sys.columns col2
    ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id
WHERE col1.name <> col2.name

Этот код - почти полностью то, что я нашел и сохранил в какой-то момент, так что мне не за что. Но я тоже не знаю автора, поэтому есть что ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...