1つのレコードに可変個数のデータを持たせるデータの構造なときです。
こんな感じの構造です。
json
1{ 2 title: "a", 3 data: [ 4 {name: "x"}, 5 {name: "y"}, 6 {name: "z"}, 7 ] 8}
これを
table_main - id (autoincrement) - title table_sub - id (autoincrement) - mid (fkey to table_main.id) - name
のようなテーブル構造で保存してるとします。
データを
json
1{ 2 title: "b", 3 data: [ 4 {name: "y"}, 5 {name: "z2"}, 6 ] 7}
のように変更したときに、 table_sub はどのように更新処理すべきでしょうか。
この場合だと、xがなくなって、yはそのまま、zがz2変更となっています。
こういう情報を更新する時に、SELECT で取ってきたデータと更新するデータとを比較して削除・追加・変更の3パターンに分けてそれぞれ処理するというのは大変です。
なので、普段は table_sub に対して mid で検索して更新対象の mid のデータを全件削除して、新しい登録データを新規に INSERT してます。
data の配列が数千とかあるわけでないなら速度面でも対して気になるものではないのですが、data のような可変個のデータを持つものが4つ、5つとあるような時で、title だけしか変更してないのに全部削除+新規追加ってムダだなーと思いました。
それに、もし table_sub の id に別テーブルから外部キーが設定されていたら、全件削除してとはいかなくなりますし、なにか良い方法はあるのでしょうか。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/31 08:14