我正在尋找用於數據庫層的靜態分析工具。我得到了一些answers for reviewingPLSQL,TSQL代碼,我想知道什麼都可以查看數據庫設計命名的表和字段的約定,外鍵約束和觸發器等用於數據庫設計的靜態分析工具
有MSDN article其中談到ApexSQL Enforce的選項,但主要是針對SQLServer。
我正在尋找用於數據庫層的靜態分析工具。我得到了一些answers for reviewingPLSQL,TSQL代碼,我想知道什麼都可以查看數據庫設計命名的表和字段的約定,外鍵約束和觸發器等用於數據庫設計的靜態分析工具
有MSDN article其中談到ApexSQL Enforce的選項,但主要是針對SQLServer。
不是工具,而是一個很好的資源是SSW Rules to Better SQL Server Databases
他們沒有實施到一個工具:http://www.ssw.com。 au/ssw/Download/Download.aspx?GroupCategoryID = 1SQL – 2013-01-25 07:28:39
既然你提到PLSQL,我假設你使用的是Oracle。對於數據庫設計,您可以編寫一組主要在數據字典表上運行的簡單SQL腳本。請看下面的示例規則和相同的SQL:
表名稱不應大於「N」字
DEFINE owner_name = 'SCOTT';
DEFINE max_length = 5;
set linesize 300;
spool table_name_violations.txt
Select table_name, length(table_name) Length, 'Table name too long' MSG
from ALL_TABLES where owner like '&owner_name'
and length (table_name) > &max_length;
spool off;
列名應不超過字符「n」
DEFINE owner_name = 'SCOTT';
DEFINE max_length = 5;
set linesize 300;
spool column_name_violations.txt
Select table_name, column_name, length(column_name) Length, 'column name too long' MSG
from ALL_TAB_COLUMNS where owner like '&owner_name'
and length (column_name) > &max_length;
spool off;
目錄表的所有有效的外鍵列(假設你使用FK約束)
Define tab_name = 'EMP'
SELECT table_name, Column_name
FROM user_tab_columns t1
WHERE NOT EXISTS (
SELECT table_name, column_name
FROM user_cons_columns
WHERE constraint_name IN (
SELECT R_Constraint_name
FROM all_constraints t2,all_cons_columns t3
WHERE t2.constraint_name = t3.constraint_name
AND t3.column_name = t1.column_name
AND t2.constraint_type = 'R'
AND t2.TABLE_name=t1.Table_name)
)
AND t1.table_name LIKE '&tab_name'
在您不使用外鍵約束來提高性能的情況下,你需要的元信息存儲在不同的表,寫類似上面的檢查FK違規上的現有數據ansql腳本。
bkm沒有說但是暗示的是如果你有權訪問元數據(許多數據庫提供的),那麼直接寫一些簡單的靜態分析檢查你自己。 – 2009-07-31 08:15:54
查看http://serverfault.com/questions/72306/are-there-useful-static-analysis-tools-for-databases – 2012-01-30 18:46:09