2009-07-24 7 views
1

Je suis à la recherche d'outils d'analyse statique pour le niveau de base de données. Je suis un peu answers for reviewingPLSQL, le code TSQL, je me demande quelles sont les options disponibles pour l'examen de la conception de base de données pour les conventions de nommage des tables et leurs colonnes, les clés étrangères et les déclencheurs etc.Outils d'analyse statique pour la conception de base de données

Il y a MSDN article qui parle de ApexSQL Enforce, mais c'est principalement pour SQLServer.

+0

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

Répondre

3

Pas un outil, mais une bonne ressource est SSW Rules to Better SQL Server Databases

+0

ils ne sont pas implémentés dans un outil: http://www.ssw.com. au/ssw/Download/Download.aspx? GroupCategoryID = 1SQL –

3

Puisque vous mentionnez PLSQL, je suppose que vous utilisez Oracle. Pour la conception de base de données, vous pouvez écrire un ensemble de scripts SQL simples qui s'exécutent principalement dans les tables du dictionnaire de données. Regardez la règle d'exemple suivant et sql pour la même:

Nom de la table ne doit pas être supérieure à caractères « 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; 

Nom de la colonne ne doit pas dépasser caractères « 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; 

Liste toutes les colonnes VALABLE clés étrangères d'une table (en supposant que vous utilisez des contraintes 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' 

Si vous n'utilisez pas les clés étrangères pour améliorer les performances, vous devez stocker les méta-informations dans des tableaux distincts et écrire ansql script comme celui ci-dessus pour vérifier FK violations des données existantes.

+0

Ce que bkm n'a pas dit mais implique, c'est que si vous avez accès aux métadonnées (que de nombreuses bases de données offrent), il est facile d'écrire beaucoup de contrôles d'analyse statique simples toi même. –

Questions connexes