2012-01-18 7 views
3

私は製品を保持するメインMySQLテーブルを持っています。MySQLのベストプラクティス:リレーショナルテーブルの更新

  1. DELETEすべての行を:各製品の任意の複数のフィールドが、私は、製品を更新するたびに(例えばproducts_colour、products_photosなど)リレーショナルテーブル内に収納されている、私が行うためのベストプラクティス何にとしてわかりませんよ更新される製品に対応するリレーショナル表では、INSERTすべての新しいフィールドが比較的新鮮な表になります。
  2. 不要なリレーショナル表の行は、新しい行はINSERTのみです。

最初のオプションブランケットは、製品が更新されるたびにすべてを削除し、新しいデータを挿入します。 2番目のオプションは現存する値を検索し、衝突しているかどうかを計算し、衝突した場合は削除し、残っている場合は削除します。またはそれらの行に沿った何か...

ベストプラクティスの観点から、何が最善のことですか?私が最初のものと一緒に行くのは本当に重要ですか?それはその MySQLのパフォーマンスに多くの違いがありますか?

+0

「UPDATE」を使用しないのはなぜですか? –

+0

"リレーショナルデータベース"とは、実際には "関連するテーブル"を意味します –

+0

製品が赤と黄色であるとします。ユーザーは製品が赤色になるように更新する必要があります。 UPDATEのみが使用されている場合、製品の色を格納しているリレーショナルデータベースでは、黄色の行が表示されます。私は何百もの冗長なobselete行を収集したくない。 – hohner

答えて

4

あなたのユースケースの「ベストプラクティス」は、古い行であるDELETEであり、次に新しいものはINSERTです。 transactionsを必ず使用してください。

関連する問題