1

「データ パターン」を間違って使用した場合は、申し訳ありません。ここにいくつかの背景があります。Access データベースを Web ベースの MYSQL アプリに移植しています。これが私たちが追跡しているものです。

最大 16 ヘッドのマシンがあります。各ヘッドには 3 つの項目が関連付けられており、2 つは整数、1 つは短いテキスト文字列です。各製造オーダーは、少なくとも 1 つのヘッドを使用します。16 個すべてを使用する人もいれば、1 つだけを使用する人もいます。複数のヘッドが使用されている場合は、それらが使用された順序を追跡します。各製造オーダーには、いくつかの短いフィールドから中程度の長さのフィールドがあり、それらも保存されます。生産工程の大部分は、指定されたヘッドの半分未満しか使用しません。

現在、データはすべてを 1 つのテーブルに格納する Access データベースにあるため、行ごとに 6 + (16*3) 48 フィールドが格納され、合計 54 列になります。検索される唯一のフィールドは、整数である 2 番目の 2 つです。

id|workorder|partnumber|note|machine|reference|head1spec1|head1spec2|head1spec3|head2spec1|head2spec2|head2spec3|...etc から 16 の頭に

各行には 16 個の要素が含まれており、これらの要素を個別のテーブルに分割して結合して結果を表示できるため、そこには多くのデッド スペースがあることに気付きました。約10年データを取得しており、現在Access DBのファイルサイズは60.8MB

これが私の質問です。この場合、そのデータは検索に使用されず、すべてを1つの列にまとめることは、その情報の自然な状態のようなものであるため、正規化することには実際の利点がありますか(おそらく正しい使用法ではない)?

4

2 に答える 2

1

確かに、実際には利点がありますが、既存の Access スキーマを変更するほどのメリットはないと思います。むしろ、可能であればより優れたプラットフォームへの移行に力を注ぎます。たとえば、SQL Server バックエンドを備えた Web ベースなどです。その移行を行っている間、スキーマについて心配することができます。

正規化されたスキーマは、次のような場合に役立ちます。

  • データの整合性: 同じマシンで同じヘッドまたはヘッド仕様が 2 回使用されないようにします (もちろん、それが有効でない限り...)
  • クエリ: 最も一般的に使用されている headspec を簡単に数えます

これらのことは、現在持っているスキーマで行うことができますが、もう少し作業が必要です。しかし、このスキーマは 10 年間機能してきたので、変更のビジネス ケースは何ですか?

于 2012-10-29T19:52:42.047 に答える
1

そこにはたくさんのデッドスペースがあることを知っています...

あまり。私は Access がどのようにそれを行うかは知りませんが、ほとんどのデータベースは NULL を格納するのにかなり効率的です (通常は 1 バイトですが、MS SQL Serverの場合のように 1 ビット程度になる場合もあります)。

...各行には 16 個の要素が含まれているため、これらの要素を個別のテーブルに分割し、結合して結果を表示できます。約10年データを取得しており、現在Access DBのファイルサイズは60.8MB

この 10 年間で蓄積された行数はわかりませんでしたが、60.8 MB は、Access などの「軽い」データベースであっても、データベース用語ではピーナッツです。

スペースは問題ではありません。また、データベース全体が今日のハードウェア (または 10 年前のハードウェア) のメモリに簡単に収まるため、おそらく速度も問題ではありません。

これが私の質問です。この場合、そのデータは検索に使用されず、すべてを1つの列にまとめることは、その情報の自然な状態の一種であるため、正規化することには実際の利点がありますか(おそらく正しい使用法ではありません)?

(1:N 関係にある 2 つのテーブルに分割することの) 利点は、異なる数のヘッドを持つ異なるマシンをサポートする必要がある場合の柔軟性が向上することです。また、すべてのヘッドでデータを検索、合計、または平均するクエリを作成する方が簡単な場合があります。

不利な点は、より多くのスペースが必要になり (子テーブルは親テーブルからの PK 値のコピーを格納する必要があるため)、JOIN がより多く必要になることです。

全体として、あなたの既存のデザインは私にはうまく見えます。あなたが解決しようとしている、あなたの質問で言及していない特定の問題はありますか?

于 2012-10-29T22:10:12.610 に答える