私は2つのテーブルを持っています:foos
とbars
、そしてそれらの間には多対1の関係があります:それぞれfoo
が多くを持つことができますbars
。foobars
これらの2つのテーブルを結合するビューもあります(そのクエリはのようなものですselect foo.*, bar.id from foos, bars where bar.foo_id=foo.id
)。
foo
編集: sとsの間に多対多の関係があると言ったとしても、間違いではありませんbar
。ただし、 Abar
は単なるタグであり(実際にはサイズです)、その名前だけで構成されています。このテーブルbars
には、リンクテーブルと同じ役割があります。
foobars
「foo」の部分がfoos
新しい行として挿入され、コンマで区切られた2つのbar-idで構成される「bar」の部分が分割され、そのような部分ごとにリンクが挿入されるように挿入するルールがあります。それと適切なものの間にfoo
作成されます(私はそれを行うための手順を使用します)。
これはインサートに最適です。しかし、全体を更新することになると、私には問題があります。ルールのfoo
一部は簡単です。bar
しかし、複数の部分の扱い方がわかりません。ルールのようなことをしようとするとDELETE FROM bars WHERE foo_id=new.foo_id
、テーブルからすべてを削除しなくなりますbars
。
私は何が間違っているのですか?必要なことを達成する方法はありますか?最後に、全体に対する私のアプローチは賢明ですか?
(取得するデータは「<code> fooとそのすべて」の形式であるため、ビューを使用してこの非常に複雑なことを行いますbar
が、ユーザーは表示する必要がありますfoobars
。)