0

値をコンマ区切り値として SQL Server DB に格納することに問題はありますか?

100 のカテゴリがあり、各カテゴリには 500 個の製品があります。私の最初の考えは、製品コードをカンマ区切りの値に保存して、100 レコードのみがテーブルに表示されるようにすることです。

  catagcd1 - prod1,prod2,prod3......
  catagcd2 - prod2,prod3,prod5......

しかし、友人に尋ねると、カンマ区切りで保存せず、通常の構造で保存してください。つまり、次のことを意味します。

   catagcd1 - prod1
   catagcd1 - prod2
   catagcd1 - prod3
   catagcd2 - prod2
   ----------------
   ----------------

my way と his way はどう違いますか?また、パフォーマンスの観点からの違いは何ですか? 説明していただけますか?

4

1 に答える 1

2

あなたの友人はおそらくデータベースの正規化について言及しています。これにより、との間には1対多の関係がcategoryあり、製品が複数のカテゴリに表示される場合はproduct多:多(category、、productおよび)の関係があります。categoryproduct

データをコンマ区切りの値で保存する場合の問題は、製品を操作する必要があるたびに製品文字列をデコードする必要があることです。これは、遅くて面倒な作業になる可能性があります。

別の方法として、製品を直接参照する必要がない場合は、製品/カテゴリ階層をXml列に格納することもできます(ドキュメントや複数値データベースと同様の問題にアプローチします)

于 2012-07-31T05:55:18.033 に答える