私はmysql dbの正規化についていくつかの調査を行ってきました。1 つのテーブルよりも複数のテーブルを使用する方がはるかに簡単であることに気付きました。1 つの列に結合するよりも、異なる値の列を持つ方がはるかに簡単だと思います。私の質問は、固定情報を含むページをデザインしていて、それらの情報を常にまとめる必要がある場合はどうなるかということです。たとえば、テーブル CLOTHES の下に T-Shirt Colors という列があります。次に、「赤 - 青 - 緑 - 黄 - オレンジ - ピンク - 濃い赤」などの値を保存します。列の値には 1,000 色を超える色が含まれるため、非常に長い文字列が含まれるとします。私の店が販売するのはこれらの色だけであることは確かなので、色の追加や削除について心配する必要はありません...
色のリンクテーブルを作成することをお勧めしました...ただし:
データベース設計 A: (リンク テーブル設計)
テーブル製品 - ProductID: - 名前: - シャツ:
テーブルの色 - ColorID: - 名前:
テーブル product_colors - ProductID: - ColorID:
T シャツの 1,000 色に基づいて得られるテーブルと行の数は次のようになります。
テーブル数 : 3
列数 : 6
行数 : 2,002 ------> 2 (表の製品から)、1,000 (表の色から)、および 1,000 (表の製品の色から)
3 つの列を持つテーブルをセットアップし、すべての色を列の色の長い文字列にまとめて格納する場合 (必要に応じてリストに分解する場合)...取得する行と列の量は次のとおりです。
データベース設計 B: (1,000 色を 1 つの長い文字列に格納し、それをリストに展開する)
テーブルシャツ_色
製品番号:
名前:
色:
テーブル数 : 1
列数 : 3
行数 : 3
色を1つの長い文字列値に設定してから爆発させるよりも、データベース設計オプションAがどのように最適であるか(オーバーヘッドとパフォーマンスの点で)、誰でも説明できますか?
データベース設計オプション A : 3 つのテーブル、6 つの列、および 2020 の行が作成されます。
データベース設計オプション B : 1 つのテーブル、3 つの列、および 3 つの行が作成されます。
オーバーヘッドとパフォーマンスの観点から、データベース設計オプション Aがどのように最適な選択肢になるかを理解するのに苦労しています。1,000 ワードを超える値の列が非常に長くなる可能性があることは認識していますが、mysql は記事やフォーラム サイトで非常に人気があるため、長い文字列を引っ張っても問題ないと思います。
また、オーバーヘッドとサーバー速度の値を(維持するのは難しいですが)爆発させる方が効率的である場合、おおよそ何倍効率的ですか.. 1倍速く、2倍速く、3倍速く、など.または多分少なすぎて気付かない?前もって感謝します
(これらの 1,000 色は常に一緒に使用されることを覚えておいてください...それらは常に引き出されて一緒に使用され、顧客が選択する色のオプションを提供するため...)