2009-07-24 8 views
1

Ich bin auf der Suche nach statischen Analysetools für die Datenbank Tier. Ich habe einige answers for reviewingPLSQL, TSQL Code, ich frage mich, was sind die verfügbaren Optionen Datenbank-Design für Namenskonventionen von Tabellen und deren Spalten, Fremdschlüssel-Constraints und Trigger usw.Statische Analyse-Tools für Datenbank-Design

Es gibt MSDN article, die über ApexSQL Enforce spricht für die Überprüfung, aber es ist in erster Linie für SQLServer.

+0

Siehe http://serverfault.com/questions/72306/are-there-useful-static-analysis-tools-for-databases –

Antwort

3

kein Werkzeug, sondern eine gute Ressource ist SSW Rules to Better SQL Server Databases

+0

sie sind nicht in ein Tool implementiert: http://www.ssw.com. au/ssw/Download/Download.aspx? GroupCategoryID = 1SQL –

3

Da Sie PLSQL erwähnen, ich nehme an, Sie Oracle verwenden. Für das Datenbankdesign können Sie eine Reihe einfacher SQL-Skripts schreiben, die hauptsächlich in den Data Dictionary-Tabellen ausgeführt werden. Schauen Sie sich die folgenden Beispiel-Regel und die SQL für das gleiche:

Tabellenname sollte nicht größer sein als ‚N‘ Zeichen

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; 

Spaltenname nicht ‚N‘ Zeichen nicht überschreiten

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; 

Liste aller gültigen Fremdschlüssel Spalten einer Tabelle (vorausgesetzt, Sie fk Einschränkungen verwenden)

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' 

Im Fall, dass Sie nicht für Fremdschlüssel verwenden die Leistung zu verbessern, müssen Sie Meta-Informationen in separaten Tabellen speichern und ansql Skript wie die oben schreiben für FK Verletzungen auf vorhandene Daten zu überprüfen.

+0

Was bkm nicht gesagt hat, aber impliziert, dass wenn Sie Zugang zu den Metadaten haben (was viele Datenbanken anbieten), es einfach ist, viele einfache statische Analyseprüfungen zu schreiben dich selber. –