0

データベース層の静的分析ツールを探しています。PLSQLTSQLコードを確認するためのいくつかの回答 を得ました。テーブルとその列の命名規則、外部キー制約とトリガーなどのデータベース設計を確認するために利用できるオプションは何ですか.

ApexSQL Enforceについて説明しているMSDN の記事がありますが、主に SQLServer 向けです。

4

2 に答える 2

3

ツールではありませんが、優れたリソースは、SQLServerデータベースを改善するためのSSWルールです。

于 2009-07-24T09:59:11.540 に答える
3

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'

パフォーマンスを向上させるために外部キー制約を使用していない場合は、メタ情報を別のテーブルに格納し、上記のような SQL スクリプトを記述して、既存のデータの FK 違反をチェックする必要があります。

于 2009-07-26T17:16:24.013 に答える