1

Enterprise Architect では、論理モデルを構築するために、UML クラスと「関連」クラスの関係を使用して論理モデルを作成しています。このモデルを DDL に変換できます。SQL Server 2008 を既定のデータベースとして設定すると、これはかなりうまく機能します。

ただし、多対多の関係を管理するのに苦労しています。Test1 と Test2 の 2 つのテーブルがあるとします。

両方のテーブルには、名前: 文字列という 1 つの属性が含まれます。

ソースとターゲットの両方の多重度を 0..* として、2 つの間の関連付けを設定します。

予想どおり、DDL に変換すると、これは完璧なリレーショナル テーブルを作成します。ただし、それは私が苦労している命名規則です。

デフォルトでは、DDL に「JoinTest1ToTest2」という名前のテーブルが作成され、test1ID と test2ID が新しいテーブルの値として使用されます (2 つの実際のテーブルで生成された ID 列と一致します)。最初はこれの名前を変更するのがハードルでしたが、単純に名前をリレーションシップに入れると、新しいテーブルにその名前が使用されることに気付きました。1つの問題が解決しました。

さて、私が抱えている他の問題は、そのような簡単な解決策を避けてきました。問題は、新しいテーブルに 2 つの外部キーが作成されることです。これも完璧です。ただし、これらの外部キーに通常のように FK_ プレフィックスを付けて名前を付けるのではなく、単に外部キー 'Test1' および 'Test2' を呼び出します。命名基準に従っていないため煩わしいだけでなく、この名前がテーブル名と競合し、生成された SQL が失敗するため、無効でもあります。

作成された FK の名前をガイドする方法はありますか? 当社の命名基準では、リレーショナル テーブルの名前は「Test1_Test2」、Fkey の名前は「FK_Test1_Test2__Test1」および「FK_Test1_Test2__Test2」にする必要があります。

DDL 変換を行った後にこれらを手動で更新するのは非常に簡単ですが (そして、これを行った後、SQL コードの DDL 生成は実際に完全に機能します)、大規模なモデルではこれを行うのは面倒な場合があります。

ありがとう!

4

1 に答える 1

1

デフォルト データベースを設定した同じオプション ページ ([ツール] -- [オプション] -- [ソース コード エンジニアリング] -- [コード エディタ]) には、DDL 名テンプレートのボタンがあり、外部キー、主キー、および一意制約のテンプレートを指定できます。 .

あなたの質問から、ここで正しい設定を失ったように見えます。デフォルトのテンプレートでは、外部キーに「FK_」という名前が付けられ、その後に外部テーブルとプライマリ テーブルの名前が続くためです。

テンプレートの構文は、ヘルプ ファイルのデータベース エンジニアリング -- 物理データ モデル -- データ型 -- データベース キー -- 外部キー -- 外部キー名テンプレートの定義で説明されています。

于 2013-08-30T08:33:51.527 に答える