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.
Voir http://serverfault.com/questions/72306/are-there-useful-static-analysis-tools-for-databases –