0

PHP スクリプトを使用してスケジュール項目をデータベースにインポートしています。アイテムは、次のような XML 構造を持っています。

<item>
  <date>1/1/2012</date>
  <time-start>1:00</time-start>
  <time-end>2:00</time-end>
  <title>One</title>
</item>
<item>
  <date>1/1/2012</date>
  <time-start>2:00</time-start>
  <time-end>3:00</time-end>
  <title>Two</title>
</item>

各項目をレコードとしてデータベースに追加します。各アイテムに一意の行 ID がないため、後でアイテムをダウンロードしてインポートすると、重複したレコードが作成されるため、問題が発生します。

私の最初の解決策は、特定の日付とアイテムにタイトルがスケジュールされている場合、各アイテムを追加する前にテストすることです。一度に数百のレコードをインポートするのは、多くの重複が発生するため、多くの処理のように思えます。

WHERE 句で最初のアイテムの日付と開始時刻と最後のアイテムの日付と開始時刻を使用して、新しくインポートされた各アイテムをチェックするアイテムの配列を作成する必要がありますか?

4

1 に答える 1

1

日付、開始時刻、および終了時刻の組み合わせを一意にする必要がある場合は、データベースに複数の行を含む一意のインデックスを設定できます。

1 つ以上の列で NULL 値が許可されている場合は、これを使用できないことに注意してください。データベース ロジックでは NULL !== NULL であるため、同じ他の値と 1 つの NULL 値を持つ複数の行を追加することができます。

于 2012-10-08T19:55:27.660 に答える