9

次のように動作するツールについて学ぶことに興味があります。

データベース スキーマといくつかのデータが与えられた場合、スキーマが特定の正規形で構造化されている可能性が高いかどうかを示し、さらに正規化を行うためにスキーマをどのように分解できるかを示します。

基本的には、データベース スキーマ設計のための静的分析ツールです。

他の静的分析ツールと同様に、そのようなデータベース ツールは完璧な結果を生成する必要はなく (そのような「完璧な」ツールが計算上実行可能であるとは思えません)、すべてのデータベース システム、フリー/オープン ソース、またはその他のあらゆるものに適用できます。ツールはスタンドアロンである必要はありません。洗練された IDE 機能としてバンドルされる可能性があります。そこに何があるのか​​ 疑問に思っています。

4

6 に答える 6

6

それは可能であり、正規化を行うことができる少なくとも 2 つの市販ツール (GeneXus と DeKlarit) があります。彼らはNormalizationBySynthesisという名前のプロセスを使用します

于 2010-02-25T06:37:15.837 に答える
6

あなたが説明するようなツールは、データとメタデータを分析し、正規化されていない構造の可能性をアドバイスしようとしましたが、間違った提案を頻繁に行うため、Microsoft のアシスタントである Clippy が不可欠なライターの支援のように見えます。

ここに画像の説明を入力

正規化のプロセスには、ソフトウェア要件を論理データ モデルにマッピングすることが含まれます。分析ツールは、データ要件をあなた以上に理解することはできません。したがって、間違ったデータベース設計から、どの部分が間違っているかを推測することはできません。

質問の条件を満たしていることと、ツールの機能に対する期待が限定的であることを理解しています。しかし、通常の日常的な作業に役立つようにしたいと思うかもしれませんが、最も単純な場合でも信頼性は高くありません。

静的コード分析ツールと比較してください。アプリケーションを作成してクライアントに配信すると、クライアントが「このアプリからメールを送信できないのはなぜですか?」と言うとします。静的コード分析ツールは、必要な機能を省略したことをどのように伝えますか? それらの要件を知ることはできません。

UserAccount同様に、データベースの正規化分析ツールは、テーブルに単一の属性を持つことが適切かどうかMobilePhoneNumber、または電話番号を別のテーブルに分割して 1 人のユーザーが複数の電話をリストできるようにする方が適切かどうかをどのように判断しますか?

于 2009-02-12T20:18:47.537 に答える
3

私もこの問題について考えたことがあります。理論的には可能であり、このトピックに関する研究論文がいくつかあります。www.dbtools.cs.cornell.edu にはかなりクールなツールがありました。これは、有名な作家ラグー ラマクリシュナンによって開発されました。現在はヤフーリサーチに所属。詳細については、次の論文を参照してください。

  1. ディーデリヒ、T. および Miton, J. (1988)、「データベース正規化のための新しい方法と高速アルゴリズム」、データベース システム上の ACM トランザクション、13(3)、339-365。
  2. Bernstein, PA (1986)、"Synthesizing Third Normal Form Relations from Functional Dependencies"、ACM Transactions on Database Systems 、Vol.1。No. 4、pp 277-298。
  3. JMathNorm: Mathematica を使用したデータベース正規化ツール、コンピュータ サイエンスの講義ノート。巻。4488, Proceedings of the 7th international conference on Computational Science, Part II, Ali Yazici, Ziya Karakaya

3 番目のリンクは非常に興味深いものです。論文の要約は次のとおりです。

このホワイト ペーパーでは、Mathematica を使用したリレーショナル データベース (RDB) 正規化のための、JMathNorm という名前の完全な対話型ツールの設計について説明します。これは、既存の第 3 正規形 (3NF) モジュールに加えて、同じ作者 [1] によって開発されたプロトタイプの拡張であり、第 2 正規形 (2NF) とボイス-コッド正規形 (BCNF) が含まれています。この研究で開発されたツールは完全であり、リアルタイムのデータベース設計に使用できるだけでなく、数学的背景が限られている学生に DB 正規化の基本概念を教えるのにも役立ちます。JMathNorm は、クロージャーなどの基本的なセット操作を実験するためのモジュールのインタラクティブな使用もサポートしています。機能依存セットの最小限のカバーを取得し、候補キーの属性をテストするためのモジュールと一緒の完全閉鎖。JMathNorm の GUI インターフェイスは Java で書かれており、Mathematica の JLink 機能を利用して Mathematica カーネルを駆動します。

この質問への回答にも非常に興味があります。誰かがツールに出くわした場合は、お知らせください。

于 2009-08-28T08:00:06.250 に答える
2

オープンソースツールのSchemaSpyは、「インデックスのないテーブル」や「「null許容」と「一意である必要がある」の両方としてフラグが立てられた列」などの「異常」を検出します。これらの異常の1つは、「列名が増加し、非正規化を示している可能性があるテーブル」です。

http://schemaspy.sourceforge.net/

于 2012-06-08T12:59:43.800 に答える
1

それを実装するのは難しいと思います。

のように、テーブル

Id | Name | Surname | SSN 

1NFにあり、

Id | Name | Surname | Mobile

そうではありませんが、設計からもデータからも、フィールド名からのみ言うことができます。

私はかつて、1つのテーブルに実際にGENDERLMP(最後の月経期間)の両方が含まれている超音波検査のデータベースを見たことがあります。

于 2009-02-12T19:39:10.580 に答える
0

それはできません。

正規化は、機能従属性の観点から定義されます。

  1. SQLでは表現できません
  2. データから推測することはできません

次のような表を見ることができます

A | B
--+--
1 | 1
1 | 2

また、BはAに依存していないと推測します(Aの単一の値に対して2つの異なる値があるため)が、依存関係が存在することを推測することはできませんたとえば、AはBに依存する場合としない場合があります。

于 2009-02-12T19:33:30.500 に答える