2

表形式のデータを取得し、それがどの正規形であるか (存在する場合) を確立し、機能的な依存関係などを表示できる Python コードを探しています。

4

1 に答える 1

2

「正規化」の論理テストがあります。ただし、これらはプログラミングの簡単な演習ではありません。それらは、データに適用されるメタデータ内の関係です。「考える」ことが必要です。

1NF -- 繰り返しグループなし。「繰り返しグループ」をどのように識別しますか? これは、テーブルの列に課される配列構造になります。それはどのように行われますか?SQL はメカニズムを提供しないため、列名を調べて「パターン」を確認する必要があります。たとえば、COL_1、COL_2、COL_3。

1NF -- 行の一貫したレイアウト。当たり前。SQL は、まさにテーブル定義の性質によってこれを強制します。

2NF -- 行のデータはキーに依存します。このような手続きをする必要があります。

For each non-key column:
   Query distinct pairs (Key and the non-key column)
   Do all non-key values depend in a consistent way on a key value?
   Can you build a simple dict mapping non-key to key?

完全なアルゴリズムはこちら: http://en.wikipedia.org/wiki/Relational_model#Set-theoretic_formulation

3NF -- 行のデータはキーのみに依存します。非キー列のすべての組み合わせを非キー列のすべての組み合わせと比較して、値の間に非キーの依存関係がないことを確認する必要があるため、これはさらに悪いことです。

4NF と 5NF は紛らわしいのでここでやめておきます。

私の言いたいことは、理論的には、あなたならできるということです。実際には、正規形の関係が実際に保持されていると断言するには、データの複雑な順列が多数必要です。

特定の違反について仮説を立て、いくつかの SQL クエリといくつかの思考を使ってその問題だけを調査する方が、はるかに簡単です。

正式な計算は次のとおりです。

http://en.wikipedia.org/wiki/Relational_model

于 2010-01-28T21:39:05.327 に答える