1

私は製造会社のデータベーステーブルを設計しています。必要なテーブルの中には、パーツアプリケーションテーブル(この製品はxおよびy製品に適用されることを意味します)があります。現在の問題は、ほとんどの製品ラインに約3〜10個のアプリケーションがありますが、2特定のラインには最大100のアプリケーションがあります。

最初は、製品アプリケーションをコンマ区切りの文字列として格納することを考えましたが、それは最初の正規形に違反します。

次に、前述のアプリケーションをBLOBとして格納することについて読みましたが、検索の最適化と一般的なDBパフォーマンスの両方の観点から、これは可能ではないようです。

私の質問はこれです。通常のフォームを維持し、パフォーマンスを低下させずに、70以上の列を作成せずに、パーツアプリケーションをテーブルに格納する方法はありますか?

4

4 に答える 4

4

満たすnot compromising performanceには、実行するクエリを正確に知る必要があります。

しかし、これらのような通常のケースでは、many:manyマッピングテーブルがあります...

CREATE TABLE map_part_application (
  part_id         INT,
  application_id  INT,
  PRIMARY KEY (part_id, application_id)
)


INSERT INTO map_part_application VALUES (1,1)
INSERT INTO map_part_application VALUES (1,2)
...
INSERT INTO map_part_application VALUES (1,100)
INSERT INTO map_part_application VALUES (2,1)
INSERT INTO map_part_application VALUES (2,2)
...
INSERT INTO map_part_application VALUES (1,12)

標準的な方法としてこの方法を使用することをお勧めします。ビルドの後半で最適化する必要がある場合は、他の場所を探すだけにしてください。

于 2012-07-03T16:07:07.783 に答える
1

ルックアップテーブルと多対多のブリッジテーブルを追加したいとします。

通常、第3正規形が適しています。関連するアプリケーションのテーブルを作成します。このデータを含めることを考えていた他のテーブルへの制約となる参照IDを格納します。

于 2012-07-03T16:06:29.523 に答える
0

製品テーブルへのfkを使用して、製品ラインのテーブルを作成してみませんか?

于 2012-07-03T16:05:56.113 に答える
0

これを行う方法は、パーツアプリケーションを同じ行の列ではなく、別々の行として保存することです。

テーブルに一部のアプリケーションしかない場合は、行に複数の列を作成するのではなく、複数の行を作成してください。

テーブルに他のデータもある場合は、そのデータを複数のパーツアプリケーションに接続するためだけに別のテーブルを作成します。

于 2012-07-03T16:10:50.023 に答える