Oracle是否有一個工具可用於分析數據庫並幫助確定可能的缺失字段關係?我們有一個包含150多個表的遺留數據庫,缺少許多關係。我們可以手工完成,但是自動化工具可能會有用。所以找到缺少外鍵等等的東西。智能Oracle工具來查找缺失的字段關係
1
A
回答
2
我有現在這樣做了幾次。通過在數據字典(例如EvilTeach的查詢)中運行大量查詢,從列中查詢示例數據,檢查應用程序如何創建數據以及瞭解應用程序中的數據,我發現它是一種非常人性化的事物業務需求和用戶流程。例如,在許多遺留應用程序中,我發現在前端應用程序中檢查並實施的約束(包括參照完整性約束),這意味着數據遵循約束(幾乎100%:)),但實際上並不是在數據庫級別受到限制。很多有趣的結果。
如果一個工具可以自動執行任何操作併產生有用的結果,我會很驚訝。
1
這可能是一個良好的開端
select column_name, table_name, data_type
from user_tab_cols
order by column_name, table_name
1
如果您認爲您可以通過在不同表中找到具有相同名稱和數據類型的列來識別POSSIBLE外鍵關係shinp,則可以找到POSSIBLE外鍵缺失,其中一個表是主鍵,另一個表中沒有參考該密鑰。
你可以使用這樣的查詢:
select c1.TABLE_NAME, c1.COLUMN_NAME, c2.TABLE_NAME, c2.COLUMN_NAME
from user_tab_columns c1,
user_tables at1,
user_tab_columns c2,
user_tables at2
where c1.COLUMN_NAME = c2.COLUMN_NAME
and c1.DATA_TYPE = c2.DATA_TYPE
and c1.TABLE_NAME = at1.TABLE_NAME
and c2.TABLE_NAME = at2.TABLE_NAME
and c1.TABLE_NAME != c2.TABLE_NAME
/*and c1.TABLE_NAME = 'TABLE' --check this for one table
and c1.COLUMN_NAME = 'TABLE_PK'*/
and not exists (select 1
from user_cons_columns ucc,
user_constraints uc,
user_constraints uc2,
user_cons_columns ucc2
where ucc.CONSTRAINT_NAME = uc.CONSTRAINT_NAME
and uc.TABLE_NAME = ucc.TABLE_NAME
and ucc.table_name = c1.TABLE_NAME
and ucc.column_name = c1.COLUMN_NAME
and uc.CONSTRAINT_TYPE = 'P'
and uc2.table_name = c2.TABLE_NAME
and ucc2.column_name = c2.COLUMN_NAME
and uc2.table_name = ucc2.table_name
and uc2.r_constraint_name = uc.constraint_name
and uc2.constraint_type = 'R')
這一個(草圖,在沒有辦法的優化,雖然)通過所有的一對列名式平等的掃描,發現如果是PK ,另一個沒有引用它。
但是,在這裏我同意傑弗裏,這是一種非常人性化的東西,沒有工具可以肯定地做到這一點。無論如何,你必須親自去做。
相關問題
- 1. Django泛型關係字段查找
- 2. sql查找缺失的關聯
- 3. 更智能的方法來查找的關鍵
- 4. Oracle實體關係圖表工具
- 5. 查找DISTINCT缺少SQL依賴關係
- 6. 查找「缺失」行
- 7. 查找數組中缺失的數字
- 8. 使用SQL查找缺失的數字
- 9. 的Oracle SQL查詢來獲取經理員工關係
- 10. 使用awk查找行中的缺失字段
- 11. Oracle查詢以找到最大關係
- 12. 反向工程 - 查找缺失值
- 13. 缺失geo_point字段
- 14. Laravel - 關係數據缺失
- 15. 缺失與has_and_belongs_to_many關係
- 16. TeamDrive資源缺失功能字段
- 17. ORACLE SQL:缺少關鍵字
- 18. SAPUI5智能表 - 智能字段使字段強制註釋
- 19. 嘗試對Oracle關係科(右括號缺失?)
- 20. 缺失的工件com.sun:工具:jar
- 21. 用於查找Dll依賴關係的命令行工具
- 22. mysql n:m關係:查找具有幾個特定關係的行
- 23. 在列中查找第一個缺失的日期(Oracle)
- 24. Oracle查詢來獲取表中的缺失值
- 25. Oracle應用程序表達作爲商業智能工具嗎?
- 26. Grails的多對一的關係缺失
- 27. 查找具有TOP 400行最關係
- 28. Oracle的查詢工具9
- 29. TSQL查找缺失值
- 30. 忽略缺失的依賴關係
我不知道任何,但我從來沒有這樣做。我首先看到ERD,血壓的升高與圖中可見的缺乏外鍵關係間接成正比。你希望列名是相同的,但它不可靠。祝你好運,知道哪個代理/人工鍵值與哪個父表相關...並且不考慮「設計者」是否將值組合成單個列... – 2010-09-28 18:21:23