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