4

Mysql(InnoDB)のFKを逆ルックアップに使用できるかどうか疑問に思います。

理由-データベースからXMLのような構造を読み取りたい(「レイヤー」ごとに1つのテーブルを使用)が、これを動的に実行できるようにします。新しいテーブルを追加し、FK制約を設定することで、xml構造を更新できるようにしたいと思います。

明確にするために、id(parent_id)と他の2つの列(k1とk2)を持つテーブル"parent"があるとします。xmlは次のようになります(idを省略):

<parent>
 <k1>v1</k1>
 <k2>v2</k2>
</parent>

次に、parent_idと他の1つの列(ck1)を参照する外部キーを持つ子テーブルを追加します。同じクエリ(後で処理を行う)により、次のようになります。

<parent>
 <k1>v1</k1>
 <k2>v2</k2>
 <child>
  <ck1>cv1</ck1>
 </child>
</parent>

これは可能ですか?「SELECT*FROM parent_table」に、ある種のパラメータを設定して、FKでポイントを戻す子行も返しますか?

どうもありがとう!/ビクター

4

1 に答える 1

1

たくさん読んだ後、1​​つのオプションは次のようなものを使用することです:

SELECT
  referenced_table_name parent,
  table_name child,
FROM
  information_schema.KEY_COLUMN_USAGE
WHERE
  referenced_table_name IS NOT NULL

これにより、すべてのテーブルに子が作成されます。もちろん、要求された親にのみ子を返すようにフィルタリングするのは簡単です。ただし、欠点として、上記の追加のクエリ(および処理)が必要になります。

私はまだ「より良い」解決策を手に入れたいと思っていますが、これは少なくとも出発点かもしれません;)

于 2009-06-30T07:48:10.787 に答える